JP3369204B2 - プログラマブルコントローラ - Google Patents

プログラマブルコントローラ

Info

Publication number
JP3369204B2
JP3369204B2 JP27970491A JP27970491A JP3369204B2 JP 3369204 B2 JP3369204 B2 JP 3369204B2 JP 27970491 A JP27970491 A JP 27970491A JP 27970491 A JP27970491 A JP 27970491A JP 3369204 B2 JP3369204 B2 JP 3369204B2
Authority
JP
Japan
Prior art keywords
address
circuit
memory
instruction
data
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
JP27970491A
Other languages
English (en)
Other versions
JPH05120007A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP27970491A priority Critical patent/JP3369204B2/ja
Priority to KR1019920019715A priority patent/KR960011277B1/ko
Publication of JPH05120007A publication Critical patent/JPH05120007A/ja
Priority to US08/428,839 priority patent/US5613143A/en
Application granted granted Critical
Publication of JP3369204B2 publication Critical patent/JP3369204B2/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/22Microcontrol or microprogram arrangements
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/261Microinstruction address formation
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、計装制御システムその
他の各種のシーケンス制御システムなどに利用されるプ
ログラマブルコントローラに係わり、特に構成の簡易化
および各種演算処理の高速化を図った高機能型プログラ
マブルコントローラに関する。
【0002】
【従来の技術】従来のこの種の高機能型プログラマブル
コントローラには、ビット演算の他、ワード単位の論理
演算,算術演算,さらには浮動小数点による四則演算や
三角関数演算,平方根演算,指数演算,対数(LOG)
演算など,各種の演算が要求されており、その結果、設
計者はかかる要求を満足しつつ経済性や大きさの制約を
受けながらいかに実現するかが大きな問題となっおり、
その観点からも種々の工夫がなされてきた。
【0003】以下、従来の代表的なプログラマブルコン
トローラについて図15を参照して説明する。このコン
トローラは、バスライン1に、処理数の多い例えばラダ
ー図の処理のようなビット演算を高速で実行するゲート
アレイなどを用いたビット演算専用のビットプロセッサ
2、このビットプロセッサ2で演算処理が不可能なワー
ド単位の演算を実行するマイクロプロセッサ3および浮
動小数点処理を実行するコプロセッサ4などが接続さ
れ、さらに各命令コードデータが格納されているコード
メモリ5、各命令毎の処理ルーチンが格納されている命
令処理プログラム用メモリ6、演算処理のためのデータ
および演算処理後のデータを格納するデータメモリ7,
ロセス入出力回路8が接続されている。9は信号線であ
る。
【0004】従って、以上のような構成のコントローラ
によれば、ビットプロセッサ2がコードメモリ5から順
次命令を読み出した後、この命令毎の処理ルーチンを命
令処理プログラム用メモリ6から読み出し、ビット演算
を実行する。なお、このビット演算にあたっては、デー
タメモリ7およびプロセス入出力回路8からビットデー
タを読み出してビット演算を実行し、かつ、その演算結
果のデータをデータメモリ7およびプロセス入出力回路
8に書き込んでいる。
【0005】ところで、ビットプロセッサ2は、コード
メモリ5から処理不能なワード単位の演算処理命令を読
み出したとき、信号線9を介して割込み信号を発生し、
マイクロプロセッサ3に処理が不能である旨を知らせ
る。ここで、マイクロプロセッサ3は、割込み信号を受
けるといかなる割込みかについてインテル系のマイクロ
プロセッサの標準手法であるINTA信号を2回発行し
て認識する。しかる後、マイクロプロセッサ3は、その
割込み内容の認識に基づいてビットプロセッサ2から命
令を読み出して解釈し、命令処理プログラム用メモリ6
からその命令の処理ルーチンを読み出し、データメモリ
7およびプロセス入出力回路8からデータを取り込んで
ワード単位の演算処理を実行する。そして、マイクロプ
ロセッサ3においてワード単位の演算処理が終了する
と、ビットプロセッサ2に処理終了を知らせる。ビット
プロセッサ2はここで改めて次のビット演算処理を実行
する。
【0006】一方、マイクロプロセッサ3では、自身に
とって非能率的な処理である浮動小数点処理であると判
断した場合、浮動小数点演算用のコプロセッサ4に通知
し、かかる浮動小数点の処理機能を移す。このとき、マ
イクロプロセッサ3は、コプロセッサ4によって処理す
べきデータを用意した上でコプロセッサ4に書き込む
が、このとき同時にいままでに処理した内容も渡す。
【0007】コプロセッサ4は、同様に命令処理プログ
ラム用メモリ6の処理ルーチンを読み出して浮動小数点
処理を実行し、かかる処理終了後にマイクロプロセッサ
3に知らせる。ここで、マイクロプロセッサ3は、コプ
ロセッサ4からデータを読み出した後、この処理データ
をデータメモリ7およびプロセス入出力回路8に書き込
み、ビットプロセッサ2に当該命令の処理を終了した旨
を知らせる。従って、この場合にはビットプロセッサ2
は再び次の命令を読み出して同様な手順で演算処理を実
行する。
【0008】
【発明が解決しようとする課題】従って、以上のような
プログラマブルコントローラは、比較的安価に実現でき
る反面、次のような問題点が指摘されている。
【0009】イ.ビットプロセッサ2によるビット演算
の場合には高速処理が可能であるが、ワード単位のワー
ド演算処理の場合にはマイクロプロセッサ3に処理機能
を移す必要があり、その結果、データの交信や所要の制
御処理のために時間がかかる。従って、マイクロプロセ
ッサ3を用いても結果的に高速処理を実現できない。
【0010】ロ.特に、浮動小数点演算の場合には、そ
の処理経路がビットプロセッサ2、マイクロプロセッサ
3およびコプロセッサ4へと移す必要があることから、
コプロセッサ4が高速性をもっていながら、その性能を
十分に生かせない問題がある。
【0011】ハ.このコントローラは、3つのプロセッ
サ2,3,4をもっているので、図示されていないがデ
ータ受け渡し用のバッフア用ICや相互接続のための実
装面積が大きくなり、速度の面で大きく制約を受ける。
【0012】ニ.一般に、プログラマブルコントローラ
の機能のうち、コプロセッサ4の倍長浮動小数点演算機
能やマイクロプロセッサ3の仮想記憶機能が不要な場合
が多く、これらの機能を削除し安価、かつ、高速化した
いが、この種のコントローラは汎用製品である場合が多
く、それに十分に対処できない問題がある。
【0013】ホ.パリティチェックやメモリのエラー時
の再実行などの(Reliability :信頼性,Availabilit
y:稼働性,Serviceability:保守性)機能が不十分で
ある。何となれば、マイクロコンピュータ3はかかる機
能を持っていないためである。
【0014】ヘ.マイクロプロセッサ3は、命令の実行
時、各命令を解釈しながら実行するので、演算処理が非
常に遅くなる。その理由は、プログラマブルコントロー
ラの特殊性からプログラマブルローダでメモリからプロ
グラムを読み出して表示可能とし、さらに動作中でもプ
ログラムの変更が容易であるように構成されているの
で、例えば計算機のようにプログラムをコンパイル化し
てコンパクトな機械語に翻訳できないためである。
【0015】ト.また、最近の新しい要求として、国際
的なインタフェース規格であるIEC(Internatinal
Electrotechnical Commission)にあるSFC(Sequen
tia-l Function Chart)やファジィ機能などの高度な
演算処理を高速、かつ、価格を上げずに実現することが
望まれているが、それに十分に対処できない。
【0016】チ.さらに、マイクロプロセッサ3は、演
算結果がオーバーフローした時に割込みによって処理し
ているが、このために処理時間が遅くなる。そこで、割
込みを使わないことが考えられるが、この場合にはステ
ータスがオーバフローしているかを常にチェックする必
要があるので、さらに時間がかかる。
【0017】従って、プログラマブルコントローラは、
以上のような種々の問題点をもっているが、それでもな
おかつ、高機能を維持しつつコストパフォーマンスの重
要性を認識する必要がある。しかし、いくら高機能でも
多数のICを使用すれば、価格,信頼性,実装面積など
の点で問題が出てくる。むしろ、市販のLSIとゲート
アレイとの組合わせの方がコストパフォーマンスの点か
ら多用される手法であると言える。
【0018】しかし、技術の進歩により、カスタムLS
Iが比較的容易に短時間で設計でき、ゲートアレイのよ
うな容易に製造しうるシリコンコンパイラ手法やスタン
ダードセル手法が出現するに至り、状況が時々刻々と変
りつつある。つまり、従来、ゲートアレイでは難しかっ
た高集積度化が容易に実現可能になってきた。しかし、
この場合でも限られた回路しか1チップに実装できず、
ましてや図15のような3つのプロセッサ2,3,4を
そのまま1チップ化することは集積度の点からも非常に
難しい。そこで、いかなる回路構成にして1チップに実
装し、かつ、高機能を実現するかが問題となるが、未だ
にその実現を見るに至っていない。
【0019】本発明は上記実情に鑑みてなされたもの
で、命令体系の合理化によりハードウェア構成の簡素化
および演算処理の高速化を実現するプログラマブルコン
トローラを提供することを目的とする。
【0020】また、本発明の他の目的は、複数の主要回
路を1チップで実現可能とするとともに、ワード演算や
浮動小数点演算をビット演算と同様に高速で処理するプ
ログラマブルコントローラを提供することにある。
【0021】また、本発明の他の目的は、IEC規格に
あるSFCやファジイ機能を取り入れ、高度の演算処理
を高速で安価に実現するプログラマブルコントローラを
提供することにある。
【0022】さらに、本発明の他の目的は、コントロー
ラとして必要なパリティチェックやメモリエラー時の再
実行を確保するRAS機能を実現するプログラマブルコ
ントローラを提供することにある。さらに、本発明の他
の目的は、プログラマブルローダとのインタフェース処
理を短時間に行い得るプログラマブルコントローラを提
供することにある。
【0023】
【課題を解決するための手段】
【0024】請求項1,2に対応する発明は、マイクロ
命令を保持するマイクロプログラムメモリ、命令語とし
て同一ビット長さをもつ1語として演算処理を実行させ
る各演算命令を保持するコードメモリ、演算処理用デー
タを保持するデータメモリと、これらマイクロプログラ
ムメモリのマイクロ命令およびコードメモリの各演算命
令を用いて前記データメモリに保持されている演算処理
用データの演算を実行する集積化された中央演算処理ユ
ニットとで構成され、さらに必要に応じてマイクロ命令
を保持するマイクロプログラムメモリをも集積化された
中央演算処理ユニットに含めた構成とし、
【0025】さらに、中央演算処理ユニットは、前記マ
イクロメモリに対してアドレスを指定し、当該アドレス
のマイクロ命令を読み出すシーケンサと、このシーケン
サによって読み出されたマイクロ命令を解読して各構成
回路に動作指令を与えるデコーダと、コードメモリに対
して実行すべきアドレス、実行中アドレスおよび実行後
のアドレスを保持するレジスタを持ったプログラムカウ
ンタ回路と、前記コードメモリの命令および異常状態を
保持するレジスタを持ったインストラクションレジスタ
回路と、このインストラクションレジスタ回路から読み
出された命令に基づいてデータメモリの演算処理用デー
タを読み書きするデータメモリ制御回路と、コードメモ
リのアドレス又はデータメモリのアドレスを選択して指
定された第1のアドレスと比較し、コードメモリのアド
レスと指定された第2のアドレスと比較し、指定された
コードメモリのアドレスの命令が実行中であるか、また
は指定されたデータメモリのアドレスのデータが使用さ
れているか、または実行中のコードメモリのアドレスが
指定された2つのアドレスの範囲内にあるかどうかを判
定するアドレスマッチ回路と、コードメモリやデータメ
モリなどから割込みや異常を受け、その状態をシーケン
サその他必要な構成回路に送出する制御レジスタ回路
と、コードメモリからの命令に基づいてビット演算を実
行し、かつ、その演算結果を保持するビット演算回路
と、ワード演算の途中経過データその他演算途中のデー
タを保持するレジスタ回路とを設け、さらにコードメモ
リからの命令に基づき、かつ、共用の乗算回路を用いて
固定小数点演算,論理演算などを実行する固定小数点演
算回路および浮動小数点演算回路を設けたプログラマブ
ルコントローラである。
【0026】請求項3,4に対応する発明では、制御レ
ジスタ回路としては、前記コードメモリやデータメモリ
などから割込みや異常を受けると、前記プログラムカウ
ンタ回路に対して所定の演算繰返し回数内で前記コード
メモリに対する再読み出しを実行させる手段と、前記デ
ータメモリの割込みや異常に対し前記シーケンサに各構
成回路のレジスタに記憶更新を禁止させる手段とを有
し、またレジスタ回路は、ワード演算用スタックおよび
ジェネラルレジスタを複数を有し、タスクのレベル切り
替えに応じてワード演算用スタックおよびジェネラルレ
ジスタを切り替えるようにしたプログラマブルコントロ
ーラである。
【0027】
【作用】
【0028】従って、請求項1、2に対応する発明は、
マイクロプログラムメモリのマイクロ命令およびコード
メモリの各演算命令を用いて各演算命令を実行する中央
演算処理ユニットを集積化し、さらに中央演算処理ユニ
ットに必要に応じてマイクロ命令を保持するマイクロプ
ログラムメモリをも含めて集積化して1チップとするこ
とにより、データの交信や処理制御の時間を短縮でき、
演算処理の高速化を実現できる。
【0029】また、請求項3に対応する発明では、コー
ドメモリからの割込みや異常に対し、所定の演算繰返し
回数内であれば前記プログラムカウンタ回路へコードメ
モリに対する再読み出しを実行することにより、過度的
なエラーが発生したときに再読み出しを実行してRAS
機能を確保でき、またデータメモリの割込みや異常に対
し、各構成回路のレジスタに記憶更新を禁止させる信号
を前記シーケンサに送出したので、誤ったデータを用い
て演算を実行することがない。
【0030】さらに、請求項4に対応する発明では、タ
スクのレベル切り替えに応じてレジスタ回路のワード演
算用スタックおよびジェネラルレジスタを切り替えるこ
とにより、タスクの切り替え時間を短縮でき、応答性の
上げることができる。
【0031】
【実施例】以下、本発明の実施例について図面を参照し
て説明する。
【0032】図1は本発明に係わるプログラマブルコン
トローラの特長とする命令構成を示す図であって、演算
処理系統を1チップに収納するための命令体系を構成し
ている。このコントローラの各命令は、すべて例えば3
2ビットからなり固定長であって、6つのタイプに分け
られている。
【0033】タイプ1は、1ビット単位の論理演算を高
速に行うためのビット演算用命令であって、オペレーシ
ョンコードOPとビットアドレスBAとで構成されてお
り、具体的には図3に示す通りである。
【0034】タイプ2は、ビット演算命令のインデック
ス修飾のために使用するプリフィックス命令であって、
オペレーションコードOPとインデックス修飾Xとで構
成されている。
【0035】タイプ3は、ワード単位の演算処理を行う
ワード演算命令であって、これはオペレーションコード
OPとインデックス修飾XとワードアドレスWAとで構
成されている。このタイプ3にインデックス修飾Xを設
けた理由は、ワード中のビット位置を指定するビットア
ドレスBAではワードアドレスWAよりも同一メモリ空
間を指定するのに多くのビット数を使用するので、イン
デックス修飾Xを用いて少ないビット数でビット指定を
行うためである。特に、このワード演算命令は、複数の
ビット処理のために時間がかかるので、ロード命令とス
トア命令だけがメモリアクセス可能とし、それ以外の命
令ではメモリを参照しないようにし、命令構成の簡素化
を図ってデコードに時間をかけず、また内部レジスタ間
で演算だけを行うことによりサイクル時間を短縮するこ
とにある。
【0036】次に、タイプ4,5は固定値Kをロードす
る命令であって、タイプ4は8ビットのオペレーション
コードOPと16ビットの固定値データをもち、タイプ
5は4ビットのオペレーションコードOPと28ビット
の固定値データをもっている。タイプ5は、国際的なイ
ンタフェース規格であるIEEE規格の単精度浮動小数
点の32ビットのうち下位4ビットを0とした固定値を
ロードできる。
【0037】さらに、タイプ6は、アドレスや固定値を
必要としないワード命令や浮動小数点命令などのあらゆ
る演算命令に使用するもので、上位3ビットの条件エリ
ア,9ビットのオペレーションコードOPおよび4ビッ
トの演算繰返し回数指定エリアMによって構成されてい
る。なお、この各種演算命令は、使用されるオペレーシ
ョンコード数が多いので、他のタイプでは上位31ビッ
ト目から24ビット目までの8ビットだけでは不十分で
あるので、上位3ビットの条件エリアが“111”であ
ることを条件に下位に9ビットのオペレーションコード
OPを設けた。これによって256X7/8+512の
736通りのオペレーションコードを指定できる。
【0038】一般に、命令自体を可変長とする考えもあ
り、この場合にはコードの全体サイズを減らすことが可
能であり、タイプ6では16ビットに縮小できる。しか
し、逆に制御が複雑になり、コードメモリ上の任意の番
地をプログラムロードでモニタしたときに逆アセンブル
ができない。その理由は命令の配置が可変長であるとど
こが区切りあるのか分らず解釈できないためである。
【0039】次に、図2は本発明のプログラマブルコン
トローラのハードウエア構成を示す図である。同図にお
いてAは1チップのLSIで構成する中央演算処理ユニ
ットであって、これにはマイクロ命令を保持するマイク
ロROM、各演算命令を保持するコードメモリCM、演
算処理用データおよび演算処理結果のデータを保持する
データメモリDMおよびプロセス入出力回路PIOが接
続されている。
【0040】なお、コードメモリCMやデータメモリD
Mは、例えば米国インテル社の32ビットマイクロプロ
セッサ180386に準拠し、それぞれバス制御信号と
してADS#,READY#,BS16#,W/R#,
D/C,M/IO#,HOLD,HLDAをもってい
る。アドレスおよびバスもマイクロプロセッサ1803
86に準拠する。これは汎用マイクロプロセッサに準拠
しておけば、周辺のLSIやメモリチップのインタ−フ
ェイスが容易となるためである。
【0041】前記中央演算処理ユニットAは、内部的に
はマイクロROMにアドレス信号S11を与えてマイク
ロ命令S12を取り出すシーケンサ10、このシーケン
サ10から実行すべきマイクロ命令S13を受け取って
解釈し必要な構成回路へ動作指令S21を出力するデコ
ーダ20、コードメモリCMに次に読み出すコードアド
レス信号S31を与える一方、次に実行すべきプログラ
ムアドレス,現在実行中のプログラムアドレスおよび実
行終了後のプログラムアドレスを記憶する複数のレジス
タ(カウンタ)を有するプログラムカウンタ回路30お
よびコードメモリCMから読み出したコード,つまりプ
ログラムコントローラ命令と発生したパリティエラーな
どの異常信号S41を記憶する、前記プログラムカウン
タ回路30の複数のレジスタに対応する複数のレジスタ
を有するインストラクションレジスタ40などが設けら
れ、これら回路10〜40の具体的構成は後記する図9
に示す通りである。
【0042】また、この中央演算処理ユニットAには、
データメモリDMにアドレス信号S51を与えるレジス
タ、データメモリDMからデータを読み出し、或いは書
き込むデータを保持するレジスタ、パリティエラーの生
成やチェックなどの異常状態を検出保持する他、データ
メモリDMのアセスを制御するデータメモリ制御回路5
0と、コードメモリCMまたはデータメモリDMのワー
ドまたはビット単位のアドレス一致やコードメモリCM
の2つのアドレス間の命令の実行を検出するアドレスマ
ッチ回路60とが設けられ、これら回路50,60の具
体的構成は図10に示す通りである。
【0043】さらに、この中央演算処理ユニットAに
は、他の構成回路などからの割込み信号S71や異常状
態を記憶し、かつ、この割込み信号S71や異常状態の
検出時に前記シーケンサ10に所要の信号を送出し、ま
たプログラムステータスワードを保持しその一部の信号
S72を外部に送出し、繰返し制御のためのカウンタと
プログラマブルコントローラの各種モードとを保持する
制御レジスタ回路70と、ビット演算を実行し、かつ、
その演算結果を2つのスタックとビットレジスタやSF
Cレジスタに保持するビット演算回路80とが設けら
れ、これら回路70,80の具体的な構成は図11に示
す通りである。
【0044】さらに、中央演算処理ユニットAには、ジ
ェネラルレジスタおよび2つのワード演算用スタックを
有するレジスタ回路90、固定小数点演算,論理演算,
シフトを実行する固定小数点演算回路A0、浮動小数点
演算を実行する浮動小数点演算回路B0、乗算器を有す
る乗算回路C0などが設けられ、これら回路90,A0
〜C0の具体的構成は図12に示す通りである。Bは各
構成回路とデータのやり取りを行う複数のバスよりなる
データバスである。次に、以上のように構成されたプロ
グラマブルコントローラの動作について説明する。
【0045】先ず、電源が投入されるとシーケンサ10
は中央演算処理ユニットAの各構成回路などの初期化処
理を実行する。すなわち、シーケンサ10は、マイクロ
ROMにアドレス0番地を指定し、当該0番地から初期
化などに必要なマイクロ命令S12を読み出してデコー
ダ20に送出する。このとき、シーケンサ10は、現在
実行すべきマイクロ命令と次に実行すべきマイクロ命
令,つまり2つのマイクロ命令S13をデコーダ20へ
同時に与える。ここで、デコーダ20は初期化するため
の動作指令S21を各構成回路および各メモリの記憶部
分に与えて初期化を実行する。
【0046】このとき、プログラムカウンタ回路30
は、アドレス0番地を示し、コードメモリCMにアドレ
ス0番地を指定し、該当0番地から順次命令を読み出し
てインストラクションレジスタ回路40に送出する。こ
のインストラクションレジスタ回路40は、複数のレジ
スタからなり、キューを形成し、コードメモリCMから
読み出した命令を順次保持する。
【0047】このとき、プログラムカウンタ回路30は
インストラクションレジスタ回路40の命令読み出しと
対応して読み出した命令のアドレスを順次記憶する。そ
して、インストラクションレジスタ回路40にストアさ
れた命令はシーケンサ10に与えられ、ここでシーケン
サ10はオペレーションコードOPをアドレスとするマ
イクロROMの内容を読み出す。この読み出したマイク
ロ命令はデコーダ20に送られ、ここでマイクロ命令を
解釈して各構成回路に動作指令S21を送出することに
より各命令を実行する。
【0048】例えば当該命令がビット演算命令の場合、
デコーダ20からの動作指令S21によってデータメモ
リ制御回路50に前記タイプ1のビットアドレスBAを
与える。ここで、データメモリ制御回路50は、データ
メモリDMのデータの読み出しを行うが、そのうちビッ
トアドレスBAに相当する指定ビットを抽出してビット
演算回路80に送出し、ビット演算を実行させる。ま
た、アドレスマッチ回路60は、常に指定アドレスにつ
いてアクセスがあったか否かをチェックし、アクセスが
あったときには割込み信号を発生し制御レジスタ回路7
0に知らせる。
【0049】次に、ワード演算命令の場合、メモリのロ
ード命令またはストア命令のときのみ、データメモリ制
御回路50とレジスタ回路90のスタックとの間でデー
タの授受を行う。つまり、ロード命令の場合にはスタッ
クにデータを蓄積し、ストア命令の場合にはスタックか
らデータを引き出す。このスタック内のデータは固定小
数点演算回路A0または浮動小数点演算回路B0の演算
に利用される。さらに、かかる固定小数点演算中の乗算
や浮動小数点演算中の乗算には共用する乗算回路C0を
用いて演算を実行する。次に、各種の命令における処理
方法について説明する。 (1) ビット演算の処理例
【0050】図3はビット演算の例を説明する図であ
る。この図から明らかなように、プログラムローダでは
ラダー図によってプログラムを作成し、かつ、表示可能
な構成となっている。このラダー図の各要素は各番地に
対応して図形、命令語および動作(プログラム)内容が
記述され、図形の種別に見合った形で命令語B9,B1
などが用いられている。また、同図において101はラ
ダ−図の左母線、X1〜X8は接点、X11〜X13は
コイルであって、これらはそれぞれビットアドレスを示
す。また、同図のMCFFはラダ−図の左母線101の
ビット状態を示し、LSは各接点の左側の状態を保持す
るスタック、RSは各接点の右側の状態を保持するスタ
ックである。BRはビット演算結果を保持するビットレ
ジスタの役割をもっている。さらに、↓はスタックにデ
ータを格納するプッシュを示し、↑はスタックからデー
タを取り出すポップを示している。以下、コードアドレ
ス(番地)の順に従って動作内容を説明する。
【0051】0番地:最初の接点X1の左側母線101
の状態をスタックLSにプッシュするとともに、この左
母線101と接点X1との論理積結果をビットレジスタ
BRに保持する。 1番地:2つの接点X1,X2が直列に接続されている
ので、ビットレジスタBRの内容と接点X2との論理積
結果をビットレジスタBRに保持する。
【0052】2番地:接点X2の右側が分岐しているの
で、ビットレジスタBRの内容をスタックRSにプッシ
ュする。このとき、接点X1の左側の状態がスタックL
Sに保持されているので、このスタックLSの内容と接
点X5との論理積をとり、ビットレジスタBRに保持
し、併せてスタックLSをポップする。
【0053】3番地:接点X6の左側が分岐しいるの
で、ビットレジスタBRの内容をスタックLSにプッシ
ュする。ビットレジスタBRの内容と接点X6との論理
積をとり、先に記憶した接点X2の左側の状態データを
スタックRSから取り出して論理和をとり、ビットレジ
スタBRに格納し、併せてスタックRSをポップする。 4番地:接点X3はB接点であるので、ビットレジスタ
BRと接点X3の論理否定との論理積をとり、ビットレ
ジスタBRに格納する。
【0054】5番地:接点X4の左側が分岐しているの
で、ビットレジスタBRの内容をスタックLsへプッシ
ュする。また、ビットレジスタBRの内容と接点X4と
の論理積をとり、ビットレジスタBRに格納する。
【0055】6番地:ビットレジスタBRの内容をコイ
ルX11に記憶する命令であるので、BRの内容をコイ
ルX11へ書き込む。データメモリDMへのリードライ
トは複数ビット単位であるので、1ビットの書き込みが
できず、同時に他のビットをも書き込むことになる。従
って、他のビットが不変であるように書き込む前に同一
番地を読み出し、そのうえで指定ビットのみ新しい状態
として再度書き込む。 7番地:接点X4の左側の状態をスタックLSから読み
出し、接点X7との論理積をとってビットレジスタBR
に格納する。 8番地:6番地と同じくビットレジスタBRの内容をコ
イルX12に書き込む。 9番地:スタックLSに格納されている接点X6の左側
の状態を取り出し、接点X8との論理積をとり、ビット
レジスタBRに格納する。 10番地:6番地と同じくビットレジスタBRの内容を
コイルX13に書き込む。 (2) ワード演算の処理例
【0056】このワード演算は、図4および図5に示す
ようにデータが左から右に流れるようにデータフロー形
式で表現されている。この図の長方形のブロックはファ
ンクションブロックであり、そのうちファンクションブ
ロック111〜113,115はワードのロードを行う
ファンクションブロックであり、この場合には浮動小数
点数のロードである。D2,D4,…などはワードアド
レスを示し、Dは倍長(32ビット)であることを示
す。ファンクションブロック119,121はワードの
ストアを示し、この場合には浮動小数点のストアであ
る。D10,D12はそのワードアドレスである。
【0057】ファンクションブロック114は浮動小数
点加算、ファンクションブロック116は浮動小数点減
算、ファンクションブロック117は浮動小数点乗算、
ファンクションブロック117の下の10.0は固定値
10.0という乗数を示す。固定値でないとき、ファン
クションブロック115のようにロード命令により左よ
り入力する。ファンクションブロック117の結果であ
る積はブロック118,120へ供給される。ここで、
ファンクションブロック118は上限1000.0、下
限0.0のリミッタにより制限し、ファンクションブロ
ック119によりD10にストアする。ファンクション
ブロック120では符号を反転しファンクションブロッ
ク121へ与え、当該ファンクションブロック121で
はD12にストアする。次に、コードアドレスの順に従
って動作(プログラム)内容を説明する。
【0058】20番地:データメモリDMのD2番地の
データを読み出してワードライトスタックWRSへプッ
シュする。このスタックWRSは後記する図12に示す
レジスタ回路90に設けられている。このレジスタ回路
90にはもう1つのワードレフトスタックWLSが設け
られている。これはデータフローの分岐時にデータをセ
ーブしておくのに用いられる。 21番地:データメモリDMのD4番地のデータを読み
出してワードライトスタックWRSにプッシュする。
【0059】22番地:同じくD6番地の内容を読み出
してスタックWRSにプッシュする。ここで、スタック
WRSにはスタックトップよりD6,D4,D2の順序
で格納される。
【0060】23番地:タイプ6の演算繰返し回数Mに
“1”が指定されているので、合計M=2となる。四則
演算はワードライトスタックWRSのスタックトップの
下と、スタックトップとで計算を行い、その結果をスタ
ックトップの下に格納し、スタックをポップする。つま
り、D4とD6とを演算し、その結果をD4の位置にも
っていき、その結果がスタックトップとなる。この状態
を図5の論理式で示している。 (WRS−1)+(WRS)→(WRS−1) WRS↑
【0061】2回目はほぼ同様の演算を行う。つまり、
1回目の結果とD2とで演算を行い、D2の位置に全部
の演算結果を格納する。演算の繰返しはカウンタの内容
によって行い、演算を実行するごとにデクリメントし、
0になると停止する。 24番地:D8番地の内容を読み出してスタックWRS
にプッシュする。
【0062】25番地:さらに、以上の加算結果からD
8を減算し、その結果をスタックWRSにストアする。
このスタックWRSは1回ポップされる。その結果はス
タックトップに格納されている。減算では繰返し指定が
ない。 26番地:乗数10.0をスタックWRSにプッシュす
る。
【0063】27番地:いままでの演算結果と乗数1
0.0とを乗算し、その結果をスタックWRSに格納す
る。このスタックWRSは他と同様にポップするので、
結果はスタックトップに蓄えられる。繰返し指定が0で
あるので1回のみ演算を行う。 28番地:演算結果は接続線が下に分岐しているので、
スタックWLSにプッシュして保存する。 29番地:上限値1000.0をスタックWRSにプッ
シュする。
【0064】30番地:下限値0.0をスタックWRS
にプッシュする。つまり、29番地と30番地とに基づ
いてスタックトップから順に0.0,1000.0を格
納する。
【0065】31番地:スタックWRSに格納されてい
る結果に従っていままでの演算結果にリミットをかけ
る。よって、スタックWRSは2回ポップするので、リ
ミットされた演算結果はスタックトップに格納される。
上下限内であるかは減算により判定する。 32番地:スタックWRSにある演算結果をD10に格
納し、スタックWRSをポップする。 33番地:スタックWLSに格納されている情報をポッ
プし、スタックWRSにプッシュする。 34番地:スタックWRSのスタックトップの内容の符
号反転を行い、再びスタックWRSに格納する。 35番地:スタックWRSのスタックトップの内容をD
12に格納した後、スタックWRSをポップする。 (3) IF THEN ELSEのある演算の処理例
について
【0066】この演算処理例は図6〜図8に示す通りで
ある。図6(a)はデータフロー形式で表したものであ
り、同図(b)は同じ処理例をテキスト形式で表したも
のである。この図6(a)のデータフロー形式は図7,
図8に示すようにプログラムすることができる。すなわ
ち、この図6においてファンクションブロック130は
IF文の始まりを示し、ファンクションブロック136
はTHEN、ファンクションブロック141はELS
E、ファンクションブロック147はFIであってIF
文の最後を示している。また、ファンクションブロック
135は2つの入力の比較を行い、データフローの上側
のデータが下側データ(W12)よりも大きいときにビ
ットレジスタBRが1となる。他のファンクションブロ
ックは図4に示すファンクションブロックの右端のFが
ないだけである。つまり、浮動小数点でないだけであ
り、その他は同様である。次に、IF THEN EL
SEの演算処理につき、図7,図8のプログラムに従
い、かつ、図6(a)を参考しながら説明する。 40番地:この番地はIF文の始まりを示すだけであ
り、特別な処理を行わない。 41番地:ワード(16ビット)W10を読み出してワ
ードライトスタックWRSにプッシュする。 42番地:同じくW11の状態を読み出してワードライ
トスタックWRSにプッシュする。 43番地:ワードライトスタックWRSにプッシュ下W
11とW12とを加算し、その加算結果をスタックWR
Sに格納する。 44番地:前記41番地と同じくW12の内容を読み出
してワードライトスタックWRSにプッシュする。
【0067】45番地:ワードライトスタックWRSの
スタックトップの下のデータがスタックトップよりも大
きいか否かを調べ、大きい場合にはビットレジスタBR
を“1”とし、そうでなければBRを“0”とする。こ
のビットレジスタBRの値は条件判断の元となる。
【0068】46番地:ビットレジスタBRの論理否定
をSIFFに格納する。このSIFFはビット演算回路
80の中にあるフリップフロップの1つであって、ビッ
トレジスタBR、MSFFと同じくフラグレジスタ94
の構成要素となっている。SIFFは分岐のための条件
を記憶する。ELSEでのジャンプの判断、IF文やD
O文が入力されているときの判断など,分岐時に使用さ
れる。ビットレジスタBRが0ならば、51番地のEL
SEにジャンプする。 47番地:この番地以下50番地まではTHENにより
実行される。W13の状態を読み出してスタックWRS
にプッシュする。 48番地:W14の状態を読み出してスタックWRSに
プッシュする。
【0069】49番地:スタックWRSのスタックトッ
プとスタックトップの下の値とを乗算し、その積をスタ
ックトップの下側に格納し、スタックWRSを1つポッ
プする。よって、スタックトップに積が格納されてい
る。 50番地:スタックWRSのスタックトップをW15に
書き込む。そして、スタックWRSを1個ポップする。
【0070】51番地:50番地からきた場合にはSI
FFが0であり、46番地からきた場合にはSIFFは
1である。なお、SIFFが0ならば、SIFFを1に
して58番地のFIにジャンプする。SIFFが1なら
ば、SIFFを0にして52番地以降のELSEにより
実行される命令を行う。 52番地:W13の状態を読み出してスタックWRSに
プッシュする。 53番地:W14の状態を読み出してスタックWRSに
プッシュする。
【0071】54番地:スタックWRSのスタックトッ
プの下の値からスタックトップの値を減算し、差をスタ
ックトップの下に格納する。そして、スタックWRSは
ポップする。 55番地:乗数10をスタックWRSにプッシュする。 56番地:49番地と同様に乗算を実行する。 57番地:スタックWRSをポップし、積をスタックW
RSに格納する。 58番地:SIFFを0にリセットする。 次に、図2に示す中央演算処理ユニットAの各構成回路
の具体的な構成について図9ないし図12を参照しなが
ら説明する。 (1) シーケンサ10(図9参照)
【0072】このシーケンサ10は、マイクロROMに
アドレスを指定し、当該マイクロROMからマイクロプ
ログラム命令を読み出して保持する一方、このマイクロ
プログラム命令をデコーダ20に供給する機能をもって
いる。このシーケンサ10は、マイクロROMにアドレ
ス指定を行うアドレスを保持するマイクロプログラムカ
ウンタ11、このマイクロプログラムカウンタ11のア
ドレスを1つずつ増加させるインクリメンタ12、マイ
クロプログラムのサブルーチンや繰り返し処理時の戻り
番地を記憶するマイクロスタック13、マイクロプログ
ラムのための固定番地を発生するアドレス発生器14な
どが設けられている。
【0073】このアドレス発生器14には、外部から入
力される初期化信号RESET、割込み発生信号IN
T、トラップ発生信号TRAP、ビットジャンプJFF
およびワードジャンプ信号JWFF、コードエラー信号
CDERに対応して予め固定番地が設定され、上記信号
の何れかを受けたときその信号に対応する固定番地が発
生するようになっている。なお、かかる固定番地は以下
の通りである。 2番地…初期化信号RESET 4番地…トラップ発生信号TRAP 5番地…割込み発生信号INT 6番地…コードエラー信号CDER 12番地…ビットジャンプJFFおよびワードジャンプ
信号JWFF。また、シーケンサ10では、インストラ
クションレジスタ回路40のIBレジスタ42からオペ
レーションコードOPを受け取るようになっている。
【0074】なお、図1に示すタイプ6以外のタイプで
は、ビット31〜24までの8ビットのオペレーション
コードOPを用い、その下に2ビットを付加したアドレ
スを用いる。つまり、オペレーションコードOPの4倍
のアドレスを用いることになる。このタイプはマイクロ
ROMのアドレスの1024から2047番地までの領
域が割り当てられる。従って、上位を000001(2
進数)とする。なお、マイクロROMアドレスは16ビ
ットである。
【0075】インデックス修飾のある場合にはアクセス
するアドレスを計算する必要があるので、オペレーショ
ンコードOPの下に第1ビットをインデックス修飾の有
無に用いる。従って、実質9ビット分,つまり512個
分の命令を処理できるが、実際には7/8しか使用しな
い。
【0076】一方、図1に示すタイプ6の場合には、メ
モリのアクセスを伴ないので、オペレーションコードO
Pの位置が他のものと比べてずれている。この場合もオ
ペレーションコードの4倍のアドレスを用いる。このタ
イプではマイクロROMのアドレスとして、2048番
地から4095番地までの領域を割り当てる。従って、
上位を00001(2進数)とする。512命令分のス
ペースがあり、1命令4アドレスのスペースがある。
【0077】このマイクロROMのアドレスのジャンプ
時、MIレジスタ15からマイクロ命令を受け取り、そ
の中のジャンプ先アドレスを示す部分の16ビットによ
りマイクロROMのアドレスを決定する。また、このシ
ーケンサ10には、選択回路16の他、前記レジスタ1
5,MIRレジスタ17が設けられている。従って、こ
の選択回路16は、前述した5種のアドレスのなかから
1つを選択してマイクロROMに与える。ここで、5種
のアドレスとは、 マイクロプログラムカウンタ11の出力アドレス マイクロスタック13の出力アドレス 固定番地を発するアドレス発生器14の出力アドレス インストラクションレジスタ回路(IBレジスタ)42
の出力アドレス MIレジスタ15からのマイクロ命令 である。
【0078】この選択回路16は、初期化時や割込みな
どのような特別な場合にはアドレス発生器14の出力を
選択するが、通常のコントローラ命令を実行するときに
はIBレジスタ42の出力アドレスを選択し、マイクロ
命令が連続するときにはマイクロプログラムカウンタ1
1の出力アドレスを選択し、さらにアドレスをジャンプ
させるときにはMIレジスタ15からマイクロ命令を選
択し、マイクロROMに対してアドレスを指定する。そ
の結果、当該アドレスに基づいてマイクロROMから例
えば32ビットのマイクロ命令が出力され、MIレジス
タ15に格納される。そして、次のサイクルでは、MI
レジスタ15のマイクロ命令FMIRレジスタ17に移
される。つまり、MIレジスタ15には次に実行すべき
マイクロ命令が格納され、MIRレジスタ17には現在
実行中のマイクロ命令が格納される。 (2) デコーダ20(図9参照)
【0079】このデコーダ20には現マイクロ命令デコ
ーダ21および次マイクロ命令デコーダ22が設けられ
ている。この現マイクロ命令デコーダ21はMIレジス
タ15の次に実行すべきマイクロ命令を解釈し、一方、
次マイクロ命令デコーダ22は現在実行中のマイクロ命
令を解釈し、これらの解釈内容に応じて各構成回路に動
作指令S21となる制御信号S22,S23を出力す
る。なお、次実行用マイクロ命令を解釈するのは、4段
のパイプライン処理を行うときにマイクロ命令を先読み
する必要があるためである。 (3) プログラムカウンタ回路30(図9参照)
【0080】このプログラムカウンタ回路30には、コ
ードアドレスを格納する4個のプログラムカウンタ31
〜34の他、選択回路35が設けられている。これらの
プログラムカウンタ31〜34は、1つのプログラムの
実行が完了するごとにコードアドレスを31→32→3
3→34の順序で移動させる。
【0081】プログラムカウンタ31は、インクリメン
タ機能を有し読み込みが完了するごとに1つずつコード
アドレスを増加させ、先読みするコードアドレスを保持
する。プログラムカウンタ31以外のカウンタ32〜3
4はインクリメンタ機能を持つことなくアドレスを保持
するだけである。因みに、カウンタ32は次に実行すべ
きアドレスを保持し、カウンタ33は現在実行中のアド
レスを保持し、カウンタ34は実行を終了したばかりの
アドレスを保持する。
【0082】このプログラムカウンタ回路30において
は、プログラマブルコントローラ命令によって例えば図
7に示す46番地のTHEN命令などでジャンプすると
き、プログラムカウンタ31に51番地を書き込み、併
せてプログラムカウンタ32にも同一番地を書き込む。
これは、いままでのプログラムカウンタ32の内容が無
効になるからである。なお、後記するIBレジスタ42
も無効であるので、当該IBレジスタ42にも無効命令
を書き込む。
【0083】次に、選択回路35は、プログラムカウン
タ31のコードアドレスとデータメモリ制御回路50内
のメモリアドレスレジスタ51からのコードモリCMの
アドレスとの何れでアクセスするかを選択する。通常
は、プログラムカウンタ31のアドレスを選択するが、
コードメモリCMに対して読み出しまたは書き込みを行
うときにはメモリアドレスレジスタ51のアドレスを選
択する。そして、この選択回路35によって選択された
コードアドレスはコードメモリCMに与える。 (4) インストラクションレジスタ回路40(図9参
照)
【0084】このインストラクションレジスタ回路40
は、プログラムカウンタ回路30内の選択回路35のア
ドレス指定によってコードメモリCMから読み出した命
令を保持する回路である。具体的には、プログラムカウ
ンタ31〜34に対応するように4個のインストラクシ
ョンレジスタ41〜44と、パリティビットチェック発
生回路45とからなっている。この回路40もプログラ
ムカウンタ回路30と同様に先読みやパイプライン処理
などのために複数のレジスタを持っている。
【0085】そのうち、AIレジスタ41は先読みした
命令を保持し、BIレジスタ42は次に実行すべき命令
を保持し、IRレジスタ43は現在実行中の命令を保持
し、DRレジスタ44は前のレジスタ43の命令を保持
する。
【0086】つまり、コードメモリCMから読み出した
命令はIAレジスタ41に入力され、各命令の実行が終
了するたびに41→42→43→44へと順次移動させ
る。従って、IBレジスタ42が空になったとき、II
レジスタ41から命令が与えられないと、IBレジスタ
42には無効命令が保持される。なお、データバスBと
は信号線S41,S42を介してデータの入出力を行う
ものである。
【0087】前記パリティビットチェック発生回路45
は、コードメモリCMから読み出した32ビットデータ
と、16ビットデータ毎の2つのパリティビット合計3
4ビットから16ビット毎にパリティビットを作成して
読み出したパリティビットとを比較し、そのエラーの有
無を32ビットの命令および他のエラーとともにIAレ
ジスタ41,IBレジスタ42などに記憶する。これは
かかるエラーを直ちに使用するのではなく、読み出した
命令を実行するときにエラー処理を行うために使用す
る。ここで、前記他のエラーには、例えばコードメモリ
CMのレディ信号が一定時間内に帰らない,いわゆるノ
ーアンサーエラーの他、コードメモリCMの存在しない
領域或いはアクセスが禁止されている領域をアクセスし
た,いわゆるレンジエラーなどを上げることができる。
これらのエラー信号は外部から入力される。
【0088】なお、コードメモリCMの命令を、フェッ
チとしてではなく、データとしてアクセスする場合にデ
ータメモリ制御回路50を用いて行う。また、書き込み
データおよび読み出しデータはすべてデータメモリ制御
回路50とやり取りをしながら書き込みおよび読み出し
を行う。 (5) データメモリ制御回路50(図10参照)
【0089】このデータメモリ制御回路50はデータメ
モリDMとのアクセスを制御する回路である。すなわ
ち、このデータメモリ制御回路50は、メモリアドレス
レジスタ51の他、データメモリDMからのデータを読
み込むメモリデータリードレジスタ52、データメモリ
DMへデータを書き込むメモリデータライトレジスタ5
3、ビット作成回路54およびパリティビットチェック
発生回路55によって構成されている。このパリティビ
ットチェック発生回路55は、前記パリティビットチェ
ック発生回路45と同じくデータメモリDMの32ビッ
トデータのうち16ビット毎のパリティビットを生成
し、書き込み時にはそのパリティビットをデータメモリ
DMに書き込み、また読み出し時には読み出したパリテ
ィビットと生成されたパリティとを比較しながらエラー
が発生しているか否かをチェックする。コードメモリC
Mと同様にパリティエラーの他、ノーアンサーエラー、
レンジエラーなどを検出する。なお、このエラー信号パ
リティビットはRAS機能を確保するために追加された
ものでありる。また、ビット演算の場合には1ビットの
リード、ライトであるので、32ビットのアクセスを必
要としない。16ビットのアクセスが行われる。
【0090】このデータメモリ制御回路50では、メモ
リアドレスレジスタ51がデータバスBおよび信号線S
51を介して送られてくるプログラマブルコントローラ
命令に基づいてアドレスを決定し、データメモリDMに
アドレス信号S52を供給する。データメモリDMへの
アクセスは16ビット,すなわち1ワード単位を最小単
位として用いる。従って、メモリアドレスレジスタ51
は、前記デコーダからの制御信号に基づいて、16ビッ
ト,32ビット,1ビットの何れのアクセスかを把握す
る。この16ビット,32ビットアクセスについては前
記米国インテル社の32ビッマイクロプロセッサ180
386に準拠してBE3#〜BE0#によって指定され
る。BS16#を用いて16ビット幅のメモリへアクセ
スすることも可能である。
【0091】1ビットアクセスの場合、メモリアドレス
レジスタ51は1ビット単位のアドレスが供給されてい
るので、信号線S52を介してワード単位の部分のアド
レス信号をデータメモリDMに供給し、ワード内のどの
ビットかは4ビットのアドレスを信号線S54を通して
ビット作成回路54に与えることによりアクセス可能と
する。
【0092】このとき、データメモリDMからのデータ
読み出し時は、メモリデータリードレジスタ52から1
6ビットデータがビット作成回路54に与えられ、ここ
でビット作成回路54ではメモリアドレスレジスタ51
からの4ビットのアドレスとに基づいて1ビットを選択
し、BA信号線S55を介してビット演算回路80に送
出する構成である。一方、データ書き込み時は、ビット
作成回路54により書き込むべき現在の状態が分かって
いるので、ビット演算回路80から信号線S54を介し
て送られてくる書き込むべき新しいビット状態をBOU
Tとしてビット作成回路54に与えられ、かつ、メモリ
アドレスレジスタ51からの指定ビットのみについてメ
モリデータリードレジスタ52からの信号をBOUTに
置き換え、メモリデータライトレジスタ53に与える。
ここで、初めてメモリデータライトレジスタ53からデ
ータルモリDMにワードデータとして書き込まれる。
【0093】前記ビット作成回路54では、書き込むデ
ータが読み出したデータと同じかをチェックしているの
で、同じ書き込みの場合には書き込まないようにするこ
ともできる。こうすれば、無駄な書き込みをせずに時間
を短縮できる。 (6) アドレスマッチ回路60(図10参照)
【0094】このアドレスマッチ回路60は、データバ
スB,信号線S61,S62を通して指定アドレスが書
き込まれる2つのアドレスマッチレジスタ61,62
と、PCプログラムカウンタ33のコードアドレス信号
とメモリアドレスレジスタ51のアドレス信号とを選択
する選択回路63と、この選択回路63の出力とアドレ
スマッチレジスタ61の出力とを比較する比較回路64
と、PCプログラムカウンタ33の出力とアドレスマッ
チレジスタ62の出力とを比較する比較回路65とによ
って構成されている。そして、通常は比較回路64のみ
を用い、コードフェッチ時には指定アドレスと一致した
かを判定し、2つの指定アドレスが必要な場合には比較
回路65を用いて2つの指定アドレス範囲内にあるか否
かを判定し、アドレスマッチ割込みを発生する。この割
込み信号は信号線S71を介して制御レジスタ回路70
に与えられる。 (7) 制御レジスタ回路70(図11参照)
【0095】この制御レジスタ回路70は、外部信号レ
ジスタ71、プログラムステータスワードレジスタ7
2、カウンタ73およびモードレジスタ74などで構成
されている。この外部信号レジスタ71は割込みやエラ
ーなどの異常状態を記憶し割込みやトラップを発生させ
る機能をもっている。割込み信号としては、信号線S7
1を通して外部から入力される複数の割込み信号の他、
アドレスマッチ割込み、トレース割込み、スタックオー
バーフロー割込み、浮動少数点無効演算などである。
【0096】なお、外部信号レジスタ71は何れかの割
込みを受けたとき、シーケンサ10のアドレス発生器1
4に信号INTを送出するとともに、この割込み発生時
には現在実行中の命令を完了次第、マイクロ番地5にジ
ャンプし、割込みの処理を行う。
【0097】コードメモリCMのパリティエラー、ノー
アンサーエラー、レンジエラーの場合には前記IBレジ
スタ42から当該外部信号レジスタ71に与えられて記
憶される。そして、シーケンサ10のアドレス発生器1
4に信号CDERとして送出し、そのコードを実行する
ときそのコードに対応したマイクロ番地にいくのでな
く、マイクロ番地6にジャンプしエラー処理を行う。こ
のエラー処理は、PCレジスタ33の番地を読み出して
プログラムカウンタ31に書き込み、再度エラーが発生
したコードを読み出す。なお、このとき、演算繰り返し
回数が決められており、その範囲内であれば再読み出し
を行うことにより一過性のエラーを回避する。しかも、
後の診断のためにエラー発生番地、エラー内容、エラー
回数、発生時間などを記憶しておく。
【0098】データメモリDMのパリティエラー、ノー
アンサーエラー、レンジエラ−が発生すると、同様に外
部信号レジスタ71に記憶され、直ちにトラップ信号T
RAPを発生し、マイクロ番地4へジャンプする。この
とき、再度データのアクセスを行い、また同時に演算を
進行させないでデータのアクセスする前と同じ状態にす
るため、各種のレジスタが記憶内容を更新しないように
記憶の禁止信号を発生する。そして、シーケンサ10の
マイクロスタック13に現在のマイクロ番地を記憶し再
度実行するときに取り出せるようにする。マイクロ番地
4以降ではエラーの発生番地、時間、回数を記憶し、指
定回数以内かをチェックし、指定回数以内であれば再度
データのアクセスを行うために前記マイクロスタック1
3のスタックをポップして読み出しその番地へジャンプ
する。指定回数を越えた場合には一過性のエラーではな
いのでエラーを記憶し必要な処理を行う。
【0099】次に、前記フログラムステータスワードレ
ジスタ72は、各種の割込みトラップの許可禁止の指
定、実行に長い時間がかかる命令の場合には途中で割込
みを許可するための命令途中を示す状態表示、前の命令
がプレフィックス命令であることを示す状態表示、タス
クのレベルを示す複数ビットよりなる指定、その他のプ
ログラム状態を表示するビットなどからなり、一部は信
号線S72を介して外部へ出力する。
【0100】また、割込みトラップは、実際にはレジス
タ72から許可される。また、長時間かかる特別な命令
の場合には命令途中を示す状態表示が立っていると、途
中の状態がレジスタ回路90のジェネラルレジスタ91
に格納されているので、それを使って処理を続行する。
このような命令としては、メモリの内容をある番地から
連続して他の番地に移動するようなトランスファ命令が
ある。図1に示すワードアドレスWAは1語の中にイン
デックス修飾を含むことができる(タイプ3)が、ビッ
トアドレスの場合には当該ビットアドレスはワード内の
ビット位置まで必要なために4ビット余計に必要にな
る。その結タイプ1のように1語に納めることができな
いので、タイプ2のようにインデックスは別の命令とす
る。タイプ2の命令はタイプ1の直前に位置させるので
プレフィックス命令とも称する。よって、タイプ1のビ
ット命令が読み出されたとき、その直前にタイプ2のイ
ンデックス修飾命令があるかを前記プレフィックス命令
を示す状態表示により判定し処理を行う。
【0101】なお、プログラマブルコントローラプログ
ラムは複数のタスクに分割されている。タスクが独立し
た実行単位となっている。タスクはその優先度に応じた
レベルをもち、プログラマブルステータスワードレジス
タ72に現在実行中のタスクのレベルを保持し、併せて
外部にも出力する。最も優先度が高いもの,つまりレベ
ルが高いのは割込み時に処理するプログラマブルコント
ローラプログラムであり、通常の状態では複数のレベル
を持つ。レベルの高いタスクが要求されると現在実行中
のタスクはレジスタ72の内容を保存し新しいタスクの
実行に移る。
【0102】次に、前記カウンタ73は、命令実行時に
数をカウントしたり、図5の23番地のADDF,1の
ように同一命令を繰り返すとき繰返す数をカウントす
る。後者の場合、IBレジスタ42から繰返し数が指定
されているので、それをカウントする。その他の場合に
は、データバスBよりカウント数が入力され、カウント
する。
【0103】前記モードレジスタ74は、アドレスマッ
チ回路60の動作モードの指定、浮動少数点演算の丸め
の有無選択等を行う。また、この制御レジスタ回路70
には信号INT,TRAPを作る制御回路を含んでい
る。 (8) ビット演算回路80(図11参照)
【0104】このビット演算回路80は、データメモリ
DMから信号線S55を介して読み出したビット状態B
Aにより命令に従って図4に示す接点の右側の状態を後
の演算のために保持する1ビット幅で16ビットの深さ
をもつライトスタック81と、同様に接点の左側の状態
を保持するレフトスタック82と、ビット演算結果を保
持するフラグ保持回路83と、SFC用のビット演算結
果を保持するSFCレジスタ84と、前記ライトスタッ
ク81,レフトスタック82,フラグ保持回路83,S
FCレジスタ84などの間でデータの授受を行ってビッ
ト演算を行う論理回路85とによって構成され、この論
理回路85の演算結果はBOUTとしてデータメモリ制
御回路50を通してデータメモリDMに書き込む。
【0105】前記フラグ保持回路83は、ビット出力を
保持する信号BOUT、演算用補助信号SIFF、S2
FF、S3FF、ビット演算を無効とする信号JFF、
ワード演算を無効とするJWFF、左母線の状態を示す
マスタコントローラMCFFなどの状態を記憶するフリ
ップフロップがあり、図3に示すビット演算に利用され
る。前記SFCレジスタ84はSFCに使用する8個の
ビット演算用フリップフロップよりなり、論理回路85
により演算が行われる。 (9) レジスタ回路90(図12参照)
【0106】このレジスタ回路90は、ワード演算の途
中経過を保持したり各種のデータを保持する機能を有
し、具体的には32個の32ビットレジスタからなりイ
ンデックス修飾時のアドレス計算や各種数値を記憶する
ジェネラルレジスタ91と、前記スタック81,82に
対応するワード用の32ビットよりなるワードライトス
タック92およびワードレフトスタック93とからなる
3種のレジスタが設けられている。これらスタック92
およびスタック93はレジスタファイルを使用している
ので、これらスタック92,スタック93にはスタック
の位置を指定するスタックポインタ94,95が接続さ
れている。
【0107】なお、前記3種のレジスタ91〜93は6
4個のレジスタからなるレジスタファイルを分割して使
用しているので、例えば最初の40レジスタはジェネラ
ルレジスタ91、16レジスタはワードライトスタック
92、残りの8レジスタはワードレフトスタック93と
して使用し、レジスタファイルは同時に2個のリードと
1個のライトを行う3ポート構成とすることができる。
従って、例えばワードライトスタック92の異なる2ヶ
所を読んで演算し、その結果をワードライトスタック9
2に書き込むという動作をパイプラインを使うことによ
り等価的に1ステップでできる。ワード演算は各スタッ
クに積み上げたデータを演算し、その演算結果をスタッ
クに格納し、最後には外部のメモリに書き込むことにな
る。つまり、各スタック92,93間の演算を可能する
ために工夫がこらされている。
【0108】因みに、ワードライトスタック92の使用
例について述べる。ワードライトスタック92は、スタ
ックトップ(WRS)とするとスタックトップより連続
して下位に4個のレジスタすなわち(WRS),(WR
S−1),(WRS−2),(WRS−3)が読み出せ
るようにスタックポインタ94では命令に応じてレジス
タのアドレスをスタックトップのレジスタアドレスより
計算する。そして、その演算結果は現在のスタックトッ
プの上に積み上げるか、つまり(WRS+1)に書く
か、現スタックトップ(WRS)のデータを捨ててそこ
に書くか、或いは(WRS)、(WRS−1)を捨てて
(WRS−1)に書くか、(WRS)、(WRS−
1)、(WRS−2)を捨てて(WRS−2)に書く
か、以上の4つの何れかが命令に応じて選択される。書
く込む時には、新しいスタックトップのアドレスを計算
し記憶し、次の演算に備える。要するに、常に変化する
スタックトップの位置より選択した4種のレジスタの計
算を行うようにスタックポインタ94ではアドレスの計
算を行い、信号線を介してワードライトスタック92に
指示する。
【0109】なお、ワードレフトスタック93は、レジ
スタの数が少なく、用途からリードはスタックトップ
(WLS)のみ、ライトはスタックトップ(WLS)お
よびスタックトップ(WLS+1)に積み上げかの何れ
かを選択できる。この計算はスタックポインタ94と同
様にスタックポインタ95にて行い、その結果を信号線
を介してワードレフトスタック93に指示する。なお、
ジェネラルレジスタ91は演算結果や途中経過のデータ
を保持するものとしてスタックの代わりに使用すること
もできる。 (10) 固定小数点演算回路A0および乗算回路C0
(図12参照)
【0110】この小数点演算回路A0は、16ビットお
よび32ビットの四則演算,シフト操作を行う機能を有
し、乗算時に後記する乗算回路C0の力を借りながら演
算を実行する。この小数点演算回路A0の特徴の1つは
演算結果がリミッタによりオーバフローを防止するよう
に構成されていることである。オーバフローの場合には
処理時間がかかり、このコントローラの用途である浮動
小数点演算には不向きであるためである。これによって
演算は何時でも一定の処理時間で処理でき、実時間の応
用では応答時間を一定にできる。
【0111】この小数点演算回路A0は、具体的にはデ
ータバスBから送られてくる演算用データをラッチする
ラッチ回路A1,A2、これらラッチ回路A1,A2の
ラッチデータを用いて演算を行う演算部A3、この演算
部A3の演算結果を上下限でリミットするリミッタA
4、データバスBからの演算用データを保持するバレル
シフタA5、演算の種類に応じてこれらリミッタA4の
出力およびバレルシフタA5の出力などを選択する選択
回路A6、この選択回路A6の選択データのうち結局固
定小数点の演算結果を保持するパイプラインレジスタA
7およびフラグレジスタA8などから構成されている。
【0112】前記演算部A3は、加算,減算,絶対値,
補数などの各種の数値演算,論理和,論理積などの論理
演算、除算のための演算などを行う。この除算では引き
放し法により演算を行う。この方法では、前の桁の演算
結果である部分剰余の符号より演算部A3における加算
または減算を決定する。図12には図示されていない補
助回路では部分剰余の保持,シフト,除算結果の符号の
保持などを行う。一方、バレルシフタA5では、論理シ
フト,算術シフト,ローテート(回転)の処理を行う。
【0113】一方、乗算回路C0は、チップサイズを小
さくするために小数点演算回路A0および後記する浮動
小数点演算回路B0と共用して使用する。従って、前記
選択回路A6はこの切り替えのためにあり、固定小数点
演算回路A0および浮動小数点演算回路B0を選択する
選択回路C1,C2およびこれら選択回路C1,C2の
出力を乗算する乗算器C3からなり、かつ、この乗算器
C3の出力が固定小数点演算回路A0および浮動小数点
演算回路B0に送出されている。この乗算器C3は、固
定小数点演算のために16ビット×16ビットの乗算を
行い、32ビットの積を出力する。浮動小数点では24
×24の乗算を行い、24ビットの積を出力する。
【0114】従って、このプログラマブルコントローラ
は、パイプライン方式の処理を行うものであって、前述
したようにパイラインレジスタとしてのバレルシフタA
5に演算結果を保持し、次のサイクルで最終目的地へデ
ータを移す。通常はレジスタ回路90が最終目的地とな
る。つまり、固定小数点演算回路A0から最終目的地ま
での処理時間がパイプラインにより無視できることにな
り等価的に速くなる。実際には最終目的地にデータがな
いにも拘らず、次のマイクロ命令はあたかもデータがあ
るものとしてデータを読み出す。このために最終目的地
の代わりにパイプラインレジスタからデータバスBへデ
ータを出力する。同様の回路は、浮動小数点回路B0の
パイプラインレジスタB1、データメモリ制御回路50
のメモリデータリードレジスタ52の内部のレジスタ等
にもある。
【0115】この固定小数点演算回路A0の演算結果の
フラグ信号SA1はフラグレジスタA8に保持する。こ
のフラグレジスタA8は浮動小数点演算回路B0のフラ
グ信号SB1をも保持する。 (11) 浮動小数点演算回路B0(図12参照)
【0116】この浮動小数点演算回路B0では、加減演
算を行い、さらに加減演算を基本とする比較演算や絶対
値,補数などを行う。乗算は仮数の演算を前記乗算回路
C0で行い、指数は本回路B0で実行する。除算も同様
に仮数は固定小数点演算回路A0の固定小数点での除算
演算部分を用いて行い、指数は本回路B0で実行する。
浮動小数点の演算は前のべたように指数と仮数に分けて
行うものである。
【0117】この浮動小数点演算回路B0は、具体的に
はデータバスBから送られてくるデータをラッチするラ
ッチ回路B2,B3に記憶される。この回路B0では他
回路とのデータの授受を容易にするためにIEEE規格
を用いるが、このときの仮数は最上位のビットが隠され
ているのでこれを復元する。そして、仮数および符号は
仮数を演算する桁合せ回路B4および乗算回路C0に与
えられ、さらに指数は指数加減算回路B5および選択回
路B6に送られる。また、指数と仮数との二数を比較回
路B7に供給する。この比較回路B7は、指数と仮数を
入力し、この二数の絶対値の大小を比較するもので、そ
の比較結果の信号を用いて加減算時に桁合せのためにシ
フトするのが二数のうちどちらかを決定する。
【0118】前記指数加減算回路B5は、加算時または
減算時にシフトする桁数を計算し桁合せ回路B4に供給
し、また乗算・除算時には積または商の指数を指数の加
算または減算により計算し選択回路B6に供給する。な
お、加算時または減算時の和または差の指数は絶対値の
大きい方の数の指数であるから、比較回路B7の結果よ
りも指数加減算回路B5の出力またはラッチ回路B2,
B3の出力を選択する。この選択回路B6の出力は丸め
正規化補正回路B8に与えられる。この丸め正規化補正
回路B8では、仮数の演算結果によるキャリーやボロー
によって指数の増減が出るのでそのための補正、IEE
E規格では指数がバイアスされているのでそのための演
算、仮数の丸めによって生じる指数の補正を行う。そし
て、この出力はパイプラインレジスタB1に送られる。
【0119】B9は演算部であって、これは仮数の演算
のうち乗・除算以外の加減算を行う演算では桁合せを行
った後の信号の演算を行い、その結果の信号を選択回路
B10を介して丸め正規化回路B11に供給する。この
丸め正規化回路B11は、最近値の丸めを採用し加算を
行って丸めを実行する。丸めにより、または演算部B9
の計算の結果正規化のために桁をずらして指数を補正す
る必要があれば、桁のシフトを行い、前記指数の計算の
ために丸め正規化補正回路B8にも送出する。この丸め
正規化回路B11の出力は正規化された数値と符号であ
り、デノーマル数(非正規化数)は零にしてある。一
方、指数の演算結果である丸め正規化補正回路B8の出
力はIEEE規格に準拠するためにバイパスを加えたデ
ータである。これら符号,仮数および指数はパイプライ
ンレジスタB1で統合して記憶される。そして、他のパ
イプラインレジスタと同様の機能を有し、データバスB
とに送られる。
【0120】乗算の場合には、乗算回路C0から仮数の
積を得た後、選択回路B10を介して丸め正規化回路B
11および丸め正規化補正回路B8に送られ、丸めおよ
び正規化を行う。指数は加算を行う。一方、除算の場合
には、仮数の除算を固定小数点演算回路A0で行い、図
示していないが選択回路B10に与えて乗算の場合と同
様な処理を処理を行う。指数は減算を行う。
【0121】次に、以上のような実施例の動作について
図13および図14を参照して説明する。なお、図13
および図14は図3〜図7のプログラムの一部の処理状
況をタイムチャートで表した図である。図13はビット
演算の例であり、図14は浮動小数点演算の例である。
t1,t2,…はタイミングを示し、0,1,2…はコ
ードメモリCMの番地に対応している。この図から明ら
かなように、例えば0番地のコード,つまり命令は各構
成要素で同時に実行されていることを示す。
【0122】図13のビット演算について説明する。プ
ログラムカウンタ31からコードバスS31を介してコ
ードメモリCMに対して0番地を指定し、当該コードメ
モリCMの0番地からのコードをコードバスS41を通
して読み出す。ここで、0番地に着目すると、時刻t1
では、プログラムカウンタ31(APC)が0番地であ
り、この0番地のコードを読んで次の時刻t2ではレジ
スタ42(IB)に蓄え、このコードに対応するマイク
ロ命令をマイクロバスS12から読み出す。このとき、
プログラムカウンタ31(APC)は次の1番地を示
し、コードメモリCMに対し1番地を指定し次のコード
を読み出している。このとき、0番地のアドレスはプロ
グラムカウンタ32(BPC)に保持されている。これ
は割込みやアドレスの一致を見るときに実際に実行して
いるコードの番地が必要になるためである。
【0123】次に、時刻t3では、読み出したマイクロ
命令によりコードの処理を行う。すなわち、コードの示
すビットアドレス×1をデータバスから読み出す。そし
て、プログラムカウンタ32(BPC)の内容をプログ
ラムカウンタ33(PC)へ、レジスタ42(IB)の
内容をレジスタIRへ移す。
【0124】時刻t4では、データメモリDMからデー
タバスS51を介して読み出したデータを用いてビット
演算を実行する。マイクロ命令は既に前時刻で使った命
令を記憶しておき、ビット演算回路80に指令を与え
る。プログラムカウンタ33(PC)の内容はプログラ
ムカウンタ34(DPC)へ、レジスタ43(IR)の
内容はレジスタ44(ID)へ移す。以上のようにして
4つのタイミングステップで基本的な処理が行われ、4
段のパイプライン方式をとる。
【0125】次に、時刻t5では、データバスのアクセ
スに遅れがあり、2サイクルでアクセスできた例であ
る。コードメモリCMから読み込んだコードはレジスタ
42(IB)以下がシフトできないのでレジスタ41
(IA)に蓄えられる。
【0126】時刻t7,t8では、コードバスのアクセ
スが遅れた例である。新しいコードが入らないので、無
効命令NOPがレジスタ42(IB)に蓄えられる。通
常,以上のようなデータバスおよびコードバスの遅れは
ないので、常に3つのバス(S11,S12)、(S3
1,S41)、(S51,S52)がデータを読み書き
する状態を連続させる。
【0127】次に、浮動小数点演算(図14)について
説明する。浮動小数点演算は殆んどの命令が1サイクル
で終わるので、処理的には図13に近いが、浮動小数点
演算では命令の実行に時間がかかる。23番地,25番
地および27番地の加算,減算および乗算は2サイクル
の時間がかかる。時刻t4からt7までは加算を2回行
う。そして、一回の演算には2サイクルかかるので、合
計4サイクルの時間が待たされる。この様子を図で示し
ている。t9,t10,t12,t13も同様である。
2サイクルかかる命令では、マイクロ命令は2つの命令
を読み出して処理する。23番地のような2回繰返すケ
ースではシーケンサ10でマイクロスタック13に開始
番地を記憶しこれを二回目に使用する。従って、以上の
ような実施例の構成によれば、次のような効果を有す
る。 イ.合理的な命令体系のによって構成を簡素化できる。
【0128】すなわち、全ての命令は例えば32ビット
の固定長であり、命令の頻度が多く高速化が強く要求さ
れているビット演算命令の場合にはその1語にオペレー
ションコードとビットアドレスを挿入し、その他のワー
ド単位の各種演算命令にはデータのロード命令,ストア
命令と通常の演算命令とに分け、データのロード,スト
ア命令のみ即値(イミーヂェート)を含む各種のアドレ
シッシングモードを可能とし、通常の演算命令の場合に
は複数のスタックの演算のみとした。この様にすること
により、通常の演算命令は1語の中に多くのビットを必
要とするワードアドレスや即値やインデックスを入れる
必要がなくなり、命令の種類がアドレッシングモードの
種類分必要でなくなる。よって、多数の演算命令を一語
の中に入れることができ、必要とする高機能な命令を多
く収納できる。一方、ハードウェア的には、命令体系が
簡単になり、ひいては論理が簡単となるので、ハードウ
ェアの縮小化と高速化が可能となる。タスクを2種もつ
ことにより、演算のデータを保存し、演算結果を複数に
分岐することにより図形表示とよく対応させることがで
きる。 ロ.ハードウエアの削減および高速化が図れる。
【0129】プログラマブルコントローラの主要な構成
回路が1つのチップに集積化でき、これによって内部バ
スBを介して各構成回路の間で迅速にデータの授受を行
うことができる。データバスBに乗せられない制御信号
は直接接続される。
【0130】従来のコントローラは、複数のチップ間を
接続するのにはバッフアのためのICが必要になり、ハ
ードウェアが多くなる。その結果、接続点が多くできな
いこと、そらに高速化が難しい問題があった。
【0131】本発明のコントローラは、内部のデータバ
スBに共通にビット演算回路80、固定小数点演算回路
A0、浮動小数点演算回路B0、レジスタ回路90を接
続したので、パイプライン構成を作ることができた。ビ
ット演算と固定小数点演算または浮動小数点演算が同時
に行われる比較命令(例えば2つの数を比較しその結果
をビットレジスタへ格納する)のような場合、相互の接
続が時間遅れなく合理的にできる。演算の種類を変更す
る場合でもオーバーヘッドがない。例えば浮動小数点演
算回路B0は、浮動小数点数を固定小数点に変え、次に
固定小数点演算を行うとき切り替えが遅滞なく行われる
パイプラインレジスタを使うことができる。また、乗算
器C3を含む乗算回路C0は回路規模が大きい回路であ
るが、同一チップに入れることにより、固定小数点と浮
動小数点の演算に共用できる。従って、以上のように1
つのチップに殆んどの回路を入れることにより、回路規
模の縮小化はもとより、高速動作およびコスト的に安価
に実現できる。 ハ.命令ステップの節約 通常の演算命令に演算回数を指定することで、同一の演
算を複数繰返し、命令ステップの短縮と図形表現との一
致を図ることができる。 ニ.エラー発生時の再実行
【0132】コードメモリCMまたはデータメモリDM
にエラーが発生したとき、エラーの発生を検出するのみ
では信頼性のあるプログラマブルコントローラとは言え
ない。つまり、エラーが発生したとき、いままで保存し
ていた演算結果はエラーのデータにより破壊されないこ
と、過度的なエラーであれば再実行により演算が継続で
きることが必要である。コードメモリについては先読み
しているので検出すると割込みは読み出されたコードを
実行中に見つけるので、いままで保持した演算結果を破
壊しないで再実行するのが難しい。
【0133】しかし、本発明コントローラは、メモリの
エラー検出時に記憶の更新を禁止する信号を出力するの
で、データが破壊されたり、過度的なエラーの回避を図
ることができる。なお、本発明は上記実施例に限定され
るものではない。
【0134】その1つは、レジスタ回路90の改良であ
って、例えばレベルに応じて複数のレジスタを持つよう
にしてもよい。一般に、割込みが発生したときレジスタ
の内容をセーブする必要があるが、この時間を短縮した
い。短縮すれば応答性が良くなる。タスクはレベルをも
つ。
【0135】つまり、プログラマブルコントローラのプ
ログラムは幾つかのタスクに分かれ、しかも割込みタス
ク,高速タスク,中速タスク,低速タスクのように種別
に応じてレベル分けする。同一レベルでないタスクの場
合には優先度がないが、異なるレベルでは前者ほど(つ
まり,割込みタスク,高速タスクの順)優先度が高いの
で、割込みが発生したときや時計割込みにより実行時間
になるとレベルの高いタスクに制御が移り、いままで実
行されていたタスクは中断する。従って、タスクレベル
毎にレジスタ回路90にあるジェネラルレジスタやスタ
ックを持てば、これらのデータをセーブしたり、或いは
ロードしたりする時間は不必要になる。同一レベル内で
は、タスクが完了したら次のタスクを実行するので、こ
れらの時間は不要である。技術の進歩によりさらに多く
の素子を1つのチップの中に内蔵できるようになるの
で、将来的には容易に実現できる。なお、4レベルのタ
スクがあったとして2組のレジスタを持っても、オーバ
ーヘッドの減少には効果がある。ハードウェアの制限が
ある場合にはこのように複数のレジスタをもつことでも
よい。
【0136】従って、この構成によれば、タスク毎にス
タック、ジェネラルレジスタを持つことにより、タスク
の切り替え時間を短縮し、応答性のよいプログラマブル
コントローラを実現できる。
【0137】さらに、集積化した中央演算処理ユニット
AにマイクロROMを内蔵することもできる。このマイ
クロROMは、チップサイズを減らすこと、マイクロプ
ログラムの変更を容易にすることなどから外付けした
が、技術の進歩およびEEPROM素子などが容易,か
つ、安価に実現されれば、容易に内蔵可能となるもので
ある。
【0138】
【発明の効果】以上説明したように本発明によれば、次
のような種々の効果を奏する。
【0139】
【0140】請求項1,2の発明によれば、主要回路を
1つのチップに集積化することにより、ビット演算はも
とより、比較的低速とされていたワード演算や浮動小数
点演算もビット演算と同様に高速処理を実現できる。
【0141】さらに、請求項3によれば、過度的なエラ
ーの検出時に再演算を実行可能とすることにより、RA
S機能を確保できる。また、メモリの割込みや異常に対
して、各構成回路の記憶更新を禁止することにより誤演
算を防止できる。さらに、請求項4の発明では、タスク
の切り替え時間を短縮でき、応答性のよいコントローラ
を実現できる。
【図面の簡単な説明】
【図1】 本発明に係わるプログラマブルコントローラ
に用いる各種演算の命令構成を示す図。
【図2】 本発明に係わるプログラマブルコントローラ
の一実施例を示すハードウェア構成図。
【図3】 本発明によるビット演算を行うためのプログ
ラム例、図形表現と命令語の内容および動作を説明する
図。
【図4】 本発明による数値演算を行うためのデータフ
ロー形式図。
【図5】 図4のデータフロー形式をプログラム的に表
した図。
【図6】 IF THEN ELSEの演算を行うため
のデータフロー形式およびテキスト形式図。
【図7】 図6のIF THEN ELSEのプログラ
ム図。
【図8】 同じく図6のIF THEN ELSEのプ
ログラム図。
【図9】 図2に示すコントローラの一部を具体的に示
す構成図。
【図10】 図2に示すコントローラの一部を具体的に
示す構成図。
【図11】 図2に示すコントローラの一部を具体的に
示す構成図。
【図12】 図2に示すコントローラの一部を具体的に
示す構成図。
【図13】 図3のプログラムの一部をタイムチャート
で表した図。
【図14】 図4および図5のプログラムの一部をタイ
ムチャートで表した図。
【図15】 従来のプログラマブルコントローラのハー
ド構成図。
【符号の説明】
ROM…マイクロプログラムROM、CM…コードメモ
リ、DM…データメモリ、PIO…プロセス入出力回
路、A…中央演算処理ユニット、B…データバス、10
…シーケンサ、20…デコーダ、30…プログラムカウ
ンタ回路、40…インストラクションレジスタ回路、5
0…データメモリ制御回路、60…アドレスマッチ回
路、70…制御レジスタ回路、80…ビット演算回路、
90…レジスタ回路、A0…固定小数点演算回路、B0
…浮動小数点演算回路、C0…乗算回路。
フロントページの続き (56)参考文献 特開 昭61−62902(JP,A) Piguet,C.Binary−d eision and RISC−li ke machives for se micustom design,Mi croprocessors and Micro Systems,Vol. 14,No.4,1990年5月,p.231− 239 Knippr,G.,Upgracl iug with RISC Micr ocontrollers,Machi nc Design,vol.62,N o.17,1990年8月23日,p.140,142 山下善臣ほか、プログラマブルコント ローラ専用CPUの一構成法,電子情報 通信学会論文誌,Vol.J72−D− I,No.8,1989年8月,p.583− 591 (58)調査した分野(Int.Cl.7,DB名) G06F 9/32 G05B 19/05

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】マイクロ命令を保持するマイクロプログラ
    ムメモリ、命令語として同一ビット長さをもつ1語とし
    て演算処理を実行させる各演算命令を保持するコードメ
    モリ、演算処理用データを保持するデータメモリと、前
    記マイクロプログラムメモリのマイクロ命令およびコー
    ドメモリの各演算命令を用いて前記データメモリに保持
    されている演算処理用データの演算を実行する集積化さ
    れた中央演算処理ユニットとで構成され、前記中央演算
    処理ユニットは、前記マイクロプログラムメモリにアド
    レスを指定し、当該アドレスのマイクロ命令を読み出す
    シーケンサと、このシーケンサによって読み出されたマ
    イクロ命令を解読して各構成回路に動作指令を与えるデ
    コーダと、前記コードメモリに対して実行すべきアドレ
    ス、実行中アドレスおよび実行後のアドレスを保持する
    レジスタを持ったプログラムカウンタ回路と、前記コー
    ドメモリの命令および異常状態を保持する前記プログラ
    ムカウンタ回路のカウンタと対応するレジスタを有する
    インストラクションレジスタ回路と、このインストラク
    ションレジスタ回路から読み出された命令に基づいて前
    記データメモリの演算処理用データを読み書きするデー
    タメモリ制御回路と、前記コードメモリのアドレス又は
    前記データメモリのアドレスを選択して指定された第1
    のアドレスと比較し、前記コードメモリのアドレスと指
    定された第2のアドレスと比較し、指定された前記コー
    ドメモリのアドレスの命令が実行中であるか、または指
    定された前記データメモリのアドレスのデータが使用さ
    れているか、または実行中の前記コードメモリのアドレ
    スが指定された2つのアドレスの範囲内にあるかどうか
    を判定するアドレスマッチ回路と、前記コードメモリや
    データメモリなどから割込みや異常を受け、その状態を
    前記シーケンサその他必要な構成回路に送出する制御レ
    ジスタ回路と、前記コードメモリからの命令に基づいて
    ビット演算を実行し、かつ、その演算結果を保持するビ
    ット演算回路と、ワード演算の途中経過データその他演
    算途中のデータを保持するレジスタ回路と、前記コード
    メモリからの命令に基づき、かつ、共用の乗算回路を用
    いて固定小数点演算,論理演算などを実行する固定小数
    点演算回路および浮動小数点演算回路とを備えたことを
    特徴とするプログラマブルコントローラ。
  2. 【請求項2】マイクロ命令を保持するマイクロプログラ
    ムメモリ、命令語として同一ビット長さをもつ1語とし
    て演算処理を実行させる各演算命令を保持するコードメ
    モリ、演算処理用データを保持するデータメモリと、前
    記マイクロプログラムメモリのマイクロ命令およびコー
    ドメモリの各演算命令を用いて前記データメモリに保持
    されている演算処理用データの演算を実行する、マイク
    ロ命令を保持するマイクロプログラムメモリを含んで集
    積化する中央演算処理ユニットとで構成され、前記中央
    演算処理ユニットは、前記マイクロプログラムメモリに
    アドレスを指定し、当該アドレスのマイクロ命令を読み
    出すシーケンサと、このシーケンサによって読み出され
    たマイクロ命令を解読して各構成回路に動作指令を与え
    るデコーダと、前記コードメモリに対して実行すべきア
    ドレス、実行中アドレスおよび実行後のアドレスを保持
    するレジスタを持ったプログラムカウンタ回路と、前記
    コードメモリの命令および異常状態を保持する前記プロ
    グラムカウンタ回路のカウンタと対応するレジスタを有
    するインストラクションレジスタ回路と、このインスト
    ラクションレジスタ回路から読み出された命令に基づい
    て前記データメモリの演算処理用データを読み書きする
    データメモリ制御回路と、前記コードメモリのアドレス
    又は前記データメモリのアドレスを選択して指定された
    第1のアドレスと比較し、前記コードメモリのアドレス
    と指定された第2のアドレスと比較し、指定された前記
    コードメモリのアドレスの命令が実行中であるか、また
    は指定された前記データメモリのアドレスのデータが使
    用されているか、または実行中の前記コードメモリのア
    ドレスが指定された2つのアドレスの範囲内にあるかど
    うかを判定するアドレスマッチ回路と、前記コードメモ
    リやデータメモリなどから割込みや異常を受け、その状
    態を前記シーケンサその他必要な構成回路に送出する制
    御レジスタ回路と、前記コードメモリからの命令に基づ
    いてビット演算を実行し、かつ、その演算結果を保持す
    るビット演算回路と、ワード演算の途中経過データその
    他演算途中のデータを保持するレジスタ回路と、前記コ
    ードメモリからの命令に基づき、かつ、共用の乗算回路
    を用いて固定小数点演算,論理演算などを実行する固定
    小数点演算回路および浮動小数点演算回路とを備えたこ
    とを特徴とするプログラマブルコントローラ。
  3. 【請求項3】制御レジスタ回路は、前記コードメモリや
    データメモリなどから割込みや異常を受けると、前記プ
    ログラムカウンタ回路に対して所定の演算繰返し回数内
    で前記コードメモリに対する再読み出しを実行させる手
    段と、前記データメモリの割込みや異常に対し前記シー
    ケンサに各構成回路のレジスタに記憶更新を禁止させる
    手段とを有することを特徴とする請求項1または2記載
    のプログラマブルコントローラ。
  4. 【請求項4】レジスタ回路は、ワード演算用スタックお
    よびジェネラルレジスタを複数有し、タスクのレベル切
    り替えに応じてワード演算用スタックおよびジェネラル
    レジスタを切り替えるようにしたことを特徴とする請求
    項1または2記載のプログラマブルコントローラ。
