JP3041308B2 - データ処理装置 - Google Patents
データ処理装置Info
- Publication number
- JP3041308B2 JP3041308B2 JP62246621A JP24662187A JP3041308B2 JP 3041308 B2 JP3041308 B2 JP 3041308B2 JP 62246621 A JP62246621 A JP 62246621A JP 24662187 A JP24662187 A JP 24662187A JP 3041308 B2 JP3041308 B2 JP 3041308B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- bit
- instruction
- byte
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Executing Machine-Instructions (AREA)
Description
【発明の詳細な説明】
[産業上の利用分野]
本発明はバイト極性の異なるフォーマットのデータの
処理を容易に行えるデータ処理装置に関するものであ
る。 [従来の技術] バイトごとにアドレスが付けられ、しかもバイト中の
ビットにも順番を示す番号が付けられたメモリ上にデー
タを配置するとき、データの上位側をメモリの大きなア
ドレス側に配置するか小さなアドレス側に配置するかに
関しては従来より多くの議論がなされてきた。 データの上位側をメモリの大きなアドレスに配置し、
データの下位側をメモリの小さなアドレスに配置する方
法はリトルエンディアンと称され、データの上位側をメ
モリの小さなアドレスに配置し、データの下位側をメモ
リの大きなアドレスに配置する方法はビッグエンディア
ン称される。 近年のデータ処理装置ではメモリのアドレスは8ビッ
トを1バイトとしてバイト毎に付けられているのが一般
的である。しかし、ビットマップディスプレイやバイト
の整数倍でないビット長のビットフィールドを扱う場合
にはバイトアドレス以外にビットの位置も示すビットア
ドレスも必要となり、ビットアドレスに付いてもリトル
エンディアンとビッグエンディアンの概念が存在する。
バイトとビットがリトルエンディアンかビッグエンディ
アンかを示すバイト極性とビット極性とは必ずしも一致
している必要はない。リトルエンディアンがよいかビッ
グエンディアンがよいか、あるいは従来のデータ処理装
置がどちらを採用しているかについてはD.Cohen,“On H
oly Wars and a Plea forPeace,"Computer,VOl.14,NO.1
0,Oct.1981,pp.48-54.で詳しく述べられている。 [発明が解決しようとする問題点] リトルエンディアン、ビッグエンディアンの問題はメ
モリ上のバイトやビットのアドレスについてだけでな
く、レジスタ上のバイトやビットの位置についても存在
する。 バイト極性とビット極性がともにビッグエンディアン
であるデータ処理装置でレジスタのバイト長より短いバ
イト長のデータをレジスタに格納する場合、メモリ上に
格納する場合と同様に、アドレスの小さい側に寄せて格
納する例を第2図に示す。 この場合、レジスタ上のデータサイズには拘らずビッ
ト位置を示すビットアドレスが同じになるが、2つのレ
ジスタに格納されたデータサイズが異なる2進数データ
間で加算などの算術演算を行う場合には、データの最下
位ビットが揃っていないため問題となる。算術演算では
データの最下位ビットを揃えて演算する必要があり、こ
の場合サイズの短い方のデータを右方向に算術シフトし
てサイズの大きいほうのデータと最下位ビット位置を揃
えてから演算する必要がある。この算術シフトを行うハ
ードウエアをレジスタ入出力部やALU入出力部にもてば
データ処理装置のハードウエアが増大するという問題点
がある。また機械語命令やマイクロプログラムで行えば
演算速度が低下するという問題点がある。 米国モトローラ社製のマイクロプロセッサMC 68000シ
リーズでは第3図に示すようにバイト極性をビッグエン
ディアンにしてビット極性をリトルエンディアンにする
ことによりこの問題を避けている。しかしこの場合、ビ
ット極性とバイト極性が異なるため、バイト列とビット
列とを扱う場合にデータのアドレス計算順序を逆にする
必要があるなどして、ソフトウエア設計の負担が大きい
という問題がある。 バイト極性とビット極性とをともにリトルエンディア
ンにすると異種サイズオペランド間演算に対する問題は
なくなるが、BCD数やストリングスデータを扱うときの
リトルエンディアン特有の問題が残る。リトルエンディ
アン特有の問題については上記のD.Cohenの論文に詳し
く述べられている。 また、バイト極性の異なるフォーマットのデータ処理
装置を同一システムに組み込む場合にはそれらの装置間
の結合バスが複雑になる問題点がある。なお、バイト極
性の異なるデータ処理装置を結合する具体例は、H.Kirr
mann,“Data Format and Bus Compatibility in Multip
rocessors",IEEE Micro August 1983,pp.32-47.で述べ
られている。 本発明は上記のような問題点を解決するためになされ
たもので、異なるバイト極性でデータを扱う他のデータ
処理装置に対するデータを容易に扱うことのできるデー
タ処理装置を得ることを目的とする。 [問題点を解決するための手段] 本発明のデータ処理装置は、一つの2進数の値を表現
する32ビットのデータを、その連結する4個のバイトが
当該データの下位桁の側であるほどバイト毎にアドレス
付けされたメモリの大きいアドレスに配置されるビッグ
エンディアン、及び当該4個のバイトが当該データの上
位桁の側であるほどバイト毎にアドレス付けされたメモ
リの大きいアドレスに配置されるリトルエンディアンの
いずれか一方のバイト極性によって取り扱う。命令デコ
ード機構で所定の種類の命令がデコードされると、実行
機構は命令デコード機構から出力される制御情報に従い
この32ビットのデータにおける4個のバイトの配列順序
を逆転する処理を行う。 [作用] このデータ処理装置によると、命令に従って実行機構
がバイトの配列順序を逆転する処理を行うので、一方の
バイト極性で規定されるデータを同じ2進数の値を表現
した他方のバイト極性で規定されるデータに変換され
る。 [発明の実施例] 以下、本発明の実施例を図面を参照して説明する。 なお、本発明装置については本願出願人の出願に係る
発明の名称「データ処理装置」(特願昭62-247418号)
に詳細に説明されている。 まず本発明のデータ処理装置では、データのバイト極
性、ビット極性ともにビッグエンディアンを採用してい
る。第1図に示すようにレジスタ上にレジスタのバイト
長より小さいサイズのバイト長のデータを配置する場合
には、そのデータのレジスタ上でのビット番号をずらせ
て、サイズによらず最下位ビットを揃えてデータを格納
する。そしてレジスタ上のデータのビット位置を示す場
合には命令により示されたデータサイズとビット番号と
をもとにしてレジスタ上のデータに対するビット位置を
サイズが8ビットでビット番号8より小さい番号nのと
きと、サイズが16ビットでビット番号がn+8のとき
と、サイズが32ビットでビット番号がn+24のときに同
じレジスタビット位置が決定される。 第4図に本発明のデータ処理装置における全体構成の
ブロック図を示す。 第4図において、(1)はアドレスバス(8)を通じ
てアドレスをメモリ(10)に送出して命令をメモリ(1
0)からデータバス(9)を通してフェッチする命令フ
ェッチ部である。 (2)は命令フェッチ部(1)より命令を受取り、そ
れをデコードしてその命令の実行に必要な情報を出力す
る命令デコード部である。 (3)は命令デコード部(2)から出力されたマイク
ロプログラムエントリアドレスあるいは汎用レジスタ番
号、オペランド、データサイズなどの情報をもとに、マ
イクロROM(7)に格納され、その命令を実行するマイ
クロプログラムの先頭番地を示すマイクロプログラムエ
ントリアドレスをマイクロプログラムカウンタ(6)に
出力し、マイクロプログラムカウンタ(6)によって次
々に指示されるアドレスによりマイクロROM(7)から
出力されたマイクロ命令と命令デコード部(2)から出
力された他の情報とにより命令実行部(5)を制御して
命令を実行する命令実行制御部である。 (4)は命令実行に際して必要になるオペランドがメ
モリ(10)にある時に、そのアドレスをアドレスバス
(8)に出力してデータバス(9)を通してオペランド
をフェッチし、あるいはオペランドをメモリ(10)に格
納する必要があるときに、そのアドレスをアドレスバス
(8)に出力し、またオペランドをデータバス(9)に
出力するオペランドアクセス部である。 第5図は第4図に示した命令実行部(5)の詳細を示
すブロック図である。 (11)はオペランドとなるデータを格納するレジスタ
ファイルである。 (12),(13),(14),(15)はそれぞれ演算装置
である。なお、(12)は2つの2進数の加算などの算術
演算及び2つのビット列の論理積などの論理演算を行う
ALUである。 (16),(17)はデータサイズがALU(12)のそれよ
り小さいデータをALUに入力するときに、そのサイズをA
LU(12)が扱うデータサイズにゼロ拡張または符号拡張
する拡張回路である。 (13)はデータを1度に複数ビット右あるいは左にシ
フトするバレルシフタである。 (14)はバイト列のバイトの配列順序を逆転させるバ
イト順逆転回路、(15)はビット列のビット順を逆転さ
せるビット順逆転回路である。 (18),(19),(20)はレジスタファイル(11)と
演算装置(12),(13),(14),(15)とをそれぞれ
結合するそれぞれS1バス、S2バス、Dバスである。 レジスタファイル(11)はバス(18),(19),(2
0)を介してALU(12)などの演算器(12),(13),
(14),(15)に32ビット並列に結合している。レジス
タファイル(11)のビット格納位置とALU(12)の入出
力ビット位置とは1対1に対応している。 第6図は第5図に示したレジスタファイル(11)の詳
細構造を示すブロック図である。 (21),(22),(23)はそれぞれレジスタのビット
位置0から15まで、16から23まで、24から31までのデー
タを格納する回路である。 (24)はレジスタファイル(11)に入力すべきデータ
のサイズと入力すべきレジスタのレジスタ番号により必
要なデータ格納位置の入力回路を制御してデータ格納す
るレジスタ入力制御回路である。 (25)はレジスタファイル(11)からバスごとに出力
すべきデータを格納しているレジスタのレジスタ番号を
入力してレジスタ中のデータをS1バス(18)、S2バス
(19)に出力制御するレジスタ出力制御回路である。 なお第6図の破線にて囲まれた部分(26)はレジスタ
ファイル(11)中に32個あり本発明のデータ処理装置の
マイクロプログラムではそれぞれをR0からR31として区
別できる。 第7図は第5図に示したバイト順逆転回路(14)の詳
細構成を示すブロック図である。 この回路ではS2バス(19)から入力された4バイトの
データをBYIレジスタRBYIに入れ、8本づつまとめて交
差する配線によりそのバイトの配列順序を逆転したデー
タをBYOレジスタRBYOに移し、BYOレジスタRBYOの値をD
バス(20)に出力する。 第8図は第5図に示したビット順逆転回路(15)の詳
細構成を示すブロック図である。 この回路ではS2バス(19)から入力された4バイトの
データをBIIレジスタRBIIに入れ、交差する配線により
そのビット順を逆転したデータをBIOレジスタRBIOに移
し、BIOレジスタRBIOの値をDバス(20)に出力する。 第9図は第4図の命令実行制御部(3)に含まれる一
部の回路の構成を示すブロック図である。 (27)は命令で指定されたオペランドのサイズ情報と
ビット番号とをもとに、レジスタ上のビット位置を示す
番号をS1バス(18)に出力するビット位置番号出力回路
である。また(28)は定数1をS2バス(19)に出力する
回路であり、S2バス(19)の最下位ビットに‘1'を、他
のすべてのビットには‘0'を出力する。 以下、本発明のデータ処理装置の動作について説明す
る。 レジスタR0に格納された32ビットの符号付き2進数と
レジスタR1の中に格納された8ビットの符号付き2進数
を加算して8ビットの符号付き2進数としてレジスタR1
に格納する符号付き加算命令(本発明のデータ処理装置
では「ADD R0.WR1.B」と表現され、命令コードのビット
パタンは第10図に示す通りである)を実行する場合を例
にして本発明のデータ処理装置で異種サイズオペランド
間の演算を行う動作を説明する。 命令は第4図に示す命令フェッチ部(1)でメモリ
(10)よりフェッチされ、デコード部(2)でデコード
され、命令実行制御部(3)にデコード結果が渡され
る。命令実行制御部(3)はレジスタR0とレジスタR1を
示す2つのレジスタ番地とレジスタR0に格納されている
オペランドのサイズとレジスタR1に格納されているオペ
ランドのサイズをパラメータとしてマイクロROM(7)
中に格納されている符号付き加算プログラムルーチンの
エントリ番地をマイクロプログラムカウンタ(6)にセ
ットして、マイクロ命令を読み出し符号付き加算命令を
実行する。 命令実行制御部(3)での符号付き加算命令の実行シ
ーケンスを示すフローチャートを第11図に示す。 2つのレジスタ番号はマイクロプログラムとは独立し
てレジスタ出力制御回路(25)に入力され、レジスタR0
中のデータはS1バス(18)を通してALU(12)に転送さ
れ、R1中のデータはS2バス(19)を通してALU(12)に
転送される。この際、レジスタR1の内容は32ビット総て
がS2バス(19)に出力されるが、拡張回路(17)により
S2バス(19)の下位8ビットが符号拡張されてALU(1
2)に入力される。また、ALU(12)では32ビットの2つ
の符号付き2進数の符号付き加算が行われ32ビットの符
号付き2進数を出力する。このとき、ALU(12)には符
号付き加算結果を格納すべきレジスタサイズが8ビット
であることが同時に指示されており、加算結果が8ビッ
ト以内の2進数で表現できるかどうか、あるいは加算結
果が正が負かゼロかなどに従い各種の制御フラッグがセ
ットされる。 ALU(12)の出力32ビットはDバス(20)を通してレ
ジスタR1に転送される。Dバス(20)で転送されてきた
32ビットのデータは、レジスタ入力制御回路(24)によ
り選ばれたレジスタR1にその下位側8ビットであるビッ
ト位置24から31に下位の8ビットのみが格納される。 次にレジスタR0中のオペランドのビット位置3に相当
するビットに‘1'をセットするビットセット命令を一例
として、実施例の実際の動作を説明する。 本発明のデータ処理装置では、ビットセット命令は命
令コードのビットパタンは第12図に示す通りである。ま
た、本発明のデータ処理装置ではレジスタ上のビット位
置は第1図に示すようになっているのでオペランドのサ
イズが1バイトか2バイトか4バイトかによりこのビッ
トセット命令はそれぞれ「BSET #3 R0.B、BSET #11 R
0.H、BSET #27R0.W」と表現される。命令実行制御部
(3)でのビットセット命令の実行シーケンスを第13図
のフローチャートに示す。 ビットセット命令ではレジスタのビット位置を示す番
号を求めるのに第14図のビット位置番号出力回路(27)
を使用する。命令実行制御部(3)ではオペランドのサ
イズとビット番号をビット位置番号出力回路(27)に入
力してビット位置番号をS2バス(19)に出力する。ビッ
ト位置番号出力回路(27)はサイズ情報が1バイトの時
は(ビット番号3+24=27)をS1バス(18)に出力し、
サイズ情報が2バイトの時は(ビット番号11+16=27)
をS1バス(18)に出力する。サイズ情報が4バイトの時
はビット番号27をそのままS1バス(18)に出力する。 ビット位置番号出力回路(27)から出力されたビット
位置番号はS1バス(18)を通してバレルシフタ(13)の
シフト数指定データとして入力される。このとき同時に
S2バス(19)を通して定数‘1'が被シフト数としてバレ
ルシフタ(13)に入力される。その結果バレルシフタ
(13)からはビット番号27のみが‘1'でその他のビット
がすべて‘0'の32ビットのビットパタンが出力される。
このビットパタンは一度作業用レジスタであるレジスタ
R16に格納される。次にALU(12)でレジスタR0とレジス
タR16の内容の論理和演算が行われる。このときレジス
タR0中のオペランドのバイト長により符号付き加算命令
実行の場合と同様に拡張回路(17)やレジスタ入力制御
回路(24)が動作する。 次にレジスタR0中の32ビットのデータのバイトの配列
順序を逆転してレジスタR1に転送するバイトリバース命
令の動作を説明する。 バイトリバース命令の命令コードビットパタンを第15
図に示す。命令実行制御部(3)でのバイトリバース命
令の実行シーケンスを示すフローチャートを第16図に示
す。 レジスタR0中の32ビットのデータがS2バス(19)を通
してバイト順逆転回路(14)のBYIレジスタRBYIに送ら
れ、バイトの配列順序が逆転された32ビットのデータが
BYOレジスタRBYOからDバス(20)を通してレジスタR0
に入力される。 次にレジスタR0中の32ビットのデータのビット順を逆
転してレジスタR1に転送するビットリバース命令の動作
を説明する。ビットリバース命令の命令コードビットパ
タンを第17図に示す。命令実行制御部(3)でのビット
リバース命令の実行シーケンスのフローチャートを第18
図に示す。 レジスタR0中の32ビットのデータがS2バス(19)を通
してビット順逆転回路(15)のBIIレジスタRBIIに送ら
れ、ビット順が逆転された32ビットのデータがBIOレジ
スタRBIOからDバス(20)を通してレジスタR0に入力さ
れる。 上記実施例ではレジスタ中のビット位置番号を求める
際にハードウエアを用いて求める例を示したが、オペラ
ンドのバイト長ごとにマイクロプログラムを別々に用意
し、マイクロプログラムによりビット番号を補正してビ
ット位置を求めてもよい。 また、上記実施例ではレジスタ上のオペランドどうし
の符号付き加算命令を例にとり、異種サイズのオペラン
ド間の演算機能を述べたが、その他加減乗除の四則演算
のすべてで同様の方法により異種サイズオペランド間の
演算ができる。 また、上記実施例ではバイトリバース命令とビットリ
バース命令とを32ビットのデータについてのみ説明した
が、上記実施例のバイト順逆転回路(14)あるいはビッ
ト順逆転回路路(15)での演算とバレルシフタ(13)の
演算とを組み合わせればマイクロプログラムにより他の
サイズのデータに対してもバイトリバース命令やビット
リバース命令を実行することができる。また、ALU(1
2)あるいはバレルシフタ(13)と作業用レジスタのみ
を用いてマイクロプログラムでこの2つの命令を実行し
ても同様の効果が得られる。 [発明の効果] 以上のように本発明のデータ処理装置では、所定の種
類の命令に従い実行機構が1つの2進数の値を表現した
32ビットのデータの連結する4個のバイトの配列順序を
逆転する処理を行うことにより一方のバイト極性で規定
されるデータを同じ2進数の値を表現した他方のバイト
極性で規定されるデータに変換されるから、異なるバイ
ト極性によりデータを扱う他のデータ処理装置に対する
データをソフトウェアに負担をかけることなく容易に扱
うことができ、ソフトウェア開発のコストを低減できる
データ処理装置を実現することが可能になる。
処理を容易に行えるデータ処理装置に関するものであ
る。 [従来の技術] バイトごとにアドレスが付けられ、しかもバイト中の
ビットにも順番を示す番号が付けられたメモリ上にデー
タを配置するとき、データの上位側をメモリの大きなア
ドレス側に配置するか小さなアドレス側に配置するかに
関しては従来より多くの議論がなされてきた。 データの上位側をメモリの大きなアドレスに配置し、
データの下位側をメモリの小さなアドレスに配置する方
法はリトルエンディアンと称され、データの上位側をメ
モリの小さなアドレスに配置し、データの下位側をメモ
リの大きなアドレスに配置する方法はビッグエンディア
ン称される。 近年のデータ処理装置ではメモリのアドレスは8ビッ
トを1バイトとしてバイト毎に付けられているのが一般
的である。しかし、ビットマップディスプレイやバイト
の整数倍でないビット長のビットフィールドを扱う場合
にはバイトアドレス以外にビットの位置も示すビットア
ドレスも必要となり、ビットアドレスに付いてもリトル
エンディアンとビッグエンディアンの概念が存在する。
バイトとビットがリトルエンディアンかビッグエンディ
アンかを示すバイト極性とビット極性とは必ずしも一致
している必要はない。リトルエンディアンがよいかビッ
グエンディアンがよいか、あるいは従来のデータ処理装
置がどちらを採用しているかについてはD.Cohen,“On H
oly Wars and a Plea forPeace,"Computer,VOl.14,NO.1
0,Oct.1981,pp.48-54.で詳しく述べられている。 [発明が解決しようとする問題点] リトルエンディアン、ビッグエンディアンの問題はメ
モリ上のバイトやビットのアドレスについてだけでな
く、レジスタ上のバイトやビットの位置についても存在
する。 バイト極性とビット極性がともにビッグエンディアン
であるデータ処理装置でレジスタのバイト長より短いバ
イト長のデータをレジスタに格納する場合、メモリ上に
格納する場合と同様に、アドレスの小さい側に寄せて格
納する例を第2図に示す。 この場合、レジスタ上のデータサイズには拘らずビッ
ト位置を示すビットアドレスが同じになるが、2つのレ
ジスタに格納されたデータサイズが異なる2進数データ
間で加算などの算術演算を行う場合には、データの最下
位ビットが揃っていないため問題となる。算術演算では
データの最下位ビットを揃えて演算する必要があり、こ
の場合サイズの短い方のデータを右方向に算術シフトし
てサイズの大きいほうのデータと最下位ビット位置を揃
えてから演算する必要がある。この算術シフトを行うハ
ードウエアをレジスタ入出力部やALU入出力部にもてば
データ処理装置のハードウエアが増大するという問題点
がある。また機械語命令やマイクロプログラムで行えば
演算速度が低下するという問題点がある。 米国モトローラ社製のマイクロプロセッサMC 68000シ
リーズでは第3図に示すようにバイト極性をビッグエン
ディアンにしてビット極性をリトルエンディアンにする
ことによりこの問題を避けている。しかしこの場合、ビ
ット極性とバイト極性が異なるため、バイト列とビット
列とを扱う場合にデータのアドレス計算順序を逆にする
必要があるなどして、ソフトウエア設計の負担が大きい
という問題がある。 バイト極性とビット極性とをともにリトルエンディア
ンにすると異種サイズオペランド間演算に対する問題は
なくなるが、BCD数やストリングスデータを扱うときの
リトルエンディアン特有の問題が残る。リトルエンディ
アン特有の問題については上記のD.Cohenの論文に詳し
く述べられている。 また、バイト極性の異なるフォーマットのデータ処理
装置を同一システムに組み込む場合にはそれらの装置間
の結合バスが複雑になる問題点がある。なお、バイト極
性の異なるデータ処理装置を結合する具体例は、H.Kirr
mann,“Data Format and Bus Compatibility in Multip
rocessors",IEEE Micro August 1983,pp.32-47.で述べ
られている。 本発明は上記のような問題点を解決するためになされ
たもので、異なるバイト極性でデータを扱う他のデータ
処理装置に対するデータを容易に扱うことのできるデー
タ処理装置を得ることを目的とする。 [問題点を解決するための手段] 本発明のデータ処理装置は、一つの2進数の値を表現
する32ビットのデータを、その連結する4個のバイトが
当該データの下位桁の側であるほどバイト毎にアドレス
付けされたメモリの大きいアドレスに配置されるビッグ
エンディアン、及び当該4個のバイトが当該データの上
位桁の側であるほどバイト毎にアドレス付けされたメモ
リの大きいアドレスに配置されるリトルエンディアンの
いずれか一方のバイト極性によって取り扱う。命令デコ
ード機構で所定の種類の命令がデコードされると、実行
機構は命令デコード機構から出力される制御情報に従い
この32ビットのデータにおける4個のバイトの配列順序
を逆転する処理を行う。 [作用] このデータ処理装置によると、命令に従って実行機構
がバイトの配列順序を逆転する処理を行うので、一方の
バイト極性で規定されるデータを同じ2進数の値を表現
した他方のバイト極性で規定されるデータに変換され
る。 [発明の実施例] 以下、本発明の実施例を図面を参照して説明する。 なお、本発明装置については本願出願人の出願に係る
発明の名称「データ処理装置」(特願昭62-247418号)
に詳細に説明されている。 まず本発明のデータ処理装置では、データのバイト極
性、ビット極性ともにビッグエンディアンを採用してい
る。第1図に示すようにレジスタ上にレジスタのバイト
長より小さいサイズのバイト長のデータを配置する場合
には、そのデータのレジスタ上でのビット番号をずらせ
て、サイズによらず最下位ビットを揃えてデータを格納
する。そしてレジスタ上のデータのビット位置を示す場
合には命令により示されたデータサイズとビット番号と
をもとにしてレジスタ上のデータに対するビット位置を
サイズが8ビットでビット番号8より小さい番号nのと
きと、サイズが16ビットでビット番号がn+8のとき
と、サイズが32ビットでビット番号がn+24のときに同
じレジスタビット位置が決定される。 第4図に本発明のデータ処理装置における全体構成の
ブロック図を示す。 第4図において、(1)はアドレスバス(8)を通じ
てアドレスをメモリ(10)に送出して命令をメモリ(1
0)からデータバス(9)を通してフェッチする命令フ
ェッチ部である。 (2)は命令フェッチ部(1)より命令を受取り、そ
れをデコードしてその命令の実行に必要な情報を出力す
る命令デコード部である。 (3)は命令デコード部(2)から出力されたマイク
ロプログラムエントリアドレスあるいは汎用レジスタ番
号、オペランド、データサイズなどの情報をもとに、マ
イクロROM(7)に格納され、その命令を実行するマイ
クロプログラムの先頭番地を示すマイクロプログラムエ
ントリアドレスをマイクロプログラムカウンタ(6)に
出力し、マイクロプログラムカウンタ(6)によって次
々に指示されるアドレスによりマイクロROM(7)から
出力されたマイクロ命令と命令デコード部(2)から出
力された他の情報とにより命令実行部(5)を制御して
命令を実行する命令実行制御部である。 (4)は命令実行に際して必要になるオペランドがメ
モリ(10)にある時に、そのアドレスをアドレスバス
(8)に出力してデータバス(9)を通してオペランド
をフェッチし、あるいはオペランドをメモリ(10)に格
納する必要があるときに、そのアドレスをアドレスバス
(8)に出力し、またオペランドをデータバス(9)に
出力するオペランドアクセス部である。 第5図は第4図に示した命令実行部(5)の詳細を示
すブロック図である。 (11)はオペランドとなるデータを格納するレジスタ
ファイルである。 (12),(13),(14),(15)はそれぞれ演算装置
である。なお、(12)は2つの2進数の加算などの算術
演算及び2つのビット列の論理積などの論理演算を行う
ALUである。 (16),(17)はデータサイズがALU(12)のそれよ
り小さいデータをALUに入力するときに、そのサイズをA
LU(12)が扱うデータサイズにゼロ拡張または符号拡張
する拡張回路である。 (13)はデータを1度に複数ビット右あるいは左にシ
フトするバレルシフタである。 (14)はバイト列のバイトの配列順序を逆転させるバ
イト順逆転回路、(15)はビット列のビット順を逆転さ
せるビット順逆転回路である。 (18),(19),(20)はレジスタファイル(11)と
演算装置(12),(13),(14),(15)とをそれぞれ
結合するそれぞれS1バス、S2バス、Dバスである。 レジスタファイル(11)はバス(18),(19),(2
0)を介してALU(12)などの演算器(12),(13),
(14),(15)に32ビット並列に結合している。レジス
タファイル(11)のビット格納位置とALU(12)の入出
力ビット位置とは1対1に対応している。 第6図は第5図に示したレジスタファイル(11)の詳
細構造を示すブロック図である。 (21),(22),(23)はそれぞれレジスタのビット
位置0から15まで、16から23まで、24から31までのデー
タを格納する回路である。 (24)はレジスタファイル(11)に入力すべきデータ
のサイズと入力すべきレジスタのレジスタ番号により必
要なデータ格納位置の入力回路を制御してデータ格納す
るレジスタ入力制御回路である。 (25)はレジスタファイル(11)からバスごとに出力
すべきデータを格納しているレジスタのレジスタ番号を
入力してレジスタ中のデータをS1バス(18)、S2バス
(19)に出力制御するレジスタ出力制御回路である。 なお第6図の破線にて囲まれた部分(26)はレジスタ
ファイル(11)中に32個あり本発明のデータ処理装置の
マイクロプログラムではそれぞれをR0からR31として区
別できる。 第7図は第5図に示したバイト順逆転回路(14)の詳
細構成を示すブロック図である。 この回路ではS2バス(19)から入力された4バイトの
データをBYIレジスタRBYIに入れ、8本づつまとめて交
差する配線によりそのバイトの配列順序を逆転したデー
タをBYOレジスタRBYOに移し、BYOレジスタRBYOの値をD
バス(20)に出力する。 第8図は第5図に示したビット順逆転回路(15)の詳
細構成を示すブロック図である。 この回路ではS2バス(19)から入力された4バイトの
データをBIIレジスタRBIIに入れ、交差する配線により
そのビット順を逆転したデータをBIOレジスタRBIOに移
し、BIOレジスタRBIOの値をDバス(20)に出力する。 第9図は第4図の命令実行制御部(3)に含まれる一
部の回路の構成を示すブロック図である。 (27)は命令で指定されたオペランドのサイズ情報と
ビット番号とをもとに、レジスタ上のビット位置を示す
番号をS1バス(18)に出力するビット位置番号出力回路
である。また(28)は定数1をS2バス(19)に出力する
回路であり、S2バス(19)の最下位ビットに‘1'を、他
のすべてのビットには‘0'を出力する。 以下、本発明のデータ処理装置の動作について説明す
る。 レジスタR0に格納された32ビットの符号付き2進数と
レジスタR1の中に格納された8ビットの符号付き2進数
を加算して8ビットの符号付き2進数としてレジスタR1
に格納する符号付き加算命令(本発明のデータ処理装置
では「ADD R0.WR1.B」と表現され、命令コードのビット
パタンは第10図に示す通りである)を実行する場合を例
にして本発明のデータ処理装置で異種サイズオペランド
間の演算を行う動作を説明する。 命令は第4図に示す命令フェッチ部(1)でメモリ
(10)よりフェッチされ、デコード部(2)でデコード
され、命令実行制御部(3)にデコード結果が渡され
る。命令実行制御部(3)はレジスタR0とレジスタR1を
示す2つのレジスタ番地とレジスタR0に格納されている
オペランドのサイズとレジスタR1に格納されているオペ
ランドのサイズをパラメータとしてマイクロROM(7)
中に格納されている符号付き加算プログラムルーチンの
エントリ番地をマイクロプログラムカウンタ(6)にセ
ットして、マイクロ命令を読み出し符号付き加算命令を
実行する。 命令実行制御部(3)での符号付き加算命令の実行シ
ーケンスを示すフローチャートを第11図に示す。 2つのレジスタ番号はマイクロプログラムとは独立し
てレジスタ出力制御回路(25)に入力され、レジスタR0
中のデータはS1バス(18)を通してALU(12)に転送さ
れ、R1中のデータはS2バス(19)を通してALU(12)に
転送される。この際、レジスタR1の内容は32ビット総て
がS2バス(19)に出力されるが、拡張回路(17)により
S2バス(19)の下位8ビットが符号拡張されてALU(1
2)に入力される。また、ALU(12)では32ビットの2つ
の符号付き2進数の符号付き加算が行われ32ビットの符
号付き2進数を出力する。このとき、ALU(12)には符
号付き加算結果を格納すべきレジスタサイズが8ビット
であることが同時に指示されており、加算結果が8ビッ
ト以内の2進数で表現できるかどうか、あるいは加算結
果が正が負かゼロかなどに従い各種の制御フラッグがセ
ットされる。 ALU(12)の出力32ビットはDバス(20)を通してレ
ジスタR1に転送される。Dバス(20)で転送されてきた
32ビットのデータは、レジスタ入力制御回路(24)によ
り選ばれたレジスタR1にその下位側8ビットであるビッ
ト位置24から31に下位の8ビットのみが格納される。 次にレジスタR0中のオペランドのビット位置3に相当
するビットに‘1'をセットするビットセット命令を一例
として、実施例の実際の動作を説明する。 本発明のデータ処理装置では、ビットセット命令は命
令コードのビットパタンは第12図に示す通りである。ま
た、本発明のデータ処理装置ではレジスタ上のビット位
置は第1図に示すようになっているのでオペランドのサ
イズが1バイトか2バイトか4バイトかによりこのビッ
トセット命令はそれぞれ「BSET #3 R0.B、BSET #11 R
0.H、BSET #27R0.W」と表現される。命令実行制御部
(3)でのビットセット命令の実行シーケンスを第13図
のフローチャートに示す。 ビットセット命令ではレジスタのビット位置を示す番
号を求めるのに第14図のビット位置番号出力回路(27)
を使用する。命令実行制御部(3)ではオペランドのサ
イズとビット番号をビット位置番号出力回路(27)に入
力してビット位置番号をS2バス(19)に出力する。ビッ
ト位置番号出力回路(27)はサイズ情報が1バイトの時
は(ビット番号3+24=27)をS1バス(18)に出力し、
サイズ情報が2バイトの時は(ビット番号11+16=27)
をS1バス(18)に出力する。サイズ情報が4バイトの時
はビット番号27をそのままS1バス(18)に出力する。 ビット位置番号出力回路(27)から出力されたビット
位置番号はS1バス(18)を通してバレルシフタ(13)の
シフト数指定データとして入力される。このとき同時に
S2バス(19)を通して定数‘1'が被シフト数としてバレ
ルシフタ(13)に入力される。その結果バレルシフタ
(13)からはビット番号27のみが‘1'でその他のビット
がすべて‘0'の32ビットのビットパタンが出力される。
このビットパタンは一度作業用レジスタであるレジスタ
R16に格納される。次にALU(12)でレジスタR0とレジス
タR16の内容の論理和演算が行われる。このときレジス
タR0中のオペランドのバイト長により符号付き加算命令
実行の場合と同様に拡張回路(17)やレジスタ入力制御
回路(24)が動作する。 次にレジスタR0中の32ビットのデータのバイトの配列
順序を逆転してレジスタR1に転送するバイトリバース命
令の動作を説明する。 バイトリバース命令の命令コードビットパタンを第15
図に示す。命令実行制御部(3)でのバイトリバース命
令の実行シーケンスを示すフローチャートを第16図に示
す。 レジスタR0中の32ビットのデータがS2バス(19)を通
してバイト順逆転回路(14)のBYIレジスタRBYIに送ら
れ、バイトの配列順序が逆転された32ビットのデータが
BYOレジスタRBYOからDバス(20)を通してレジスタR0
に入力される。 次にレジスタR0中の32ビットのデータのビット順を逆
転してレジスタR1に転送するビットリバース命令の動作
を説明する。ビットリバース命令の命令コードビットパ
タンを第17図に示す。命令実行制御部(3)でのビット
リバース命令の実行シーケンスのフローチャートを第18
図に示す。 レジスタR0中の32ビットのデータがS2バス(19)を通
してビット順逆転回路(15)のBIIレジスタRBIIに送ら
れ、ビット順が逆転された32ビットのデータがBIOレジ
スタRBIOからDバス(20)を通してレジスタR0に入力さ
れる。 上記実施例ではレジスタ中のビット位置番号を求める
際にハードウエアを用いて求める例を示したが、オペラ
ンドのバイト長ごとにマイクロプログラムを別々に用意
し、マイクロプログラムによりビット番号を補正してビ
ット位置を求めてもよい。 また、上記実施例ではレジスタ上のオペランドどうし
の符号付き加算命令を例にとり、異種サイズのオペラン
ド間の演算機能を述べたが、その他加減乗除の四則演算
のすべてで同様の方法により異種サイズオペランド間の
演算ができる。 また、上記実施例ではバイトリバース命令とビットリ
バース命令とを32ビットのデータについてのみ説明した
が、上記実施例のバイト順逆転回路(14)あるいはビッ
ト順逆転回路路(15)での演算とバレルシフタ(13)の
演算とを組み合わせればマイクロプログラムにより他の
サイズのデータに対してもバイトリバース命令やビット
リバース命令を実行することができる。また、ALU(1
2)あるいはバレルシフタ(13)と作業用レジスタのみ
を用いてマイクロプログラムでこの2つの命令を実行し
ても同様の効果が得られる。 [発明の効果] 以上のように本発明のデータ処理装置では、所定の種
類の命令に従い実行機構が1つの2進数の値を表現した
32ビットのデータの連結する4個のバイトの配列順序を
逆転する処理を行うことにより一方のバイト極性で規定
されるデータを同じ2進数の値を表現した他方のバイト
極性で規定されるデータに変換されるから、異なるバイ
ト極性によりデータを扱う他のデータ処理装置に対する
データをソフトウェアに負担をかけることなく容易に扱
うことができ、ソフトウェア開発のコストを低減できる
データ処理装置を実現することが可能になる。
【図面の簡単な説明】
第1図は本発明のデータ処理装置の4バイトのバイト長
のレジスタ上に1バイト、2バイト、4バイトのデータ
を格納したときの各データの格納位置とビット番号を示
した模式図、第2図はバイト極性とビット極性がともに
ビッグエンディアンであるデータ処理装置でレジスタの
バイト長より短いバイト長のデータをレジスタに格納す
る場合に、アドレスの小さい側に寄せて格納する例を示
す模式図、第3図はバイト極性をビッグエンディアンに
してビット極性をリトルエンディアンにした場合の模式
図、第4図は本発明装置の全体構成を示すブロック図、
第5図は命令実行部の構成を示すブロック図、第6図は
レジスタファイルの構成を示すブロック図、第7図はバ
イト順逆転回路の構成を示すブロック図、第8図はビッ
ト順逆転回路の構成を示すブロック図、第9図は命令実
行制御部の一部の構成を示すブロック図、第10図は本発
明装置の符号付き加算命令のビットパターンを示す模式
図、第11図は符号付き加算命令の実行シーケンスを示す
フローチャート、第12図は命令コードのビットパターン
の模式図、第13図はビットセット命令の実行シーケンス
を示すフローチャート、第14図はビット位置番号出力回
路の構成を示す回路図、第15図はバイトリバース命令の
命令コードビットパタンを示す模式図、第16図はバイト
リバース命令の実行シーケンスを示すフローチャート、
第17図はビットリバース命令の命令コードビットパタン
を示す模式図、第18図はビットリバース命令の実行シー
ケンスを示すフローチャートである。 RBYI……BYIレジスタ、RBYO……BYOレジスタ、RBII……
BIIレジスタ RBIO……BIOレジスタ、1……命令フェッチ部、2……
命令アクセス部 3……命令実行制御部、4……オペランアクセス部、5
……命令実行部 6……マイクロプログラムカウンタ、7……マイクロRO
M 11……レジスタファイル、12……ALU、13……バレルシ
フタ 14……バイト順逆転回路、15……ビット順逆転回路 なお、図中同一符号は同一または相当部分を示す。
のレジスタ上に1バイト、2バイト、4バイトのデータ
を格納したときの各データの格納位置とビット番号を示
した模式図、第2図はバイト極性とビット極性がともに
ビッグエンディアンであるデータ処理装置でレジスタの
バイト長より短いバイト長のデータをレジスタに格納す
る場合に、アドレスの小さい側に寄せて格納する例を示
す模式図、第3図はバイト極性をビッグエンディアンに
してビット極性をリトルエンディアンにした場合の模式
図、第4図は本発明装置の全体構成を示すブロック図、
第5図は命令実行部の構成を示すブロック図、第6図は
レジスタファイルの構成を示すブロック図、第7図はバ
イト順逆転回路の構成を示すブロック図、第8図はビッ
ト順逆転回路の構成を示すブロック図、第9図は命令実
行制御部の一部の構成を示すブロック図、第10図は本発
明装置の符号付き加算命令のビットパターンを示す模式
図、第11図は符号付き加算命令の実行シーケンスを示す
フローチャート、第12図は命令コードのビットパターン
の模式図、第13図はビットセット命令の実行シーケンス
を示すフローチャート、第14図はビット位置番号出力回
路の構成を示す回路図、第15図はバイトリバース命令の
命令コードビットパタンを示す模式図、第16図はバイト
リバース命令の実行シーケンスを示すフローチャート、
第17図はビットリバース命令の命令コードビットパタン
を示す模式図、第18図はビットリバース命令の実行シー
ケンスを示すフローチャートである。 RBYI……BYIレジスタ、RBYO……BYOレジスタ、RBII……
BIIレジスタ RBIO……BIOレジスタ、1……命令フェッチ部、2……
命令アクセス部 3……命令実行制御部、4……オペランアクセス部、5
……命令実行部 6……マイクロプログラムカウンタ、7……マイクロRO
M 11……レジスタファイル、12……ALU、13……バレルシ
フタ 14……バイト順逆転回路、15……ビット順逆転回路 なお、図中同一符号は同一または相当部分を示す。
─────────────────────────────────────────────────────
フロントページの続き
(72)発明者 吉田 豊彦
兵庫県伊丹市瑞原4丁目1番地 三菱電
機株式会社エル・エス・アイ研究所内
(56)参考文献 特開 昭61−169934(JP,A)
特開 昭61−223939(JP,A)
特開 昭62−184530(JP,A)
特開 昭62−98429(JP,A)
実開 昭58−81654(JP,U)
Claims (1)
- (57)【特許請求の範囲】 1.一つの2進数の値を表現する32ビットのデータが、
その連結する4個のバイトが当該データの下位桁の側で
あるほどバイト毎にアドレス付けされたメモリの大きい
アドレスに配置されるビッグエンディアン、及び当該4
個のバイトが当該データの上位桁の側であるほどバイト
毎にアドレス付けされたメモリの大きいアドレスに配置
されるリトルエンディアンのいずれか一方のバイト極性
によって取り扱われるデータ処理装置であって、 命令をデコードして制御情報を出力する命令デコード機
構と、 前期命令デコード機構からの制御情報に従って、前記命
令により指定された処理を実行する実行機構とを有し、 前記命令が所定の種類の命令であるとき、前記実行機構
は前記命令デコード機構から出力される制御情報に従
い、前記32ビットのデータの連結する4個のバイトの配
列順序を逆転する処理を行うことを特徴とするデータ処
理装置。 2.所定の種類の命令はデータを格納する場所を指定す
る情報を含み、前記情報により指定された場所から32ビ
ットのデータが読み出されて実行機構によって処理され
ることを特徴とする特許請求の範囲第1項に記載のデー
タ処理装置。 3.所定の種類の命令により指定された格納場所はレジ
スタであることを特徴とする特許請求の範囲第2項に記
載のデータ処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62246621A JP3041308B2 (ja) | 1987-09-30 | 1987-09-30 | データ処理装置 |
US07/631,197 US5132898A (en) | 1987-09-30 | 1990-12-20 | System for processing data having different formats |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62246621A JP3041308B2 (ja) | 1987-09-30 | 1987-09-30 | データ処理装置 |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9261556A Division JP2878250B2 (ja) | 1997-09-26 | 1997-09-26 | データ処理装置 |
JP24169599A Division JP3643270B2 (ja) | 1999-08-27 | 1999-08-27 | データ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS6488826A JPS6488826A (en) | 1989-04-03 |
JP3041308B2 true JP3041308B2 (ja) | 2000-05-15 |
Family
ID=17151130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP62246621A Expired - Fee Related JP3041308B2 (ja) | 1987-09-30 | 1987-09-30 | データ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3041308B2 (ja) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5881654U (ja) * | 1981-11-24 | 1983-06-02 | 株式会社日立製作所 | 演算処理装置 |
JPS61169934A (ja) * | 1985-01-23 | 1986-07-31 | Nec Corp | ビツト列デ−タの演算結果のレジスタ内格納方法 |
JPS61223939A (ja) * | 1985-03-29 | 1986-10-04 | Canon Inc | 論理演算装置 |
DE3687124T2 (de) * | 1986-02-06 | 1993-03-18 | Mips Computer Systems Inc | Funktionseinheit fuer rechner. |
-
1987
- 1987-09-30 JP JP62246621A patent/JP3041308B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPS6488826A (en) | 1989-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5132898A (en) | System for processing data having different formats | |
US10572251B2 (en) | Method and apparatus for performing logical compare operations | |
KR100327777B1 (ko) | 다중명령 세트를 이용한 데이터 프로세싱 장치 | |
KR100806408B1 (ko) | 프로세서에 사용되는 로드/이동 및 복제 명령어들 | |
TWI489382B (zh) | 改良的萃取指令背景之設備及方法 | |
JP2001516916A (ja) | デジタル信号処理能力を有するデータ処理装置 | |
TW201337740A (zh) | 用於在一般目的暫存器中基於向量寫入遮罩之內容而儲存兩個純量常數中之一者的指令 | |
TWI628593B (zh) | 用以履行向量位元反轉之方法及設備 | |
TWI637317B (zh) | 用於將遮罩擴充為遮罩值之向量的處理器、方法、系統及裝置 | |
US4347566A (en) | Data processor with register file and arithmetic logic circuit on one chip and register means directly connected to the chip | |
JP3578883B2 (ja) | データ処理装置 | |
JPH01137331A (ja) | 制御ワード分岐方法 | |
JPH05150979A (ja) | 即値オペランド拡張方式 | |
US4631672A (en) | Arithmetic control apparatus for a pipeline processing system | |
JP2609618B2 (ja) | データ処理装置 | |
JP2617974B2 (ja) | データ処理装置 | |
JP3041308B2 (ja) | データ処理装置 | |
JP3643270B2 (ja) | データ処理装置 | |
JPS6160459B2 (ja) | ||
GB2366426A (en) | Multi-processor system with registers having a common address map | |
JP2878250B2 (ja) | データ処理装置 | |
US6275925B1 (en) | Program execution method and program execution device | |
JP3332606B2 (ja) | マイクロプロセッサ | |
JPH04195629A (ja) | 演算フラグ生成装置 | |
JPS63234322A (ja) | プロセツサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313115 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313115 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |