JPS63116238A - デ−タプロセツサ装置 - Google Patents

デ−タプロセツサ装置

Info

Publication number
JPS63116238A
JPS63116238A JP26345586A JP26345586A JPS63116238A JP S63116238 A JPS63116238 A JP S63116238A JP 26345586 A JP26345586 A JP 26345586A JP 26345586 A JP26345586 A JP 26345586A JP S63116238 A JPS63116238 A JP S63116238A
Authority
JP
Japan
Prior art keywords
loop
address
instruction
reset
address 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.)
Pending
Application number
JP26345586A
Other languages
English (en)
Inventor
Takeshi Arizono
有園 武志
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 JP26345586A priority Critical patent/JPS63116238A/ja
Publication of JPS63116238A publication Critical patent/JPS63116238A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 この発明は、専用あるいは汎用データプロセッサの実質
的な実行ステップの多くの部分を占めるループ処理(繰
り返し処理)の高速化に関するもので、より具体的には
C,Pa5cal言語等におけるーhtie文、For
tran言語におけるDo文等で示されるアルゴリズム
の高速処理に関する。
〔従来の技術〕
汎用マイクロプロセッサ、デジタル信号処理プロセッサ
(Digital Signal Processor
;  D S P)等に代表されるデータプロセッサの
プログラムにおける重要な制御構造の1つとしてループ
処理がある。ループは同様な処理を多数のデータに対し
て行う場合に有効な概念で、テキストブロックや配列デ
ータ等の処理に多用される。
例えば、第3図に示される、B、W、カーニハン、  
D、 M、  リソチー著石田晴久訳「プログラム言語
C,l、(共立出版)昭和56年初版p、10に記載さ
れた摂氏−華氏温度対応表印字プログラムは、温度表の
下限から上限までの一定の刻みをもった複数の華氏温度
データに対し、摂氏変換−印字処理を操り返し実行する
ためにwh i le文で表されるループ処理を用いて
いる。
この第3図のプログラムの意味は変数fahrにl。
werの値を代入した後、変数fahrO値がuPpe
rの値に等しくなるまでcelsius =5/9(f
ahr−32)の値を計算し、fahr及びCe1si
usの値をそれぞれ4桁及び6桁(後者については1桁
は少数点以下)フィールドをとって表示し改行し、fa
hrの値を5tepの値に等しいきざみで進める、とい
う処理を繰り返すというものである。
通常のプログラムでは1f−else構造と並び、wh
Heまたはfor文で表されるループ構造は一般的に用
いられているが、その性質上、ループ処理の実質的な処
理シーケンスは高水準言語においてそのステップ数が占
める割合以上に大きな割合を占めている。このため、デ
ータプロセッサの全体的な高速化のためには、ループ処
理部分の高速化が必要不可欠である。
従来のデータプロセッサでは、このループ処理を行うた
めに、ブランチ命令またはループ命令または条件テスト
、デクリメント アンド ブランチ命令を用いていた。
例えばインテル社の16ビフトマイクロブロセソサ18
086では前記の摂氏−華氏温度対応表プログラムの−
hile文の部分に対応するループ処理は第4図に示す
ようなブランチ命令を用いて行っていた。
この第4図の意味は、変数lowerO値をfahrに
移し、fahrとupperとの値を比較し、両者が等
しければラベルendの付いた命令intヘジャンプし
、そうでなければプログラム本体を実行し、fahrの
値にs tepの値を加えたものをf a t+ rに
格納し、ラベルbeginの付いた命令cmpへ戻ると
いうものである。なお命令intの実行により制御はオ
ペレーティングシステムに戻される。
18086に限らず従来のデータプロセッサはブランチ
の際にそのオペランドであるアドレスオフセットのイ直
とカレントプログラムカウンタ(PC)値とを加算して
次の命令アドレスを計算する処理をブランチの都度行う
必要がある。この事実は18086に関しては、インテ
ルジャパン社1APX86マクロアセンブリ営語プログ
ラミングマニュアル 1981年2月20日発行のブラ
ンチ命令の記述(p、177〜p、196 )に記載さ
れている。また第4図には示さなかったが、18086
でループをサポートする他の命令であるループ命令は第
5図にC言語で示されるように、ループを一回通るごと
にCXレジスタの内容を“1”ずつ減じ、CXレジスタ
の値が0”になるまで命令ポインタIPにループのディ
スプレイスメントdispを加える、というアルゴリズ
ムを実行するが、この命令によるブランチ時も同様に次
の命令アドレスを求める必要がある。
この事実も上記マニュアル(p、201〜p、203)
に記載されている。
〔発明が解決しようとする問題点〕
従来のデータプロセッサ装置のループ処理は以上のよう
に行われていたため、1ループ毎にブランチアドレスを
計算することが必要で、またデータプロセッサからみて
ブランチ時まで次の命令アドレスが不明であるため、第
6図に示すようにブランチ命令アドレスをオーバーして
不必要なプリフェッチを行いそのため無駄なバスサイク
ルを発生してしまい、ループ処理のスピードが低下する
などの問題点があった。
なおこれらの問題点はループを形成するコードブロック
の最後のステップで特に問題となる。なぜならこのステ
ップではループ続行のためループ開始アドレスへブラン
チする必要があるためである。
この発明は、上記のような問題点を解消するためになさ
れたもので、ループ時に最初の一回を除きループ開始ア
ドレスにブランチするためのアドレス計算を不要とする
ことができるとともに、ループ終了アドレスを越えてプ
リフェッチを行おうとした場合に強制的にプリフェッチ
アドレスをループ開始部にリセットでき、ループ処理を
高速に実行できるデータプロセッサ装置を得ることを目
的とする。
〔問題点を解決するための手段〕
この発明に係るデータプロセッサ装置は、データプロセ
ッサの内部にループ開始アドレスおよびループ終了アド
レスを各々記憶する2つのレジスタを設けるとともに、
プリフェッチカウンタおよびプログラマブルカウンタに
そのカウント値またはそのカウント値がロードするアド
レスのブロックがループ終了アドレスを含む場合、上記
カウンタをループ開始アドレスにリセットできる手段を
設け、また上記2つのレジスタに特定の演算結果をセッ
トするためのマシンコードであるホヮイル(wh i 
le)命令とプログラムカウンタをループ終了アドレス
にリセットするためのマシンコードであるブレイク(b
reak)命令とプログラムカウンタをループ開始アド
レスにリセットするためのマシンコードであるコンティ
ニュー(continue)命令とを直接実行できる実
行ユニットを設けたものである。
〔作用〕
この発明においては、実行ユニットはループの先頭で宣
言された一hile命令によりループ開始アドレスレジ
スタをこの−hue命令直後の命令アドレスに、またル
ープ終了アドレスレジスタをwhile命令のオペラン
ドであるアドレスオフセラ1−値と現在のプログラムカ
ウンタの和にリセットする。
アドレスリセット手段はプリフェッチがループ終了アド
レスレジスタ値を越えて進もうとしたとき、プリフェッ
チカウンタをループ開始アドレス値でリセットし、また
プログラムカウンタがループ終了アドレスレジスタ値に
等しくなったときもこのプログラムカウンタをループ開
始アドレスレジスタ値にリセットする。
また、ループ中でbreak命令が実行されれば、プロ
グラムカウンタをループ終了アドレスにリセットしてル
ープを抜は出し、また同じ< continue命令が
実行されれば、プログラムカウンタをループ開始アドレ
スにリセットしループを継続するから、ループ時に最初
の一回を除きループ開始アドレスにブランチするための
アドレス計算を不要とすることができるとともに、ルー
プ終了アドレスを越えてプリフェッチを行おうとした場
合にプリフェッチアドレスは強制的にループ開始部にリ
セットされ、不要なバスサイクルの発生が回避される。
〔実施例〕
以下、この発明の一実施例を図について説明する。第1
図は本発明の一実施例によるデータプロセッサ装置を示
し、図において、1は16ビツト外部バス、2はこの1
6ビツト外部バスへのアクセスを制御するバスインター
フェイスユニット、3はこのバスインターフェイスユニ
ット2がフェッチした命令コードをデコードする命令デ
コードユニット、4はこの命令デコードユニット3がデ
コードした命令に従い実際の処理を行う実行ユニット、
5はレジスタブロック、6はプログラムカウンタ、7は
ループ開始アドレスレジスタ、8はループ終了アドレス
レジスタ、9は上記ループ終了レジスタ8出力と上記プ
ログラムカウンタ6出力とを入力とするANDアレイで
ある。
また16はこのANDアレイ9の出力により制御され、
上記ループ開始アドレスレジスタ7の内容で上記プログ
ラムカウンタ6をリセットするリセットロジック、1)
は上記バスインターフェイスユニット2に含まれプリフ
ェッチアドレスを保持しているプリフェッチカラン′夕
、12はル−フ。
終了アドレスレジスタ8の最下位ビット(LSB)部で
あるループ終了アドレスレジスタのLSB。
13は上記ループ終了アドレスレジスタ8と上記プリフ
ェッチカウンタ1)の各々LSBを除くビットを入力と
するANDアレイ、14はこのANDアレイ13により
制御され前記プリフェッチカウンタ1)を上記ループ開
始アドレスレジスタ7の内容にリセットするリセットロ
ジック、15は上記ANDアレイ9,13、リセットロ
ジック10.14から成るアドレスリセット手段である
また第8図(a)、 (b)、 (C)は本実施例装置
で新設されたwhile、continue、brea
kの各命令の機能を示す。
while命令はその次の命令よりオペランドで指定さ
れたループ終了アドレスの直前の命令までを繰り返し実
行させる。またcontinue命令はループ開始アド
レスにジャンプさせる命令であり、MOVPC(プログ
ラムカウンタ)、LBAR(ループ開始アドレスレジス
タ)と等価である。またbreak命令はループ終了ア
ドレスにジャンプし、ループから抜は出る命令であり、
MOV  PC,r、EAR(ループ終了アドレスレジ
スタ)と等価である。
また第9図(al、 (bl、 (C)は上記whil
e、continue、breakの各命令の動作を示
す。while命令自体はループ開始アドレスとループ
終了アドレスをセットする(ステップSll、512)
だけの転送命令であり、データプロセッサのハードウニ
)がこのセットされたアドレスに従って実行を制御する
ループ終了アドレスは“while  disp”とし
てPC相対アドレスで与えられるのでステップS12に
て絶対アドレスを計算している。またcontinue
命令、break命令の動作は通常のマイクロ命令によ
るレジスタ間接ジャンプと同じであり、ステップS13
.S14の実行によりループ開始アドレス及びループ終
了アドレスへそれぞれジャンプする。
また第10図はwhile命令実行の時の本データプロ
セッサ装置の動作を示すフローチャートである。
次に動作について第1図及び第10図を用いて説明する
16ビツト外部バス1からバスインターフェイスユニッ
ト2によりフェッチされた命令は命令デコードユニット
3でデコードされ実行ユニット4で実行されるが、この
ときの命令がwhile命令であったとき、このときの
プログラムカウンタ6の内容が実行ユニット4によりル
ープ開始アドレスレジスタ7にストアされ、またこの−
hile命令のオペランドであるアドレスオフセソ1−
に現在のプログラムカウンタ6の内容を加えた値、即ち
相対アドレスをループ終了アドレスとしてループ終了ア
ドレスレジスタ8にストアする。
その後命令実行ステップが進行し、命令実行に先立つプ
リフェッチがループ終了アドレスを含むワードに達する
、つまりループ終了アドレスレジスタ8とプリフェッチ
カウンタ1)の各々LSBを除く全ビットが−敗しAN
Dアレイ13の出力がアクティブになると(ステップS
L)リセットロジック14により現在のプリフェッチ終
了後、プリフェッチカウンタ1)がループ開始アドレス
レジスタ7の内容にリセットされる(ステップS2)。
またこのプリフェッチの際、ループ終了アドレスレジス
タLSBの値により (ステップS3)バイトフェッチ
、ワードフェッチが決定され、LS B、= Oであれ
ばバスインターフェースユニット2がプリフェッチキュ
ーより1バイトを1舎てる(ステップS4)。
このループ終了アドレスのプリフェッチ後、命令実行ス
テップがループ終了アドレスに達する、つまりプログラ
ムカウンタ6の内容とループ終了アドレスレジスタ8の
内容とが一致しA N Dアレイ9の出力がアクティブ
になると(ステップS5)、リセットロジック10によ
り現在の命令終了後プログラムカウンタ6はループ開始
アドレスレジスタ7の内容にリセットされる(ステップ
S6)。
またcontinue命令の実行によっても同様にプロ
グラムカウンタ6はループ開始アドレスレジスタ7の内
容にリセットされる。またbreak命令の実行によっ
てプログラムカウンタ6はループ終了アドレスレジスタ
8の内容にリセットされ、これにより命令実行及びプリ
フェッチはループに沿ってハードウェア的に行われルー
プ処理の高速化が達成される。
以上の動作の中でプログラムカウンタは常に現在実行中
の命令アドレスの直後の命令アドレスを指していること
に注意されたい。またこの実施例では第3図に示される
アルゴリズムの表記は第2図に示されるようになる。
なお、上記実施例では複数バイトプリフェッチを行うも
のを示したが1バイトのみのプリフェッチであってもよ
く、上記実施例と同様の効果を奏する。
また上記実施例では−hile命令のオペランドとして
相対アドレス形式で指定されるものを示したが、絶対ア
ドレスであってもよく、上記実施例と同様の効果を奏す
る。
〔発明の効果〕
以上のように、この発明に係るデータプロセッサ装置に
よれば、プログラムカウンタおよびプリフェッチカウン
タをハードウェアによりループ開始アドレスに強制的に
リセットできるように構成したので、無駄なプリフェッ
チが生じず、また最初の1回を除きループ開始アドレス
へのブランチの際のアドレス計算が不要となり、高速な
ループ処理が可能となる効果がある。またこの−hil
e命令あるいはbreak+continue命令によ
りC,Pa5ca1等の高級言語をより直接的かつ高速
にサポートすることが可能となる効果もある。
【図面の簡単な説明】
第1図はこの発明の一実施例によるデータプロセッサ装
置を示す構成図、第2図は第1図の装置により実行され
るアセンブラ言語による摂氏−華氏温度対応表印字プロ
グラムを示す図、第3図はC言語により記述された摂氏
−華氏温度対応表の印字プログラムを示す図、第4図は
従来装置のアセンブラ言語による摂氏−華氏温度対応表
印字プログラムを示す図、第5図はC言語で記述された
1oop命令のアルゴリズムを示す図、第6図は従来装
置の問題点を説明するための図、第7図は本発明の詳細
な説明するための図、第8図(al、 (bl、 (C
)は本発明で新設された各命令の機能を説明するための
図、第9図(al、 (bl、 fclは第8図(a)
、 (bl、 (C1の各命令の動作説明のための図、
第10図はwhile命令実行時の本発明の動作を示す
フローチャート図である。 図において、4は実行ユニット、6はプログラムカウン
タ、7はループ開始アドレスレジスタ、8はループ終了
アドレスレジスタ、1)はプリフェッチカウンタ、15
はアドレスリセット手段である。

Claims (5)

    【特許請求の範囲】
  1. (1)先読みすべき命令のアドレス情報を示すプリフェ
    ッチカウンタおよび現在実行中の命令アドレス情報を示
    すプログラムカウンタを備えたデータプロセッサ装置に
    おいて、 ループ部の開始アドレスがストアされるループ開始アド
    レスレジスタと、 ループ部の終了直後のアドレスがストアされるループ終
    了アドレスレジスタと、 命令中で指定されたループ開始アドレスおよびループ終
    了直後のアドレスを上記ループ開始アドレジスタおよび
    上記ループ終了アドレスレジスタにストアするためのマ
    シンコードであるホワイル命令と上記ループ開始アドレ
    スレジスタの内容に上記プログラムカウンタをリセット
    するためのマシンコードであるコンティニュー命令と上
    記ループ終了アドレスレジスタの内容に上記プログラム
    カウンタをリセットするためのマシンコードであるブレ
    イク命令とをそれぞれ実行できる実行ユニットと、 上記プログラムカウンタまたは上記プリフェッチカウン
    タの内容が上記ループ終了アドレスレジスタの内容に一
    致したとき上記プログラムカウンタまたは上記プリフェ
    ッチカウンタを上記ループ開始アドレスレジスタの内容
    にリセットするアドレスリセット手段とを備えたことを
    特徴とするデータプロセッサ装置。
  2. (2)上記実行ユニットは、プログラムのループ部直前
    におかれる上記ホワイル命令の実行時に、現在の上記プ
    ログラムカウンタの値を上記ループ開始アドレスレジス
    タにストアし、またこの上記ホワイル命令のオペランド
    により絶対アドレスまたは相対アドレス形式で指定され
    た上記ホワイル命令アドレスより大きなアドレス値を上
    記ループ終了アドレスレジスタにストアすることを特徴
    とする特許請求の範囲第1項記載のデータプロセッサ装
    置。
  3. (3)上記実行ユニットは上記ブレイク命令実行時に限
    り上記アドレスリセット手段のリセット動作を停止させ
    ることを特徴とする特許請求の範囲第1項記載のデータ
    プロセッサ装置。
  4. (4)上記アドレスリセット手段がワイヤードロジック
    により構成されていることを特徴とする特許請求の範囲
    第1項記載のデータプロセッサ装置。
  5. (5)本データプロセッサ装置が複数バイトのプリフェ
    ッチを行う場合に、上記プリフェッチカウンタによりフ
    ェッチされるワードが上記ループ終了アドレスレジスタ
    に示されるアドレスを含んでいるとき、 上記アドレスリセット手段は上記プリフェッチカウンタ
    を上記ループアドレス開始アドレスレジスタの内容にリ
    セットすることを特徴とする特許請求の範囲第1項記載
    のデータプロセッサ装置。
JP26345586A 1986-11-04 1986-11-04 デ−タプロセツサ装置 Pending JPS63116238A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP26345586A JPS63116238A (ja) 1986-11-04 1986-11-04 デ−タプロセツサ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP26345586A JPS63116238A (ja) 1986-11-04 1986-11-04 デ−タプロセツサ装置

Publications (1)

Publication Number Publication Date
JPS63116238A true JPS63116238A (ja) 1988-05-20

Family

ID=17389750

Family Applications (1)

Application Number Title Priority Date Filing Date
JP26345586A Pending JPS63116238A (ja) 1986-11-04 1986-11-04 デ−タプロセツサ装置

Country Status (1)

Country Link
JP (1) JPS63116238A (ja)

Similar Documents

Publication Publication Date Title
EP1241567B1 (en) Method and apparatus for executing coprocessor instructions
JP3619939B2 (ja) 中央処理装置
JPS62197830A (ja) デ−タ処理システム
US4945511A (en) Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions
US4910664A (en) Data processor with apparatus for reducing loop processing time
JPH0766324B2 (ja) データ処理装置
US4763246A (en) Microprogram control
EP0317473A2 (en) Microcode branch based upon operand length and alignment
US4173782A (en) Return and link mechanism
CN107851022B (zh) 向量长度查询指令
JP2609618B2 (ja) データ処理装置
JPS63116238A (ja) デ−タプロセツサ装置
US4812989A (en) Method for executing machine language instructions
JPH0218729B2 (ja)
JPS58200349A (ja) マイクロプログラム制御装置
US5062036A (en) Instruction prefetcher
JPS63293638A (ja) データ処理装置
JP2825315B2 (ja) 情報処理装置
KR19980052331A (ko) 프로세서의 캐시 메모리 제어 방법
JP2545594B2 (ja) オペランドデータ先取り方式
KR100222034B1 (ko) 디지탈 신호 처리 시스템에서 명령 처리방법 및 장치
JPS63234322A (ja) プロセツサ
JPH0481218B2 (ja)
JPS62115541A (ja) マイクロ命令分岐アドレス生成方式
JPH03164945A (ja) データ処理装置