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

データ処理装置

Info

Publication number
JP2616182B2
JP2616182B2 JP2231966A JP23196690A JP2616182B2 JP 2616182 B2 JP2616182 B2 JP 2616182B2 JP 2231966 A JP2231966 A JP 2231966A JP 23196690 A JP23196690 A JP 23196690A JP 2616182 B2 JP2616182 B2 JP 2616182B2
Authority
JP
Japan
Prior art keywords
register
instruction
data
bit
bit string
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
JP2231966A
Other languages
English (en)
Other versions
JPH04109336A (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 JP2231966A priority Critical patent/JP2616182B2/ja
Publication of JPH04109336A publication Critical patent/JPH04109336A/ja
Priority to US08/245,846 priority patent/US5390307A/en
Application granted granted Critical
Publication of JP2616182B2 publication Critical patent/JP2616182B2/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/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

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明はレジスタに保持されているデータの退避/復
帰を高速実行し得るデータ処理装置に関し、更に詳述す
れば、複数のレジスタそれぞれに保持されているデータ
を転送する命令の実行に際して、1度の処理で2個のレ
ジスタ内容を同時に退避/復帰することにより、レジス
タ内容の退避/復帰に要する時間を短縮することを可能
としたデータ処理装置に関する。
[従来の技術] 従来、データ処理装置では高額度に使用するデータを
高速にかつ単純な機構でアクセスする目的で、16本程度
の数の汎用レジスタにて構成されるレジスタファイルを
備え、頻繁にアクセスするデータ,演算の中間結果等を
レジスタファイルに保持するようにしている。
このようなレジスタファイルを使用するソフトウェア
は、レジスタファイルの各レジスタに配置したデータを
一連の処理の区切り目で入れ換える手法を用いる。この
ため、レジスタ上に配置されたデータが一度に複数個ず
つ連続してメモリにストアされたり、メモリからロード
されたりする処理が頻繁に反復される。
CあるいはPascalなどの高級言語では高頻度に使用す
る変数のプロシージャ毎にレジスタに再配置する手法が
用いられることが多く、これらの高級言語で設計された
ソフトウェアではレジスタから複数のデータをメモリに
ストアしたり、逆に複数のデータをメモリからレジスタ
にロードする頻度が高い。
このため、1命令で複数のデータをレジスタからメモ
リに退避したりあるいは1命令で複数のデータをメモリ
からレジスタにロードする複数データ転送命令を有する
データ処理装置が従来から提案されている。このような
複数のデータ転送命令では、データを転送すべき対象と
なるレジスタを“0"と“1"とのベット列に対応させたレ
ジスタリストで示す手法が用いられている。従って、レ
ジスタリストをサーチして転送すべきレジスタ番号を高
速にエンコードする必要があり、この目的のためにプラ
イオリティエンコーダと称されるエンコード回路がハー
ドウェアとして提案されている。
プライオリティエンコーダを用いてレジスタリストか
ら転送すべきレジスタ番号を高速にエンコードする手法
は例えばUSP4,348,741等に詳細に開示されている。
[発明が解決しようとする課題] 従来のデータ処理装置では上述の如きプライオリティ
エンコーダを用いてレジスタリストをサーチし、“1"の
ビット位置を2進数にエンコードして得たレジスタ番号
のレジスタに保持されているデータを1つずつシリアル
に転送しているため、最低でも転送すべきデータ数と等
しい数の転送動作を反復する必要がある。
[課題を解決するための手段] 本発明のデータ処理装置はこのような課題を解決する
ためなされたものでありその第1の発明では、複数デー
タストア命令をデコードする命令デコーダと、命令デコ
ーダから出力された複数データストア命令中のレジスタ
リストを保持するビット列レジスタと、レジスタリスト
をサーチして“1"(または“0")の先頭の位置を2進数
にエンコードする第1のプライオリティエンコード回路
と、レジスタリストをサーチして“1"(または“0")が
2個連続する先頭の“1"を2進数にエンコードする第2
のプライオリティエンコード回路と、nビットのレジス
タ複数にて構成されたレジスタファイルと、内蔵メモリ
または外部メモリへ転送されるべきデータを保持するの
データレジスタ等にて構成されていて、命令デコーダで
デコードした複数データストア命令を実行する命令実行
手段とを備えている。
また第2の発明では、複数データロード命令をデコー
ドする命令デコーダと、命令デコーダから出力された複
数データロード命令中のレジスタリストを保持するビッ
ト列レジスタと、レジスタリストをサーチして“1"(ま
たは“0")の先頭の位置を2進数にエンコードする第1
のプライオリティエンコード回路と、レジスタリストを
サーチして“1"(または“0")が2個連続する位置を2
進数にエンコードする第2のプライオリティエンコード
回路と、nビットの複数のレジスタにて構成されたレジ
スタファイルと、内蔵メモリまたは外部メモリから転送
されて来たデータを保持するデータレジスタとにて構成
されていて、命令デコーダがデコードした複数データロ
ード命令を実行する命令実行手段とを備えている。
[作用] 本発明のデータ処理装置の第1の発明では、命令デコ
ーダが複数データストア命令をデコードした場合に、命
令デコーダから出力されたレジスタリストを第1のプラ
イオリティエンコーダでサーチして“1"(または“0")
の先頭の位置を2進数にエンコードすると共に、第2の
プライオリティエンコーダでもサーチして“1"(または
“0")が2ビット連続した先頭の位置を2進数にエンコ
ードする。先頭の“1"(又は“0")が単独のビットで2
つのプライオリティエンコーダのエンコード結果が異な
る場合は、“1"(または“0")の先頭のビット位置に対
応するレジスタからnビットのデータをデータレジスタ
に転送し、内蔵メモリまたは外部メモリへストアする。
“1"(または“0")が2ビットが連続した先頭の“1"で
2つのプライオリティエンコーダのエンコード結果が一
致する場合は、先頭の“1"(または“0")のビット位置
とその隣のビット位置とに対応するレジスタからそれぞ
れnビットのデータをデータレジスタへ転送し、転送し
た2つのnビットのデータを連結して2nビットのデータ
として内蔵メモリまたは外部メモリへストアする。
また第2の発明では、命令デコーダが複数データ命令
をデコードした場合に、命令デコーダから出力されたレ
ジスタリストを第1のプライオリティエンコーダでサー
チて“1"(または“0")の先頭の位置を2進数にエンコ
ードすると共に、第2のプライオリティエンコーダでも
サーチして“1"(または“0")が2ビット連続した位置
を2進数にエンコードする。“1"(または“0")の先頭
の位置が単独のビットで2つのプライオリティエンコー
ダのエンコード結果が異なる場合は、内蔵メモリまたは
外部メモリからnビットのデータをデータレジスタにフ
ェッチし、そのデータを“1"(または“0")の先頭のビ
ット位置に対応するレジスタへ転送する。“1"(または
“0")が2ビット連続した先頭な位置で2つのプライオ
リティエンコーダのエンコード結果が一致する場合は、
内蔵メモリまたは外部メモリから2nビットのデータをデ
ータレジスタにフェッチし、上位のnビットと下位のn
ビットとに分割して“1"(または“0")の先頭のビット
位置及びその隣のビットに対応するレジスタへそれぞれ
転送する。
[発明の実施例] 以下、本発明をその実施例を示す図面を参照して詳述
する。
(1)「本発明のデータ処理装置を用いたシステムの構
成」 第6図は本発明のデータ処理装置を用いたシステムの
構成例を示すブロック図である。
この例では、本発明のデータ処理装置100,命令キャッ
シュ106,データキャッシュ107及び108,主メモリ109がア
ドレスバス101,データバス102命令バス103,メモリアド
レスバス104,メモリデータバス105で結合されている。
アドレスバス101は本発明のデータ処理装置100から出
力されるアドレスを命令キャッシュ106とデータキャッ
シュ107,108とに入力する。命令バス103は命令キャッシ
ュ106から出力される命令コードを本発明のデータ処理
装置100へ転送する。
データバス102は本発明のデータ処理装置100から出力
されたデータをデータキャッシュ107,108へ転送したり
あるいはデータキャッシュ107,108から出力されたデー
タを本発明のデータ処理装置100へ転送したりする。メ
モリアドレスバス104は命令キャッシュ106またはデータ
キャッシュ107,108から出力されるアドレスを主メモリ1
09へ転送する。メモリデータバス105は主メモリ109と命
令キャッシュ106またはデータキャッシュ107,108との間
で命令またはデータを転送する。
命令キャッシュ106,データキャッシュ107,108がミス
した場合はそれぞれのキャッシュがメモリアドレスバス
104とメモリデータバス105とのバス権を調停して主メモ
リ109をアクセスする。
データキャッシュ107,108は本発明のデータ処理装置1
00の例では64ビットのバスに結合するため、2つのチッ
プが協調して動作する。各64ビットデータのデータの上
位32ビットのデータをデータキャッシュ107が、下位32
ビットのデータをデータキャッシュ108がそれぞれ分担
して受持つ。
以下、本発明のデータ処理装置100の命令体系及び処
理機構について最初に説明し、次に複数個のレジスタ中
のデータを転送する命令であるLDM命令とSTM命令とを実
行した場合のプライオリティエンコーダとデータ演算部
との動作を詳細に説明する。
(2)「本発明のデータ処理装置の命令フォーマット」 本発明のデータ処理装置の命令は16ビット単位で可変
長となっており、奇数バイト長の命令はない。
本発明のデータ処理装置では高頻度に使用される命令
を短いフォーマットとするために特に工夫された命令フ
ォーマット体系を有する。例えば、2オペランド命令に
対して、基本的に「4バイト」+「拡張部」の構成を有
し、全てのアドレッシングモードが利用可能な一般形フ
ォーマットと、頻度の高い命令とアドレッシングモード
とのみを使用可能な短縮形フォーマットとの2つのフォ
ーマットがある。
第9図乃至第13図に示す本発明のデータ処理装置の命
令フォーマット中に現われる記号の意味は以下の如くで
ある。
−:オペレーションコードが入る部分 Ea:8ビットの一般形のアドレッシングモードでオペラン
ドを指定する部分 Sh:6ビットの短縮形のアドレッシングモードでオペラン
トを指定する部分 Rn:レジスタファイル上のオペランドをレジスタ番号で
指定する部分 フォーマットは、第9図に示す如く、右側がLSB側で
且つ高いアドレスになっている。アダレスNとアドレス
N+1との2バイトを見ないと命令フォーマットが判別
できないようになっているが、これは、命令が必ず16ビ
ット(ハーフワード)単位でフェッチ,デコードされる
ことを前提としているためである。
本発明のデータ処理装置の命令では、いずれのフォー
マットの場合も、各オペランドのEaまたShの拡張部は必
ずそのEaまたはShの基本部を含む16ビット(ハーフワー
ド)の直後に配置される。これは、命令により暗黙に指
定される即値データあるいは命令の拡張部に優先する。
従って、4バイト以上の命令では、Eaの拡張部により命
令のオペレーションコードが分断される場合がある。
また、後述するように、多段間接モードにおいてEaの
拡張部に更に拡張部が付加される場合にも次の命令オペ
レーションコードよりもそちらの方が優先される。例え
ば、第1ハーフワードにEa1を含み、第2ハーフワード
にEa2を含み、第3ハーフワードまである6バイト命令
の場合について考える。なおここでは、Ea1に多段間接
モードを使用したため、普通の拡張部の他に多段間接モ
ードの拡張も付加されるものとする。この場合、実際の
命令ビットパターンは、命令の第1ハーフワード(Ea1
の基本部を含む),Ea1の拡張部,Ea1の多段間接モード拡
張部,命令の第2ハーフワード(Ea2の基本部を含む),
Ea2の拡張部,命令の第3ハーフワードの順となる。
(2.1)「短縮形2オペランド命令」 第10図は2オペランド命令の短縮形フォーマットを示
す模式図である。
このフォーマットにはソースオペランド側がメモリと
なるL−formatとデスティネーションオペランド側がメ
モリとなるS−formatとがある。
L−formatでは、Shはソースオペランドの指定フィー
ルドを、Rnはデスティネーションオペランドのレジスタ
の指定フィールドを、RRはShのオペランドサイズの指定
フィールドをそれぞれ表す。レジスタ上に置かれたデス
ティネーションオペランドのサイズは32ビットに固定さ
れている。レジスタ側とメモリ側とのサイズが異なり、
且つソース側のサイズが小さい場合に符号拡張が行われ
る。
S−formatでは、Shはデスティネーションオペランド
の指定フィールドを、Rnはソースオペランドのレジスタ
指定フィールドを、RRはShのオペランドサイズの指定フ
ィールドをそれぞれ表す。レジスタ上に置かれたソース
オペランドのサイズは32ビットに固定されている。レジ
スタ側とメモリ側とのサイズが異なり且つソース側のサ
イズが大きい場合に、オーバフローした部分の切捨てと
オーバーフローチャックとが行われる。
(2,2)「一般形1オペランド命令」 第11図は1オペランド命令の一般形フォーマット(G1
−format)を示す模式図である。
このフォーマットでは、MMはオペランドサイズの指定
フィールドを表している。一部のG1−format命令ではEa
の拡張部以外にも拡張部を有する。また、MMフィールド
を使用しない命令もある。
(2,3)「一般形2オペランド命令」 第12図は2オペランド命令の一般形フォーマットを示
す模式図である。
このフォーマットに含まれるのは、8ビットで指定さ
れる一般形アドレッシングモードのオペランドが最大2
つ存在する命令である。オペランドの総数自体は3つ以
上になる場大もある。
このフォーマットにおいて、EaMはデスティネーショ
ンオペランドの指定フィールドを、MMはデスティネーシ
ョンオペランドサイズの指定フィールドを、EaRはソー
スオペランド指定フィールドを、RRはソースオペランド
サイズの指定フィールドをそれぞれ表している。
一部の一般型フォーマット命令では、EaM及びEaRの拡
張部以外にも拡張部がある。
第13図はショートブランチ命令のフォーマットを示す
模式図である。
このフォーマットでは、ccccは分岐条件指定フィール
ドを、disp:8はジャンプ先との変位指定フィールドをそ
れぞれ表している。本発明のデータ処理装置では、8ビ
ット変位を指定する場合にはビットパターンでの指定値
を2倍して変位値とする (2.4)「アドレッシングモード」 本発明のデータ処理装置の命令のアドレッシングモー
ド指定方法には、レジスタを含めて6ビットで指定する
短縮形と、8ビットで指定する一般形とがある。
未定義のアドレッシングモードを指定した場合、ある
いは意味的に考えて明らかに不合理なアドレッシングモ
ードの組合わせが指定された場合には、未定時命令を実
行した場合と同様に予約命令例外が発生して例外処理が
起動される。これに該当するのは、デスティネーション
が即値モードである場合、アドレス計算を伴うべきオダ
レッシングモード指定フィールドで即値モードが使用さ
れた場合などである。
第14図乃至第24図に示すフォーマットの模式図におい
て使用されている記号の意味は以下の如くである。
Rn:レジスタ指定 (Sh):6ビットの短縮形アドレッシングモードでの指定
方法 (Ea):8ビットの一般形アドレッシングモードでの指定
方法 なお、各フォーマットの模式図において破線にて表さ
れている部分は拡張部を示す。
(2.4.1)「基本アドレッシングモード」 本発明のデータ処理装置の命令は種々のアドレッシン
グモードをサポートする。それらの内、本発明のデータ
処理装置でサポートする基本アドレッシングモードに
は、レジスタ直接モード,レジスタ間接モード,レジス
タ相対間接モード,即値モード,絶対モード,PC相対間
接モード,スタックポップモード,スタックプッシュモ
ードである。
レジスタ直接モードは、レジスタの内容をそのままオ
ペランドするアドレッシングモードである。フォーマッ
トの模式図を第14図に示す。図中、Rnは汎用レジスタま
たはFPUレジスタの番号を示す。
レジスタ間接モードは、汎用レジスタの内容をアドレ
スとするメモリの内容をオペランドとするアドレッシン
グモードである。フォーマットの模式図を第15図に示
す。図中、Rnは汎用レジスタの番号を示す。
レジスタ相対間接は、ディスプレースメント値が16ビ
ットであるか32ビットであるかにより2種類に分かれ
る。いずれも、汎用レジスタの内容に16ビットまたは32
ビットのディスプレースメント値を加えた値をアドレス
とするメモリの内容をオペランドとするアドレッシング
モードである。フォーマットの模式図を第16図に示す。
図中、Rnは汎用レジスタの番号を示す。disp:16とdisp:
32とは、それぞれ16ビットのディスプレースメント値,3
2ビットのディスプレースメント値を示す。ここでのデ
ィスプレースメント値は符号付きとして扱われる。
即値モードは、命令コード中で指定されるビットパタ
ーンをそのまま2進数と見なしてオペランドとするアド
レッシングモードである。フォーマットの模式図を第17
図に示す。図中、imm_dataは即値を示す。imm_dataのサ
イズは、オペランドサイズとして命令中で指定される。
絶対モードは、アドレス値が16ビットで示されるか32
ビットで示されるかにより種類に分かれる。いずれも、
命令コード中で指定される16ビットまたは32ビットのビ
ットパターンをアドレスとしたメモリの内容をオペラン
ドとするアドレッシングモードである。フォーマットの
模式図を第18図に示す。図中、abs:16とab:32とは、そ
れぞれ16ビット,32ビットのアドレス値を示す。abs:16
にてアドレスが示される場合は指定されたアドレス値が
32ビットに符号拡張される。
PC相対間接モードは、ディスプレースメント値が16ビ
ットであるか32ビットであるかにより2種類に分かれ
る。いずれも、プログラムカウンタの内容に16ビットま
たは32ビットのディスプレースメント値を加えた値をア
ドレスとするメモリの内容をオペランドとするアドレッ
シングモードである。フォーマットの模式図を第19図に
示す。図中、disp:16とdisp:32とは、それぞれ、16ビッ
トのディスプレースメント値,32ビットのディスプレー
スメント値を示す。ここではディスプレースメント値は
符号付きとして扱われる。PC相対間接モードにおいて参
照されるプログラムカウンタの値は、そのオペランドを
含む命令の先頭アドレスである。多段間接アドレシング
モードにおいてプログラムカウンタの値が参照される場
合にも、同様に命令先頭のアドレスがPC相対の基準値と
して使用される。
スタックポップモードはスタックポインタ(SP)の内
容をアドレスとするメモリの内容をオペランドとするア
ドレッシングモードである。オペランドアクセス後にSP
がオペランドサイズだけインクリメントされる。例え
ば、32ビットデータが扱われる場合には、オペランドア
クセス後にSPが+4だけ更新される。8,16,64ビットの
サイズのオペランドに対するスタックポップモードの指
定も可能であり、それぞれSPが+1,+2,+8だけ更新さ
れる。フォーマットの模式図を第20図に示す。オペラン
ドに対してスタックポップモードが意味を持たない場合
には予約命令例外が発生する。具体的に予約命令例外と
なるのは、writeオペラント,read−modify−writeオペ
ランドに対するスタックポップモード指定である。
スタックプッシュモードは、SPの内容をオペランドサ
イズだけデクリメントした内容をアドレスとするメモリ
の内容をオペランドとするアドレッシングモードであ
る。スタックプッシュモードではオペランドアクセス前
にSPがデクリメントされる。例えば、32ビットデータが
扱われる場合には、オペランドアクセス前にSPが−4だ
け更新される。8,16,64ビットのサイズのオペランドに
対するスタックプッシュモードの指定も可能であり、そ
れぞれSPが−1,−2,−8だけ更新される。フォーマット
の模式図を第21図に示す。オペランドに対してスタック
プッシュモードが意味を持たない場合には予約命令例外
が発生される。具体的に予約命令例外となるのは、read
オペランド,read−modify−writeオペランドに対するス
タックプッシュモード指定である。
(2.4.2)「多段間接アドレッシングモード」 複雑なアドレッシングも基本的には加算と間接参照と
の組合わせに分解することが可能である。従って、加算
と間接参照とのオペレーションをアドレッシングのプリ
ミティブとして与えておき、それらを任意に組合わせる
ことができれば、どのような複雑なアドレッシングモー
ドをも実現可能になる。
本発明のデータ処理装置の命令の多段間接アドレッシ
ングモードは上述のような考え方に基づいたアドレッシ
ングモードである。複雑なアドレッシングモードは、モ
ジュール間のデータ参照あるいはAI(人工知能)言語の
処理系に特に有用である。
多段間接アドレッシングモードを指定する場合、基本
アドレッシングモード指定フィールドではレジスタベー
ス多段間接モード,PCベース多段間接モード,絶対ベー
ス多段間接モードの3種類の指定方法の内のいずれか1
つを指定する。
レジスタベース多段間接モードは汎用レジスタの値を
拡張する多段間接アドレッシングのベース値とするアド
レッシングモードである。フォーマットの模式図を第22
図に示す。図中、Rnは汎用レジスタの番号を示す。
PCベース多段間接モードはプログラムカウンタの値を
拡張する多段間接アドレッシングのベース値とするアド
レッシングモードである。フォーマットの模式図を第23
図に示す。
絶対ベース多段間接モードはゼロを拡張される多段間
接アドレッシングのベース値とするアドレッシングモー
ドである。フォーマットの模式図を第24図に示す。
拡張される多段間接モード指定フィールドは16ビット
を単位としており、これを任意回反復して付加される。
1段の多段間接アドレッシングモードにより、ディスプ
レースメントの加算,インデクスレジスタのスケーリン
グ(×1,×2,×4,×8)と加算,メモリの間接参照を行
う。多段間接モードのフォーマットの模式図を第25図に
示す。各フィールドは以下に示す意味を有する。
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) プログラムカウンタに対して×2,×4,×8のスケーリ
ングを行った場合には、その段の処理終了後の中間値
(tmp)として不定値が入る。この多段間接モードによ
って得られる実効アドレスは予測できない値となるが、
例外は発生しない。プログラムカウンタに対するスケー
リングの指定は禁じられている。
多段間接アドレッシングモードによる命令フォーマッ
トのバリエーションを第26図,第27図の模式図に示す。
第26図は多段間接モードが継続するが終了するかのバリ
エーションを、第27図はディスプレースメントのサイズ
のバリエーションをそれぞれ示す。
任意段数の多段間接アドレッシングモードが利用でき
ればコンパイラの中で段数による場合分けが不要になる
ので、コンパイラの負担が軽減されるというメリットが
ある。多段の間接参照の頻度が非常に少ないとしても、
コンパイラとしては必ず正しいコードを発生できなけれ
ばならないからである。このため、フォーマット上、任
意の段数が可能になっている。
(2.5)「レジスタの退避命令と復帰命令」 本発明のデータ処理装置100は複数のレジスタの内容
をスタック領域等のメモリ領域に退避させる命令である
STM命令と、スタック領域等のメモリ領域に退避されて
いる複数のレジスタの内容を復帰させるLDM命令とを備
えている。
LDM命令のフォーマットは第28図の模式図に示されて
いる。LDM命令ではsrcsフィールドで示されているアド
レッシングモードに従って計算されたアドレスのメモリ
からreglistフィールドで示されたレジスタへデータが
転送される。転送されるべきデータを格納するレジスタ
はreglistフィールドによりビットパタンで示される。
各レジスタに転送されるデータはそれぞれ4バイトであ
る。
STM命令のフォーマットは第29図の模式図に示されて
いる。STM命令では、reglistフィールドで示されている
レジスタ中のデータがdestsフィールドで示されたアド
レッシングモードに従って計算されたアドレスのメモリ
へ転送される。転送すべきデータを格納しているレジス
タはreglistフィールドによるビットパタンで示され
る。第29図に示す如く、STM命令のreglistフィールドの
意味はdestsフィールドで示されるアドレッシングモー
ドにより異なる。これは複数個のレジスタ内容がメモリ
に格納される場合に、大きな番号のレジスタが常に大き
な番地に格納されるように統一するためである。各レジ
スタから転送されるデータはそれぞれ4バイトである。
(3)「本発明のデータ処理装置の機能ブロックの構
成」 第4図は本発明のデータ処理装置100の構成を示すブ
ロック図である。
本発明のデータ処理装置の内部を機能的に大きく分け
ると、命令入力部110,命令フェッチ部111,命令デコード
部112,第1マイクロROM部113,第2マイクロROM部114,オ
ペランドアドレス計算部115,PC計算部116,整数演算部11
7,浮動小数点演算部118,アドレス入出力部119,オペラン
ドアクセス部120,データ入出力部121に分かれる。
アドレス入出力部119をアドレスバス101に結合し、デ
ータ入出力部121をデータバス102に結合し、命令入力部
110を命令バス103に結合することにより第6図に示すシ
ステム構成をとることができる。
(3.1)「命令入力部」 命令入力部110は外部の命令バス103から32ビット単位
で命令コードを本発明のデータ処理装置100に入力す
る。命令キャッシュ106のアクセス方法には、1つのア
ドレスに対して32ビットの命令コードをアクセスする標
準アクセスモードと、1つのアドレスに対して4回連続
で32ビットの命令コードをアクセスするワッドアクセス
モードとがあり、いずれの場合も命令入力部110は入力
した命令コードを命令フェッチ部111へ出力する。
(3.2)「命令フェッチ部」 命令フェッチ部111には、命令アドレスのアドレス変
換機構,内蔵命令キャッシュ,命令用TLB,命令キュー及
びそれらの制御部等が備えられている。
命令フェッチ部111は、次にフェッチすべき命令のPC
値を物理アドレスに変換し、内蔵命令キャッシュから命
令コードをフェッチして命令デコード部112へ出力す
る。内蔵命令キャッシュがミスした場合にはアドレス入
出力部119へ物理アドレスを出力し、外部への命令アク
セスを要求し、命令入出力部110を通じて入力された命
令コードを内蔵命令キャッシュに登録する。
次にフェッチすべき命令のPC値は命令キューに入力す
べき命令のPC値として専用のカウンタで計算される。ジ
ャンプが発生した場合は、新たな命令のPC値がオペラン
ドアドレス計算部115,CP計算部116,整数演算部117等か
ら転送されて来る。
命令用TLBがミスした場合のページングによるアドレ
ス変換及び命令用TLBの更新も命令フェッチ部111の内部
にある制御回路により行われる。
また、本発明のデータ処理装置110がバスウォッチモ
ードである場合は、アドレス入出力部119を通じて入力
された物理アドレスがヒットした内蔵命令キャッシュの
エントリが無効化される。
(3.3)「命令デコード部」 命令デコード部112では基本的に16ビット(ハーフワ
ード)単位で命令コードをデコードする。このブロック
には第1ハーフワードに含まれるオペレーションコード
をデコードするFHW(First Half Woed)デコーダ,第2
及び第3ハーフワードに含まれるオペレーションコード
をデコードするNFHW(Not First Half Word)デコー
ダ,アドレッシングモードをデコードするアドレッシン
グモードデコーダが含まれる。
また、FHWデコーダ,NFHWデコーダの出力を更にデコー
ドしてマイクロROMのエントリアドレスを計算する第2
デコーダ,条件分岐命令の分岐予測を行う分岐予測機
構,オペランドアドレス計算の際のパイプラインコンフ
リクトをチェックするアドレス計算コンフリクトチェッ
ク機構も備えられている。
命令フェッチ部111から出力された命令コードは1ク
ロックにつき0〜6バイトがデコードされる。
デコード結果の内、整数演算部117での演算に関係す
る情報が第1マイクロROM部113へ、浮動小数点演算部11
8での演算に関係する情報が第2マイクロROM部114へ、
オペランドアドレス計算に関係する情報がオペランドア
ドレス計算部115へ、PC計算に関係する情報がPC計算部1
16へ、それぞれ出力される。
(3.4)「第1マイクロROM部」 第1マイクロROM部113には、整数演算部117の制御を
行う種々のマイクロプログラムルーチンが格納されてい
るマイクロROM,マイクロシーケンサ,マイクロ命令デコ
ーダ等が備えられている。マイクロ命令はマイクロROM
から1クロック当たり1度読出される。マイクロシーケ
ンサは命令実行に関するマイクロプログラム実行のため
のシーケンス処理の他に、例外,割込及びトラップ(こ
の3つを併せてEITと称す)の受付けと各EITに対応する
マイクロプログラムのシーケンス処理も行う。
第1マイクロROM部113には命令コードに依存しない外
部割込み及び整数演算実行結果によるマイクロプログラ
ムの分岐条件も入力される。
第1マイクロROM部113のマイクロデコーダの出力は主
に整数演算部117へ出力されるが、ジャンプ命令の実行
時,例外受付時には一部の情報を他の機能ブロックへも
出力する。
(3.5)「第2マイクロROM部」 第2マイクロROM部114には、浮動小数点演算部118の
制御を行う種々のマイクロプログラムルーチンが格納さ
れているマイクロROM,マイクロシーケンサ,マイクロ命
令デコーダ等が備えられている。マイクロ命令はマイク
ロROMから1クロックに1度読み出される。マイクロシ
ーケンサはマイクロプログラムで示されるシーケンス処
理の他に、浮動小数点演算に関係する例外の処理も行
い、マスクされていない浮動小数点例外が検出された場
合には第1マイクロROM部113へ例外処理を給する。第2
マイクロROM部114のマイクロシーケンサは第1マイクロ
ROM部113のマイクロシーケンサと並列に動作し、整数演
算部117と並列に浮動小数点演算部118を制御する。
第2マイクロROM部114には浮動小数点演算の実行結果
によるフラッグ情報も入力される。
第2マイクロROM部114のマイクロデコーダの出力は主
に浮動小数点演算部118に対して出力されるが、浮動小
数点演算に関係する例外の検出等の一部の情報は他の機
能ブロックへも出力される。
(3.6)「オペランドアドレス計算部」 オペランドアドレス計算部115は、命令デコード部112
のアドレッシングモードデコーダ等から出力されたオペ
ランドアドレス計算に関係する情報によりハードワイヤ
ードに制御される。このオペランドアドレス計算部115
ではメモリ間接アドレッシングのためのメモリアクセス
以外のオペランドのアドレス計算とジャンプ命令のジャ
ンプ先アドレスの計算とが行われる。
オペランドアドレスの計算結果は整数演算部117へ出
力される。オペランドアドレス計算終了段階での先行ジ
ャンプ処理ではジャンプ先アドレスの計算結果が命令フ
ェッチ部111とPC計算部116とへ出力される。
即値オペランドは整数演算部117及び浮動小数点演算
部118へ出力される。アドレス計算に必要な汎用レジス
タ,プログラムカウンタの値は整数演算部117,PC演算部
116から入力される。
(3.7)「PC計算部」 PC計算部116は命令デコード部112から出力されるPC計
算に関係する情報でハードワイヤードに制御され、命令
のPC値を計算する。本発明のデータ処理装置100の命令
は可変長命令であり、命令をデコードした後でなければ
命令の長さが判明しない。PC計算部116は、命令デコー
ド部112から出力された命令長をデコード中の命令のPC
値に加算することにより次に実行すべき命令のPC値を計
算する。
PC計算部116の計算結果は各命令のPC値として命令の
デコード結果と共に出力される。
命令デコードステージでの先行ブランチ処理では、命
令デコード部112から出力されるブランチ幅をPC値に加
算することによりブランチ先命令のアドレスが計算され
る。
また、PC計算部116にはサブルーチンへのジャンプ命
令の実行時にスタックにプッシュされているサブルーチ
ンからの戻り先PC値のコピーを保持したPCスタックが備
えられており、サブルーチンからのリターン命令に対し
てはPCスタックから戻り先PCを読出すことにより、プリ
リターン先命令のアドレスを生成する処理も行う。
(3.8)「整数演算部」 整数演算部117は第1マイクロROM部113のマイクロROM
に格納されたマイクロプログラムにより制御され、各整
数演算命令の機能を実現するために必要な演算を整数演
算部117の内部にあるレジスタファイルと演算器とで実
行する。レジスタファイルには汎用レジスタと作業用レ
ジスタとが含まれる。
また、整数演算部117は演算器としてはALU,プライオ
リティエンコーダ等を備えている。整数演算部117には
整数演算の結果により変化するフラグ,外部割込みのマ
スクレベルを定めるビット等を含むプロセッサ状態語
(PSW),バッファメモリ制御レジスタ等が含まれる。
命令の演算対象となるオペランドがアドレスまたは即
値である場合は、オペランドアドレス計算部115から即
値または計算されたアドレスが入力される。また、命令
の演算対象となるオペランドがメモリ上のデータである
場合は、アドレス計算部115で計算されたアドレスがオ
ペランドアクセス部120へ出力され、内蔵データキャッ
シュまたは外部からフェッチしたオペランドが整数演算
部117へ入力される。
演算に際して、内蔵データキャッシュ,外部のデータ
キャッシュ107,108あるいは主メモリ109をリードする必
要がある場合は、マイクロプログラムの指示によりオペ
ランドアクセス部120へアドレスを出力することによ
り、目的のデータをフェッチする。
演算結果を内蔵データキャッシュ,外部のデータキャ
ッシュ107,108あるいは主メモリ109へストアする必要が
ある場合には、マイクロプログラムの指示によりオペラ
ンドアクセス部120へアドレスとデータとを出力する。
この際、PC計算部116からはそのストア動作を行った命
令のPC値がオペランドアクセス部120へ出力される。
外部割込み,例外の処理等が行われて新たな命令アド
レスを整数演算部117が得た場合は、これが命令フェッ
チ部111とPC計算部116とへ出力される。
(3.9)「浮動小数点演算部」 浮動小数点演算部118は第2マイクロROM部114のマイ
クロROMに格納されたマイクロプログラムにより制御さ
れ、各浮動小数点演算命令の機能を実現するために必要
な演算を浮動小数点演算部118の内部にあるレジスタフ
ァイルと演算器とで実行する。浮動小数点演算部118に
は浮動小数点演算の丸め処理方法及び浮動小数点演算例
外の検出許可のモードを設定する浮動小数点演算モード
制御レジスタ(FMC)と、浮動小数点演算結果に対する
フラグ,浮動小数点例外の発生状態を示すステータスビ
ットからなる浮動小数点演算状態語(FSW)とがある。
命令の演算対象となるオペランドが即値である場合
は、オペランドアドレス計算部115から即値が入力され
る。また、命令の演算対象となるオペランドがメモリ上
のデータである場合は、アドレス計算部115で計算され
たアドレスがオペランドアクセス部120へ出力され、内
蔵データキャッシュまたは外部からフェッチしたオペラ
ンドが浮動小数点演算部118に入力される。
オペランドを内蔵データキャッシュ,外部のデータキ
ャッシュ107,108あるいは主メモリ109へストアする必要
がある場合には、マイクロプログラムの指示によりオペ
ランドアクセス部120へデータを出力する。ストア動作
では浮動小数点演算部118と整数演算部117とが協調して
動作し、オペランドアクセス部120に対して整数演算部1
17からオペランドのアドレスが出力され、浮動小数点演
算部118からオペランドが出力される。この際、PC計算
部116からはそのストア動作を行った命令のPC値がオペ
ランドアクセス部120へ出力される。
(3.10)「オペランドアクセス部」 オペランドアクセス部120には、オペランドアドレス
のアドレス変換機構,データバッファ、データ用TLB,ス
トアバッファ,オペランドブレイクポイントレジスタ及
びそれらの制御部がある。データバッファはモード切替
えにより内蔵データキャッシュまたはコンテキスト退避
用メモリとして動作する。
データバッファを内蔵データキャッシュとして動作さ
せる場合、データのロード動作ではオペランドアドレス
計算部115または整数演算部117から出力されたロードす
べきデータの論理アドレスが物理アドレスに変換され、
内蔵データキャッシュからデータがフェッチされて整数
演算部117あるいは浮動小数点演算部118に入力される。
内蔵データキャッシュがミスした場合には、アドレス
入出力部119へ物理アドレスが出力されて外部へのデー
タアクセスが要求され、データ入出力部122を通じて入
力されたデータが内蔵データキャッシュに登録される。
データのストア動作においては、整数演算部117から
出力されたストアすべきデータの論理アドレスが物理ア
ドレスに変換され、整数演算部117あるいは浮動小数点
演算部118から出力されたデータが内蔵データキャッシ
ュにストアされると共に、ストアバッファを通じてアド
レス入出力部119へ物理アドレスが出力され、データ入
出力部122を通じてデータが外部へ出力される。
ストア動作でミスが発生した場合には内蔵データキャ
ッシュの更新は行われない。ストアバッファではストア
すべきデータとそのアドレス、更にそのストア動作を行
った命令のPC値とが1組として管理される。ストアバッ
ファでのストア動作は先入れ先だし制御方式で管理され
る。
データ用TLBがミスした場合のページングによるアド
レス変換及びデータ用TLBの更新もオペランドアクセス
部120の内部の制御回路により行われる。また、メモリ
アクセスアドレスがメモリ空間にマッピングされている
I/O領域に入るか否かのチェックも行われる。
また、データバッファを、内蔵データキャッシュとし
て動作させる場合、本発明のデータう処理装置がバスウ
ォッチモードであれば、アドレス入出力部119を通じて
入力された物理アドレスがヒットする内蔵データキャッ
シュのエントリは無効化される。
(3.11)「アドレス入出力部」 アドレス入出力部119は命令フェッチ部111とオペラン
ドアクセス部120とから出力されたアドレスを本発明の
データ処理装置100の外部へ出力する。アドレスの出力
は本発明のデータ処理装置100で定められたバスプロト
コルに従って行われる。バスプロトコルの制御はアドレ
ス入出力部119内にある外部バス制御回路が行う。外部
バス制御回路ではページ在例外またはバスアクセス例
外,外部割込みの受付も行う。
また、本発明のデータ処理装置100以外の外部デバイ
スがバスマスタになっており、本発明のデータ処理装置
100がバスウォッチモードであれば外部デバイスがデー
タライトサイクルを実行した場合にアドレスバス101上
へ出力されたアドレスを組込んで命令フェッチ部111と
オペランドアクセス部120へと転送する。
(3.12)「データ入出力部」 データ入出力部121はオペランドロード動作の際にデ
ータバス102からデータを取込んでオペランドアクセス
部120へ転送し、またオペランドのストア動作の際にオ
ペランドアクセス部120から出力されたオペランドをデ
ータバス102へ出力する。データキャッシュ107,108のア
クセス方法には、1つのアドレスに対して64ビットのデ
ータをアクセスする標準アクセスモードと、1つのアド
レスに対して4回連続で64ビットのデータをアクセスす
るクワッドアクセスモードとがあり、いずれの場合もデ
ータ入出力部121はオペランドアクセス部120と外部のメ
モリとで送受されるデータの入出力を制御する。
(4)「パイプライン処理」 本発明のデータ処理装置100は各種のバッファ記憶装
置と、命令バス103及びデータバス102を使用したメモリ
の効率的アクセスとにより、命令をパイプライン処理し
て高性能に動作する。ここでは、本発明のデータ処理装
置100のパイプライン処理方法について説明する。
(4.1)「パイプライン機構」 本発明のデータ処理装置100のパイプライン処理機構
を第5図の模式図に示す。
本発明のデータ処理装置100のパイプライン処理機構
は、命令のプリフェッチを行う命令フェッチステーズ
(IFステージ)31,命令のデコードを行うデコードステ
ージ(Dステージ)32,オペランドのアドレス計算を行
うオペランドアドレス計算ステージ(Aステージ)33,
マイクロROMアクセス(特にRステージ37と称す)とオ
ペランドのプリフェッチ(特にOFステージ38と称す)と
を行うオペランドフェッチステージ(Fステージ)34,
命令の実行を行う実行ステージ(Eステージ)35,メモ
リオペランドのストアを行うストアステージ(Sステー
ジ)36の6段構成でパイプライン処理を行う。なお、S
ステージ36には3段のストアバッファがある。
各ステージは他のステージとは独立に動作し、論理上
は6つのステージが完全に独立動作する。Sステージ36
以外の各ステージは1回の処理を最小1クロックで行う
ことができる。Sステージ36は1回のオペランドストア
処理を最小2クロックで行うことができる。従って、メ
モリオペランドのストア処理が行われない場合、理想的
には1クロックごとに次々とパイプライン処理が進行す
る。
本発明のデータ処理装置100にはメモリ−メモリ間演
算あるいはメモリ間接アドレッシング等、基本パイプラ
イン処理1回だけでは処理が行えない命令があるが、こ
れらの処理に対してもなるべく均衡したパイプライン処
理が行えるように設計されている。複数のメモリオペラ
ンドを有する命令に対してはメモリオペランドの数に基
づいてデコード段階で複数のパイプライン処理単位(ス
テップコード)に分解してパイプライン処理を行う。
IFステージ31からDステージ32へ渡される情報は命令
コードそのものである。
Dステージ32からAステージ33へ渡される情報は命令
で指定された演算に関する情報(Dコード41と称す)
と、オペランドのアドレス計算に関係する情報(Aコー
ド42と称す)と、処理中の命令のプログラムカウンタ値
(PC)との3つである。
Aステージ33からFステージ34へ渡される情報はマイ
クロプログラムルーチンのエントリ番地,マイクロプロ
グラムへのパラメータなどを含むRコード43と、オペラ
ンドのアドレス,アクセス方法指示情報等を含むFコー
ド44と、処理中の命令のプログラムカウンタ値(PC)と
の3つである。
Fステージ34からFステージ35へ渡される情報は演算
制御情報,リテラル等を含むEコード45と、オペラン
ド,オペランドアドレス等を含むSコード46a,4bと、処
理中命令のプログラムカウンタ値(PC)との3つであ
る。Sコード46a,46bはアドレス64aとデータ46bとから
なる。
Eステージ35からSステージ36へ渡される情報はスト
アすべき演算結果であるWコード47a,47bとその演算結
果を出力した命令のプログラムカウンタ値(PC)との2
つである。Wコード47a,47bはアドレス47aとデータ47
b)とからなる。
Eステージ35以前のステージで検出されたEITはその
コードがEステージ35に到達するまでEIT処理を起動し
ない。Eステージ35で処理されている命令のみが実行段
階の命令であり、IFステージ31〜Fステージ34で処理さ
れている命令は未だ実行段階に至っていないからであ
る。従って、Eステージ35以前で検出されたEITはそれ
が検出されたことがステップコード中に記録されて次の
ステージに伝えられるのみである。Sステージ35で検出
されたEITはEステージ35で処理中の命令の処理が完了
した時点またはその命令の処理がキャンセルされた場合
に受付けられ、Eステージ35に戻って処理される。
(4.2)「各パイプラインステージの処理」 各パイプラインステージの入出力ステップコードには
第5図に示したように便宣上名前が付与されている。ま
たステップコードはオペレーションコードに関する処理
を行い、マイクロROMのエントリ番地,Eステージ35に対
するパラメータなどになる系列と、Eステージ35の処理
対象のオペランドになる系列との2系列がある。また、
Dステージ32からSステージ36までの間では処理中の命
令のプログラムカウンタ値が受渡される。
(4.2.1)「命令フェッチステージ」 命令フェッチステージ(IFステージ31)では命令フェ
ッチ部111が動作する。内蔵命令キャッシュからあるい
は外部メモリから命令をフェッチし、命令キューに入力
して、Dステージ32に対して2〜6バイト単位で命令コ
ードを出力する。命令キューの入力は整置された4バイ
ト単位で行われる。
標準アクセスモードで外部から命令をフェッチする場
合は整置された4バイトにつき最小2クロックを要す
る。クワッドアクセスモードでは16バイトにつき最小5
クロックを要する。内蔵命令キャッシュがヒットした場
合は整置された8バイトにつき1クロックでフェッチ可
能である。命令キューの出力単位は2バイトごとに可変
であり、1クロックの間に最大6バイトまで出力可能で
ある。またジャンプの直後には命令キューをバイパスし
て命令コード2バイトを直接命令デコーダに転送するこ
とも可能である。
命令の論理アドレスの物理アドレスへの変換,内蔵命
令キャッシュ及び命令用TLBの制御,プリフェッチ先命
令アドレスの管理,命令キューの制御もIFステージ31で
行われる。
(4.2.2)「命令デコードステージ」 命令デコードステージ(Dステージ32)はIFステージ
31から入力された命令コードをデコードする。命令コー
ドのデコードは命令デコード部112のFHWデコーダ,NFHW
デコーダ及びアドレッシングモードデコーダを使用して
1クロックに1度の割合で行われ、1回のデコード処理
で0〜6バイトの命令コードを消費する(リターンサブ
レーチン命令の復帰先アドレスを含むステップコードの
出力処理等では命令コードを消費しない)。Dステージ
32は1回のデコードでAステージ33に対してアドレス計
算情報であるAコード42とオペレーションコードの中間
デコード結果であるDコード41とを出力する。
Dステージ32ではPC計算部116の制御及び命令キュー
からの命令コードの出力処理も行う。Dステージ32では
ブランチ命令及びサブルーチンからのリターン命令に対
して先行ジャンプ処理を行う。先行ジャンプを行った無
条件ブランチ命令に対してはDコード41もAコード42も
出力せず、Dステージ32で命令の処理を終了する。
(4.2.3)「オペランドアドレス計算ステージ」 オペランドアドレス計算ステージ(Aステージ)33で
の処理は大きく2つに分かれる。第1は、命令デコード
部112の第2デコーダを使用してオペレーションコード
の後段デコードを行う処理で、第2はオペランドアドレ
ス計算部115でオペランドアドレスの計算を行う処理で
ある。
オペレーションコードの後段デコード処理はDコード
41を入力とし、レジスタ及びメモリの書込み予約及びマ
イクロプログラムルーチンのエントリ番地及びマイクロ
プログラムに対するパラメータ等を含むRコード43の出
力を行う。なお、レジスタ及びメモリの書込み予約は、
アドレス計算で参照したレジスタ及びメモリの内容が、
パイプライン上の先行する命令で書換えられてしまって
誤ったアドレス計算が行われることを防止するためのも
のである。
オペランドアドレス計算処理はAコード42を入力と
し、Aコード42に従ってオペランドアドレス計算部115
でオペランドのアドレス計算を行い、その計算結果をF
コード44として出力する。またジャンプ命令に対しては
ジャンプ先アドレスの計算を行って先行ジャンプ処理を
行う。この際、アドレス計算に伴うレジスタの読出し時
に書込み予約のチェックが行われ、先行命令がレジスタ
またはメモリに対して書込み処理を終了していないため
に予約があることが指示されれば、先行命令のEステー
ジ35での書込み処理が終了するまで待機状態になる。
Aステージ33では、Dステージ32で先行ジャンプを行
わなかったジャンプ命令に対して先行ジャンプ処理を行
う。絶対値アドレスへのジャンプあるいはレジスタ間接
アドレッシングのジャンプ等に対してはAステージ33で
先行ジャンプが行われる。先行ジャンプを行った無条件
ジャンプ命令に対してはRコード43やFコード44は出力
されず、Aステージ33で命令の処理を終了する。
(4.2.4)「マイクロROMアクセスステージ」 オペランドフェッチステージ(Fステージ)34での処
理も大きく2つに分かれる。第1はマイクロROMのアク
セス処理であり、特にRステージ37と称す。第2はオペ
ランドプリフェッチ処理であり、特にOFステージ38と称
す。Rステージ37とOFステージ38とは必ずしも同時に動
作するわけではなく、データキャッシュのミス,ヒッ
ト、データTLBのミス,ヒット等に依存して、動作タイ
ミングが異なる。
Rステージ37の処理であるマイクロROMアクセス処理
はRコード43に対して次のEステージ35での実行に使用
される実行制御コードであるEコード45を作り出すため
のマイクロROMアクセスとマイクロ命令デコード処理と
である。
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アクセスが次々と行われる可
能性が高い。
(4.2.5)「オペランドフェッチステージ」 オペランドフェッチステージ(OFステージ)38はFス
テージ34が行う上述の2つの処理の内のオペランドプリ
フェッチ処理を行う。
OFステージ38では、Fコード44の論理アドレスをデー
タTLBで物理アドレス変換してその物理アドレスで内蔵
データキャッシュあるいは外部のメモリをアクセスして
オペランドをフェッチし、そのオペランドとFコード44
として転送されてきたその論理アドレスとを組合わせて
Sコード46a,46bとして出力する。
1つのFコード44では8バイト境界をクロスしてもよ
いが、8バイト以下のオペランドフェッチを指定する。
Fコード44にはオペランドがアクセスするか否かの指定
も含まれており、Aステージ33が計算したオペランドア
ドレス自体あるいは即値をEステージ35へ転送する場合
にはオペランドプリフェッチは行われず、Fコード44の
内容をSコード46a,46bとして転送する。プリフェッチ
しようとするオペランドとEステージ35が書込み処理を
行おうとするオペランドとが一致する場合は、オペラン
ドプリフェッチは内蔵データキャッシュからも外部から
も行われず、バイパスして行われる。
(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
にて示されたマイクロプログラムルーチンのエントリ番
地からの一連のマイクロ命令を実行することにより命令
を実行する。
Eコード45には整数演算部117を制御するコード(特
にEIコードと称す)と浮動小数点演算部118を制御する
コード(特にEFコードと称す)とがある。EIコードとEF
コードとは独立に出力されることも可能であり、両コー
ドが独立して出力された場合には、Eステージ35では整
数演算部117と浮動小数点演算部118とが並列に動作す
る。例えば浮動多数点演算部118でメモリオペランドを
持たない浮動小数点演算命令を実行する場合、この動作
は整数演算部117の動作と並行して実行される。
整数演算であっても浮動小数点演算であっても、マイ
クロROMの読出しとマイクロ命令の実行とはパイプライ
ン化されて行われる。従って、マイクロプログラムで分
岐が発生した場合は1マイクロステップの空きが生じ
る。Eステージ35ではAステージ33が行ったレジスタま
たはメモリに対する書込み予約をオペランドの書込みの
後に解除する。
各種の割込みは命令の切目のタイミングにおいてEス
テージ35が直接受付け、マイクロプログラムにより必要
な処理が実行される。その他の各種EITの処理もEステ
ージ35でマイクロプログラムにより行われる。
演算の結果をメモリにストアする必要がある場合は、
Eステージ35はSステージ36へWコード47a,47bとスト
ア処理を行う命令のプログラムカウンタ値との両方を出
力する。
(4.2.7)「オペランドストアステージ」 オペランドストアステージ(Sステージ)36はWコー
ドの論理アドレス47aをデータTLBで物理アドレスに変換
し、そのアドレスでWコードのデータ47bを、内蔵デー
タキャッシュにストアする。同時にWコード47a,47bと
プログラムカウンタ値とをストアバッファに入力し、デ
ータTLBから出力された物理アドレスを用いて外部のメ
モリへWコードのデータ47bをストアする処理が行われ
る。
Sステージ36の動作はオペランドアクセス部120で行
われ、データTLBまたは内蔵データキャッシュがミスし
た場合のアドレス変換処理及び内蔵データキャッシュの
入替え処理も行う。
オペランドのストア処理でEITが検出された場合は、
ストアバッファにWコード47a,47bとプログラムカウン
タ値とが保持されたままの状態で、Eステージ35にEIT
の検出が通知される。
(4.3)「各パイプラインステージの状態制御」 パイプラインの各ステージは入力ラッチと出力ラッチ
とを有し、他のステージとは独立に動作することを基本
とする。各ステージは1つ前に行った処理が終了し、そ
の処理結果を出力ラッチから次のステージの入力ラッチ
へ転送し、自ステージの入力ラッチに次の処理に必要な
入力信号が全て揃えば次の処理を開始する。
つまり、各ステージは、1つ前段のステージから出力
されてくる次の処理に対する入力信号が全て有効とな
り、現在の処理結果を後段のステージの入力ラッチへ転
送して出力ラッチが空になった場合に次の処理を開始す
る。
各ステージが動作を開始する直前のタイミングで入力
信号が全て揃っている必要がある。入力信号が揃ってい
ない場合には、そのステージは待ち状態(入力待ち)に
なる。出力ラッチから次のステージの入力ラッチへの転
送が行われる場合には次のステージの入力ラッチが空き
状態になっている必要があり、次のステージの入力ラッ
チが空き状態でない場合もパイプラインステージは待ち
状態(出旅待ち)になる。また、キャッシュ,TLBがミス
したり、パイプラインで処理中の命令相互間にデータ干
渉が生じたような場合には、1つのステージの処理に複
数クロックが必要となり、パイプライン処理が遅延す
る。
(5)(データ演算部の動作の詳細な説明」 第3図は本発明のデータ処理装置100の整数演算部117
の詳細なブロック図であり、オペランドアドレス計算部
115,浮動小数点演算部118,オペランドアクセス部120も
共に示されている。
SAレジスタ210はオペランドアドレス計算部115から整
数演算部117へ出力されるオペランドアドレス及び即値
を保持するレジスタである。
AAレジスタ211は整数演算部117からオペランドアクセ
ス部120へアドレスを出力するためのレジスタであり、
保持内容に対する1,2,4,8のインクリメント/デクリメ
ント機能を有する。8をインクリメント/デクリメント
する機能は、8バイト浮動小数点数を浮動小数点レジス
タとメモリとの間で転送する際に4バイトの2つの整数
を汎用レジスタとメモリとの間で同時に転送する場合に
有意義な機能である。
レジスタファイル213は整数演算部117内の種々のデー
タを保持する。またレジスタファイル213は主ALU215と
補助ALU212とにそれぞれ3本の4バイトのバスで結合さ
れており、2つのレジスタ上のオペランドを対象として
加算,比較等の演算を主ALU215または補助ALU212に行わ
せることが可能である。
DDレジス216は整数演算部117とオペランドアクセス部
120との間でデータを入出力するためのインタフェイス
レジスタであり、8バイトのDDバス123でオペランドア
クセス部120と結合している。
FFレジスタ217は整数演算部117と浮動小数点演算部11
8とのインタフェイスレジスタである。
プライオリティエンコーダ部214は、ビット列中の先
頭の“1"または“0"の位置をサーチしたり、連続した2
ビットが“1"または“0"であるフィールドの先頭の位置
をサーチする。
レジスタ番地指定回路218は、第1マイクロROM部113
の指示に従って第1マイクロROM部113が指定したレジス
タ番地またはプライオリティエンコーダ部214が指定し
たレジスタ番地に従ってレジスタファイル213に対する
データの読み書きを制御する。
以下プライオリティエンコーダ部214とレジスタ番地
指定回路218との詳細構成及びLDM命令とSTM命令との動
作を述べる。
(5.1)「プライオリティエンコーダの詳細構成」 第1図はプライオリティエンコーダ部214の詳細なブ
ロック図である。
プライオリティエンコーダ部214はビット列生成回路
1,オフセット値指定回路2,2つのプライオリティエンコ
ード回路3及び4,エンコード結果判定回路7等に構成さ
れている。
ビット列生成回路1はS1バス221から入力された16ビ
ットまたは32ビットのビット列を保持する機能、“0"と
“1"とを反転する機能、ビット順序を逆転する機能、隣
接ビット間の論理積をとる機能を有し、これらの変換が
加えられたビット列を第1エンコード回路3及び第2エ
ンコード回路4へ出力する。
第2図はビット列生成回路1の詳細な構成を示すブロ
ック図である。
S1バス221から入力された値はそのままセレクタ10に
入力される他、インバータにより反転されたビット列と
してもセレクタ10に入力される。セレクタ10は反転され
たビット列または反転されていないビット列のいずれか
を選択して出力し、入力ラッチ11に保持させる。
入力ラッチ11の出力は必要に応じてビット正順逆順指
定回路12でビット順序を逆転して第1エンコード回路3
に入力される。ビット正順逆順指定回路12の出力はま
た、論理積回路13により各ビットについてそれぞれの上
位側に隣接するビットとの論理積がとられて第2エンコ
ード回路4に入力される。
オフセット値指定回路2はS2バス222から入力された
5ビットのオフセット値を保持し、その値を第1エンコ
ード回路3及び第2エンコード回路4へ出力する。また
オフセット値指定回路2は、エンコード結果判定回路7
から出力されるオフセット値を入力し、その値に“1"ま
たは“2"を加算する加算機能がある。
第1エンコード回路3と第2エンコード回路4とは同
一に回路構成されたプライオリティエンコード回路であ
り、ビット列生成回路1から入力されたビット列を対象
としてオフセット指定回路2で指定されたビット位置以
降でサーチして最初の“1"のビット位置を出力する組合
せ論理回路である。
エンコード結果判定回路7は第1エンコード回路3と
第2エンコード回路4とから出力されるエンコード値と
AAバス122の下位3ビットとを入力とし、オフセット値
指定回路2へエンコード結果と加算すべき値とを出力
し、レジスタ番地指定回路218へレジスタ番号と2つの
レジスタを同時アクセスすべきか否かを示す並列アクセ
ス信号8とを出力する他、第1エンコード回路3から出
力されたエンコード値をD1バス225へ出力することもで
きる。また、エンコード結果判定回路7は第1エンコー
ド回路3の出力の“1"と“0"とを反転した値をレジスタ
番地指定回路218へ出力することもできる。
並列アクセス信号8はAAバス122の下位3ビットがす
べて“0"で且つ第1エンコード回路3と第2エンコード
回路4とのエンコード結果が同じ値である場合にアサー
トされる。
(5.2)「レジスタ番地指定回路」 第8図はレジスタ番地指定回路218の詳細な構成を示
すブロック図である。
レジスタ番地指定回路218は、第1マイクロROM部113
で指定されたレジスタ番地またはプライオリティエコー
ダ部214で指定されたレジスタ番号をデコードし、S1バ
ス221,S2バス222,D1バス225,D3バス226に対するレジス
タファイル213の入出力を制御する。
第1マイクロROM部113からは汎用レジスタと作業用レ
ジスタとのアクセスが可能で各バスについて5ビットで
入力または出力するレジスタ番地が指定される。プライ
オリティエンコーダ部214からはレジスタファイル213中
の入力または出力を行う汎用レジスタ番号が4ビットで
指定され、レジスタ番地指定回路218のセレクタ(17,1
8,19,20)への入力段階で上位に“0"を拡張してレジス
タ番地とされる。
第1マイクロROM部113で各バス毎に指定されたレジス
タ番地とプライオリティエンコーダ部214で指定された
レジスタ番号とはセレクタ17,18,19,20によりいずれか
が選択されてそれぞれのバス用のデコード回路17′,1
8′,19′,20′へ入力される。
本発明のデータ処理装置100では、転送命令あるいは
加算命令等の単純な命令では第1マイクロROM部113から
出力されたレジスタ番地に従って各バスに入出力するレ
ジスタを制御するため、レジスタ番地が各バス毎のデコ
ード回路17′,18′,19′,20′でデコードされ、その出
力信号に従ってレジスタファイル216をアクセスする
が、一部の高機能命令ではデコード回路17′,18′,1
9′,20′から出力された制御信号をシフトすることによ
り、本来のデコード結果とは異なるデコード結果にてレ
ジスタファイル213をアクセスする。
S2バス22DとD3バス226とは高機能命令の実行に際して
2つのレジスタを並列アクセスする場合に、プライオリ
ティエンコーダ部214により指定されたレジスタ番号よ
り1つ大きなレジスタ番号のレジスタをアクセスするた
めにデコード結果を1ビット上位側へシフトしてレジス
タファイル213へ出力する。この機能はデコーダ18′と2
0′とがデコード結果のビット列を出力する制御信号線
群と、そのビット列を1ビット上位側にシフトしたビッ
ト列を出力する制御信号線群とをセレクタ15,16でそれ
ぞれ1ビットシフトしたビット列を出力する制御信号線
群を選択するとにより実現される。
またS1バス221は高機能命令の実行に際して2つのレ
ジスタを並列アクセスする場合、プライオリティエンコ
ーダ部214により指定されたレジスタ番号より1つ小さ
なレジスタ番号のレジスタをアクセスするためにデコー
ダ17′のデコード結果を1ビット下位側へシフトしてレ
ジスタファイル213へ出力する。この機能はデコーダ1
7′がデコード結果のビット列を出力する制御信号線群
とそのビット列を1ビット下位側にシフトしたビット列
を出力する制御信号線群とをセレクタ14でそれぞれ1ビ
ットシフトしたビット列を出力する制御信号線群を選択
することにより実現される。
(5.3)「LDM命令の動作」 第30図はLDM命令のオペレーションコードの一例を示
す模式図、第32図はLMD命令を実行する場合の整数演算
部117の動作手順を示すフローチャートである。
このLMD命令は6個の汎用レジスタR1,R4,R5,R6,R7,R8
にスタック領域から6個の4バイトデータをロードする
命令である。本発明のデータ処理装置100でこの命令を
実行する場合、第1マイクロROM部113の制御により第32
図に示すフローチャートに従って整数演算部117が動作
する。
この例ではビット列生成回路1でレジスタリスト“01
001111 10000000"が変換され、第1エンコード回路3が
エンコードするビット列は“01001111 10000000 000000
00 00000000"となり、第2エンコード回路4がエコード
するビット列は“00001111 00000000 00000000 0000000
0"となる。これらのビット列をサーチすると、レジスタ
番号「4,5,6,7」で2つのサーチ結果が一致するが、レ
ジスタ番号「4」の場合はAAバス122の下位3ビットが
“0"ではないため、レジスタR1とR4とには1回の操作で
4バイトずつデータがロードされ、レジスタR5とR6,R7
とR8にはそれぞれ並列にデータがロードされることとな
る。
レジスタR5とR6,R7とR8を同時にアクセスする場合、
エンコード結果判定回路7から出力される並列アクセス
信号8がアサートされる。この並列アクセス信号8に従
って、デコード結果のビット列を1ビット上位側へシフ
トしたビット列が転送される制御線をセレクタ16が選択
することにより、エンコード結果判定回路7から出力さ
れたレジスタ番号より1つ大きな番号のレジスタに値が
ロードされる。
(5.4)「STM命令の動作」 デスティネーションのアドレッシングモードが@−SP
モード以外のSTM命令を実行する場合、LDM命令と同じフ
ォーマットレジスタリストを処理するためにプライオリ
ティエンコーダ部214の動作はLDM命令の場合と同様であ
る。また、レジスタ番地指定回路218ではS2バス222へ出
力するレジスタ番地として、入力されたレジスタ番地よ
りも1つ大きな番地のレジスタをアクセスするため、デ
コード結果のビット列を1ビット上位側へシフトしたビ
ット列が転送される制御線をセレクタ15が選択する。
デスティネーションのアドレッシングモードが@−SP
モードであるSTM命令を実行する場合、LDM命令と異なる
フォーマットレジスタリストを処理するので、プライオ
リティエンコーダ部214の動作が一部異なる。この場
合、エンコード結果判定経路7からオフセット値指定回
路2へは第1エンコード回路3から出力された値がその
まま転送されるが、レジスタ番地指定回路218へは第1
エンコード回路3から出力された値の“0"と“1"とを反
転した値が出力される。つまり、オフセット値指定回路
2にはサーチしてエンコードしたビット番号そのものが
転送されるが、レジスタ番地指定回路218へは捜査して
エンコードしたビット番号に対応するレジスタ番号が出
力されることになる。またこの場合、レジスタ番地指定
回路218では、並列アクセス信号8がアサートされた場
合、S2バス222へは入力されたレジスタ番地のレジスタ
から値が出力され、S1バス221へは入力されたレジスタ
番地より1つレジスタ番地が小さいレジスタから値が出
力される。この機能はデコード結果のビット列を1ビッ
ト下位側へシフトしたビット列を転送する制御線をセレ
クタ14が選択することにより行われる。
例えば、第31図に示したSTM命令の例では第1エンコ
ード回路3のサーチ対象となるビット列は“00000001 1
1110010 00000000 00000000"であり、第2エンコード回
路4のサーチ対象となるビット列は“00000001 1110000
0 00000000 00000000"である。最初のエンコード動作で
は、エンコード結果判定回路7へは第1エンコード回路
3と第2エンコード回路4とからは共に値「7」が入力
され、AAバス122からは出力されるアドレス“H′00001
FF8"の下位3ビットの“0"が入力される。エンコード結
果判定回路7はこれらの入力に基づいてオフセット指定
回路には値「7」と加算値「2」とを出力し、レジスタ
番地指定回路218へは「7」を2進数表現した値“0111"
の反転である“1000"に対応するレジスタ番号「8」を
出力し、並列アクセス信号8をアサートする。
レジスタ番地指定回路218では入力されたレジスタ番
号「8」をデコードし、S2バス222へはレジスタR8から
データを読出し、S1バス221へはデコード結果を1ビッ
ト下位側へシフトしたビット列を転送する制御線をセレ
クタ14で選択することによりレジスタR7からデータを読
出す。S1バス221とS2バス222とへ読出された2つのデー
タはDDレジスタ216で連結され、1つの8バイトデータ
としてDDバスを通じてオペランドアクセス部120へ転送
され、内蔵データキャッシュあるいは外部メモリにスト
アされる。
(6)「外部アクセス動作」 (6.1)「入出力信号線」 第7図は本発明のデータ処理装置100の入出力信号を
示す模式図である。
本発明のデータ処理装置100は電源Vccと設置GND,64本
のデータピンと32本のアドレスピンと32本の命令ピン,
入力クロックCLKの他に種々の制御信号を入出力する。
命令アクセスの場合もデータアクセスの場合も、アド
レスピンには物理アドレスが出力される。
CLKは外部入力クロックであり、本発明のデータ処理
装置100の動作クロックと同一周波数のクロックであ
る。
データアドレスストローブDAS#はアドレスピンへ出
力されたデータアドレスが有効であることを示す。
リードライトR/W#はデータピンでのバスサイクルが
入力であるか出力であるかを区別する。
データストローブDS#は本発明のデータ処理装置100
がデータ入力準備を完了したことまたは本発明のデータ
処理装置100からデータが出力されたことを示す。
DC#は本発明のデータ処理装置100にデータアクセス
サイクルを終了してもよいことを通知する信号である。
BAT(0:2)は第7図に示す如く、アドレスピンとデー
タピンとの値の意味を示す。
命令アドレスストローブIAS#はアドレスピンへ出力
された命令アドレスが有効であることを示す。
命令ストロープIS#は本発明のデータ処理装置100が
命令入力準備を完了したことを示す。
IC#は本発明のデータ処理装置100に命令アクセスサ
イクルを終了してもよいことを通知する信号である。
ホールドリクエストHREQ#は本発明のデータ処理装置
100にバス権を要求する信号である。
HACK#は本発明のデータ処理装置100がHREQ#を受付
けてバス権を他のデバイスに渡したことを示す信号であ
る。
IRL#(0:2)は外部割込み要求信号である。
IACK#は本発明のデータ処理装置100が外部割込みを
受付け、割込みベクトルアクセスサイクルを行っている
ことを示す信号である。
(6.2)「外部デバイスのアクセス」 本発明のデータ処理装置100を用いた第6図に示すシ
ステム構成令では、本発明のデータ処理装置100とデー
タキャッシュ107,108とはデータピンに接続されている
データバス102,アドレスピンに接続されているアドレス
バス101の他、BAT(0:2),DAS#,R/W#,DS#,DC#とで
も接続されている。本発明のデータ処理装置100と命令
キャッシュ106とは命令ピンに接続されている命令バス1
03,アドレスバス101の他、BAT(0:2),IAS#,IS#,IC#
とでも接続されている。
クロックCLKはシステム全体に供給されシステムの基
本タイミングを決定する。
本発明のデータ処理装置100は、標準アクセスモード
でのバスアクセスではデータバス102を用いたデータア
クセスと命令バス103を用いた命令アクセスとを、それ
ぞれ十分高速な外部メモリに対して外部入力クロックCL
Kの2サイクルに1度の割合で行える。
また本発明のデータ処理装置100は、クワッドアクセ
スモードでのバスアクセスではデータバス102を用いた
データアクセスと命令バス103を用いた命令アクセスと
を、それぞれ十分高速な外部のメモリに対して外部入力
クロックCLKの5サイクルに4度の割合で行える。
アドレスバス101はデータキャッシュ107,108のアクセ
スと命令キャッシュ106のアクセスとの両方に利用され
る。
(7)「本発明の他の実施例」 上記実施例では2つのレジスタを同時にアクセスする
ために同一レジスタ番号を2つのデコーダでそれぞれデ
コードし、その内の一方のデコード結果を転送する制御
線を1ビットずらせたデコード結果を転送するように構
成したことにより、デコードしたレジスタ番号の隣のレ
ジスタが選択されてレジスタ番号が連続する2つのレジ
スタがアクセスされるが、一方のデコーダでプライオリ
ティエンコーダ部から出力されたレジスタ番号に1を加
算または減算した値をデコードして、レジスタ番号が連
続する2つのレジスタをアクセスする構成を採ることも
可能である。
また、上記実施例では“1"(または“0")が2ビット
連続する位置をサーチしてそのビット位置をエンコード
することにより2つのレジスタを同時に操作するように
構成しているが、連続する3つまたはそれ以上の“1"
(または“0")をサーチしてそのビット位置をエンコー
ドすることにより3つまたはそれ以上のレジスタを同時
に操作するような構成を採ることも可能である。
また、上記実施例ではレジスタリストで“1"のビット
に対応するレジスタが操作対象となるレジスタである命
令の令を述べたが、レジスタリストで“0"のビットに対
応するレジスタが操作対象となるレジスタである命令で
もプライオリティエンコーダに入力するサーチ対象とな
るビット列を反転して入力すれば全く同様に処理可能で
ある。
また、上記実施例では複数データ転送命令としてLDM
命令とSTM命令とを例として説明したが、プローシージ
ャの入口で複数のレジスタ中のデータの退避を行うと共
にスタックフレームの形成を行う命令、あるいはプロシ
ージャの出口で複数のレジスタへのデータの復帰とスタ
ックフレームの解消とを行う命令等、レジスタリストを
用いて転送すべきレジスタを指定する命令に関していず
れも上記実施例と同様の処理が可能である。
[発明の効果] 以上に詳述した如く、本発明のデータ処理装置の第1
の発明は、複数データストア命令のデコードする命令デ
コーダと、命令デコーダから出力された複数データスト
ア命令中のレジスタリストを保持するレジスタと、レジ
スタリストをサーチして“1"(または“0")の先頭の位
置を2進数にエンコードする第1のエンコード手段と、
レジスタリストをサーチして“1"(または“0")が2ビ
ット連続する位置を2進数にエンコードする第2のエン
コード手段と、nビット幅の複数のレジスタにて構成さ
れたレジスタファイルと、内蔵データキャッシュまたは
外部メモリへ転送されるデータを保持する2nビットのデ
ータレジスタとを有していて命令デコーダがデコードし
た複数のデータストア命令を実行する命令実行手段とを
備え、命令デコーダが複数データストア命令をデコード
した場合に、命令デコーダから出力されたレジスタリス
トを、第1のエンコード手段でサーチして“1"(または
“0")の先頭の位置を2進数にエンコードすると共に、
第2のエンコード手段でもサーチして“1"(または
“0")が2,ビット連続した先頭の位置を2進数にエンコ
ードする。そして、“1"(または“0")の先頭のビット
が単独のビットであって2つのプライオティエンコーダ
のエンコード結果が異なる場合は、“1"(または“0")
の先頭のビット位置に対応するレジスタからnビットの
データをデータレジスタへ転送し、内蔵データキャッシ
ュまたは外部メモリへストアする。“1"(または“0")
が2ビットが連続していて両エンコード手段のエンコー
ド結果が一致する場合は、“1"(または“0")の先頭の
ビット位置とその隣のビットとに対応する2レジスタか
らそれぞれnビットのデータがデータレジスタへ転送さ
れ、2つのnビットのデータが連結されて2nビットのデ
ータとして内蔵データキャッシュまたは外部メモリにス
トアされる。このため、連続したレジスタ番号の複数の
レジスタを含む複数のレジスタの内容をメモリに退避す
る場合、連続したレジスタ番号の2つのレジスタの内容
が同時に処理されるので、複数のレジスタ内容の退避が
高速実行される。通常、コンパイラでは退避すべきデー
タは連続した番号のレジスタに割振る場合が多く、従来
のデータ処理装置に比べ本発明のデータ処理装置は最大
2倍の速度でレジスタ中のデータを退避することが可能
になる。
また第2の発明は、複数データロード命令をデコード
する命令デコーダと、命令デコーダから出力された複数
データロード命令中のレジスタリストを保持するレジス
タと、レジスタリストをサーチして“1"(または“0")
の先頭の“1"を2進数にエンコードする第1のエンコー
ド手段と、レジスタリストをサーチして“1"(または
“0")が2ビット連続する先頭の“1"を2進数にエンコ
ードする第2のエンコード手段と、nビット幅のレジス
タ複数にて構成されるレジスタファイルと、内蔵データ
キャッシュまたは外部メモリからフェッチしたデータを
保持する2nビットのデータレジスタとを有していて、命
令デコーダがデコードした複数データロード命令を実行
する命令実行手段とを備え、命令デコーダが複数データ
ロード命令をデコードした場合に、命令デコーダから出
力されたレジスタリストを、第1のエンコード手段でサ
ーチして“1"(または“0")の先頭の位置を2進数にエ
ンコードすると共に、第2のエンコード手段でもサーチ
して“1"(または“0")が2ビット連続した先頭の位置
を2進数にエンコードする。そして、“1"(または
“0")の先頭のビットが単独のビットであって2つのエ
ンコード手段のエンコード結果が異なる場合は、内蔵デ
ータキャッシュまたは外部メモリからnビットのデータ
がデータレジスタにフェッチされてレジスタリストの
“1"(または“0")の先頭のビット位置に対応するレジ
スタに転送される。“1"(または“0")の先頭が2ビッ
トが連続して“1"(または“0")であって2つのエンコ
ード手段のエンコード結果が一致する場合は、内蔵デー
タキャッシュまたは外部メモリから2nビットのデータが
データレジスタにフェッチされて上位のnビットと下位
のnビットとに分割された後に、“1"(または“0")の
先頭のビット位置とその隣のビットとにた対応する2レ
ジスタへそれぞれ転送される。このため、連続したレジ
スタ番号の複数のレジスタを含む複数のレジスタにメモ
リからデータをロードする場合、連続したレジスタ番号
のレジスタにロードすべき2つデータが同時に処理され
るので、高速に複数のレジスタにデータをロードするこ
とが可能である。コンパイラでは一連の手続きで使用す
るデータを連続した番号のレジスタに割振ることが覆い
ため、従来のデータ処理装置に比べて本発明のデータ処
理装置は最大で2倍の速度でレジスタへデータをロード
することが可能になる。
【図面の簡単な説明】
第1図は本発明のデータ処理装置のプライオリティエン
コーダ部の詳細な構成を示すブロック図、 第2図は本発明のデータ処理装置のプライオリティエン
コーダ部の構成要素であるビット列生成回路の詳細な構
成を示すブロック図、 第3図は本発明のデータ処理装置の整数演算部の構成を
示すブロック図、 第4図は本発明のデータ処理装置の全体構成を示すブロ
ック図、 第5図は本発明のデータ処理装置のパイプライン処理ス
テージの説明のための模式図、 第6図は本発明のデータ処理装置を用いたデータ処理シ
ステムの構成例を示すブロック図、 第7図は本発明のデータ処理装置の入出力信号ピンを示
す模式図、 第8図は本発明のデータ処理装置のレジスタ番地指定回
路の詳細な構成を示すブロック図、 第9図,第10図,第11図,第12図及び第13図は本発明の
データ処理装置の命令のフォーマットを示す模式図、 第14図,第15図,第16図,第17図,第18図,第19図,第
20図,第21図,第22図,第23図,第24図,第25図,第26
図及び第27図は本発明のデータ処理装置の命令中のアド
レッシングモード指定部のフォーマットを示す模式図、 第28図は本発明のデータ処理装置の複数データロード命
令であるLDM命令のフォーマットを示す模式図、 第29図は本発明のデータ処理装置の複数データストア命
令であるSTM命令のフォーマットを示す模式図、 第30図は本発明のデータ処理装置の複数データロード命
令であるLDM命令の具体的オペレーションコードの構成
例を示す模式図、 第31図は本発明のデータ処理装置の複数データストア命
令であるSTM命令の具体的オペレーションコードの構成
例を示す模式図、 第32図(a),(b)及び(c)は第30図に示されてい
るLDM命令の具体例を実行した場合に本発明のデータ処
理装置の命令実行部が行う処理のアルゴリズムを示すフ
ローチャートである。 1……ビット列生成回路、2……オフセット値指定回
路、3……第1エンコード回路、4……第2エンコード
回路、7……エンコード結果判定回路、17,18,19,20…
…セレクタ、14,15,16……セレクタ、17′,18′,19′,2
0′……デコード回路、109……主メモリ、107,108……
データキャッシュ、112……命令デコード部、117……整
数演算部、118……浮動小数点演算部、212……レジスタ
ファイル、214……プライオリティエンコーダ部、215…
…主ALU、218……レジスタ番地指定回路、216……DDレ
ジスタ なお、図中、同一符号は同一、又は相当部分を示す。

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】命令をデコードする命令デコード手段と、 ビット列を保持するビット列レジスタと、 該ビット列レジスタに保持されているビット列中での
    “1"または“0"のいずれかの先頭の位置をサーチしてそ
    のビット位置を2進数にエンコードした第1のエンコー
    ド値を出力する第1のエンコード手段と、 前記ビット列レジスタに保持されているビット列中での
    “1"または“0"のいずれかが2ビット連続する先頭の位
    置をサーチしてそのビット位置を2進数にエンコードし
    た第2のエンコード値を出力する第2のエンコード手段
    と、 それぞれがnビットのデータを保持する複数のレジスタ
    にて構成されたレジスタファイルと、 nビットまたは2nビットのデータを保持するデータレジ
    スタと を有する命令実行手段と を備え、 前記命令デコード手段が、ビット列で表現されたレジス
    タリストに従って前記レジスタファイルの内容をメモリ
    に退避させる命令をデコードした場合に、 前記命令実行手段は、前記ビット列レジスタに前記命令
    中のビット列を保持し、前記ビット列レジスタに保持さ
    れたビット列に関する第1,第2のエンコード値が不一致
    であれば前記第1のエンコード値に対応するレジスタ番
    地のレジスタからデータを前記データレジスタを経由さ
    せて前記メモリへ転送し、前記ビット列レジスタに保持
    されたビット列に関する第1,第2のエンコード値が一致
    であれば前記第1のエンコード値に対応するレジスタ番
    地のレジスタ及びそれより1番地大又は小なるレジスタ
    番地のレジスタからそれぞれnビットのデータを出力さ
    せて前記データレジスタにて2nビットのデータに連結し
    て前記メモリへ転送すべくなしてある ことを特徴とするデータ処理装置。
  2. 【請求項2】命令をデコードする命令デコード手段と、 ビット列を保持するビット列レジスタと、 該ビット列レジスタに保持されているビット列中での
    “1"または“0"のいずれかの先頭の位置をサーチしてそ
    のビット位置を2進数にエンコードした第1のエンコー
    ド値を出力する第1のエンコード手段と、 前記ビット列レジスタに保持されているビット列中での
    “1"または“0"のいずれかが2ビット連続する先頭の位
    置をサーチしてそのビット位置を2進数にエンコードし
    た第2のエンコード値を出力する第2のエンコード手段
    と、 それぞれがnビットのデータを保持する複数のレジスタ
    にて構成されたレジスタファイルと、 nビットまたは2nビットのデータを保持するデータレジ
    スタと を有する命令実行手段と を備え、 前記命令デコード手段が、ビット列で表現されたレジス
    タリストに従ってメモリから前記レジスタファイルへデ
    ータをロードさせる命令をデコードした場合に、 前記命令実行手段は、前記ビット列レジスタに前記命令
    中のビット列を保持し、前記ビット列レジスタに保持さ
    れたビット列に関する第1,第2のエンコード値が不一致
    であれば前記メモリからnビットのデータをフェッチし
    て前記第1のエンコード値に対応するレジスタ番地のレ
    ジスタへ転送し、前記ビット列レジスタに保持されたビ
    ット列に関する第1,第2のエンコード値が一致であれば
    前記メモリから2個のnビットのデータを連結したデー
    タをフェッチして一方のnビットのデータを前記第1の
    エンコード値に対応するレジスタ番地のレジスタへ、他
    方のnビットのデータを前記第1のエンコード値に対応
    するレジスタ番地より1番地大又は小なるレジスタ番地
    のレジスタへそれぞれ転送すべくなしてある ことを特徴とするデータ処理装置。
