JP3723243B2 - プロセッサ装置及びその制御方法 - Google Patents

プロセッサ装置及びその制御方法 Download PDF

Info

Publication number
JP3723243B2
JP3723243B2 JP27728794A JP27728794A JP3723243B2 JP 3723243 B2 JP3723243 B2 JP 3723243B2 JP 27728794 A JP27728794 A JP 27728794A JP 27728794 A JP27728794 A JP 27728794A JP 3723243 B2 JP3723243 B2 JP 3723243B2
Authority
JP
Japan
Prior art keywords
write
register
data
cpu
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP27728794A
Other languages
English (en)
Other versions
JPH08137751A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP27728794A priority Critical patent/JP3723243B2/ja
Priority to US08/502,351 priority patent/US5796996A/en
Publication of JPH08137751A publication Critical patent/JPH08137751A/ja
Application granted granted Critical
Publication of JP3723243B2 publication Critical patent/JP3723243B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

【0001】
【産業上の利用分野】
本発明は、CPUの外部メモリ等に対する書込命令の実行結果を格納して命令を終了させる出力バッファを備えたプロセッサ装置とその制御方法に関し、特に外部メモリ上のメモリマップドレジスタに対するCPUの書込命令で、外部出力バッファに格納された書込アドレスと書込データのビットマップドレジスタに対する書込動作を、後続するCPUの読出命令に同期して終了させるためのプロセッサ装置及びその制御方法に関する。
【0002】
【従来の技術】
近年、メモリの階層化によるCPUの高速化技術の1つに、CPUによる書込命令の実行で外部メモリや外部メモリ上に形成されたメモリマップドレジスタなどに出力されるデータを、CPU内部バッファ及びCPU外部のバッファに格納し、書込命令を終了させる命令処理方法がある。このバッファを出力バッファという。
【0003】
出力バッファとしては、通常、CPU内部に設けた1次キャッシュ部のキャッシュメモリをストアバッファとして使用した内部出力バッファと、CPU外部の2次キャッシュ部のキャッシュメモリを使用した外部出力バッファがある。
この命令処理方法は、CPUが実行した外部のメモリへのデータ出力(書込アドレスと書込データ)を伴う書込命令を、出力バッファにデータを格納した時点で終了させ、これによって実際のメモリへの書込時間、即ちCPUが拘束される時間の短縮を図るものである。
【0004】
図19は従来の出力バッファを用いた命令処理方法である。まずCPU700が制御プログラムに従って外部メモリ740に対する書込命令800を実行する。この書込命令800の実行はCPU700の内部出力バッファ710に対する書込アドレスと書込データの格納で正常終了となり、CPU700は開放される。
【0005】
内部出力バッファ710から2次キャッシュユニット720の外部出力バッファ730への転送書込み810は、CPU700の命令実行とは非同期に順次行われる。また外部出力バッファ730からアクセス対象である外部メモリ740への書込みも、同様にCPU700の命令実行とは非同期に順次行われる。
ここで内部出力バッファ710から外部出力バッファ730への書込み、又は外部出力バッファ730から外部メモリ740への書込みにおいて異常が発生した場合、内部出力バッファ710及び外部出力バッファ730は、格納済みのアドレス及びデータを保持した状態で凍結され、以降、CPU700プログラムが凍結解除指令を行うまで凍結状態を継続させる。
【0006】
この間、外部メモリ740への書込動作を伴うCPU700の命令の実行は、内部出力バッファ710及び外部出力バッファ730を使用せず、直接、外部メモリ740に対し書込動作が行われる。またCPU700は、凍結状態で書込み回復処理を実行する。この書込み回復処理は、内部出力バッファ710及び外部出力バッファユニット730の凍結で保持されている書込アドレスと書込データをCPU700が認識し、外部メモリ750に対し直接にCPU700自身が再書込みする回復処理を行う。
【0007】
書込回復処理が終了したら、CPU700は内部出力バッファ710及び外部出力バッファユニット730の凍結状態を解除し、内部出力バッファ710及び外部出力バッファユニット730を使用したアクセス状態に復帰する。
ところで、このような出力バッファを使用したCPUの外部メモリの書込動作と、書込み異常が発生した時の回復処理は、書込先が外部メモリ740のような受動素子である場合は問題ない。しかし、書込先がメモリマップドレジスタ750のような能動素子の場合、即ち書込みによって動作する例えば外部記憶装置の制御レジスタなどの場合、異常発生時に出力バッファを凍結してCPU700でメモリマップドレジスタ750に直接書込むという単純な再書込みでは、回復することができない。
【0008】
通常、制御レジスタとして機能するメモリマップドレジスタ750は、図20のように、CPU700による複数の書込命令、例えば書込命令801,802,803を順次実行し、3回の書込動作811,812,813で必要なレジスタ書込みを完了し、書込完了後のCPU700の読出動作でレジスタ内容に従った動作を行う。
【0009】
このメモリマップドレジスタ750の書込動作811,812,813において異常が発生した場合、後続する書込命令のシーケンスが異なるようにしている。例えば書込異常がないときの書込命令のシーケンスは、図21のステップS1〜S7のように「書込命令1」「書込命令2」「書込命令3」の順番となる。これに対し、例えば「書込命令1」の書込動作に異常があると、ステップS2からステップS8に進み、後続する命令シーケンスは「書込命令4」「書込命令3」と異なる。
【0010】
このように複数の書込動作でレジスタ内容が決まるメモリマップドレジスタ750の場合、書込異常に対する回復処理として、内部出力バッファ710及び外部出力バッファ730を凍結し、CPU700で凍結した書込アドレス及びデータを認識して直接にメモリマップドレジスタ750に再書込みしても、レジスタ内容を回復することはできない。これは書込異常で後続する書込命令のシーケンスが異ならせているにも係わらず、異常無しの命令シーケンスに戻した書込みとなり、再書込みそのものが誤りとなる。
【0011】
このようにメモリマップドレジスタ750の書込異常の回復処理に関する問題は、メモリマップドレジスタ750への書込動作の完了を、従来の非同期から、CPU命令の実行完了に同期させることで、解決できる。具体的には、出力バッファを通過しないアクセス命令を設け、回復処理を行えばよい。
しかし、このアクセス方法は、CPU700の内部にある直接アクセスできる内部出力バッファ710には有効であるが、二次キャッシュ部720等のCPU700外部にある外部出力バッファ730に対しては、一般的には有効ではなく、出力バッファに強制吐出し機能を持たせたアクセス方法が使用される。
【0012】
この出力バッファに強制吐出し機能を持たせたアクセス方法は、メモリマップドレジスタ750に対するを外部割込みをCPU700が受け付けない状態、即ち割込マスク状態にしてメモリマップドレジスタ750に対する出力バッファからの書込み動作を、次の手順で行う。
▲1▼CPUを割込マスク状態に設定する。
【0013】
▲2▼CPUでメモリマップドレジスタの書込命令を実行し、出力バッファに格納する。
▲3▼CPU命令の実行に同期し、出力バッファの強制吐出しにより、メモリマップドレジスタの書込動作を行う。
▲4▼CPUの割込マスク状態を解除する。
【0014】
メモリマップドレジスタ750の書込アクセスで、CPU700を割込マスク状態に設定する理由は、次のとおりである。外部出力バッファ730に書込データと書込アドレスが保持された吐出し前の状態で、メモリマップドレジスタ750を割込先とした外部割込みが発生すると、出力バッファ吐き出し機能を使用したメモリマップドレジスタ750の書込動作が割込処理により行われる。
【0015】
このとき書込異常が起きると、書込命令シーケンスの変更に伴い同様に書込回復ができなくなる問題を生ずる。そこで、メモリマップドレジスタ750を書込命令を実行する間は、CPU700を割込マスク状態とし、外部割込みを受け付けないようにする。
また出力バッファの強制吐出し機能は、CPUの通常動作では、マップドレジスタ750の書込命令(複数命令)に続きその読出命令を実行することから、CPUの読出命令の実行時に吐出し動作を行い、吐出し完了と同期してCPUの読出命令の実行を完了させる。これ以外に、CPUに強制吐出しの専用命令をもたせる方法もあるが、一般には使用されない。
【0016】
図22は出力バッファの強制吐出し機能によるメモリマップドレジスタの書込動作である。まずCPU700が割込みマスク状態で、メモリマップドレジスタ750の書込命令実行821を行い、内部出力バッファ710に書込アドレスと書込データを格納して命令実行を終了する。
次にメモリマップドレジタ750の読出命令をCPU700が実行するが、この読出命令の実行に先立ち内部出力バッファ710から外部出力バッファ730への転送書込動作822が行われる。例えばCPU700における次の読出命令を取出す命令フェッチサイクルで転送書込動作822を行う。
【0017】
続いてCPU700が読出命令を実行すると、この読出命令の実行によるバス動作を2次キャッシュ部720で検出し、外部出力バッファ730の保持データをメモリマップドレジスタ750に書き込むアクセス対象への書込動作823を実行する。このメモリマップドレジスタ750の書込動作823が正常に終了すると、吐出し完了の報告が読出命令の実行による読出データの応答と共にCPU700に対し行われる。
【0018】
一方、メモリマップドレジスタ750の書込動作に異常があると、読出命令の実行による読出データの応答に同期して書込異常がCPU700に報告される。そこでCPU700はメモリマップドレジスタ750に対する書込異常をリアルタイムで認識し、異常回復の再書込みを行う。このため複数の書込命令に対応した書込動作の途中で書込異常が報告されると、後続する命令シーケンスを変更してメモリマップドレジスタ750に確実に書込みを行うことができる。
【0019】
【発明が解決しようとする課題】
しかしながら、このような従来の出力バッファの吐出し機能を利用したメモリマップドレジスタの書込命令の処理にあっては、書込命令の対象となるメモリマップドレジスタのアクセス頻度が非常に高いため、メモリマップドレジスタをアクセスするたびに、CPUで割込マスク状態の設定と解除の処理を伴い、書込オーバヘッドが大きいという問題がある。
【0020】
またメモリマップドレジスタの書込異常の頻度は低いにも係わらず、CPUの割込マスク状態が頻繁に設定されるため、外部割込みの応答性能が低下するという問題もあった。
本発明の目的は、CPUに対する外部割込を禁止することなく、外部ターゲットの書込命令を出力バッファに対する書込みで実行完了とした場合のターゲット書込み異常発生に適切に対応できるプロセッサ装置及びその制御方法を提供する。
【0021】
【課題を解決するための手段】
図1は本発明の原理説明図である。
CPU22には、制御プログラムに従った命令を実行する制御プログラム処理部62と、外部割込みの発生で制御プログラム処理部62の実行を中断して割込プログラムの命令を実行する割込プログラム処理部64が設けられる。CPU22の外部メモリ34上にはターゲットとしてメモリマップドレジスタ68が設けられる。
【0022】
出力バッファ部(内部出力バッファ24と外部出力バッファ26)は、CPU22の書込命令の実行よるメモリマップドレジスタ68に対する書込アドレス及び書込データを受信格納してCPU22の書込命令を終了させる。
同期バッファ回路部32には、書込アドレス及び書込データの保持状態を示す使用状態表示レジスタ54、書込アドレスを保持する書込アドレス保持レジスタ56、及び書込データを保持する書込データ保持レジスタ58が設けられる。
【0023】
同期バッファ回路部32は、CPU22のメモリマップドレジスタ68に対する書込命令に続く読出命令の実行に先立って、出力バッファ部から転送された書込アドレス及び書込データを書込アドレス保持レジスタ56と書込データ保持レジスタ58の各々に格納すると共に、使用状態表示レジスタ54をデータ保持状態にセットする。
【0024】
次に、CPU22の読出命令の実行に伴って、書込データ保持レジスタ58の書込データをメモリマップドレジスタ68に書込み、この書込み終了を読出命令による読出データの応答に同期させる。具体的には、メモリマップドレジスタ68への書込動作が正常に終了した際に、書込データ保持レジスタ58のデータをダミーの読出データとしてCPU22に応答する。
【0025】
またメモリマップドレジスタ68への書込動作で異常が発生した場合、CPU22の読出命令による読出データの応答に同期して、CPU22に書込動作の異常終了を報告する。
更に、同期バッファ回路部32は、必要ならば、メモリマップドレジスタ68に対するデータ書込みを行った後に、使用状態表示レジスタ54をクリアして非保持状態とする。
【0026】
CPU22の割込プログラム処理部64は、メモリマップドレジタ68に対する外部割込みの発生時、同期バッファ回路部32の使用状態表示レジスタ54を参照してデータ保持状態を判別した場合、割込終了時の制御プログラムへの復帰命令アドレスを、保持状態にある書込アドレス及び書込データの書込命令のアドレスに戻し、割込処理の終了で、戻した書込命令アドレスから制御プログラムを実行させる。
【0027】
具体的には、割込プログラム処理部64は、制御プログラム処理部62でメモリマップドレジスタ68の書込命令を終了してから、次の読出命令に先立って出力バッファユニットの書込データ及び書込アドレスを同期バッファ回路部32に転送した後の読出命令の実行までの間に外部割込みが発生した場合、同期バッファ回路部32の使用状態表示レジスタ54を読出し、同期バッファ回路部32が保持状態にある場合は、割込み復帰の命令アドレスを1命令戻してメモリマップドレジスタ68に対する割込み処理を実行し、割込終了でメモリマップドレジスタの書込命令から再開させる。
【0028】
CPU22の制御プログラム処理部62は、通常、メモリマップドレジスタ68に対する複数の書込命令を実行した後に、メモリマップドレジスタ68の読出命令を実行する。またCPU22の制御プログラム処理部62は、メモリマップドレジスタ68に対する複数の書込命令に続く読出命令の実行終了に伴って同期バッファ回路部32から書込動作の異常報告を受信した場合、異なる書込命令列の実行でメモリマップドレジスタ68に対する後続する書込動作を行う。メモリマップドレジスタ68は、例えば入出力制御装置の制御レジスタである。
【0029】
出力バッファ部は、CPU22の内部に設けた内部出力バッファ(ストアバッファ)24と、CPU22の外部に設けた外部出力バッファ26で構成される。CPU22の制御プログラム処理部62は、内部出力バッファ24に対する書込動作でメモリマップドレジスタ68に対する書込命令を終了させる。内部出力バッファ24に格納された書込アドレス及び読出アドレスは、書込命令に続く読出命令の実行に先立って外部出力バッファユニット26を経由して、同期バッファ回路部32に転送される。
【0030】
内部出力バッファ24は、CPU22の内部に設けた1次キャッシュ部のキャッシュメモリである。外部出力バッファユニット26は、CPU22の外部に設けた2次キャッシュ部28のキャッシュメモリである。
また本発明は、プロセッサの制御方法を提供する。
書込過程では、外部メモリ34上にマッピングされたメモリマップドレジスタ68に対する書込命令をCPU22が実行した場合、メモリマップドレジスタ68に対する書込アドレス及び書込データをCPU22から出力バッファ(例えばCPU内部出力バッファ24)に書込んで書込命令を終了させる。
【0031】
次のバッファ転送過程では、CPU22のメモリマップドレジスタ68に対する書込命令に続く読出命令の実行に先立って、出力バッファ部の書込アドレス及び書込データを同期バッファ回路部32に転送し、その書込アドレス保持レジスタ56と書込データ保持レジスタ58の各々に格納し、使用状態表示レジスタ54にデータ保持状態にセットする。
【0032】
次の同期過程では、CPU22の読出命令の実行に伴って書込データ保持レジスタ58の書込データをメモリマップドレジスタ68に書き込み、この書込終了を読出命令による読出データの応答に同期させる。
更に、割込処理過程が設けられ、メモリマップドレジスタ68に対する外部割込みの発生時、同期バッファ回路部32の使用状態表示レジスタ54を参照してデータ保持状態を判別した場合、割込終了時の制御プログラムへの復帰命令アドレスを、割込発生時にデータ保持状態にある書込アドレス及び書込データの書込命令のアドレスに戻し、割込処理の終了で、戻した書込命令アドレスから制御プログラムを実行させる。
【0033】
【作用】
このような本発明のプロセッサ装置及びその制御方法によれば、メモリマップドレジスタのアクセスを実行する制御プログラムには、メモリマップドレジスタに対する外部割込みを禁止する割込マスク状態を設定する機能は設ける必要はなく、外部割込みはそのまま受け付けて実行させる。
【0034】
制御プログラムでCPUに割込マスクを設定する代わりに本発明は、外部割込みの発生によるメモリマップドレジスタの割込プログラムに、対応する機能を設ける。割込プログラムは、割込処理に先立ち同期バッファ回路部がデータ保持状態にあるか否かチェックする。
データ保持状態にあった場合にはメモリマップドレジスタを対象とした割込処理によって同期バッファ回路部に滞留中の書込データ及び書込アドレスが破壊されてしまうことから、割込終了で復帰する制御プログラムの復帰命令アドレスを、破壊される書込アドレスと書込データの書込命令のアドレスに戻しておく。
【0035】
このため割込処理が終了すると、CPUで書込命令は実行されたが、メモリマップドレジスタに対して未書込みとなっている書込命令が、再度、CPUで実行され、外部割込みが発生しても制御プログラムによるメモリマップドレジスタの書込動作を確実に行うことができる。
このため制御プログラムによるメモリマップドレジスタのアクセスでCPUを割込マスク状態に設定する必要がなくなり、これに伴う書込オーバヘッドをなくすことができる。
【0036】
また制御プログラムによるメモリマップドレジスタのアクセス中であっても、外部割込みの発生時には、メモリマップドレジスタの割込プログラムによる割込処理が直ちに実行され、本来の割込応答性能を維持することができる。
【0037】
【実施例】
図2は本発明のプロセッサ装置の動作環境となる計算機システムである。この計算機システムでは、4台のプロセッサマシン10−1〜10−4を設けている。各プロセッサマシン10−1〜10−4のIDは、#00〜#03となる。プロセッサマシン10−1〜10−4に対しては、システムバス14−1,14−2によってシステム記憶装置12−1,12−2が接続される。
【0038】
またプロセッサマシン10−1〜10−4に対しては、入出力バス16−1,16−2を介して、例えば4台の入出力制御装置18−1〜18−4が接続される。入出力制御装置18−1〜18−4のそれぞれは、入出力装置20−1〜20−4を接続している。
入出力装置20−1〜20−4としては、磁気ディスク装置、光ディスク装置、磁気テープ装置、プリンタ、キーボード、マウス、タブレットなどのマンマシンインタフェース、他の計算機システムとの通信制御装置などが設けられ、入出力制御装置18−1〜18−4はそれぞれの入出力装置に対応した入出力制御モジュールとなる。例えば入出力制御装置が磁気ディスク装置の場合は、入出力制御装置は磁気ディスク制御装置となる。
【0039】
この計算機システムにあっては4台のプロセッサマシン10−1〜10−4を例にとっているが、最大構成として8台までプロセッサマシンを設けることができる。また、入出力制御装置は必要に応じて適宜に増設できる。
図3は、図2のプロセッサマシン10−1のハードウェア構成である。他のプロセッサマシン10−2〜10−4についても同様である。
【0040】
このプロセッサマシンにはCPU22−1が設けられる。CPU22−1には1次キャッシュ機構が設けられており、この1次キャッシュ機構のキャッシュメモリはストアバッファ24−1として示されている。
図4はCPU22−1の内部構成である。CPU22−1には、浮動小数点演算制御ユニット128、浮動小数点演算実行ユニット130、整数演算制御ユニット132、スーパースカラ整数演算実行ユニット134、命令キャッシュメモリユニット136、データキャッシュメモリユニット138、メモリ管理ユニット(MMU)140およびバスインタフェースユニット142が設けられる。
【0041】
浮動小数点演算実行ユニット130は浮動小数点演算制御128の制御のもとに浮動小数点演算を実行する。スーパースカラ整数演算実行ユニット134は整数演算制御ユニット132の制御のもとに、動的に並列実行可能な整数演算命令を判別し、並列的に整数演算を実行する。
命令キャッシュメモリユニット136は、例えば20キロバイトであり、メモリ管理ユニット140によりキャッシュ制御を受ける。命令キャッシュメモリユニット136には、浮動小数点演算制御128および整数演算制御ユニット132で使用する共有部のEEPROM14からフェッチしたプログラムコードが格納される。一度、プロクラムコードが命令キャッシュメモリユニット136に格納されると、その後、浮動小数点演算制御128および整数演算制御ユニット132は命令キャッシュメモリユニット136のプログラムコードを使用した演算動作を実行する。
【0042】
データキャッシュメモリユニット138は、例えば16キロバイトの容量をもち、浮動小数点演算実行ユニット130およびスーパースカラ整数演算実行ユニット134の演算に使用する外部メモリから読み出したデータを格納する。データキャッシュメモリユニット138のキャッシュ制御もメモリ管理ユニット(MMU)40により行われる。データキャッシュメモリユニット138は内部出力バッファとなるストアバッファ24−1として機能する。
【0043】
再び図3を参照するに、CPU22−1の外部には2次キャッシュメモリ26−1が設けられる。2次キャッシュメモリ26−1は、2次キャッシュコントローラ28により制御される。CPU22−1,26−1に対し、必要に応じてCPU22−2と2次キャッシュメモリ26−2を増設することができる。
2次キャッシュコントローラ28に続いては、メモリアクセスユニット30を介してローカルストレージユニット34が設けられる。ローカルストレージユニット34は、CPU22−1に対する外部メモリとなる。更に、CPU22−1で実行する各種の制御プログラムを格納したROM36が設けられる。
【0044】
ローカルストレージユニット34には、CPU22−1に対応してメモリマップドレジスタ68が設けられている。メモリマップドレジスタ68は、図2の入出力制御装置18−1〜18−4の制御レジスタとして使用される。
CPU22−1は、制御プログラムのメモリマップドレジスタ書込命令を実行することにより、ローカルストレージユニット34のメモリマップドレジスタ68に対するデータ書込みを行う。通常、メモリマップドレジスタ68に対する書込命令は、複数の書込命令を順次実行することで行われる。メモリマップドレジスタ68をターゲットとした書込命令が複数回実行されて書込動作が完了すると、続いてCPU22−1はメモリマップドレジスタ68の読出命令を実行し、この読出データに基づいて入出力制御装置に対する制御動作を実行することになる。
【0045】
CPU22−1におけるメモリマップドレジスタ68の書込命令の実行は、内部出力バッファとして機能するストアバッファ24−1に対し書込アドレスと書込データを格納することで終了する。ストアバッファ24−1に格納された書込アドレスおよび書込データは、次のCPU22−1によるメモリマップドレジスタ68に対する読出命令の実行に先立ち、2次キャッシュメモリ26−1に転送され、更に本発明で新たに設けているメモリアクセスユニット30内の同期バッファ回路部32に転送される。
【0046】
同期バッファ回路部32は、図5の回路構成をもつ。まずレジスタ回路52には、使用状態表示レジスタ54、書込アドレス保持レジスタ56および書込データ保持レジスタ58が設けられている。使用状態表示レジスタ54は、例えば図6(A)に示す32ビットのレジスタであり、第1ビット目に同期バッファ回路部32の使用状態の有無を表示するビジィビット55を設けている。
【0047】
ビジィビット55は、書込アドレス保持レジスタ56および書込データ保持レジスタ58にデータが格納されるとビット1にセットされる。データが格納されていないとき、ビジィビット55はビット0となっている。書込アドレス保持レジスタ56および書込データ保持レジスタ58も、図6(B)(C)に示すように、32ビットのレジスタを使用している。
【0048】
再び図5を参照するに、同期バッファ回路部32には、転送回路46,60、CPU命令検出解読回路48およびレジスタ制御回路50が設けられる。転送回路46は、プロセッサマシンの内部バスを介して2次キャッシュコントローラ28との間でアドレスおよびデータの転送を行う。
CPU命令検出解読回路48は、転送回路46に対する2次キャッシュコントローラ28からの内部バスの状態を監視しており、CPU22−1によるメモリマップドレジスタの書込命令の実行に伴うバス動作を検出してレジスタ制御回路50に出力する。
【0049】
レジスタ制御回路50は、転送回路46で受信した2次キャッシュコントローラ28からのメモリマップドレジスタに対する書込アドレスおよび書込データを受けて、レジスタ回路52の書込アドレス保持レジスタ56および書込データ保持レジスタ58に受信アドレスおよび受信データを格納する。また、書込アドレスおよび書込データの格納後に、使用状態表示レジスタ54のビジィビット55をビット1にセットする。
【0050】
またレジスタ制御回路50は、メモリマップドレジスタの書込アドレスおよび書込データの保持状態でCPU命令検出解読回路48より読出命令の実行に伴うバス動作の検出出力を受けると、レジスタ回路52の書込アドレス保持レジスタ56の書込アドレスと書込データ保持レジスタ58の書込データを読み出し、転送回路60を介してローカルストレージユニット34のメモリマップドレジスタ68に対する書込動作を行う。
【0051】
レジスタ回路52に設けている各レジスタ54,56,58の内容は、メモリマップドレジスタ68に対する書込終了でクリアしてもよいし、クリアせずにそのまま放置しておくことで、次のデータ転送の際にレジスタ書替えを行うだけであってもよい。更に、必要ならば、各レジスタにバリッドビットを設け、バリッドビットによってレジスタの書込みと書込禁止を制御するようにしてもよい。
【0052】
再び図3を参照するに、メモリアクセスユニット30に続いては割込コントローラ38が設けられる。割込コントローラ38は、各種の外部割込みを検出し、CPU22−1に対し外部割込みの判別結果に応じた割込処理を指示する。
更に、入出力バス16−1,16−2に対してはメッセージコントローラ40−1,40−2と入出力バスコントローラ42−1,42−2を1つとしたユニットが設けられる。更に、システムバス14−1,14−2のそれぞれに対しては、システムバスコントローラ44−1,44−2が設けられる。
【0053】
ここでプロセッサマシンには、CPU22−2及び次キャッシュメモリ26−2を増設することができる。CPU22−2を増設した場合、ローカルストレージユニット34には専用のメモリマップドレジスタが設けられる。
図7は、本発明のプロセッサマシンによるローカルストレージユニット34に設けているメモリマップドレジスタ68に対するアクセス機能である。まずCPU22には、通常の制御プログラムを実行する制御プログラム処理部62が設けられる。この制御プログラム処理部62の処理には、ローカルストレージユニット34に設けているメモリマップドレジスタ68の各々に対するアクセス命令の実行も含まれる。以下の説明では、メモリマップドレジスタ68に対する制御プログラムのアクセス命令のみを例にとる。
【0054】
またCPU22には、割込プログラム処理部64が設けられる。割込プログラム処理部64は、制御プログラム処理部62による制御プログラムの実行中に割込コントローラ38(図3参照)より外部割込みの発生に基づく割込起動の指示を受けると、制御プログラム処理部62による制御プログラムを中断して、割込ゲインに対応した割込プログラムを実行する。
【0055】
この割込プログラム処理部64による割込処理には、ローカルストレージユニット34に設けているメモリマップドレジスタ68をターゲットとしたアクセス命令を行う割込処理プログラムも含まれる。
制御プログラム処理部62で例えばローカルストレージユニット34のメモリマップドレジスタ68の書込命令を実行すると、内部出力バッファとなるストアバッファ24に対する書込アドレスおよび書込データの格納で書込命令が終了する。通常、メモリマップドレジスタ68に対する書込みは、複数の書込命令の実行で完了する。したがって、ストアバッファ24には書込命令の数に応じた書込アドレスおよび書込データが格納されることになる。
【0056】
複数の書込命令の実行が終了すると、制御プログラム処理部62はメモリマップドレジスタ68の読出命令を実行する。この読出命令の実行に先立って、ストアバッファ24に格納された書込アドレスおよび書込データが2次キャッシュコントローラ28のキャッシュメモリで実現される外部出力バッファ26を経由して、メモリアクセスコントローラ30に設けている同期バッファ回路部32に転送される。
【0057】
ストアバッファ24から転送された書込アドレスおよび書込データは、レジスタ制御回路50により書込アドレス保持レジスタ56および書込データ保持レジスタ58に格納される。このとき使用状態表示レジスタ54のビジィビット55がビット1にセットされ、同期バッファ回路部32が使用状態にあることを表わす。
【0058】
ストアバッファ24からのデータ転送のきっかけは、制御プログラム処理部62における次に実行する読出命令のフェッチサイクル動作を検出して行えばよい。続いて読出命令は実行サイクルに移行して、読出命令が実行される。この読出命令の実行は、内部バスを介してメモリアクセスコントローラ30に読出コマンドおよび読出アドレスを転送することで実現される。
CPU22による読出命令の実行に対し、同期バッファ回路部32にあっては、そのCPU命令検出解読回路48(図5参照)によって読出命令に伴う内部バスのバス動作を検出し、これに基づきレジスタ制御回路50が書込アドレス保持レジスタ56の書込アドレスおよび書込データ保持レジスタ58の書込データを読み出して、ローカルストレージユニット54に対し書込動作を指示する。
【0059】
これによって、書込アドレスで指定されたメモリマップドレジスタ68−1に転送された書込データの書込動作が行われる。同時に、メモリアクセスコントローラ30に対しては、CPU22よりメモリマップドレジスタ68−1の読出コマンドが送られてきているため、読出データを応答しなければならない。
通常の読出動作はローカルストレージユニット34のメモリマップドレジスタ68−1から読み出すが、このときメモリマップドレジスタ68−1に書き込まれたデータは同期バッファ回路部の書込データ保持レジスタ58の書込データである。そこで、メモリマップドレジスタ68−1の読出しは行わず、書込保持レジスタ58の書込データの書込動作の終了後に書込データ保持レジスタ58の書込データを読み出して、ダミーの読出データとして内部バスによりCPUに応答する。
【0060】
図8は、図7においてCPU22の制御プログラム処理部62がメモリマップドレジスタ68に対する書込命令を実行して正常に書込動作が終了するまでを表わす。まずCPU22は、ブロック100でメモリマップドレジスタの書込命令を実行し、ブロック102で、内部のストアバッファ24に書込アドレスと書込データを格納して命令を終了する。次にCPU22は、ブロック104で読出命令の取出し即ちフェッチ動作を行う。
【0061】
この読出命令の取出しを契機に、ストアバッファ24から2次キャッシュメモリ28にブロック200に示すようにストアバッファ24の滞留データを同期バッファ回路部32に転送するためのバッファ転送を行い、更に2次キャッシュメモリ28より同期バッファ回路部32に転送して、転送されたデータ(書込アドレスと書込データ)を対応するレジスタに格納し、更に使用状態表示レジスタ (ステータスレジスタ)54をデータ保持状態にセットする。
【0062】
次にCPU22は、ブロック105で読出命令を実行する。この読出命令は、ブロック201に示すように、2次キャッシュメモリ28を経由して同期バッファ回路部32に通知される。具体的には、読出命令に対し2次キャッシュのヒット判定を行うが、ミスヒットとなることから、同期バッファ回路部32を設けているメモリアクセスユニット30に対し読出コマンドおよび読出アドレスのバス転送を行う。
【0063】
このような読出命令の実行に伴うバス動作に対し、同期バッファ回路部32で読出命令の実行を検出すると、ブロック301で、現在保持している保持アドレスとCPUから通知された読出アドレスとを比較する。ブロック302でアドレス一致が得られると、ブロック303で、保持データを外部メモリとなるローカルストレージユニット304の書込アドレスで指定されるメモリマップドレジスタに書き込む。これが外部メモリ34のブロック400のデータ書込動作である。
【0064】
外部メモリ34のメモリマップドレジスタに対するデータ書込動作が正常に終了すると、同期バッファ回路部32はレジスタに保持している書込データを読み出してダミーの読出データとしてCPU22に転送し、読出命令の実行終了とする。
図9,図10,図11は、図8のメモリマップドレジスタに対する書込命令の実行からデータ書込みの正常終了までの処理を分けて示している。まず図9は、CPU22におけるメモリマップドレジスタに対する書込命令の実行処理である。制御プログラム処理部62は、外部メモリ34のメモリマップドレジスタ68に対する書込命令実行70を行う。この書込命令実行70は、CPU22の内部に設けているストアバッファ24に書込アドレスおよび書込データを格納することで正常終了となる。
【0065】
図10は、書込命令の実行に続いて、CPU22の制御プログラム処理部62が次に実行する読出命令取出し72を行った場合である。この読出命令取出し72を契機として、ストアバッファ24に格納されたメモリマップドレジスタ68に対する書込アドレスと書込データは、2次キャッシュコントローラ28のキャッシュメモリ26である外部出力バッファを経由して同期バッファ回路部32に転送され、書込アドレス保持レジスタ56および書込データ保持レジスタ58に格納され、更に使用状態表示レジスタ54のビジィビットを1にセットする。
【0066】
図11は、読出命令取出し72に続くCPU22の制御プログラム処理部62による読出命令実行78の処理である。この読出命令実行78に伴い、2次キャッシュコントローラ28を経由してメモリアクセスユニットの同期バッファ回路部32に内部バスによって読出コマンドおよび読出アドレスが転送され、このバス動作を検出することでCPU22の読出命令実行78を同期バッファ回路部32で検出できる。
【0067】
読出命令の実行を同期バッファ回路部32で検出すると、書込アドレス保持レジスタ56のアドレスとCPU22から指示された読出アドレスとを比較する。アドレスが一致すれば、同期バッファ回路部32より現在保持している書込アドレスと書込データを書込コマンドと共にローカルストレージユニット34である外部ユニットに転送する書込動作80を行い、メモリマップドレジスタ68に書き込む。
【0068】
メモリマップドレジスタ68の書込みが正常にできると、正常終了のステータス応答82が得られる。この終了応答82を受けると、同期バッファ回路部32はCPU22の読出命令実行78に対する応答として書込データ保持レジスタ58の書込データを読み出して、ダミーの読出データとしてバス転送する。
なお、CPU22の読出命令実行78で受信された読出アドレスが同期バッファ回路部32の保持アドレスと不一致の場合は、同期バッファ回路部32を内蔵しているメモリアクセスユニット30(図3参照)による通常のローカルストレージユニット34に対する読出動作が行われる。
【0069】
図12のタイムチャートは、メモリマップドレジスタに対する書込動作で異常が発生した場合である。ブロック303の外部メモリ34のメモリマップドレジスタに対する書込動作において、ブロック401の書込み異常が発生すると、これに対しブロック305でCPU22に異常報告を行う。喪私論、異常報告と同時に読出データ(ダミーデータ)も応答する。
【0070】
図13のフローチャートは、図7のCPU22に設けた制御プログラム処理部62によるメモリマップドレジスタのアクセス処理のフローチャートである。まずステップS1で、外部メモリに対する書込命令が実行されると、ステップS2でCPU22内のストアバッファ24に書込アドレスおよびデータを格納して処理を終了する。次にステップS3で、次の命令が外部メモリの読出命令であることを判別すると、ステップS4で、CPU22内のストアバッファ24に滞留している書込アドレスと書込データを外部出力バッファとしての2次キャッシュメモリ26を介して同期バッファ回路部32に転送する。
【0071】
続いてステップS5で外部メモリの読出命令を実行し、読出命令の実行に伴い、ステップS6で、同期バッファ回路部に対するバス動作によって読出コマンドおよび読出アドレスを通知する。続いてステップS7で、外部メモリからのステータスコマンドに対するステータス応答の受信をチェックしており、ステータス応答を受信すると、ステップS8でステータスを解読する。
【0072】
このステータス解読で外部メモリから正常に読出データが応答され、且つ外部メモリに対する同期バッファ回路部32からの書込動作の正常終了であった場合には一連の処理を終了する。一方、外部メモリから読出データの応答はあったが、これに同期して同期バッファ回路部より外部メモリに対する書込動作の異常報告があった場合には、ステップS10に進み、外部メモリのメモリマップドレジスタの書込動作で異常を起こした書込命令を再度実行するリトライ処理を行って、再度書込動作を行う。
【0073】
図14のフローチャートは、図7の同期バッファ回路部の処理動作である。本発明の実施例にあっては、図5に示したように、同期バッファ回路部はハードウェアで構成しており、したがって図14のフローチャートはハードウェアの動作手順を示すことになる。また、同期バッファ回路部32をマイクロプロセッサによるソフトウェアで実現する場合には、図14のフローチャートに従ったプログラム処理とすればよい。
【0074】
図14において、同期バッファ回路部32は、ステップS1で上位の出力バッファ部からのデータ転送の有無をチェックしており、外部メモリのメモリマップドレジスタに対する書込アドレスと書込データのデータ転送を受けると、ステップS2で、受信したアドレスとデータをそれぞれ書込アドレス保持レジスタ56と書込データ保持レジスタ58に格納し、使用状態表示レジスタ54のビジィビット55をオンする。
【0075】
続いてステップS3で、CPU22の読出動作を監視している。CPU22で読出命令が実行されて内部バスに読出コマンドおよび読出アドレスが表示されるバス動作からCPUの読出動作を検出すると、ステップS4で、書込アドレス保持レジスタ56の保持アドレスとCPUの読出アドレスを比較する。
ステップS5でアドレス一致を判別すると、ステップS6で、保持データを外部メモリのメモリマップドレジスタに書き込む書込動作を行う。この書込動作が正常に行われると、ステップS7からステップS8に進み、同期バッファ回路部32の書込データ保持レジスタ56の保持データを読み出して、ダミーの読出データとしてCPU22に転送して終了応答とする。
【0076】
一方、メモリマップドレジスタの書込動作で異常が発生した場合には、ステップS9に進み、ステップS8と同様、保持データのダミー読出データとしての応答に同期してCPUに書込動作の異常報告を応答する。この書込動作の異常報告を受けたCPUは、図13のステップS10に示したように直ちにリトライ処理による書込動作の回復を図る。
【0077】
一方、ステップS5で保持アドレスとCPUの読出アドレスが一致しなかった場合には、同期バッファ回路部32に保持しているデータの読出命令でないことから、ステップS10に進み、通常通り外部メモリの読出動作を実行してCPU22に転送する。これは同期バッファ回路部32を設けているメモリアクセスユニット30の機能で実現される。
【0078】
次に、CPU22に設けた制御プログラム処理部62により、メモリマップドレジスタ68に対する書込命令と読出命令の実行中に同じメモリマップドレジスタ68に対する外部割込みが発生した場合の割込プログラム処理部64の処理を説明する。
図15は、制御プログラム処理部62がブロック500で他の命令動作を行い、次にメモリマップドレジスタに対する書込命令動作をブロック502で行う前にブロック501の外部割込みが発生した場合のタイムチャートである。このようにブロック502のメモリマップドレジスタに対する書込命令動作の前にブロック501の外部割込みが発生すると、割込プログラム処理部64は、まずブロック600で同期バッファ回路部32の使用状態表示レジスタ(ステータスレジスタ)54を読み出す。
【0079】
このときブロック502のメモリマップドレジスタに対する書込命令動作およびブロック503の読出命令動作は行われていないため、同期バッファ回路部32はブロック601のようにデータ非保持状態にある。即ち、使用状態表示レジスタ54の読出しでビジィビット55をチェックするとビット0となっている。この場合には、ブロック602で、割込復帰命令アドレスをブロック501の外部割込発生の次のブロック502の書込命令動作の命令アドレスのまま維持して、ブロック603で割込処理を行う。ブロック603の割込処理は、制御プログラム処理部62による処理と同様、図9のように、CPU22の割込プログラム処理部64がメモリマップドレジスタ68の書込命令を実行してストアバッファ24に書込データおよび読出データを格納する。
【0080】
次のメモリマップドレジスタ68の読出命令に先立って、図10のようにストアバッファ24から2次キャッシュメモリ(外部出力バッファ)26を介して同期バッファ回路部32に書込アドレスおよび書込データが転送され、書込アドレス保持レジスタ56および書込データ保持レジスタ58に格納した後、使用状態表示レジスタ54のビジィビット55をビット1にオンする。
【0081】
次に図11のように、制御プログラム処理部62によりCPU22でメモリマップドレジスタ68の読出命令が実行されると、これに伴うバスの読出動作を同期バッファ回路部32で検出して保持アドレスと読出アドレスを比較し、アドレス一致が得られることから、保持データのメモリマップドレジスタ68に対する書込みを行う。
【0082】
このようなブロック603のメモリマップドレジスタ68に対する割込処理が終了すると、ブロック602でセットした割込復帰命令アドレスにブロック604で復帰し、割込終了で、制御プログラム処理部62はブロック502のメモリマップドレジスタに対する命令動作を行う。
図16は、制御プログラム処理部62でメモリマップドレジスタに対する書込命令動作をブロック510で行い、続いてブロック511で、メモリマップドレジスタの読出命令の取出しを行い、次にブロック513で読出命令を実行するまでの間にブロック512の外部割込みが発生した場合の処理である。
【0083】
ブロック512の外部割込みが発生した状態では、ブロック510の書込命令動作でCPU22がストアバッファ24に格納した書込アドレスおよび書込データが、ブロック511の読出命令の取出しを契機にして同期バッファ回路部32に転送され、同期バッファ回路部32はデータ保持状態となっている。
この状態でブロック512の外部割込みの発生で割込プログラム処理部64が起動すると、まずブロック610で、同期バッファ回路部32の使用状態表示レジスタ(ステータスレジスタ)54を読み出す。このときデータ書込みが行われていることから、ビジィビット55はビット1となっており、ブロック611でデータ保持状態を認識する。
【0084】
データ保持状態を認識すると、現在行っている割込処理により同期バッファ回路部32の保持データは破壊されてしまうことから、ブロック612で、現在保持状態にあるデータの書込みを行った書込命令に復帰命令アドレスを戻す処理を行う。即ち、ブロック512の外部割込みの発生で本来の割込復帰命令アドレスは次のブロック513で実行される読出命令の命令アドレスとなっているが、ブロック612では、この読出命令の割込復帰命令アドレスを1命令戻したブロック510の書込命令の命令アドレスとする。
【0085】
続いてブロック613で、メモリマップドレジスタに対する書込命令と読出命令の実行を伴う割込処理を行い、割込終了によるブロック614の復帰処理はブロック612で戻した外部割込み発生前の書込命令の命令アドレスとし、制御プログラム処理部52はブロック510から再度書込命令動作を行う。
この割込終了後のブロック510の書込命令動作により、外部割込みの発生で破壊された同期バッファ回路部32のデータが次のブロック511の読出命令取出しを通じて回復し、もし外部割込みが続いて発生しなければ、ブロック513で、CPUの読出命令の実行に伴い、メモリマップドレジスタに同期バッファ回路部32に保持していたデータの書込動作が行われる。このため、外部割込みの発生により同期バッファ回路部32に保持したデータが破壊されても、割込終了後に正しいメモリマップドレジスタに対する書込動作を行うことができる。
【0086】
図17は、ブロック521で書込命令動作を行い、次のブロック522で読出命令動作を行った後にブロック523で外部割込みが発生した場合の割込処理である。ブロック522の読出命令動作の終了後のブロック523の外部割込み発生にあっては、同期バッファ回路部32の保持データは既にメモリマップドレジスタ68に書き込まれていることから、同期バッファ回路部の格納データが破壊されても問題はなく、割込復帰命令アドレスを維持したまま割込処理を行う。この場合の割込処理プログラム処理部64によるブロック620〜624までの処理は、図15の書込命令動作前の割込処理と同じである。
【0087】
図18のフローチャートは、本発明の割込プログラム処理部64の割込処理である。外部割込みで割込処理が起動すると、ステップS1で、同期バッファ回路部の使用状態表示レジスタ(ステータスレジスタ)54を読み取り、ビジィビット55の状態でデータ保持状態か否かチェックする。ステップS2でデータ保持状態を判別すると、ステップS3で、制御プログラムの割込復帰アドレスを1命令戻す処理を行い、ステップS5で割込処理を実行し、ステップS4でセットした制御プログラムの割込復帰アドレスにリターンする。
【0088】
一方、ステップS2で、ビジィビットがビット0でデータ保持状態にないときには、ステップS3の割込復帰アドレスを1命令戻す処理を行わず、割込発生が起きた次の命令アドレスを割込復帰アドレスとして維持したまま、ステップS4の割込処理を行って、制御プログラムにリターンする。
尚、上記の実施例は、CPU外部のアクセスターゲットとして外部メモリ上のメモリマップドレジスタを例にとっているが、本発明はこれに限定されず、CPUの外部に存在する適宜のアクセス対象となるターゲットについて同様な処理を適用することができる。更に本発明は実施例に示した数値による限定は受けない。
【0089】
【発明の効果】
以上説明してきたように本発明によれば、外部割込みの発生による割込処理において、同期バッファ回路部にアクセスターゲットとなるメモリマップドレジスタに書き込むデータが保持状態にあるか否かチェックし、データ保持状態にあるときには、割込処理の実行で保持データが破壊される可能性があることから、制御プログラムの動作を保持データの書込動作以前の状態に復帰させることで、制御プログラムにおけるCPUのマスク制御処理を不要とし、制御プログラムのオーバヘッドを低減すると共に、割込応答性を低下させることなく、出力バッファを用いた外部ターゲットに対する書込動作を確実に行うことができる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】本発明の動作環境となるシステム構成図
【図3】図2のプロセッサマシンのブロック図
【図4】図3のCPUのブロック図
【図5】図3の同期バッファ回路部の回路ブロック図
【図6】図3の同期バッファ回路部に設けたレジスタの説明図
【図7】本発明の処理機能のブロック図
【図8】書込命令の実行から書込動作が正常に行われるまでのタイムチャート
【図9】書込命令の実行サイクルの説明図
【図10】読出命令に先立って行われる転送サイクルの説明図
【図11】読出命令の実行に同期した書込サイクルの説明図
【図12】書込動作で異常が起きたときのタイムチャート
【図13】CPUの制御プログラム処理のフローチャート
【図14】同期バッファ回路部の処理動作のフローチャート
【図15】書込命令の実行前に外部割込みが発生した時のタイムチャート
【図16】書込命令の実行後で読出命令の実行前に外部割込みが発生した時のタイムチャート
【図17】読出命令の終了後に外部割込が発生した時のタイムチャート
【図18】割込処理のフローチャート
【図19】従来の出力バッファを用いた外部メモリのアクセス機能のブロック図
【図20】メモリマップドレジスタに対する複数の書込命令による書込動作の説明図
【図21】メモリマップドレジスタに対するアクセス命令シーケンスのフローチャート
【図22】CPUの命令実行に書込動作を同期させたアクセス方法の説明図
【符号の説明】
10−1〜10−4:プロセッサマシン
12−1,12−2:システム記憶装置(システムストレージユニット;SSU )
14−1,14−2:システムバス
16−1,16−2:入出力バス
18−1〜18−4:入出力制御装置(入出力制御モジュール)
20−1〜20−4:入出力装置
22,22−1,22−2:CPU
24,24−1,24−2:ストアバッファ(内部出力バッファ)
26,26−1,26−2:2次キャッシュメモリ(外部出力バッファ)
28:2次キャッシュコントローラ
30:メモリアクセスコントローラ
32:同期バッファ回路部
34:ローカルストレージユニット(外部メモリ)
36:ROM
38:割込みコントローラ
40−1,40−2:メッセージコントローラ
42−1,42−2:入出力バスコントローラ
44−1,44−2:システムバスコントローラ
46,60:転送回路
48:CPU命令検出解読回路
50:レジスタ制御回路
52:レジスタ回路
54:使用状態表示レジスタ
55:ビジィビット
56:書込アドレス保持レジスタ
58:書込データ保持レジスタ
62:制御プログラム処理部
64:割込プログラム処理部