JP27970491A 1991-10-25 1991-10-25 プログラマブルコントローラ Expired - Lifetime JP3369204B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP27970491A JP3369204B2 (ja) 1991-10-25 1991-10-25 プログラマブルコントローラ
KR1019920019715A KR960011277B1 (ko) 1991-10-25 1992-10-26 프로그래머블 콘트롤러
US08/428,839 US5613143A (en) 1991-10-25 1995-04-25 Programmable controller for high-speed arithmetic operations

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP27970491A JP3369204B2 (ja) 1991-10-25 1991-10-25 プログラマブルコントローラ

Publications (2)

Publication Number Publication Date
JPH05120007A JPH05120007A (ja) 1993-05-18
JP3369204B2 true JP3369204B2 (ja) 2003-01-20

Family

ID=17614719

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27970491A Expired - Lifetime JP3369204B2 (ja) 1991-10-25 1991-10-25 プログラマブルコントローラ

Country Status (3)

Country Link
US (1) US5613143A (ja)
JP (1) JP3369204B2 (ja)
KR (1) KR960011277B1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933651A (en) * 1995-09-29 1999-08-03 Matsushita Electric Works, Ltd. Programmable controller
JP3711422B2 (ja) * 1995-12-20 2005-11-02 セイコーエプソン株式会社 情報処理回路
KR100413674B1 (ko) * 1996-12-05 2004-02-14 삼성전자주식회사 하드와이어드 서브루틴 생성장치
EP0992887B1 (en) * 1998-10-06 2010-03-03 Texas Instruments Inc. Memory access using byte qualifiers
US6587463B1 (en) * 1999-12-13 2003-07-01 Ascend Communications, Inc. Packet classification engine
KR20010091132A (ko) * 2000-03-13 2001-10-23 구자홍 마이크로 프로세서의 데이터 연산 처리기
US6658621B1 (en) * 2000-06-30 2003-12-02 Intel Corporation System and method for silent data corruption prevention due to next instruction pointer corruption by soft errors
US6970998B1 (en) 2002-02-22 2005-11-29 Redback Networks Inc. Decoding suffix instruction specifying replacement destination for primary instruction
US9182937B2 (en) 2010-10-01 2015-11-10 Z124 Desktop reveal by moving a logical display stack with gestures
US8659565B2 (en) 2010-10-01 2014-02-25 Z124 Smartpad orientation
US7719876B2 (en) 2008-07-31 2010-05-18 Unity Semiconductor Corporation Preservation circuit and methods to maintain values representing data in one or more layers of memory
US20120084737A1 (en) 2010-10-01 2012-04-05 Flextronics Id, Llc Gesture controls for multi-screen hierarchical applications

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3831148A (en) * 1973-01-02 1974-08-20 Honeywell Inf Systems Nonexecute test apparatus
US3930232A (en) * 1973-11-23 1975-12-30 Raytheon Co Format insensitive digital computer
US4162519A (en) * 1975-01-20 1979-07-24 Nixdorf Computer Ag Data processor with address allocation to operations
JPS5317240A (en) * 1976-07-31 1978-02-17 Toshiba Corp Controller
US4270184A (en) * 1978-03-16 1981-05-26 Tokyo Shibaura Denki Kabushiki Kaisha Microprocessor-based programmable logic controller
DE3302929A1 (de) * 1983-01-28 1984-08-02 Siemens AG, 1000 Berlin und 8000 München Speicherprogrammierbare steuerung
JPS62169205A (ja) * 1986-01-22 1987-07-25 Hitachi Ltd プログラマブルコントロ−ラ
DE3751503T2 (de) * 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
JPH05197545A (ja) * 1991-12-10 1993-08-06 Mitsubishi Electric Corp マイクロコンピュータ
JPH05334075A (ja) * 1992-04-13 1993-12-17 Nec Corp ディジタルプロセッサ

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Knippr,G.,Upgracliug with RISC Microcontrollers,Machinc Design,vol.62,No.17,1990年8月23日,p.140,142
Piguet,C.Binary−deision and RISC−like machives for semicustom design,Microprocessors and Micro Systems,Vol.14,No.4,1990年5月,p.231−239
山下善臣ほか、プログラマブルコントローラ専用CPUの一構成法,電子情報通信学会論文誌,Vol.J72−D−I,No.8,1989年8月,p.583−591