JP2231966A 1990-08-29 1990-08-29 データ処理装置 Expired - Fee Related JP2616182B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2231966A JP2616182B2 (ja) 1990-08-29 1990-08-29 データ処理装置
US08/245,846 US5390307A (en) 1990-08-29 1994-05-19 Apparatus for a multi-data store or load instruction for transferring multiple contiguous storage locations in one transfer operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2231966A JP2616182B2 (ja) 1990-08-29 1990-08-29 データ処理装置

Publications (2)

Publication Number Publication Date
JPH04109336A JPH04109336A (ja) 1992-04-10
JP2616182B2 true JP2616182B2 (ja) 1997-06-04

Family

ID=16931844

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2231966A Expired - Fee Related JP2616182B2 (ja) 1990-08-29 1990-08-29 データ処理装置

Country Status (2)

Country Link
US (1) US5390307A (ja)
JP (1) JP2616182B2 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860000A (en) * 1996-01-31 1999-01-12 Hitachi Micro Systems, Inc. Floating point unit pipeline synchronized with processor pipeline
US5802564A (en) * 1996-07-08 1998-09-01 International Business Machines Corp. Method and apparatus for increasing processor performance
US5652774A (en) * 1996-07-08 1997-07-29 International Business Machines Corporation Method and apparatus for decreasing the cycle times of a data processing system
US5893930A (en) * 1996-07-12 1999-04-13 International Business Machines Corporation Predictive translation of a data address utilizing sets of associative entries stored consecutively in a translation lookaside buffer
JP2000105683A (ja) * 1998-09-29 2000-04-11 Mitsubishi Electric Corp 適応型差分演算器および動き検出装置
US6311239B1 (en) * 1998-10-29 2001-10-30 Cypress Semiconductor Corp. Architecture, circuitry and method for transmitting n-bit wide data over m-bit wide media
JP2000137597A (ja) 1998-10-30 2000-05-16 Fujitsu Ltd ビットサーチ装置、及びビットサーチ方法
US6389449B1 (en) * 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US7020879B1 (en) * 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US7529907B2 (en) 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US7257814B1 (en) * 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US6408380B1 (en) * 1999-05-21 2002-06-18 Institute For The Development Of Emerging Architectures, L.L.C. Execution of an instruction to load two independently selected registers in a single cycle
JP3475860B2 (ja) 1999-06-24 2003-12-10 日本電気株式会社 演算処理装置
US6513053B1 (en) * 2000-01-12 2003-01-28 Arm Limited Data processing circuit and method for determining the first and subsequent occurences of a predetermined value in a sequence of data bits
AU2001226324A1 (en) * 2000-01-18 2001-07-31 Clearwater Networks, Inc. Method and apparatus for improved computer load and store operations
US6791564B1 (en) 2000-05-05 2004-09-14 Ipfirst, Llc Mechanism for clipping RGB value during integer transfer
GB2363869B (en) * 2000-06-20 2004-06-23 Element 14 Inc Register addressing
EP1311947B1 (en) * 2000-07-14 2011-01-19 MIPS Technologies, Inc. Instruction fetch and dispatch in multithreaded system
JP3779540B2 (ja) * 2000-11-08 2006-05-31 株式会社ルネサステクノロジ 複数レジスタ指定が可能なsimd演算方式
DE10210085B8 (de) * 2002-03-08 2008-11-27 Technische Universität Hamburg-Harburg Verfahren und Prozessor zur Kombination von Daten- und Kontrollflußoperationen
US7146371B2 (en) * 2002-12-05 2006-12-05 International Business Machines Corporation Performance and memory bandwidth utilization for tree searches using tree fragmentation
US7340588B2 (en) * 2003-11-24 2008-03-04 International Business Machines Corporation Extending the number of instruction bits in processors with fixed length instructions, in a manner compatible with existing code
US20070160120A1 (en) * 2006-01-12 2007-07-12 Honeywell International, Inc. Method for code-alignment for DSSS signal processing
JP2008299501A (ja) * 2007-05-30 2008-12-11 Sanyo Electric Co Ltd プロセッサ
US20090182992A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Load Relative and Store Relative Facility and Instructions Therefore
US7849294B2 (en) * 2008-01-31 2010-12-07 International Business Machines Corporation Sharing data in internal and memory representations with dynamic data-driven conversion
US7877582B2 (en) * 2008-01-31 2011-01-25 International Business Machines Corporation Multi-addressable register file
US8195923B2 (en) * 2009-04-07 2012-06-05 Oracle America, Inc. Methods and mechanisms to support multiple features for a number of opcodes
US9411585B2 (en) 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
JP6493088B2 (ja) * 2015-08-24 2019-04-03 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US11269645B2 (en) * 2020-03-11 2022-03-08 Western Digital Technologies, Inc. Storage system and method for implementing an encoder, decoder, and/or buffer using a field programmable gate array
US10903849B1 (en) * 2020-07-20 2021-01-26 Micron Technology, Inc. Bit string compression

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3990054A (en) * 1974-11-05 1976-11-02 Honeywell Inc. Microprogram organization techniques
US4339797A (en) * 1978-06-30 1982-07-13 International Business Machines Corporation Microcontroller with auxiliary register for duplicating storage of data in one memory location
US4348741A (en) * 1980-07-17 1982-09-07 Motorola, Inc. Priority encoder
US4500958A (en) * 1982-04-21 1985-02-19 Digital Equipment Corporation Memory controller with data rotation arrangement
JP2684362B2 (ja) * 1986-06-18 1997-12-03 株式会社日立製作所 可変長データの記憶方式
US4980817A (en) * 1987-08-31 1990-12-25 Digital Equipment Vector register system for executing plural read/write commands concurrently and independently routing data to plural read/write ports