Claims (11)

  1. 制御プログラムに従った命令を実行する制御プログラム処理部を備えたCPUと、
    前記CPUの外部メモリ上にマッピングされたメモリマップドレジスタと、
    前記制御プログラム処理部によるメモリマップドレジスタ書込命令の実行による書込アドレス及び書込データを受信格納して前記書込命令の実行を終了させる出力バッファ部と、
    書込アドレスと書込データの保持状態を示す使用状態表示レジスタと、
    書込アドレスを保持する書込アドレス保持レジスタと、
    書込データを保持する書込データ保持レジスタと、
    を有し、前記メモリマップドレジスタ書込命令に続いて実行される読出命令取り出し時に前記出力バッファ部に格納されている書込アドレスと書込データが前記書込アドレス保持レジスタと前記書込データ保持レジスタに転送されて格納されると共に、前記使用状態表示レジスタをデータ保持状態にセットし、前記読出命令取り出しに続く前記読出命令の実行に伴って前記書込データ保持レジスタの書込データを前記メモリマップドレジスタに書込んで該書込み終了と前記読出命令による読出データの応答を同期させる同期バッファ回路部と、を備え、
    前記CPUは、外部割込の発生で前記プログラム処理部の処理を中断して割込プログラムの命令を実行する割込プログラム処理部を備え、
    前記割込プログラム処理部は、前記メモリマップドレジスタに対する外部割込みの発生時、前記同期バッファ回路部の使用状態表示レジスタを参照してデータ保持状態を判別した場合、前記制御プログラムへの復帰命令アドレスを、データ保持状態にある書込アドレス及び書込データの書込命令のアドレスに戻し、割込処理の終了で前記書込命令アドレスから前記制御プログラムを実行させ、
    前記割込プログラム処理部は、前記制御プログラムによるメモリマップドレジスタ書込命令の実行から、次の読出命令に先立って前記出力バッファ部の書込データ及び書込アドレスを前記同期バッファ回路部に転送した後の前記読出命令の実行までの間に外部割込みが発生した場合、前記同期バッファ回路部の使用状態表示レジスタを参照してデータ保持状態にあるときは、前記制御プログラムへの復帰命令アドレスを1命令戻し、割込処理の終了で前記同期バッファ部に保持していた書込アドレスと書込データの書込命令のアドレスから前記制御プログラムを実行させることを特徴とするプロセッサ装置。
  2. 請求項1記載のプロセッサ装置に於いて、前記同期バッファ回路部は、前記メモリマップドレジスタへの書込動作が正常に終了した場合、前記書込動作の終了後に前記書込データ保持レジスタのデータをダミーの読出データとして前記CPUに応答することを特徴とするプロセッサ装置。
  3. 請求項1記載のプロセッサ装置に於いて、前記同期バッファ回路部は、前記メモリマップドレジスタへの書込動作で異常が発生した場合、前記書込データ保持レジスタのデータをダミーの読出データとして前記CPUに応答し、該読出データの応答に同期して前記CPUに書込動作の異常終了を報告することを特徴とするプロセッサ装置。
  4. 請求項1記載のプロセッサ装置に於いて、前記同期バッファ回路部は、前記メモリマップドレジスタに対する書込動作を行った後に、前記使用状態表示レジスタを非保持状態にクリアすることを特徴とするプロセッサ装置。
  5. 請求項1記載のプロセッサ装置に於いて、前記CPUの制御プログラム処理部は、前記メモリマップドレジスタに対する複数の書込命令を実行した後に、前記メモリマップドレジスタの読出命令を実行することを特徴とするプロセッサ装置。
  6. 請求項1記載のプロセッサ装置に於いて、前記出力バッファ部は、前記CPUに内蔵した内部出力バッファと前記CPUの外部に設けた外部出力バッファで構成され、前記制御プログラム処理部は、前記内部出力バッファに対する書込動作で前記メモリマップドレジスタに対する書込命令を終了し、前記内部出力バッファに格納された書込アドレス及び読出アドレスは、前記書込命令に続く読出命令の実行に先立って前記外部バッファを経由して前記同期バッファ回路部に転送されることを特徴とするプロセッサ装置。
  7. 請求項記載のプロセッサ装置に於いて、前記内部出力バッファは、前記CPUの内部に設けた1次キャッシュ部のキャッシュメモリであり、前記外部出力バッファは、前記CPUの外部に設けた2次キャッシュ部のキャッシュメモリであることを特徴とするプロセッサ装置。
  8. 外部メモリ上にマッピングされたメモリマップドレジスタに対する書込命令をCPUが実行した場合、前記メモリマップドレジスタに対する書込アドレス及び書込データを前記CPUから出力バッファに書込んで前記書込命令を終了させる書込み過程と、
    前記CPUの書込命令に続く読出命令の実行に続いて、前記出力バッファ部の書込アドレス及び書込データを同期バッファ回路部に転送してその書込アドレス保持レジスタと書込データ保持レジスタの各々に格納すると共に、使用状態表示レジスタをデータ保持状態にセットするバッファ転送過程と、
    前記CPUの読出命令の実行に伴って前記書込データ保持レジスタの書込データを前記メモリマップドレジスタに書き込む書込命令に続いて実行される読出命令取り出し時に前記出力バッファに格納されている書込アドレスと書込データが前記書込アドレス保持レジスタと前記書込データ保持レジスタに転送されて格納されると共に、前記使用状態表示レジスタをデータ保持状態にセットし、前記読出命令取り出しに続く読出命令の実行に伴って前記データ保持レジスタの書込データを前記メモリマップドレジスタに書き込んで該書込終了と前記読出命令による読出データの応答を同期させる同期過程と、
    を備え、
    外部割込みの発生時、前記同期バッファ回路部の使用状態表示レジスタを参照してデータ保持状態を判別した場合、前記制御プログラムへの復帰命令アドレスを、前記データ保持状態にある書込アドレス及び書込データの書込命令のアドレスに戻し、割込処理の終了で前記書込命令アドレスから前記制御プログラムを実行させる割込処理過程を備え、
    前記割込処理過程は、前記制御プログラムによる書込命令の実行から、次の読出命令に先立って前記出力バッファユニットの書込データ及び書込アドレスを前記同期バッファに転送した後の前記読出命令の実行までの間に外部割込みが発生した場合、前記同期バッファ回路部の使用状態表示レジスタを参照してデータ保持状態にあるときは、前記制御プログラムへの復帰命令アドレスを1命令だけ戻し、割込処理の終了で前記同期バッファ部に保持されていた書込アドレスと書込データの書込命令アドレスから前記制御プログラムを実行させることを特徴とするプロセッサ制御方法。
  9. 請求項記載のプロセッサ制御方法に於いて、前記同期過程は、前記メモリマップドレジスタへの書込動作が正常に終了した場合、前記CPUの読出命令の終了に同期して前記書込データ保持レジスタのデータをダミーの読出データとして前記CPUに応答することを特徴とするプロセッサ制御方法。
  10. 請求項記載のプロセッサ制御方法に於いて、前記同期過程は、前記メモリマップドレジスタへの書込動作で異常が発生した場合、前記書込データ保持レジスタのデータをダミーの読出データとして前記CPUに応答し、該読出データの応答に同期して前記CPUに書込動作の異常終了を報告することを特徴とするプロセッサ制御方法。
  11. 請求項8記載のプロセッサ制御方法に於いて、前記同期過程は、前記メモリマップドレジスタに対するデータ書込みを行った後に、前記使用状態表示レジスタを非保持状態にクリアすることを特徴とするプロセッサ方法