Also Published As

Publication number Publication date
KR960011277B1 (ko) 1996-08-21
US5613143A (en) 1997-03-18
JPH05120007A (ja) 1993-05-18
KR930008605A (ko) 1993-05-21

Similar Documents

Publication Publication Date Title
US6332186B1 (en) Vector register addressing
JP3969895B2 (ja) データ型によるコプロセッサの操作コードの分割
US6170001B1 (en) System for transfering format data from format register to memory wherein format data indicating the distribution of single or double precision data type in the register bank
US4713750A (en) Microprocessor with compact mapped programmable logic array
JP3369204B2 (ja) プログラマブルコントローラ
EP0450802A2 (en) Arithmetic unit
JP2834292B2 (ja) データ・プロセッサ
JP2581236B2 (ja) データ処理装置
JP2847974B2 (ja) データ処理装置
CN106415483B (zh) 具有对可变长度数的支持的浮点单元
US6370639B1 (en) Processor architecture having two or more floating-point status fields
JPH0863367A (ja) テストベクトルを発生する方法およびテストベクトル発生システム
JPH04260927A (ja) データ処理装置
CN112182999B (zh) 一种基于mips32指令系统的三级流水线cpu设计方法
JPH07120284B2 (ja) データ処理装置
US6212539B1 (en) Methods and apparatus for handling and storing bi-endian words in a floating-point processor
JP2004038327A (ja) データ処理装置
JPH04260929A (ja) データ処理装置
US6223275B1 (en) Microprocessor with reduced instruction set limiting the address space to upper 2 Mbytes and executing a long type register branch instruction in three intermediate instructions
JPH10143494A (ja) スカラ/ベクトル演算の組み合わせられた単一命令複数データ処理
JP2001501755A (ja) データ処理条件コード・フラグ
US5822786A (en) Apparatus and method for determining if an operand lies within an expand up or expand down segment
WO2000070447A2 (en) Method and apparatus for jump delay slot control in a pipelined processor
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리
US6505225B1 (en) Adder logic circuit and processor

Legal Events

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

Free format text: PAYMENT UNTIL: 20071115

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20081115

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20091115

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20101115

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20101115

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20111115

Year of fee payment: 9

EXPY Cancellation because of completion of term