JP3442175B2 - 中央演算処理装置 - Google Patents

中央演算処理装置

Info

Publication number
JP3442175B2
JP3442175B2 JP01627395A JP1627395A JP3442175B2 JP 3442175 B2 JP3442175 B2 JP 3442175B2 JP 01627395 A JP01627395 A JP 01627395A JP 1627395 A JP1627395 A JP 1627395A JP 3442175 B2 JP3442175 B2 JP 3442175B2
Authority
JP
Japan
Prior art keywords
circuit
information
operand
instruction
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP01627395A
Other languages
English (en)
Other versions
JPH08212067A (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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP01627395A priority Critical patent/JP3442175B2/ja
Priority to US08/591,293 priority patent/US5768554A/en
Publication of JPH08212067A publication Critical patent/JPH08212067A/ja
Priority to US08/972,302 priority patent/US5864691A/en
Application granted granted Critical
Publication of JP3442175B2 publication Critical patent/JP3442175B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、マイクロプロセッサを
含むシステムやシーケンサを含むシステム(DSP等)
に用いられる中央演算処理装置(CPU)に関する。
【0002】
【従来の技術】中央演算処理装置(以下CPU)は、プ
ログラムに従って処理を行う。プログラムは命令の集合
体であり、命令を順序的に実行することで処理が達成さ
れることになる。
【0003】通常、命令は、命令の種類(オペレーショ
ン)とオペランドの組合せで構成される。命令の種類と
は、CPUがどのような動作をするかであり、オペラン
ドとは、取り扱うデータのことである。通常、取り扱う
データは、それが置かれている場所で示されることが多
い。オペランドの場所を示すために、何通りかの表現方
法を持つ。また、オペランドは命令の種類によっては、
必要な数が異なる。例えば、論理和演算A|B→Cのよ
うな演算命令を考えると、そのオペランドは、A,B,
Cの3つが必要になる。その3つのオペランドを、それ
ぞれ制約なくアドレッシング指定できることが、最も理
想的である。
【0004】しかし実際には数々の制約が存在する。例
えば、命令コード長の問題である。3つのオペランドを
個々に指定しようとすると、その分命令コード長も長く
なる。命令コード長が長くなると、プログラムも大きく
なり、プログラムを格納するメモリも大きくなってしま
う。さらに命令コードが長いと、命令を読み込んだりデ
コードするのに時間がかかるため、処理の効率が下がる
場合も考えられる。内部処理を考えると3つのオペラン
ドがそれぞれのアドレッシングを持つと、アドレッシン
グの3乗通りの組み合わせが存在することになる。命令
の処理との組み合わせを考えると、命令の種類もアドレ
ッシングの種類も少なく抑えなければ、膨大な組み合わ
せの数となり、CPU内部で処理するプログラム(内部
処理プログラム=マイクロプログラム)が大きくなりす
ぎてCPUに内蔵できないこともありうる。
【0005】3つのオペランドを持つと、前述のように
組み合わせが膨大になるため、例えば、論理和演算A|
B→Bのように結果を格納するオペランド(以下デステ
ィネーションオペランド)を、元データのあるオペラン
ド(以下ソースオペランド)のひとつと共通にするとい
う方法がある。この方法であれば、オペランドの指定は
2つで済み、3つの場合より組み合わせは少なくなる。
この2オペランド方法は、3オペランド方法より少し制
限があるが、市販の多くのCPUに採用されている一般
的な方法である。
【0006】2オペランド方法を採るCPUの命令実行
には3つの状態がある。ソースオペランドのアドレス算
出の状態、デスティネーションオペランドのアドレス算
出の状態、命令処理の状態である。前述の論理和演算A
|B→Bで示すならば、Aのアドレスを算出するのがソ
ースオペランドアドレス算出であり、Bのアドレスを算
出するのがデスティネーションオペランドアドレス算出
であり、A|Bの演算を行い、結果をBに格納するのが
命令処理の状態である。しかし、命令によってはオペラ
ンド指示を必要としない命令や、ソース/デスティネー
ションのひとつだけしか必要としない命令がある。
【0007】
【発明が解決しようとする課題】このように、中央演算
処理装置は、多種多様な命令に対応し、それらがスムー
スに処理でき、かつ、できるだけ小さいサイズのマイク
ロプログラムを実現できることが望まれる。
【0008】本発明は、アドレッシングに制約がなく、
命令実行がスムースに行われ、マイクロプログラムを小
さいサイズに抑えることのできる中央演算処理装置を提
供することを目的とする。
【0009】
【課題を解決するための手段】本発明の中央演算処理装
置として、第1の構成は、命令コードの内容からソース
オペランドアドレッシングの情報のみをメインデコーダ
への入力情報として保持する第1回路と、命令コードの
内容からデスティネーションオペランドアドレッシング
の情報のみをメインデコーダへの入力情報として保持す
る第2回路と、命令コードの内容からオペランドアドレ
ッシングの情報を除く命令処理の情報をメインデコーダ
への入力情報として保持する第3回路と、命令コードの
内容を解析して前記第1回路と第2回路と第3回路の状
態を制御するプリデコーダと、前記第1乃至第3回路に
保持された情報のうちどの情報をメインデコーダに入力
するかを選択する第1セレクタと、第1セレクタによる
選択を1つの命令につき基本的には第1回路、第2回
路、第3回路の順序とし、現在の選択状態から次の選択
状態に移行するタイミングをメインデコーダからの信号
に基づいて設定し、第1回路又は第2回路の状態が“処
理不要”を示すとき、当該“処理不要”の回路の選択を
せずに次の回路選択状態をとるように第1セレクタを制
御する処理選択回路と、前記第1乃至第3回路からの情
報を得て中央演算処理装置内部の各回路を制御するメイ
ンデコーダとを備えたことを特徴とする。
【0010】第2の構成として、前記第1セレクタによ
り選択された情報を保持する手段を備えてもよい。
【0011】第3の構成として、前記第1セレクタによ
り選択された情報と、割込み要求の情報のうちいずれか
を選択して前記メインデコーダに出力する第2セレクタ
を備えてもよい。
【0012】第4の構成として、前記メインデコーダに
前記処理選択回路の状態を入力するようにしてもよい。
【0013】第5の構成として、データ転送用の内部バ
スと、この内部バスとの間でデータの入出力を行うレジ
スタと、中央演算処理装置の外部へ書き込むデータを前
記内部バスから入力して一時保持する第1保持回路と、
中央演算処理装置の外部から読み込んだデータを一時保
持して前記内部バスへ送出する第2保持回路と、プログ
ラム中にある演算データとしての”即値”のデータを一
時保持して前記内部バスへ送出する第3保持回路と、前
記メインデコーダからの信号と第1回路および第2回路
の状態とに基づき、前記レジスタ、第1保持回路、第2
保持回路、及び第3保持回路を制御するオペランド自動
選択回路とを備えてもよい。
【0014】第6の構成として、前記第1回路の状態を
前記処理選択回路へ伝える内容として、ソースオペラン
ドが”レジスタ”である場合とソースオペランドが存在
しない場合とを等価とし、前記第2回路の状態を前記処
理選択回路へ伝える内容として、デスティネーションオ
ペランドが”レジスタ”である場合とデスティネーショ
ンオペランドが存在しない場合とを等価するようにして
もよい。
【0015】第7の構成として、前記第1回路の状態を
前記オペランド自動選択回路へ伝える内容として、ソー
スオペランドが”レジスタ”である場合とソースオペラ
ンドが存在しない場合とを等価とし、前記第2回路の状
態を前記オペランド自動選択回路へ伝える内容として、
デスティネーションオペランドが”レジスタ”である場
合とデスティネーションオペランドが存在しない場合と
を等価とするようにしてもよい。
【0016】
【作用】上記第1の構成によれば、ソースオペランドア
ドレッシングの情報を第1回路に、デスティネーション
オペランドアドレッシングの情報を第2回路に、命令処
理の情報を第3回路に、それぞれ設定できるため、ソー
スオペランドアドレッシングとデスティネーションオペ
ランドアドレッシングと命令処理の組み合わせが自由に
行える。
【0017】また、第1セレクタが第1回路、第2回
路、及び第3回路の情報のうちの一つを選択して、メイ
ンデコーダへ伝えるので、第1回路、第2回路、及び第
3回路のそれぞれがメインデコーダへの伝達経路を別々
に持つ必要がない。
【0018】また、第1セレクタを制御する処理選択回
路は、一つの命令につき基本的に必ず第1回路、第2回
路、及び第3回路の順序で選択するため、当該処理選択
回路を簡単に実現できる。
【0019】また、処理選択回路は、第1回路と第2回
路の状態を監視し、当該回路が”処理不要”のとき、当
該“処理不要”の回路の選択を飛ばして次の選択に移る
ようにしているので、不要な処理を選択している時間を
解消できる。
【0020】上記第2の構成によれば、更に、第1セレ
クタで選択した情報を保持することができるので、メイ
ンデコーダが未だ命令処理の段階であっても、第1回
路、第2回路、及び第3回路を次の命令に状態遷移させ
ることができる。
【0021】上記第3の構成によれば、更に、割り込み
処理に対応可能となる。
【0022】上記第4の構成によれば、更に、処理選択
回路の選択状態をメインデコーダの入力情報とするの
で、処理選択回路の選択状態を含むマイクロプログラム
が可能となる。
【0023】上記第5の構成によれば、更に、命令処理
のマイクロプログラムにおいて、ソースオペランドが”
即値”であるか、“レジスタ内のデータ”であるか、”
メモリ上のデータ”であるかを区別しないでプログラム
できることになり、マイクロプログラムのサイズを小さ
くし、マイクロプログラムの開発時間も短くすることが
できる。また、命令処理のマイクロプログラムにおい
て、デスティネーションオペランドが“レジスタ内のデ
ータ”であるか、“メモリ上のデータ”であるかを区別
しないでプログラムできることになり、上記と同様、マ
イクロプログラムの小サイズ化とその開発時間の短縮化
が図れる。
【0024】上記第6の構成によれば、第1回路から処
理選択回路へ伝える内容として、第1回路が“ソースオ
ペランドが存在せず”と”レジスタ”を共通とするの
で、伝達する情報量が減少し、配線など回路の縮小化が
図れる。同様に、第2回路から処理選択回路へ伝える内
容として、第2回路が”デスティネーションオペランド
が存在せず”と”レジスタ”を共通とすることで、伝達
する情報量が減少し、配線など回路の縮小化が図れる。
【0025】上記第7の構成によれば、上記第6の構成
と同様、伝達する情報量を減少させて回路の縮小化を図
ることができる。
【0026】
【実施例】
(実施例1)以下、本発明をその実施例を示す図に基づ
いて説明する。
【0027】図1は、本発明の中央演算処理装置(以
下、CPU1という)を示すブロック図である。このC
PU1は、シーケンシャルコントロールユニット(以
下、SCUと略記する)2と、実行部(以下、EXUと
略記する)3と、バスコントロールユニット(以下、B
CUと略記する)4と、割込インターフェイス(以下、
ICUと略記する)5とから成り,これらは、各種バス
や経路(11、105〜108)にて接続される。ま
た、前記のBCU4は、コントロールバス101、デー
タバス102、及びアドレスバス103にて外部に接続
される。
【0028】図2は、前記SCU2を示すブロック図で
ある。プログラムバス11には、CPU1が実行すべき
命令が出力される。この命令は、プリデコーダ12、ソ
ースアドレッシングコントロール回路(以下、SACと
略記する)13、デスティネーションアドレッシングコ
ントロール回路(以下、DACと略記する)14、及び
オペレーションコントロール回路(以下OPC)15に
入力される。
【0029】上記のプリデコーダ12は、入力された命
令コードに基づき、ソースアドレッシングの種類および
必要な情報と、デスティネーションアドレッシングの種
類および必要な情報と、命令の種類および必要な情報と
を解析する。これらの情報が1回で全て解析できないな
ら、続くコードを入力する制御を行う。そして、プリデ
コーダ12は、上記の情報が前記のSAC13、DAC
14、及びOPC15に入力されるまで動作する。
【0030】具体的には、プリデコーダ12は、プログ
ラムバス11から1コード分の命令を取り込み、入力し
たコードの内容によって、SAC13、DAC14、及
びOPC15のセット内容を変更する。そして、例え
ば、1オペランド命令(ソースあるいはデスティネーシ
ョンのオペランドしか使用しない命令)であれば、SA
C13若しくはDAC14に対して“処理不要”の内容
をセットする。また、プログラムバス11からの情報が
1コードで十分ではないとき、必要に応じて次のコード
を、SAC13、DAC14、又はOPC15に入力す
る。その指示はプリデコーダ12がコードの内容によっ
て出力する。場合によっては(長い命令コードの場合
等)、プリデコーダ12自身が、さらに1コード以上読
み込む場合もあり得る。
【0031】このように、プリデコーダ12は、SAC
13、DAC14、及びOPC15に、それぞれソース
アドレス生成に必要な情報、デスティネーションアドレ
ス生成に必要な情報、命令の種類と必要な情報をセット
する。そして、これが終わると処理選択回路21が動作
する。
【0032】前記のSAC13、DAC14、及びOP
C15は、それぞれ前記プリデコーダ12の指示及びプ
ログラムバス11から供給される内容に基づき、メイン
デコーダ20への入力形式に加工し、それを保持するよ
うになっている。また、SAC13、DAC14、OP
C15は、第1セレクタ16へそれぞれ保持した内容を
伝達できるようになっている。
【0033】第1セレクタ16は、上記の伝達される3
つの情報のうち1つを選択して出力する。選択を指示す
るのは、処理選択回路21である。第1セレクタ16の
出力内容は、ラッチ17で保持されるようになってい
る。ラッチ17の出力内容は、第2セレクタ18に供給
される。
【0034】第2セレクタ18では、ラッチ17の出力
内容に、処理選択回路21の出力内容が加えられてメイ
ンデコーダ20への最終的な入力形式が得られる。具体
的には、割込み要求の有無を検査して、割込み要求がな
い場合は、ラッチ17の出力内容変化させずに出力す
る。一方、割込み要求がある場合は、ラッチ17の出力
内容に強制的に割込み要求の内容を反映させて出力す
る。第2セレクタ18で決定された最終的な内容は、バ
ッファ19を経てメインデコーダ20へと供給される。
【0035】メインデコーダ20は、入力された内容を
解析し、CPU1内の各部を制御する信号を出力するよ
うになっている。この信号の一部は、プリデコーダ12
に入力され、プリデコーダ12が次のコードをプログラ
ムバス11から入力するタイミングを知ることができる
ようになっている。また、前記信号の一部は、処理選択
回路21に入力される。
【0036】処理選択回路21は、SAC13、DAC
14、及びOPC15の情報のうちどれを選択するかの
指示を第1セレクタ16に対し出すようになっている。
選択の方法は、基本的には、SAC13→DAC14→
OPC15の順序で行われるが、この順序を飛ばすこと
も行われる。具体的には、処理選択回路21は、SAC
13及びDAC14から、上記選択(順序飛ばし)のた
めの情報を受け取る。この情報は、SAC13またはD
AC14においてセットされた内容が処理を飛ばされる
べき内容であるか否かを示す情報である。この情報を受
けて処理選択回路は、第1セレクタ16を制御する。
【0037】処理のスタートおよび次へ移行するための
指示は、メインデコーダ20から出力される信号により
行われる。従って、新しい命令の処理がスタートする
と、基本的には、SAC13が最初に選択され、次に、
DAC14が選択され、その次にOPC15が選択され
ることになるが、例えば、SAC13にセットされた内
容が処理を飛ばされるべき内容であれば、直ちにDAC
14の出力が選択されることになる。
【0038】EXU3は、SCU2からの信号を受け取
り、データの演算や一次記憶を行う機能を有する。ま
た、CPU1外部とのデータのリード/ライトのために
BCU4との間でデータの伝達を行うための経路10
6、及び、EXU3で生成したアドレスデータをBCU
4に伝達する経路105を有している。EXU3は、S
CU2の指示により動作する。即ち、前述のメインデコ
ーダ20の出力する信号が、EXU3への動作指示信号
となる。
【0039】BCU4は、割り込み関連の制御を除き、
CPU1と外部インターフェースとの間の制御を行う。
即ち、プログラムが格納された外部メモリとのアクセス
は、BCU4がコントロールバス101、データバス1
02、及びアドレスバス103を使って行う。CPU1
にリードされたプログラムは、プログラムバス11によ
ってSCU2とEXU3に転送される。EXU3への転
送経路があるのは、プログラム内に即値のデータがあ
り、この即値データをEXU3に供給するためである。
【0040】ICU5は、CPU外部からの割り込み要
求を受けて、その割り込みが有効であるか否かの判定
(マスク判定)などを行い、割り込みを受け付けられれ
ば、経路107によってSCU2に対して割り込み処理
動作を指示する。割り込み要求を受け付けるタイミング
は、SCU2から経路108を経て供給される信号(後
述のNEXTI,NEXTSに相当する)によって設定
される。
【0041】次に、上記CPU1の動作を説明する。
【0042】すべての命令と割り込み処理動作は、メイ
ンデコーダ20にプログラムされていて、その処理の一
番最後に”次の命令に移る”という指示を出す。以下こ
の指示をNEXTIと呼ぶ。NEXTIが出力されると
処理選択回路21は、基本的には最初にSAC13を選
択し、プリデコーダ12はプログラムバス11から1コ
ード分の命令を取り込む。このとき同時に、SAC1
3、DAC14、及びOPC15もプログラムバス11
から同じコードを入力する。
【0043】プリデコーダ12は、入力したコードの内
容によって、SAC13、DAC14、及びOPC15
のセット内容を変更する。例えば、1オペランド命令
(ソース或いはデスティネーションのオペランドしか使
用しない命令)であると、SAC13もしくはDAC1
4に“処理不要”の内容をセットする。このセットが終
わると処理選択回路21が動作する。
【0044】処理選択回路21は、SAC13が“処理
不要”状態でない限り、SAC13を選択するよう第1
セレクタ16に指示する。すると、SAC13の内容が
第1セレクタ16を経て、ラッチ17に伝えられて保持
される。そして、その内容は、処理選択回路21の状態
(この場合においてはソースアドレス生成状態)を伝え
る信号とともに、第2セレクタ18に送られる。割り込
み要求のない限り、第2セレクタ18は送られてきた内
容をそのままバッファ19に入力する。そして、上記内
容はバッファ19を経てメインデコーダ20に入力され
る。メインデコーダ20は、処理選択回路21からソー
スアドレス生成のステージであることと、ラッチ17か
らアドレッシングの種類などのソースアドレス生成に必
要な情報(上記内容)の提供を受け、ソースアドレス生
成のプログラムに従って、EXU3に指示を出す。
【0045】ソースアドレス生成のプログラムが終了す
ると、メインデコーダ20は、”次のステージに移行す
る”という信号を、処理選択回路21に出力する。以
下、この信号をNEXTFと呼ぶ。処理選択回路21
は、NEXTFを受けて、DAC14が”処理不要”状
態でない限り、DAC選択(デスティネーションアドレ
ス生成時であることを示す)状態へ移行する。処理選択
回路21の指示により、第1セレクタ16は、DAC1
4を選択してその内容をラッチ17に伝える。ラッチ1
7では、上記内容を保持する。そして、その内容は、処
理選択回路21の状態(デスティネーションアドレス生
成時であることを示す)を伝える信号とともに第2セレ
クタ18に送られる。割り込み要求のない限り、第2セ
レクタ18は、送られてきた内容をそのままバッファ1
9に入力する。バッファ19は、上記内容をメインデコ
ーダ20へ入力する。メインデコーダ20は、処理選択
回路21からデスティネーションアドレス生成のステー
ジであることと、ラッチ17からアドレッシングの種類
などデスティネーションアドレス生成に必要な情報(上
記内容)の提供を受け、デスティネーションアドレス生
成のプログラムに従って、EXU3に指示を出す。
【0046】デスティネーションアドレス生成のプログ
ラムが終了すると、メインデコーダは、前述のNEXT
Fを処理選択回路21に出力する。処理選択回路21
は、NEXTFを受けて、OPC選択(命令処理時であ
ることを示す)状態に遷移する。処理選択回路21の指
示により、第1セレクタ16は、OPC14の内容をラ
ッチ17に伝える。上記内容はラッチ17に保持され
る。そして、その内容は、処理選択回路21の状態(命
令処理時であることを示す)を伝える信号とともに第2
セレクタ18に送られる。割り込み要求のない限り、第
2セレクタ18は、送られてきた内容をそのままバッフ
ァ19へ入力する。バッファ19は、上記内容をメイン
デコーダ20へ入力する。メインデコーダ20は、処理
選択回路21から命令処理のステージであることと、ラ
ッチ17から命令の種類など命令処理に必要な情報(上
記内容)の提供を受け、命令処理のプログラムに従っ
て、EXU3に指示を出す。命令処理が終了すると、メ
インデコーダは、前述のNEXTIを、処理選択回路2
1、及びプリデコーダ12に出し、次の命令の最初へと
つながる。
【0047】以上は、SAC13、及びDAC14が
“処理不要”でない場合についての説明である。
【0048】ここで、プリデコーダ12によるセットの
結果、SAC13が“処理不要”となっていれば、処理
選択回路21は、NEXTIを受けた後、直ちにDAC
選択状態になり、メインデコーダ20は、デスティネー
ションアドレス生成のプログラムからスタートすること
になる。また、プリデコーダ12によるセットの結果、
DAC14が“処理不要”となっていれば、SAC選択
状態からOPC選択(命令処理)状態に遷移する。更
に、プリデコーダによるセットの結果、SAC13およ
びDAC14が“処理不要”となっていれば、処理選択
回路21は、NEXTIを受けた後、直ちにOPC選択
(命令処理)状態となり、メインデコーダ20は、命令
処理のプログラムからスタートすることになる。
【0049】次に、割り込み要求がある場合について説
明する。
【0050】割り込み要求は、前述のICU5から出力
される。一般的に、CPU1は、命令の切れ目(新しい
命令に移るとき)にしか割り込みの受付を行わない。命
令処理の途中で割り込み処理が入ることはないので、こ
の実施例では、NEXTIが出力されたときのみICU
5が最新の割り込み要求情報を、第2セレクタ18に入
力するようにして、NEXTIの出ないときは前の割り
込み要求状態を保持するようICU5は動作する。これ
で、命令の切れ目以外で割り込み要求信号が変化するこ
とがないので、命令処理の途中で割り込み処理が入るこ
とはない。
【0051】なお、命令の中には一部特殊な命令があ
り、たとえば文字列(ストリングス)転送命令のよう
な、同じ処理を繰返し、その繰返し回数が(CPU開発
時に)未定の命令は、命令の切れ目、すなわち処理終了
まで割り込み受付を待たせると、割り込み要求から受け
付けまでたいへん時間かかってしまうことがありえる。
これでは、CPUのリアルタイム性(即時性)が損なわ
れるので、このような命令に限り、繰り返される命令処
理ステージの間に割り込み検査を設けて、割り込み要求
があったなら、そこで命令処理の繰返しを打切り、割り
込み処理に入るのが、一般的な方法である。
【0052】本実施例における上記特殊命令の割り込み
処理について説明する。
【0053】メインデコーダ20内の命令処理プログラ
ムで、命令を終了するか繰り返すかを判定し、命令を終
了するなら通常通りにNEXTIを出力する。一方、繰
返しをするならもう一度命令処理ステージに戻る。そし
て、この繰り返しをするときは、割り込み要求元(IC
U5)に割り込み要求検査を指示する信号(以下NEX
TSと呼ぶ)を出力する。NEXTSが出力されたとき
は、NEXTIが出力されたときと同様に、ICU5に
伝えられた最新の割り込み要求内容を第2セレクタ18
に反映するが、NEXTIと異なり、次の命令に移行す
ることはない。即ち、割り込み要求が受け付けられて、
割り込み処理を行っても、命令は次に進んでいないの
で、割り込み処理ルーチンから復帰した後は、先の繰返
し命令から再開できる。
【0054】以上のように、基本的に命令はすべてソー
スアドレス生成→デスティネーションアドレス生成→命
令処理の順序で処理されるようになっていて、その処理
が不要な場合のみ、その処理を飛ばして次にいくように
している。これは、処理選択回路21が基本的には必ず
上記の順番通りにしか状態遷移をしないからである。そ
して、以上の説明から明らかなように、メインデコーダ
20への入力情報やメインデコーダ20内のプログラム
は独立しているため、上記3つの各状態間の関係に制限
されることなくソース/デスティネーションの組み合わ
せが可能となり、アドレッシングの直交性を確保できる
(アドレッシングの組み合わせによる制約が無くな
る)。また、それぞれのプログラムも組み合わせの制限
を受けないため、プログラム開発が容易になる。
【0055】また、処理不要の場合、処理選択回路21
が不要な処理の状態にならず、直接次の状態に推移する
機能を持つため、時間的に効率よく処理が進む。
【0056】(実施例2)以下、本発明の他の実施例に
ついて説明する。
【0057】図3は、本実施例におけるEXU3の構成
の一部を示すブロック図である。EXU3は、内部バス
109、演算実行部30、汎用レジスタ31、データア
ウトプットラッチ(以下、DOLと略記する)32、デ
ータインプットラッチ(以下、DILと略記する)3
3、及び即値用データラッチ(以下、IDLと略記す
る)34を備える。
【0058】前記の内部バス109は、複数存在しても
よいが、説明の簡略化のため、図3中では単数としてい
る。
【0059】演算実行部30は、ALUなどから成り、
内部バス109からデータを読み込み、演算結果をデー
タバス109に出力する。
【0060】汎用レジスタ31は、演算するためのデー
タを格納したり、演算結果を格納したりする。
【0061】DOL32は、演算結果をCPU1の外部
にある記憶装置にライトするときに当該演算結果をBC
U4へ受け渡す窓口となるラッチであり、経路106へ
演算結果を出力する。
【0062】DIL33は、DOL32とは逆の動作を
行うものであり、BCU4がCPU1の外部にある記憶
装置からリードしたデータを、BCU4から受け取る窓
口となるラッチであり、経路106からデータを受け取
る。なお、DIL33には、ソース用(以下、DILS
と略記する)とデスティネーション用(以下、DILD
と略記する)とがある。
【0063】前記の経路106とDOL32又はDIL
33との間のデータのやりとりは、BCU4にて制御さ
れる。具体的には、ライト時において、BCU4がデー
タライトを行えるようになったら、DOL32から経路
106を経てBCU4へデータ転送を行い、また、リー
ド時において、BCU4がデータリードを完了したな
ら、経路106を経てDIL33へデータ転送する。
【0064】IDL34は、プログラム中にある即値デ
ータをEXU3に伝えるための窓口となるラッチであ
り、プログラムバス11からデータを受け取る。
【0065】なお、内部バス109にとってみれば、演
算実行部30及び汎用レジスタ31ついては入出力、D
OL32については出力、DIL33及びIDL34に
ついては入力の関係となる。
【0066】図4は、オペランド自動選択回路(以下、
OACと略記する)と他の回路との関係を示すブロック
図である。このOAC40は、SAC13及びDAC1
4の状態を監視し、メインデコーダ20からの信号と前
記SAC13及びDAC14の状態に応じて、汎用レジ
スタ31、DIL32、DOL33、及びIDL34と
内部バス109とのデータ入出力を制御する。
【0067】SAC13からOAC40へ伝達される”
状態”とは、ソースオペランドアドレッシングの内容
が、”即値データ”であるか、”メモリ上のデータ”で
あるか、”レジスタ”であるか、である。後述するよう
に、”処理不要”状態は、”レジスタ”と共通である。
DAC14からOAC40へ伝達される”状態”とは、
デスティネーションオペランドアドレッシングの内容
が、”メモリ上のデータ”であるか、”レジスタ”であ
るか、である。後述するように、”処理不要”状態
は、”レジスタ”と共通である。
【0068】また、メインデコーダ20からの信号には
3種類あり、”ソースデータを内部バスに出力せよ”と
いう信号(以下、SDと略記する)、”デスティネーシ
ョンデータを内部バスに出力せよ”という信号(以下、
DDと略記する)、”内部バスのデータをデスティネー
ションオペランドへ格納せよ”という信号(以下、DD
Wと略記する)である。
【0069】以下、OAC40の動作について説明す
る。
【0070】ソースオペランドには、大きく分けて、
“即値データか、“メモリ上のデータ”か、”レジスタ
内のデータ”かの3通りがある。ソースアドレス算出状
態(SAC選択状態)では、アドレッシングが”即値”
なら、プログラム中の即値データをIDL34へ格納す
る。アドレッシングが”メモリ上”なら、アドレスを計
算し、必要なら目的のデータをメモリから読み出してD
IL(DILS)33へ格納する。アドレッシングが”
レジスタ”なら、ソースアドレス算出状態では何もしな
い。つまり、”レジスタ”とソースオペランドが存在し
ない”処理不要”とは等しい。
【0071】デスティネーションオペランドには、大き
く分けて、”メモリ上のデータ”か、”レジスタ内のデ
ータ”かの2通りがある。デスティネーションアドレス
算出状態(DAC選択状態)では、アドレッシングが”
メモリ上”なら、アドレスを計算し、必要なら目的のデ
ータをメモリから読み出してDIL(DILD)33へ
格納する。アドレッシングが”レジスタ”なら、デステ
ィネーションアドレス算出状態では何もしない。つま
り、”レジスタ”とデスティネーションオペランドが存
在しない”処理不要”とは等しい。
【0072】以上のセッティングは、実施例1で説明し
たように、プリデコーダ12が設定する。
【0073】OAC40は、メインデコーダ20から前
記信号SD,DD,DDWSを入力し、以下の表1に示
すように、汎用レジスタ31及びラッチ32〜34をコ
ントロールする。
【0074】
【表1】
【0075】メインデコーダ20がSD,DD,DDW
を出力するのは、命令処理状態(OPC選択状態)であ
る。この状態ではソースアドレッシングの内容に関わら
ず、SD信号のみで、ソースデータを内部バスに呼びだ
すことができる。同様にDD信号のみでデスティネーシ
ョンデータを内部バスに呼びだすことができる。同様に
DDW信号のみで内部バス上のデータを、デスティネー
ションオペランドに格納できる。
【0076】これにより、命令処理のマイクロプログラ
ムにおいては、オペランドアドレッシングがどのような
種類であっても、SD,DD,DDWを用いた1通りの
プログラム記述にて実現できる。
【0077】また、”レジスタ”アドレッシングをアド
レッシングにかかる時間をゼロとしながら、命令処理状
態で他のアドレッシングと全く同じ扱いにできるため、
スピードを犠牲にすることなくマイクロプログラムでき
る。
【0078】また、オペランドが存在しないとき、SA
CやDACの状態を”レジスタ”アドレッシングの状態
と共通にすることで、”レジスタアドレッシング”の状
態と”オペランド存在せず”の状態の2通りを設けなく
て済む。
【0079】
【発明の効果】以上のように、本発明によれば、アドレ
ッシングに制約がなく、命令実行がスムースに行われ、
マイクロプログラムを小さいサイズに抑えることができ
るという効果を奏する。
【図面の簡単な説明】
【図1】本発明の中央演算処理装置を示すブロック図で
ある。
【図2】本発明の中央演算処理装置のシーケンシャルコ
ントロールユニット(SCU)を示すブロック図であ
る。
【図3】本発明の第2実施例における中央演算処理装置
の実行部(EXU)を示すブロック図である。
【図4】本発明の第2実施例における中央演算処理装置
のオペランド自動選択回路(OAC)と他の回路との関
係を示すブロック図である。
【符号の説明】
1 中央演算処理装置(CPU) 2 シーケンシャルコントロールユニット(SCU) 3 実行部(EXU) 4 割込インターフェース(ICU) 5 バスコントロールユニット(BCU) 11 プログラムバス 12 プリデコーダ 13 ソースアドレッシングコントロール回路(SA
C:第1回路) 14 デスティネーションアドレッシングコントロール
回路(DAC:第2回路) 15 オペレーションコントロール回路(OPC:第3
回路) 16 第1セレクタ 17 ラッチ 18 第2セレクタ 19 バッファ 20 メインデコーダ 21 処理選択回路 40 オペランド自動選択回路

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】 命令コードの内容からソースオペランド
    アドレッシングの情報のみをメインデコーダへの入力情
    報として保持する第1回路と、命令コードの内容からデ
    スティネーションオペランドアドレッシングの情報のみ
    をメインデコーダへの入力情報として保持する第2回路
    と、命令コードの内容からオペランドアドレッシングの
    情報を除く命令処理の情報をメインデコーダへの入力情
    報として保持する第3回路と、命令コードの内容を解析
    して前記第1回路と第2回路と第3回路の状態を制御す
    るプリデコーダと、前記第1乃至第3回路に保持された
    情報のうちどの情報をメインデコーダに入力するかを選
    択する第1セレクタと、第1セレクタによる選択を1つ
    の命令につき基本的には第1回路、第2回路、第3回路
    の順序とし、現在の選択状態から次の選択状態に移行す
    るタイミングをメインデコーダからの信号に基づいて設
    定し、第1回路又は第2回路の状態が“処理不要”を示
    すとき、当該“処理不要”の回路の選択をせずに次の回
    路選択状態をとるように第1セレクタを制御する処理選
    択回路と、前記第1乃至第3回路からの情報を得て中央
    演算処理装置内部の各回路を制御するメインデコーダと
    を備えたことを特徴とする中央演算処理装置。
  2. 【請求項2】 前記第1セレクタにより選択された情報
    を保持する手段を備えたことを特徴とする請求項1に記
    載の中央演算処理装置。
  3. 【請求項3】 前記第1セレクタにより選択された情報
    と、割込み要求の情報のうちいずれかを選択して前記メ
    インデコーダに出力する第2セレクタを備えたことを特
    徴とする請求項1又は請求項2に記載の中央演算処理装
    置。
  4. 【請求項4】 前記メインデコーダに前記処理選択回路
    の状態を入力するようにした請求項1乃至請求項3のい
    ずれかに記載の中央演算処理装置。
  5. 【請求項5】 データ転送用の内部バスと、この内部バ
    スとの間でデータの入出力を行うレジスタと、中央演算
    処理装置の外部へ書き込むデータを前記内部バスから入
    力して一時保持する第1保持回路と、中央演算処理装置
    の外部から読み込んだデータを一時保持して前記内部バ
    スへ送出する第2保持回路と、プログラム中にある演算
    データとしての”即値”のデータを一時保持して前記内
    部バスへ送出する第3保持回路と、前記メインデコーダ
    からの信号と第1回路および第2回路の状態とに基づ
    き、前記レジスタ、第1保持回路、第2保持回路、及び
    第3保持回路を制御するオペランド自動選択回路とを備
    えたことを特徴とする請求項1乃至請求項4のいずれか
    に記載の中央演算処理装置。
  6. 【請求項6】 前記第1回路の状態を前記処理選択回路
    へ伝える内容として、ソースオペランドが”レジスタ”
    である場合とソースオペランドが存在しない場合とを等
    価とし、前記第2回路の状態を前記処理選択回路へ伝え
    る内容として、デスティネーションオペランドが”レジ
    スタ”である場合とデスティネーションオペランドが存
    在しない場合とを等価とするようになっていることを特
    徴とする請求項5に記載の中央演算処理装置。
  7. 【請求項7】 前記第1回路の状態を前記オペランド自
    動選択回路へ伝える内容として、ソースオペランドが”
    レジスタ”である場合とソースオペランドが存在しない
    場合とを等価とし、前記第2回路の状態を前記オペラン
    ド自動選択回路へ伝える内容として、デスティネーショ
    ンオペランドが”レジスタ”である場合とデスティネー
    ションオペランドが存在しない場合とを等価とするよう
    になっていることを特徴とする請求項5に記載の中央演
    算処理装置。
JP01627395A 1995-02-02 1995-02-02 中央演算処理装置 Expired - Lifetime JP3442175B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP01627395A JP3442175B2 (ja) 1995-02-02 1995-02-02 中央演算処理装置
US08/591,293 US5768554A (en) 1995-02-02 1996-01-25 Central processing unit
US08/972,302 US5864691A (en) 1995-02-02 1997-11-18 Central processing unit with a selector that bypasses circuits where processing is not required

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP01627395A JP3442175B2 (ja) 1995-02-02 1995-02-02 中央演算処理装置

Publications (2)

Publication Number Publication Date
JPH08212067A JPH08212067A (ja) 1996-08-20
JP3442175B2 true JP3442175B2 (ja) 2003-09-02

Family

ID=11911947

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01627395A Expired - Lifetime JP3442175B2 (ja) 1995-02-02 1995-02-02 中央演算処理装置

Country Status (2)

Country Link
US (2) US5768554A (ja)
JP (1) JP3442175B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4913685B2 (ja) * 2007-07-04 2012-04-11 株式会社リコー Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USH1291H (en) * 1990-12-20 1994-02-01 Hinton Glenn J Microprocessor in which multiple instructions are executed in one clock cycle by providing separate machine bus access to a register file for different types of instructions
JPH04367936A (ja) * 1991-06-17 1992-12-21 Mitsubishi Electric Corp スーパースカラープロセッサ
JPH05173932A (ja) * 1991-12-24 1993-07-13 Toshiba Corp データ転送装置
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices, Inc. Superskalarmikroprozessoren

Also Published As

Publication number Publication date
US5864691A (en) 1999-01-26
JPH08212067A (ja) 1996-08-20
US5768554A (en) 1998-06-16

Similar Documents

Publication Publication Date Title
EP0241946B1 (en) Information processing system
US6405302B1 (en) Microcomputer
US6581152B2 (en) Methods and apparatus for instruction addressing in indirect VLIW processors
CN1983167A (zh) 将一个处理器与一个协处理器相接口的方法
US4967338A (en) Loosely coupled pipeline processor
US5577256A (en) Data driven type information processor including a combined program memory and memory for queuing operand data
US6496924B2 (en) Data processing apparatus including a plurality of pipeline processing mechanisms in which memory access instructions are carried out in a memory access pipeline
JP2001504959A (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
JP3756410B2 (ja) 述語データを提供するシステム
JP2009009550A (ja) データの通信
US5907693A (en) Autonomously cycling data processing architecture
JPH0743648B2 (ja) 情報処理装置
US4967339A (en) Operation control apparatus for a processor having a plurality of arithmetic devices
US5034879A (en) Programmable data path width in a programmable unit having plural levels of subinstruction sets
JPH01271838A (ja) マイクロプログラム分岐方法
JP3442175B2 (ja) 中央演算処理装置
JP2009009549A (ja) 一連のコンピュータでデータを処理するシステムおよび方法
EP0325226B1 (en) Information processing apparatus and method
JPH11259290A (ja) マイクロプロセッサ、演算処理実行方法及び記憶媒体
JP2001297074A (ja) データ駆動型情報処理装置の実行制御装置
US6219761B1 (en) Load/store assist engine
JP2006134347A (ja) マイクロコンピュータ
JPH0644389A (ja) データ駆動型情報処理装置
JPH06324861A (ja) Cpu制御システム及び制御方法
JP2755646B2 (ja) データ駆動型データ処理装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080620

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090620

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090620

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100620

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110620

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20110620

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120620

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20130620

Year of fee payment: 10

EXPY Cancellation because of completion of term