JP27728794A 1994-11-11 1994-11-11 プロセッサ装置及びその制御方法 Expired - Fee Related JP3723243B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP27728794A JP3723243B2 (ja) 1994-11-11 1994-11-11 プロセッサ装置及びその制御方法
US08/502,351 US5796996A (en) 1994-11-11 1995-07-14 Processor apparatus and its control method for controlling a processor having a CPU for executing an instruction according to a control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP27728794A JP3723243B2 (ja) 1994-11-11 1994-11-11 プロセッサ装置及びその制御方法

Publications (2)

Publication Number Publication Date
JPH08137751A JPH08137751A (ja) 1996-05-31
JP3723243B2 true JP3723243B2 (ja) 2005-12-07

Family

ID=17581438

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27728794A Expired - Fee Related JP3723243B2 (ja) 1994-11-11 1994-11-11 プロセッサ装置及びその制御方法

Country Status (2)

Country Link
US (1) US5796996A (ja)
JP (1) JP3723243B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19929419C2 (de) * 1999-06-26 2003-08-07 Sci Worx Gmbh Synchroner Kommunikationsbus und Verfahren zur synchronen Kommunikation zwischen Schaltungsmodulen
JP2001229115A (ja) * 2000-02-17 2001-08-24 Matsushita Electric Ind Co Ltd Atapiコマンド処理方式
US6996812B2 (en) * 2001-06-18 2006-02-07 International Business Machines Corporation Software implementation of synchronous memory barriers
US7149890B2 (en) * 2003-11-21 2006-12-12 Intel Corporation Initializing system memory
US7047364B2 (en) * 2003-12-29 2006-05-16 Intel Corporation Cache memory management
TW200717246A (en) * 2005-06-24 2007-05-01 Koninkl Philips Electronics Nv Self-synchronizing data streaming between address-based producer and consumer circuits
CN103092569A (zh) * 2012-12-31 2013-05-08 中国电子科技集团公司第十五研究所 一种实现8051扩展指令的电路
US10846223B2 (en) * 2017-10-19 2020-11-24 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Cache coherency between a device and a processor

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5170470A (en) * 1988-05-02 1992-12-08 National Semiconductor Corp. Integrated modem which employs a host processor as its controller
US5003558A (en) * 1989-10-30 1991-03-26 International Business Machines Corporation Data synchronizing buffers for data processing channels
EP0464433A3 (en) * 1990-06-29 1994-05-18 Nat Semiconductor Corp Microcontroller device having remotely programmable eprom & method of programming
US5594704A (en) * 1992-04-27 1997-01-14 Mitsubishi Denki Kabushiki Kaisha Synchronous semiconductor memory device
US5519841A (en) * 1992-11-12 1996-05-21 Digital Equipment Corporation Multi instruction register mapper
US5499384A (en) * 1992-12-31 1996-03-12 Seiko Epson Corporation Input output control unit having dedicated paths for controlling the input and output of data between host processor and external device

