JP3003292B2 - データ・アライン装置 - Google Patents
データ・アライン装置Info
- Publication number
- JP3003292B2 JP3003292B2 JP3184254A JP18425491A JP3003292B2 JP 3003292 B2 JP3003292 B2 JP 3003292B2 JP 3184254 A JP3184254 A JP 3184254A JP 18425491 A JP18425491 A JP 18425491A JP 3003292 B2 JP3003292 B2 JP 3003292B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- bus
- instruction
- bits
- bit
- 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
Links
- 230000006870 function Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 13
- 238000000034 method Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- MJEMIOXXNCZZFK-UHFFFAOYSA-N ethylone Chemical compound CCNC(C)C(=O)C1=CC=C2OCOC2=C1 MJEMIOXXNCZZFK-UHFFFAOYSA-N 0.000 description 1
- 206010016531 fetishism Diseases 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Bus Control (AREA)
Description
外部メモリのアクセスに際し、データ・アライン(Al
igne:整列)されていないデータ・バスのビット幅
に足りないデータを転送する際に、外部メモリに割り当
てられたアドレスとデータのビット幅に従い、マイクロ
プロセッサのデータ端子を制御するマイクロプロセッサ
のデータ・アライン装置に関する。
ステムでは、マイクロプロセッサと命令コードやオペラ
ンド・データを格納する外部メモリの間でデータ転送す
るデータ・バスのビット幅が、処理性能に対して影響を
与える。現在では高性能マイクロプロセッサの大半は、
32ビット幅のデータ・バスを有する。
もデータ・バス幅と同一幅のデータを処理するわけでは
ない。ASCII文字は8ビットで表現されるし、JI
S漢字文字は16ビットで表現される。また、数値を扱
う場合においても8ビットや16ビットでも十分である
ことが多い。したがって、プログラム処理においては8
/16/32ビット幅のデータが混在して存在すること
が普通である。このため、外部メモリ装置にあっても8
/16/32ビットのオペランドが混在している。
トで表現できず、64ビットあるいはそれ以上のビット
幅を必要とする場合もあるが、ここでは言及しない。
納されているオペランドをアクセスする場合に、そのオ
ペランドが格納されているアドレスをアドレス・バスを
介して通知する。
なわちここでは8ビット幅のデータ(バイト・データ)
のアクセスが可能なように、8ビット単位の構成を取
る。
D31を持ち、外部メモリ402(図中MEMと記す)
に接続されるマイクロプロセッサ(図中CPUと記す)
の構成を示す。外部メモリ402は、8ビット単位のメ
モリ・バンクM0〜M3 410〜413で構成され
る。メモリ・バンクM0 410はデータ・バスD0−
D7、M1 411はデータ・バスD8−D15、M2
412はデータ・バスD16−D23、M3 413
はデータ・バスD24−D31のそれぞれ8ビットに対
応する。各メモリ・バンクはマイクロプロセッサ401
から共通の30ビット幅のアドレスA31−A2を通知
される。同時に各メモリ・バンクには各メモリ・バンク
の有効性を示すためのイネーブル信号、M0410には
BE0(−)、M1 411にはBE1(−)、M2
412にはBE2(−)、M3 413にはBE3
(−)がマイクロプロセッサ401より通知される。イ
ネーブル信号がアクティブであるメモリ・バンクに対
し、アドレス・バスで指定されるアドレスに対してアク
セスが行われることになる。
(−)を用いることで、マイクロプロセッサ401が内
部的に発生する32ビット幅のアドレス(以下内部アド
レスと呼ぶ)のうち、最下位の2ビットを通知すること
が不要なばかりでなく、データ・バス幅(32ビット)
に満たない8/16ビット・データのアクセスを行え
る。ここで、“(−)”は信号が負論理であることを示
す。
プにしたがってアクセスされるメモリ・バンクとデータ
・バス端子の関係を示す。
メモリ402の間には、メモリ制御装置403(図中M
CONと記す)が配置される。
装置403に対しては、バス・サイクルの種類(たとえ
ばメモリ空間に対するものか、I/O空間に対するもの
か)を示すステータス信号ST0−ST2、バス・サイ
クルの開始を示すタイミング信号BCYST(−)、バ
ス・サイクルで行われるデータ転送の方向(リード/ラ
イト)示すステータス信号R/W(−)が接続される。
これらのステータス信号、およびタイミング信号によ
り、外部メモリに対するリード・タイミング信号RD、
およびライト・タイミング信号WRを生成する。
要なアクセス・タイムを保証するために、レディ信号R
EADY(−)を発生しマイクロプロセッサ401に通
知する。レディ信号READY(−)がインアクティブ
の期間、マイクロプロセッサ401によって起動されて
いるバス・サイクルは、終了せずに現在の状態を保留す
る。
リ402とのデータ転送に関するインタフェースを司ど
る機能単位をバス・インタフェース・ユニットと呼ぶ。
に対する、マイクロプロセッサ401の外部メモリ40
2へのアクセス動作について述べる。 (1)8ビット・オペランド:内部アドレスの値によっ
て、データ・バスの使用が8ビット単位に異なる。マイ
クロプロセッサ401からバス・サイクルが発行される
際、内部アドレスの最下位2ビットが00bならばD0
−D7を使用するようにBE0(−)信号を、01bな
らばD8−D15を使用するようにBE1(−)信号
を、10bならばD16−D23を使用するようにBE
2(−)信号を、11bならばD24−D31を使用す
るよようにBE3(−)信号が、それぞれアクティブに
される。 (2)16ビット・オペランド:内部アドレスの値によ
って、データ・バスの使用が16ビット単位に異なる。
マイクロプロセッサ401では、16ビット・データは
内部アドレスの最下位1ビットが0bであるアドレスに
配置するように制限される。マイクロプロセッサ401
からバス・サイクルが発行される際、内部アドレスの最
下位2ビットが0Xb(“X”はDon’t Cade
であるビットであることを意味する)ならばD0−D1
5を使用するようにBE0(−)信号およびBE1
(−)信号を、1XbならばD16−D31を使用する
ようにBE2(−)信号およびBE3(−)信号が、そ
れぞれアクティブにされる。 (3)32ビット・オペランド・マイクロプロセッサ4
01では、32ビット・データは内部アドレスの最下位
2ビットが00bであるアドレスに配置するように制限
される。マイクロプロセッサ40からバス・サイクルが
発行される際、D0−D31を使用するようにBE0
(−)〜BE3(−)信号のすべてが同時にアクティブ
される。
トおよび32ビット・オペランドのメモリ配置に制限を
設けることで、1回のオペランド・アクセスは1回のバ
ス・サイクルで完結できる。
ッサ401はオペランド・データを格納するための汎用
レジスタを持つ。外部メモリ402と汎用レジスタの間
でデータ転送を行うために、マイクロプロセッサ401
にはLOAD命令とSTORE命令が用意されている。
LOAD命令はバス・サイクルを起動し、外部メモリか
ら汎用レジスタにオペランドを転送する。
し、汎用レジスタから外部メモリ401にオペランドを
転送する。
は、汎用レジスタ内に格納されているデータを演算対象
とし、演算結果は汎用レジスタに戻される。
送された8/16/32ビット・データを格納するが、
いずれのタイプのデータを格納する場合でも、LSB
(Least Significant Bit:最小
有意ビット)の位置は、次の理由で共通的にビット0し
ている。
いる二進算術論理演算装置ALU、シフタ等の演算装置
に内部データ・バスを介して転送され、必要な演算が行
われる。この時、各データ・タイプを持つデータどうし
のLSB位置が揃っていないと、正しく演算できないか
らである。
1bなるアドレスに配置された8ビット・データαはデ
ータ・バスからそのままマイクロプロセッサ401に取
り込むと、XXαX(ここでXはDon’t Care
な8ビット・データであることを意味する)となり、α
のLSBは32ビット・データとして扱う場合にビット
8に位置してしまう。
配置された16ビット・データβγはβγXXとなり、
LSBはビット16に位置してしまう。
に、演算命令の実行に先立ちそれぞれのデータは、XX
Xα、およびXXβγの形式に変換しておく必要があ
る。
ため、LOAD命令の実行時に上述のLSB位置変換を
行う必要がある。
レジスタ、二進算術論理演算装置、シフタ等を含み、命
令の実行処理を行う機能単位を実行ユニットと呼ぶ。
り込まれたメモリ・オペランドを、格納すべき内部アド
レスに拘わらず常にLSBの位置を揃えておくと、外部
メモリ402に書き込みを行う場合に常にLSBの位置
はビット0に揃ってしまう。STORE命令の実行時に
内部アドレス、およびデータ・タイプに従ってLSB位
置の逆変換が必要である。
メモリ402間のデータ転送の際に、内部アドレス、お
よびデータ・タイプに従ってLSB位置の変換する機能
を、データ・アライン機能と呼ぶ。
ッサにおけるデータ・アライン機能は、バス・インタフ
ェース・ユニットが担当しており、専用のハードウェア
を用いている。専用ハードウェアを必要とする理由は、
1)変換に要する時間を最小限にするため、2)バス・
インタフェース・ユニットと実行ユニットが互いに独立
して動作させるため、である。
許第4,624,660号明細書に示されるように、C
PUと記憶装置の間に配置され、アドレス・バスとデー
タ・バスの作業を調整するバス・コントローラの責任で
あるとしている。上記特許明細書のFig.1におい
て、中央処理装置12と記憶装置20の間は、データ・
バスを制御するデータ・バス・インタフェース18、ア
ドレス・バスを制御するアドレス・バス・インタフェー
ス16によってインタフェースされる。データ・バス・
インタフェース18によってミスアライン(misal
ignment)が修正された上で、中央処理装置12
との間で内部データバスIDB0−IDB31とのアラ
インされたデータの転送を行う。Fig.13,15,
19,20に8ビット単位に記載されているデータ・バ
ス・インタフェース18から分るように、外部データ・
バスD0−D31は、8ビット単位づつ(D0−D7,
D8−D15,D16−D23,D24−D31)内部
データ・バスIDB0−IDB31のうち任意の8ビッ
ト(IDB0−IDB7,IDB8−IDB15,ID
B16−IDB23,IDB24−D31)に接続する
ような機構が必要である。具体的にはFig.21にあ
るように、外部データ・バスの1ビットあたり内部デー
タ・バスの4ビットを選択的に接続する双方向のマルチ
プレクサを用いている。バス・コントローラ14は、
1)アドレス・バス・インタフェース16、ならびにデ
ータ・バス・インタフェース18に対する制御、2)ア
ラインされたデータ転送であるかの判定、3)必要なバ
ス・サイクルの起動、4)記憶装置20に対する制御信
号の発行を行う。
現するために、外部データ・バスと内部データ・バスの
間に8ビットづつ交換する専用のハードウェアが必要で
あることを示唆している。
を持つ。 (1)データ・アライン機能だけのための論理回路を必
要とし、デバイス規模の増大を招く。 (2)半導体集積回路に実現する場合、信号線の相互交
換は配線領域の増大を招き、デバイス上の有効トランジ
スタ数の使用効率を下げる。 (3)内部データ・バスと外部データ・バスの間に回路
が挿入されることで、動作速度を低下させる。
ために、本発明による装置は、データ・バス幅のビット
長より小さなビット長を持つデータを外部メモリと転送
するマイクロプロセッサのデータ・アライン装置におい
て、命令実行の際にデータ転送を行う内部データ・バ
ス、前記内部データ・バスに接続されたシフト演算装
置、シフトすべきビット数を保持するレジスタ、および
アクセスすべき外部メモリへのアドレスの一部分および
データのビット長によりアラインすべきビット数を生成
する手段を有し、実行する命令に応じて前記ビット数生
成手段により生成されたビット数と前記レジスタに保持
されたビット数とのいずれかを選択して出力するマルチ
プレクサを有し、前記マルチプレクサから出力されたビ
ット数に従い、前記データ・バスを介して転送されるデ
ータを前記シフト演算装置によりシフトすることを特徴
とする。
小数点演算命令等で使用される実行ユニットにおけるシ
フタを、共通の資源として用いてデータ・アライン機能
を実現している。
ータ・バスに接続し、8/16/32ビット・データを
アクセスできるマイクロプロセッサ100の概略構成を
示す図面である。
イン処理を行うために、命令フェッチ・ユニット(以下
IUと称する)101、命令デコード・ユニット(以下
DUと称する)102、命令実行ユニット(以下EUと
称する)103、実効アドレス計算ユニット(以下AU
と称する)104、バス・インタフェース・ユニット
(以下BUと称する)105を持つ。
御、およびフェッチ・サイクルで外部より取り込んだ命
令コードを蓄積する。命令コード・キャッシュを含むよ
うな構成も考えられる。命令コードは、16ビット長あ
るいは32ビット長のいずれかである。各命令コードは
メモリのハーフワード境界から(内部アドレスの最下位
ビットが0b)置かれるものとする。
令コードをデコードし、個々の命令に特有な処理を示す
信号を発生させる。代表的な信号としては、1)命令実
行処理の種類、2)オペランドの種類(メモリ/レジス
タの番号)、3)オペランドのデータ・タイプ、4)特
殊な命令の認識、などがある。DU102で発生された
信号は、図面では一部省略されているがその他の各ユニ
ットに対する動作指示信号として与えられる。
用レジスタ、32ビット幅の算術論理演算装置ALU、
バレル・シフタ等を含み、DU102によって指定され
た命令実行処理を行う。その内部制御はハードワイアド
論理によるもの、マイクロプログラムを用いたもの等が
考えられる。
はI/Oに対するアクセスを含む命令であることを検知
すると、オペランドに対するアドレスを計算する。アド
レス計算に使用される要素は、命令コード中に含まれる
ディスプレースメント値、あるいは汎用レジスタの内容
がベース値として用いられる。前者はIU101から、
後者はEU103から供給される。
トのものがあり、16ビット・データはハーフワード境
界(内部アドレスの最下位ビットが0b)から、32ビ
ット・データはワード境界(内部アドレスの最下位2ビ
ットが00b)から配置されるものとする。
るアドレス情報、データ情報、および起動要求に基づい
て、外部バス・サイクルを発生する。バス・サイクルで
外部から読み込まれたデータは、命令コードはIU10
1に、オペランド・データはEU103に供給される。
ス構造で内部接続される。
アクセス以外のバス・サイクルで使用するアドレス(内
部アドレス・バスIA0−IA31を経由)と命令コー
ドを転送するために、IU101とDU102間は命令
コードを転送するために、AU104とIU101間、
およびAU104とEU103間はアドレス計算に使用
されるアドレス要素を転送するために(IA0−IA3
1を経由)、EU103とBU105間はリード・オペ
ランドまたはライト・オペランドを双方向的に転送する
ために(内部データ・バスID0−ID31を経由)、
AU104とBU105間は実効アドレスを転送するた
めに(IA0−IA31を経由)、EU103とBU1
05の間は任意のバス・サイクルで使用するアドレスを
転送するために(IA0−IA31を経由)接続され
る。
ータ・バスID0−ID31は32ビット幅のバス1系
統に見せているが、実際には複数の32ビット・バスで
構成される。
はFREQ信号、DU102からのものはOPREQ信
号、EU103からのものはACREQ信号で表現され
る。これらの要求信号は、実際にはバス・サイクルの種
類を表現するための複数の信号、およびタイミングを規
定する信号等の複数の信号によって構成される。
30ビットのワード・アドレス(32ビット単位アドレ
ス)を出力するアドレス・バス端子A2−A3112
1、32ビット・データの授受を行うデータ・バス端子
D0−D31 122、データ・バス端子のどの8ビッ
ト位置を用いて有効データを転送するかを示すバイトイ
ネーブル出力端子BE0(−)〜BE3(−)123
(BE0(−)はD0−D7、BE1(−)はD8−D
15、BE2(−)はD16−D23、BE3(−)は
D24−D31に対応する)、バス・サイクルの種類
(たとえばメモリ空間に対するものか、I/O空間に対
するものか)を示すステータス端子ST0−ST2 1
24、バス・サイクルの開始を示すタイミング出力端子
(BCYST(−)125、バス・サイクルで行われる
データ転送の方向(リード/ライト)を示すステータス
出力端子R/W(−)126を持つ。
セッサ100のクロック入力端子128に加えれる基準
クロック信号CLKに同期した2つのステートT1,T
2で構成される。
127の状態がサンプリングされ、インアクティブであ
ればアクティブになるまでT2ステートを繰り返す。こ
のときREADY(−)入力端子127の状態がアクテ
ィブであれば、アイドル・ステートTiに遷移してバス
・サイクルを終了する。
・バス端子122までの構成を示す図面である。
(以下MROMと略す)202に格納され、マイクロプ
ログラム・カウンタ(以下MPCと略す)201で指定
されるアドレスに格納されているマイクロ命令で制御さ
れるマイクロマシンである。
コード結果により、命令実行処理の開始時に特定のマイ
クロプログラムの開始アドレスが設定され、1)分岐フ
ィールド命令が実行されて分岐する場合、2)EU10
3あるいは他ユニットからマイクロ命令の実行待合せが
要求され一時的に停止する場合、以外は1クロック毎に
1インクリメントされる。
命令は、マイクロ命令レジスタ(以下MRと略す)20
4にラッチされる。
面下部分)には、32本の32ビット汎用レジスタ(以
下GRと略す)210、32ビット幅の算術論理演算装
置(以下ALUと略す)211、32ビット幅のシフト
演算装置(以下SHIFTと略す)220等を持つ。ま
た、乗算器、浮動小数点演算装置を持つ様な構成も考え
得る。
ト・バスs1_bus2_bus,r_busを介して
結合される。s1_bus,s2_busはGR210
の内容を読み出し、ALU211またはSHIFT22
0に2つの被演算データを転送するためのデータ・バス
であり、それぞれ同時に同一のあるいは異なったGR2
10の内容を転送できる。
T220で行われた演算結果を読み出し、GR210に
書き戻すためのデータ転送に使用されるデータ・バスで
ある。
発行結果、データ・バス端子122から入力されたリー
ド・オペランドを格納するBU105内のオペランド・
リード・レジスタ(以下OPRと略す)213にも結合
され、GR210の代りにOPR213の内容を被演算
オペランドとして使用できる。
ルの発行時に、データ・バス端子122から出力される
ライト・オペランドを格納するBU105内のオペラン
ド・ライト・レジスタ(以下OPWと略す)214にも
結合され、GR210の代りにOPR213の内容を演
算結果の書込み先として使用できる。
源、およびs1_bus上のデータが書き込まれるレジ
スタ資源はs1_busデコーダ(以下S1DECと略
す)207により指定される。同様にs2_busに関
してはs2_busデコーダ(以下S2DECと略す)
208、r_busに関してはr_busデコーダ(以
下RDECと略す)209により指定される。rtrn
フィールドによるr_busを用いたデータ転送は、同
一マイクロ命令のs1trn,s2trnに対して1ク
ロック後に有効にするように、RDEC209の入力に
は遅延回路(以下MDと略す)206が接続される。
命令203は、1)s1_busを用いた第一のオペラ
ンド転送を指定するs1trnフィールド、2)s2_
busを用いた第二のオペランド転送を指定するs2t
rnフィールド、3)r_busを用いた結果転送を指
定するrtrnフィールド、4)分岐・演算・制御の各
フィールド命令に関する信号を発生するopフィール
ド、5)opフィールドの役割を指定するopcフィー
ルド、6)分岐命令の分岐先アドレスあるいは第一/第
二オペランドで使用する定数を発生するsimmフィー
ルドによって構成される。
る機能を便宜上フィールド命令と呼び、分岐・演算・制
御等のフィールド命令に分類される。
送フィールドは、転送元(ソース)と転送先(デスティ
ネーション)のレジスタ資源を指定するサブ・フィール
ドを含んでいる。前述のようにソース・サブフィールド
で指定されたレジスタ資源の内容が各データ・バス上に
読み出されると同時に、デスティネーション・サブフィ
ールドで指定されたレジスタ資源に各データ・バス上の
値を書き込むことで転送を行う。
s,s2_bus,r_busに対応するデコーダS1
DEC207,S2DEC208,RDEC209によ
って解析され、各データ・バス上のレジスタ資源に対す
る読出信号および書込信号を発生する。
ィールドによるopフィールドの割当を示すように、各
フィールド命令ごとにopフィールドの役割が異なる。 (1) 分岐フィールド命令は、“cccc”で指定さ
れた分岐条件が“f”で指定される値(真または偽)で
あれば指定されたアドレス(分岐先アドレス)にマイク
ロ命令の制御を移す。
mmフィールドの値を連結して指定され、MPC201
に設定され新たな命令シーケンスのマイクロ命令がMR
OM202から読み出される。
新たな命令シーケンスが読み出されるまでに、MROM
202から読み出される分岐フィールド命令に引続くマ
イクロ命令の実行を有効/無効にすることを指定する。
有効にすることで、マイクロ命令の実行をまったく無効
にすることなしに分岐フィールド命令を実行できる“遅
延分岐”機能を実現する。 (2) 制御フィールド命令は、“nnnnnn”で指
定された制御信号を発生する。 (3) ALU演算フィールド命令は、ALU211に
おける演算を指定する。
算/減算/比較/論理和/論理積/排他的論理和/論理
否定)を、“tttt”は演算のデータタイプ(ex.
8/16/32ビット)、“i”は演算の種類を“oo
oooo”で指定する直接演算またはDU102の命令
デコード結果に基づいて指定する間接演算を指定し、
“ss”,“dd”は演算に使用する2つのオペランド
・データを指定する。ALU211で演算の対象になる
のは、図面では省略しているがs1_bus,s2_b
usに接続された4本のテンポラリ・レジスタのうち、
2本が用いられる。
LU演算は、次にALU演算フィールド命令が実行され
るまで保持され、ALU211は最新の指定により演算
を繰返し行う。 (4) シフタ演算フィールド命令は、SHIFT22
0における演算を指定する。“ooo”は演算の種類
(右論理シフト/左論理シフト/右算術シフト)を、
“w”はシフトするビット数をEU103内で得るかE
U103外部から得るかを指定する。
ルドの値をデコーダするフィールド命令デコーダ(以下
MDECと略す)205によって解析され、制御され
る。
スタを持つ。
す)221は、SHIFT220が行うシフト演算の種
類を保持するレジスタで、シフタ演算フィールド命令が
実行された時“ooo”をラッチする。
す)222は“w”がシフト・ビット数を保持するレジ
スタで、シフタ演算フィールド命令が実行された時
“w”がシフト・ビット数をEU103内から得るよう
に指定された場合にSHIFT220に通知される。
FT220の制御に関する構成を、より詳細に示した図
面である。
続された入力レジスタ(以下SHIFTIと略す)22
4に保持された、32ビットまでの任意長のビット数分
左または右にシフトして、出力レジスタ(以下SHIF
TOと略す)226に32ビット・データを得るもので
ある。バレル・シフタ本体(以下BSHIFTと略す)
225は、SHIFTI224に格納された32ビット
・データを1)論理右シフト(SHR)、2)論理左シ
フト(SHL)、3)算術右シフト(SAR)、半クロ
ック期間でシフトするシフタである。BSHIFT22
5へシフタ演算の種類は3ビットの演算指定信号OP
R、シフト・ビット数の指定は6ビットのビット数指定
信号BITSにより加えられる。
1trnフィールドまたはs2trnフィールドのデス
ティネーション・サブフィールドに“SFTI”を記述
することで(この場合、S1DEC207がデコード信
号SHIFTIWSIを発生するか、S2DEC208
がデコード信号SHIFTIWS2を発生する)、s1
_busあるいはs2_busを経由して設定される。
しは、rtrnフィールドのソース・サブフィールドに
“SFTO”を記述することで(この場合、RDEC2
09はデコード信号SHIFTORRを発生する)、S
HIFTO226の内容がトライステート・バッファ2
27を介してrtrnに読み出される。
がopcフィールドで指定されたことをopcフィール
ド・デコーダ(以下OPCDECと略す)215が検知
したことによってMSHIFT信号が発生すると、op
フィールドの値をラッチするSOPR221から供給さ
れる。OPR信号は、シフタ演算フィールド命令の“o
oo”に相当する部分が供給される。
演算フィールド命令の“w”に相当する部分は、MPS
EL信号として、マルチプレクサ(以下SBMPXと略
す)223の入力を選択する。
ット数をEU103内で得るように指定された場合)B
ITSにSB222の出力SBB信号を選択出力し、1
bの場合(シフト・ビット数をEU103以外で得るよ
うに指定された場合)アライン・ビット生成回路(以下
ALBGENと略す)228の出力ALB信号を選択出
力する。
れ、s2trnフィールドのデスティネーション・サブ
フィールドに“SFTB”を記述することで(この場
合、S2DEC208がデコード信号SBWS2を発生
する)、s2_busの値(下位6ビット)が設定され
る。
行うためには1)SHIFTI220の設定(s1tr
n/s2trnフィールドの指定)、2)OPR信号に
よるシフタ演算の種類指定(シフタ演算フィールド命令
の指定)、3)BITS信号によるシフト・ビット数の
指定、4)演算結果の読出し(rtrnフィールドの指
定)、の各ステップが必要である。
トの各シフト命令を処理するマイクロプロセッサを例
に、SHIFT220の動作を説明する。
術右シフト命令のそれぞれは、記述するマイクロプログ
ラムは次の様に1行のマイクロ命令で記述できる。
SHR/SHL/SAR(W);DST=SFTOf;
ENDM;“;”はそれぞれのフィールドを分離するた
めの記述である。左からs1trnフィールド、s2t
rnフィールド、opcおよびopフィールド、rtr
nフィールドに対応する。最右フィールド(“END
M;”)の意味については、後述する。
指定の意味を持つ。 SFTI=DST: DSTで表わされる被
シフト・データを指定するレジスタ資源の内容を、s1
_busを介してSHIFTI224に転送する。 SFTB=BITS: BITSで表わされる
シフト・ビット数を指定するレジスタ資源の内容を、s
2_busを介してSB222に転送する。 SHR/SHL/SAR(W):シフタ演算としてSH
R,SHLまたはSARをSOPR221に指定し、シ
フト・ビット数としてSB222に設定された値を用い
る(“(W)”の記述により、“w”部分が0bにな
る)。 DST/SFTOf: SHIFTO226の
出力(シフタ演算結果)を、r_busを介してDST
で表わされるレジスタ資源(被シフト・データを格納し
ていた資源と同一)に転送する。
より、シフタ演算結果が図面では省略されているPSW
(Processor Status Word)の状
態フラグを変化させるように指定される。 ENDM: マイクロプログラムが
このマイクロ命令で終了すること意味する。
本マイクロプログラムの記述を説明する。
ロセッサ100パイプライン処理の順序を示す。マイク
ロプロセッサ100では、次の基本パイプライン・ステ
ージを持つ。ALとWBステージは半クロック、それら
以外は1クロックで処理を行う。 IF(命令フェッチ): 16/32ビット長の
命令コードをIU101からフェッチする。 AL(命令アライン): IU101の出力で、
16/32ビット長混在の命令コードのLSB位置を揃
える。 ID(命令デコード): DU102が命令コー
ドをデコードし、各種信号を発生する。 MA(マイクロ命令アクセス):IDステージのデコー
ド結果にもとずき、MPC201を初期化し、MROM
202をアクセスする。 MI(マイクロ命令実行): MROM202の出力
をMR204にラッチする。EU103内の簡単な制御
信号の発生や、制御用レジスタの設定、分岐動作を行
う。 EX(命令実行): EU103で演算、内
部データ転送を実行する。前半の半クロックはs1_b
us,s2_busを用いた各レジスタ資源間どおし/
演算装置へのデータ転送を処理する。後半の半クロック
では演算装置による演算を行う。 WB(結果書戻し): r_bus用いた演算
装置から各レジスタ資源へのデータ(結果)転送を行
う。
ライン・ステージが記述されるが、先に説明しておく。 EA(実効アドレス): AU104がメモリ・
オペランドのアドレスを計算し、BU105に通知す
る。オペランド・アドレスは、命令コードが指定する汎
用レジスタの値(ベース値)に、命令コードが含むディ
スプレースメント値を加算することで得られる。本ステ
ージは、LOADおよびSTORE命令を検知すること
で、IDステージの後半の半クロックから始まる。
プライン処理は、IF→AL→ID→MA→MI→EX
→WBのステージで構成される。
(W)フィールド命令は、MR204にラッチされたマ
イクロ命令がシフタ演算命令であることがOPDEC2
15により検知されMSHIFT信号が発生することに
より、“ooo”および“w”がSOPR221にラッ
チされる。BSHIFT225にはOPR221の“o
oo”をラッチした部分の出力OPRが通知され、SH
R,SHLまたはSARが指定される。
ィールド命令は、S1DEC207によりSHIFTW
S1信号を発生し、DSTで記述された被シフト・オペ
ランドを保持するレジスタ資源の内容が出力されている
s1_busの値をSHIFTI224にラッチする。
ィールド命令は、S2DEC208によりSBWS2信
号を発生し、BITSで記述されたシフト・ビット数を
保持するレジスタ資源の内容が出力されているs2_b
usの値をSBB222にラッチする。
チした部分の出力MPSELは、シフタ演算命令が
“(W)”を記述しているため0bとなり、SBMPX
223の出力BITSにはSB222の出力SBが出力
され、BSHIFT225に通知される。
IFTI224、制御入力となるBITS,OPR信号
が確定するとBSHIFT225は半クロックで、SH
IFTI224に保持されたデータに対し、OPR信号
で指定されるシフタ演算をBITS信号出指定されるビ
ット数だけ行い、結果がSHIFTO226にラッチす
る。
ールド命令は、WBステージでRDEC209によりS
HIFTORR信号を発生し、SHIFTO226の内
容がトライステート・バッファ227からr_busに
読み出され、DSTで記述された被シフト・オペランド
を保持していたレジスタ資源の内容を書き換える。同時
に図面では省略しているが、シフト結果の状態を解析す
る回路によりオーバフロー、桁あふれ、符号の状態が解
析され、PSWの内容を更新する。
る1行で記述される次のマイクロプログラムを例に、S
HIFT220の動作を説明する。
=SFTO;ENDM;各フィールドは、左から以下の
ような動作指定の意味を持つ。 SFTI=OPR: リード・メモリ・オペランドを
格納するOPR213の内容を、s1_busを介して
SHIFTI224に転送する。 SAR(A): シフタ演算としてSARをSO
PR221に指定し、シフト・ビット数としてALBG
EN228で生成された値を用いる(“(A)”の記述
により、“w”部分が1bになる)。 DST=SFTO: SHIFTO226の出力(シ
フタ演算結果)を、r_busを介してDSTで表わさ
れるレジスタ資源に転送する。 ENDM: マイクロプログラムがこのマイ
クロ命令で終了すること意味する。
本マイクロプログラムの記述を説明する。図面からわか
るように、LOAD命令のパイプライン処理は、IF→
AL→ID→MA→MI→EX→WBのステージを持つ
とともに、EAステージと実行が待ち合わされる(E
X)ステージを持つことが特徴である。
アドレス(32ビットの内部アドレスIA0−IA3
1)を計算すると、BU105に対してバス・サイクル
(メモリ・リード)が起動される。バス・サイクルはT
1,T2ステートで構成され、T2ステートの終了時に
データ・バス端子122の値がOPR213にラッチさ
れる。
ス・サイクルが終了しないために、2つのEXステージ
(“(EX)”)が待合わせされる。また、EXステー
ジではバス・サイクルを終了してもよい事を示すREA
DY(−)127端子入力の状態(レディ状態)を監視
し、レディ状態でなければWBステーシに遷移しないよ
うに制御する。
令は、MR204にラッチされたマイクロ命令がシフタ
演算命令であることがOPDEC215により検知され
MSHIFT信号が発生することにより、“ooo”お
よび“w”がSOPR221にラッチされる。BSHI
FT225にはOPR221の“ooo”をラッチした
部分の出力OPRが通知され、SARが指定される。
ィールド命令は、S1DEC207によりSHIFTW
S1信号を発生し、OPR213の内容をs1_bus
を介してSHIFTI224にラッチしようとする。図
面では省略しているが、BU105はリード・バス・サ
イクルが終了していないことが通知されると、EU10
3はOPR213をアクセスしようとする転送フィール
ド命令の記述(“=OPR”)を検出し、EXステージ
の実行を待ち合わせるよう、マイクロ命令の実行を制御
する。
チした部分の出力MPSELは、シフタ演算命令が
“(A)”を記述しているため1bとなり、SBMPX
223の出力BITSにはALBGEN228の出力A
LBが出力され、BSHIFT225に通知される。
IFTI224がリード・バス・サイクルの終了により
確定し、制御入力となるBITS,OPR信号が確定す
るとBSHIFT225は半クロックで、SHIFTI
224に保持されたデータに対し、SAR演算をBIT
S信号出指定されるビット数だけ行い、結果がSHIF
TO226にラッチされる。
ールド命令は、WBステージRDEC209によりSH
IFTORR信号を発生し、SHIFTO226の内容
がトライステート・バッファ227からr_busに読
み出され、DSTで記述されたメモリ・オペランドを転
送すべきレジスタ資源の内容を書き換える。
て説明する。
と、これから実行する命令がメモリ・オペランドを使用
するかどうか、またそのオペランドのデータ・タイプが
判定できる。DTYP0−DTY01信号は、IU10
2が検知したオペランドのデータ・タイプを示し、00
bならば8ビット、01bならば16ビット、1Xbな
らば32ビット幅であることを意味する。
が終了すると、その最下位2ビット(IA0−IA1)
も確定し、ALBGEN228に通知される。
ータ・アライン機能(メモリ→汎用レジスタ)を実現す
るためには、データ・タイプならびに内部アドレスにし
たがって第六図(3)に示すビット数分の右シフトを行
えば良い。
ているのは、メモリから汎用レジスタへの転送の際に符
号拡張をするためであり、他のマイクロプロセッサでは
ゼロ拡張するためにSHLを使用することも考えられ
る。
B(5))は、次のような簡単な論理式で計算できる、 ALB(5)=0b; ALB(4)=IA1*DTYP1’; ALB(3)=IA0*DTYP1’*DTYP0’; ALB(2)=0b; ALB(1)=0b; ALB(0)=0b; この式で、“DTYP0’”,“DTYP1”の表現
は、それぞれDTYP0,DTYPの論理反転をとった
ものである。
する1行で記述される次のマイクロプログラムを例に、
SHIFT220の動作を説明する。SHIFT220
でSAR演算を用いてデータ・アライン機能(汎用レジ
スタ→メモリ)を実現するためには、データ・タイプな
らびに内部アドレスにしたがって図10に示すビット数
分の左シフトを行えば良い。
=SFTO;ENDM; 各フィールドは、左から以下のような動作指定の意味を
持つ。 SFTI=SRC: SRCで表わされるレジスタ資
源の内容を、s1 busを介してSHIFTI224
に転送する。 SHL(A): シフタ演算としてSHLをSO
PR221に指定し、シフト・ビット数としてALBG
EN228で生成された値を用いる(“(A)”の記述
により、“w”部分が1bになる)。 OPW=SFTO: SHIFTO226の出力(シ
フタ演算結果)を、r_busを介してOPW214に
転送する。 ENDM: マイクロプログラムがこのマイ
クロ命令で終了すること意味する。
本マイクロプログラムの記述を説明する。図面からわか
るように、STORE命令のパイプライン処理は、IF
→AL→ID→MA→MI→EX→WBのステージを持
つとともに、EAステージを持つことが特徴である。
アドレス(32ビットの内部アドレスIA0−IA3
1)を計算されても直ちに、BU105に対してバス・
サイクル(メモリ・ライト)が起動されない。処理がW
Bステージに進むと、T1,T2のステートから成るラ
イト・バス・サイクルが起動され、OPW214の内容
がデータ・バス端子122に出力される。
令は、MR204にラッチされたマイクロ命令がシフタ
演算命令であることがOPDEC215により検知され
MSHIFT信号が発生することにより、“ooo”お
よび“w”がSOPR221にラッチされる。BSHI
FT225にはOPR221の“ooo”をラッチした
部分の出力OPRが通知され、SHLが指定される。
ィールド命令は、S1DEC207によりSHIFTW
S1信号を発生し、メモリ・オペランドとして転送しよ
うとするSRCで表現されるレジスタ資源の内容をs1
busを介してSHIFTI224にラッチする。
チした部分の出力MPSELは、シフタ演算命令が
“(A)”を記述しているため1bとなり、SBMPX
223の出力BITSにはALBGEN228の出力A
LBが出力され、BSHIFT225に通知される。
IFTI224、制御入力となるBITS,OPR信号
が確定するとBSHIFT225は半クロックで、SH
IFTI224に保持されたデータに対し、SHL演算
をBITS信号出指定されるビット数だけ行い、結果が
SHIFTO226にラッチする。
ールド命令は、WBステージでRDEC209によりS
HIFTORR信号を発生し、SHIFTO226の内
容がトライステート・バッファ227からr_busに
読み出され、OPW214に転送される。
ては、LOAD命令と同様に図10に示すものと同一で
ある。
処理するためのシフタを用いることで、LOAD命令お
よびSTORE命令で必要なデータ・アライン機能を容
易に実現できる。
タ・アライン機能を実現するために必要なシフタの機能
は、ほとんど同一のハードウェアで共用化できる。この
ため、本発明を用いることで、データ・アライン機能に
専用のハードウェアを必要としないマイクロプロセッサ
を実現できる。
だけに専用に必要な機能としては、1)シフタに通知す
るシフト・ビット数を計算する機能、2)前記シフト・
ビット数を用いたシフタ演算機能だけであり、データ・
アライン機能実現のためのオーバヘッドは小さいことが
容易に理解できる。
のデータ・パスを使用するため、データ・アライン処理
のための動作速度の低下を回避できる。
概要構成を示す図である。
である。
示す図である。
を示す図である。
示す図である。
を示す図である。
グを示す図である。
示す図である。
を示す図である。
論理を示す図である。
Claims (3)
- 【請求項1】データ・バス幅のビット長より小さなビッ
ト長を持つデータを外部メモリと転送するマイクロプロ
セッサのデータ・アライン装置において、命令実行の際
にデータ転送を行う内部データ・バス、前記内部データ
・バスに接続されたシフト演算装置、シフトすべきビッ
ト数を保持するレジスタ、およびアクセスすべき外部メ
モリへのアドレスの一部分およびデータのビット長によ
りアラインすべきビット数を生成する手段を有し、実行
する命令に応じて前記ビット数生成手段により生成され
たビット数と前記レジスタに保持されたビット数とのい
ずれかを選択して出力するマルチプレクサを有し、前記
マルチプレクサから出力されたビット数に従い、前記デ
ータ・バスを介して転送されるデータを前記シフト演算
装置によりシフトすることを特徴とするデータ・アライ
ン装置。 - 【請求項2】マイクロプログラムを格納する手段、およ
びマイクロプログラム制御手段を有し、前記格納手段に
格納されたマイクロプログラムを前記制御手段により命
令実行処理を行うとともに前記シフト動作を制御するこ
とを特徴とする請求項1記載のデータ・アライン装置。 - 【請求項3】少なくとも3組の内部データ・バスを有
し、同時に独立した3組のデータ転送を行うことを特徴
とする請求項2記載のデータ・アライン装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP3184254A JP3003292B2 (ja) | 1991-07-24 | 1991-07-24 | データ・アライン装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP3184254A JP3003292B2 (ja) | 1991-07-24 | 1991-07-24 | データ・アライン装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0528032A JPH0528032A (ja) | 1993-02-05 |
| JP3003292B2 true JP3003292B2 (ja) | 2000-01-24 |
Family
ID=16150096
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP3184254A Expired - Lifetime JP3003292B2 (ja) | 1991-07-24 | 1991-07-24 | データ・アライン装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3003292B2 (ja) |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS62174842A (ja) * | 1986-01-29 | 1987-07-31 | Hitachi Ltd | デ−タ処理装置 |
| JPS6462742A (en) * | 1987-09-03 | 1989-03-09 | Agency Ind Science Techn | Storage device |
-
1991
- 1991-07-24 JP JP3184254A patent/JP3003292B2/ja not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0528032A (ja) | 1993-02-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4342078A (en) | Instruction register sequence decoder for microprogrammed data processor and method | |
| US4450519A (en) | Psuedo-microprogramming in microprocessor in single-chip microprocessor with alternate IR loading from internal or external program memories | |
| US4338661A (en) | Conditional branch unit for microprogrammed data processor | |
| JP2616182B2 (ja) | データ処理装置 | |
| EP0199173B1 (en) | Data processing system | |
| US5347636A (en) | Data processor which efficiently accesses main memory and input/output devices | |
| EP0782071A2 (en) | Data processor | |
| US4312034A (en) | ALU and Condition code control unit for data processor | |
| US4954943A (en) | Data processing system | |
| EP0011412B1 (en) | Bipartite control store for microprogrammed data processor | |
| JP2718292B2 (ja) | マイクロプロセッサ | |
| US5581774A (en) | Data processor decoding and executing a train of instructions of variable length at increased speed | |
| JPS5811654B2 (ja) | デ−タシヨリシステム | |
| KR950010825B1 (ko) | 분기 타겟 명령 버퍼를 내장한 마이크로컴퓨터 | |
| EP0338564B1 (en) | Microprogram branching method and microsequencer employing the method | |
| US5742842A (en) | Data processing apparatus for executing a vector operation under control of a master processor | |
| JP2556182B2 (ja) | デ−タ処理装置 | |
| JP3003292B2 (ja) | データ・アライン装置 | |
| JPH02293931A (ja) | 制御装置 | |
| JPH02235289A (ja) | 自己刻時レジスターファイル | |
| US5187782A (en) | Data processing system | |
| EP0573071A2 (en) | A microprocessor | |
| US5784634A (en) | Pipelined CPU with instruction fetch, execution and write back stages | |
| EP0633521A1 (en) | Microprocessor including circuit for generating signal used for tracing executed instruction stream | |
| JPH04199331A (ja) | マイクロコンピュータ |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 19991019 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071119 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081119 Year of fee payment: 9 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081119 Year of fee payment: 9 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091119 Year of fee payment: 10 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091119 Year of fee payment: 10 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101119 Year of fee payment: 11 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101119 Year of fee payment: 11 |
|
| S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101119 Year of fee payment: 11 |
|
| 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: 20111119 Year of fee payment: 12 |
|
| EXPY | Cancellation because of completion of term | ||
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111119 Year of fee payment: 12 |