Also Published As

Publication number Publication date
JPH04109336A (ja) 1992-04-10
US5390307A (en) 1995-02-14

Similar Documents

Publication Publication Date Title
JP2616182B2 (ja) データ処理装置
US5568624A (en) Byte-compare operation for high-performance processor
US5410682A (en) In-register data manipulation for unaligned byte write using data shift in reduced instruction set processor
US5717946A (en) Data processor
JP2847974B2 (ja) データ処理装置
JPH03186928A (ja) データ処理装置
JP2581236B2 (ja) データ処理装置
JP3543181B2 (ja) データ処理装置
JP2507638B2 (ja) デ―タ処理装置
JPH0766324B2 (ja) データ処理装置
US4945511A (en) Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions
JP2669158B2 (ja) データ処理装置
JP2556182B2 (ja) デ−タ処理装置
JP3345787B2 (ja) データ処理装置
US6757809B1 (en) Data processor having 2n bits width data bus for context switching functions
US5870596A (en) Data processor allowing multifunctional instruction execution
JP2504312B2 (ja) プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置
JP2668456B2 (ja) ビット検索回路及びそれを備えたデータ処理装置
JP4502532B2 (ja) データ処理装置
JP2646855B2 (ja) データ処理装置
JP2504235B2 (ja) デ―タ処理装置
JPH0769806B2 (ja) データ処理装置
JP2696578B2 (ja) データ処理装置
JP2522048B2 (ja) マイクロプロセッサ及びそれを使用したデ―タ処理装置
JPH0769805B2 (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

LAPS Cancellation because of no payment of annual fees