Also Published As

Publication number Publication date
JPH08137751A (ja) 1996-05-31
US5796996A (en) 1998-08-18

Similar Documents

Publication Publication Date Title
US6070232A (en) Cache controller fault tolerant computer and data transfer system setting recovery points
US4942519A (en) Coprocessor having a slave processor capable of checking address mapping
EP1196842B1 (en) Method and apparatus for combining a plurality of memory access transactions
JP2006164277A (ja) プロセッサにおけるエラー除去装置および方法,プロセッサ
JPH02202638A (ja) 多重プロセッサを備えたフォールトトレラントなコンピュータシステム
JPS6353571B2 (ja)
RU2137182C1 (ru) Выполнение инструкции обработки данных
JPH0583932B2 (ja)
JPH0227441A (ja) コンピュータ・システム
US5751986A (en) Computer system with self-consistent ordering mechanism
JPH07219809A (ja) データ処理装置およびデータ処理方法
JP3723243B2 (ja) プロセッサ装置及びその制御方法
US5146569A (en) System for storing restart address of microprogram, determining the validity, and using valid restart address to resume execution upon removal of suspension
JPH0810437B2 (ja) 仮想計算機システムのゲスト実行制御方式
US5829030A (en) System for performing cache flush transactions from interconnected processor modules to paired memory modules
JPH07141176A (ja) コマンドリトライ制御方式
US5898867A (en) Hierarchical memory system for microcode and means for correcting errors in the microcode
JP2009230479A (ja) マイクロプロセッサ
JPH03175548A (ja) マイクロプロセッサ及びアドレス制御方式
EP0655686B1 (en) Retry control method and device for control processor
JPH0368034A (ja) チェックポイント再試行方式
JPH0415496B2 (ja)
JPH02211561A (ja) プロセッサ及びストアバッファ制御方法
JPS59172044A (ja) 命令制御方式
JPH01298453A (ja) キャッシュエラー処理方式

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050215

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050415

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050517

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050630

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050823

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050915

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080922

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20090922

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090922

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100922

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100922

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110922

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120922

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120922

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130922

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees