(57)【特許請求の範囲】
【請求項１】
メモリ内の位置を同定するアドレスと前記メモリに格納するデータ値を発生するプロセッサ本体と；
前記プロセッサ本体より出力される前記アドレスとデータ値を格納し、その後前記データ値を前記メモリに格納するため前記アドレスと前記データ値を出力する書込バッファと；
を備え、前記書込バッファが複数の行をもち、各行がアドレスまたはデータ値を格納するように構成され、各行がまたそれと関連してその行がアドレスまたはデータ値の何れを含むかを示すように設定可能なフラグフィールドをもっており；
前記各行がさらに制御フィールドを含み、もしアドレスが特定の行に格納されていれば、その行の制御フィールドが前記アドレスに関連する制御データを格納するのに使用され、
もしデータ値が特定の行に格納されていれば、前記制御フィールドがデータを含むその行の領域を同定するマスクデータを格納するのに使用される、
データ処理装置。
【請求項２】
請求項１において、前記各行が‘ｎ’ビットを含み、前記フラグフィールドがその‘ｎ’ビットの中の１つまたは複数である、データ処理装置。
【請求項３】
請求項１において、前記フラグフィールドが単一のビットを含むデータ処理装置。
【請求項４】
請求項１において、さらに
前記プロセッサ本体からアドレスとデータ値を受けるマルチプレクサと；
前記マルチプレクサを制御してデータ値またはアドレスの何れかを前記書込バッファに出力して特定の行に格納する入力制御論理と；
を備え、前記入力制御論理がさらに前記書込バッファを制御して、前記特定の行のフラグフィールドが、その行がアドレスまたはデータ値の何れを格納しているかを示すように設定されるようにした、データ処理装置。
【請求項５】
請求項１において、前記行の複数のバイトが前記データ値を格納するために留保され、前記マスクデータが前記複数のバイトの何れが前記データ値を含むかを示す、データ処理装置。
【請求項６】
請求項１において、さらに
前記プロセッサ本体からアドレスとデータ値を受けるマルチプレクサと；
前記マルチプレクサを制御してデータ値またはアドレスの何れかを前記書込バッファに出力して特定の行に格納する入力制御論理と；
を備え、前記入力制御論理がさらに前記書込バッファを制御して、前記特定の行のフラグフィールドが、その行がアドレスまたはデータ値の何れを格納しているかを示すように設定されるようにし、
前記入力制御論理が前記書込バッファを制御して前記マスクデータを発生するように構成されている、データ処理装置。
【請求項７】
請求項１において、さらに前記書込バッファに格納されているアドレスとデータ値の前記メモリへの出力を制御する出力制御論理を備えた、データ処理装置。
【請求項８】
請求項７において、さらに前記書込バッファの行の内容を受け取るデマルチプレクサを含み、前記出力制御論理が前記フラグフィールドからアドレスまたはデータ値がその行に含まれているかどうかを決め、データ値をデータ線に、またはアドレスをアドレス線に出力するように前記デマルチプレクサに命令するように構成されている、データ処理装置。
【請求項９】
請求項８において、さらに前記アドレス線上に出力されたアドレスを受ける増分器を含む、データ処理装置。
【請求項１０】
請求項８において、各行はさらに制御フィールドを含み、もし特定の行にアドレスが格納されていれば、その行の制御フィールドがそのアドレスに関連する制御データを格納するのに使用され、前記デマルチプレクサが前記書込バッファから受けた、前記行内の制御データを制御線に出力するように構成されているデータ処理装置にして、さらに前記制御データを格納するレジスタを備えた、前記データ処理装置。
【請求項１１】
請求項１において、前記書込バッファが先入れ−先出し（ＦＩＦＯ）バッファである、データ処理装置。
【請求項１２】
メモリ内の位置を同定するアドレスと前記メモリに格納するデータ値を格納し、その後前記アドレスとデータ値を出力して、前記データ値が前記メモリに格納されるようにする、書込バッファにして、
前記書込バッファが、複数の行を含み、各行がアドレスまたはデータ値を格納するように構成され、各行がまたそれと関連して、その行がアドレスまたはデータ値の何れを含むかを示すように設定可能なフラグフィールドをもち、
前記各行がさらに制御フィールドを含み、もしアドレスが特定の行に格納されていれば、その行の制御フィールドが前記アドレスに関連する制御データを格納するのに使用され、
もしデータ値が特定の行に格納されていれば、前記制御フィールドがデータを含むその行の領域を同定するマスクデータを格納するのに使用される、
前記書込バッファ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリ内の位置を同定するアドレス及びそのメモリ位置に書き込むべきデータ値をバッファするデータ処理装置に関する。ここで「データ値」の用語は命令及びデータワードのようなデータの項目またはブロックの両者を呼ぶのに用いられる。
【０００２】
【従来の技術】
代表的なデータ処理装置は、プロセッサ本体（またはＣＰＵ）、すなわちプロセッサ本体に与えられるデータに適用される一連の命令を実行するように構成されたプロセッサ本体を含む。一般にメモリはプロセッサ本体に必要な命令及びデータ（ここでは綜合的に「データ値」と呼ぶ）を格納するために設けられる。さらにメモリに対して必要なアクセスの回数を減少するため、プロセッサ本体に必要なデータ値を格納する１つまたは複数のキャッシュを設けることが多い。
【０００３】
キャッシュの使用はプロセッサ本体の処理速度を改良するが、プロセッサ本体がデータ値をメモリから読取り、書込むことは依然として必要であり、それらの処理は比較的遅いので、プロセッサ本体の処理速度に不利な影響を与える。
【０００４】
メモリにデータ値を書き込むことによる処理速度への影響を減少するため、キャッシュ付ＣＰＵをメモリから減結合するために通常用いられる書込バッファを設け、処理バスが中間の書込バッファへの書込動作を完了して、書込バッファが自律的にメモリバスへの書込を実行するようにすることが知られている。この方法により、ＣＰＵは次の命令の実行に進む前に書込み処理が完了するのを待つ必要がない。さらに、書込バッファの深さ（depth)を単一のレジスタ以上に増加して複数のＣＰＵデータ書込みを蓄積し、例えば、先入れ−先出し（ＦＩＦＯ）バッファを用いて書込動作の順序を維持することができる。
【０００５】
一般的に言えば、書込バッファは、その入力側でマスタに対する“補助”インターフェイスとなり、その出力側でメモリバスに対する“開始”バスインターフェイスとなる。補助インターフェイスは一般にアドレス信号（ａ），制御信号（ｃ），書込データ信号（ｄ）を必要とする。制御信号は通常オペランドの大きさ、保護フラグ、アクセスフラグのような制御情報を含む。マスタインターフェイス、例えばＣＰＵと処理バスの間のインターフェイスは、同様に同じアドレス、制御、書込データ情報を与えねばならず、さらにより狭い、または広い書込データバス幅への通路調整を行うこともある。
【０００６】
簡単な従来の書込バッファにおいては、書込バッファの補助インターフェイスは“ａ＋ｃ＋ｄ”ビットの幅（アドレス、制御、データバスの幅）をもつ。そのような構成においては、書込バッファの所要格納容量は、
ａ＋ｃ＋ｄビット×書込バッファスロットの数
である。
【０００７】
一般に、積分回路のようなデータ処理装置を開発するとき、回路を出来るだけ小さくするという要望がある。積分回路が占有する領域が重要である。積分回路が小さくなる程、製造コストが安くなり、製造歩留りが高くなる。このため、積分回路の全体の大きさを出来るだけ小さく保持しなければならないとき、書込バッファス内に設けられる書込バッファスロットの数を任意に増加することができないことが明らかである。
【０００８】
書込バッファが容量一杯に書き込まれたときは常に、プロセッサは書込バッファの空きスロットが使用できるようになるまで、次の書込動作を遅らせる。最大書込バッファ深さ（depth)はそのアプリケーションに依存し、チップ領域、是認できるバースト書込帯域幅（ sustainable burst write bandwith ）、および書込バッファが空きになるまで読出し処理が停止されるメモリまたは２次バスの待ち時間（ the latency of the memory, or secondary, bus where a read transaction is blocked ）との兼ね合いである。
【０００９】
キャッシュ付プロセッサと高帯域幅装置においては、書込伝送の多くは“バースト”（すなわち、キャッシュライン交換またはスタック・コンテキスト退避（cache line replacements or stack context saves）の形で行われ、基本アドレス（base address) および固定または可変数のデータワードが伝送される。しかし、依然として非バースト（例えば８ビットまたは１６ビット）のアクセス（例えば文字または短いデータ）が存在する。
【００１０】
そのような構成においては、書込バッファに必要な領域はアドレス／制御通路をデータ通路から分離して、２つの論理的に分離された書込バッファ、すなわちアドレスと制御用に１つと、データ信号用に１つの書込バッファを設けることにより減少される。バーストモード処理においてはデータ値よりアドレスが少ないので、書込バッファに設けられるアドレススロットの数は書込バッファに設けられるデータスロットの数よりも相当に小さくできる。しかし、このアドレススロットを少なくすることによる領域の減少は、通常データスロットの増加により打ち消され、書込バッファの総領域は代表的使用に対して最適化される。
従って、そのようなバーストモード書込バッファに対する書込バッファの容量は、
ａ＋ｃビット幅×アドレススロットの数
ｄビット幅×データスロットの数
となる。
【００１１】
そのような構成において、書込バッファの内容をメモリに出力するときバーストアドレスを再合成するために、代表的にアドレス増分器（incrementer)が必要となり、アドレスとデータの書込バッファの再構築を連動するためにより複雑な制御論理が必要となる。
【００１２】
そのような構成は明らかにバーストモード書込伝送には有利であるが、もし非バースト蓄積（バイト構成アクセス）が存在するときは、非バーストモードにおいては各データワードについて１つのアドレスが必要であるので、アドレススロットの数が限定要因となる。
【００１３】
多くのデータ処理装置は通常メモリにたいしてバーストモード格納と非バーストモード格納の両者を使用しているので、データ処理装置にはバーストモード書込伝送と非バーストモード書込伝送の両者に対して効率的に作動する書込バッファを、公知の従来の書込バッファの大きさに対してそのサイズを大きくすることなく設けることが望ましい。
【００１４】
【発明の概要】
第１の観点において本発明はデータ処理装置を提供し、そのデータ処理装置は、メモリ内の位置を同定するアドレスと該メモリに格納するデータ値を発生するプロセッサ本体と、前記プロセッサ本体から出力されるアドレスとデータ値を格納し、その後前記メモリに前記データ値が格納されるように前記アドレスとデータ値を出力する書込バッファとを備え、前記書込バッファが複数の行をもち、各行はアドレスまたはデータ値を格納するように構成され、また各行はそれに関連してその行がアドレスまたはデータ値の何れを含んでいるかを示すように設定されるフラグフィールドをもつようになっている。
【００１５】
本発明によれば、前記書込バッファの各行はアドレスかデータ値の何れかを格納することができ、各行に関連してフラグフィールドが追加的に設けられ、該フラグフィールドはその行がアドレスかデータ値の何れを含んでいるかを示すように設定することができる。従って、バーストモードにおいては、特定の行は基本アドレスを格納するのに用いられ、その行のフラグフィールドはその行にアドレスが含まれていることを示すように設定され、ついでその後バースト伝送を形成するデータ値はその書込バッファの他の行に格納され、それら他の行のフラグフィールドはそれら行がデータ値を含むことを示すように設定される。この方法は、バーストモード書込伝送をバッファするとき、利用できる書込バッファの効率的使用を可能にする。
【００１６】
しかも、本発明の構成は明らかに非バースト書込伝送をもサポートする。その場合、書込バッファの行に交互にアドレスとデータ値を格納し、各行のフラグフィールドはそれに従って設定される。
【００１７】
本発明による書込バッファは比較的小さな領域を占めるように構成され、かつ非バーストモード伝送に対して最適な書込バッファとバーストモード伝送に対して最適な書込バッファの間の良い妥協を与えることが判明した。
【００１８】
好ましい実施例において、各行は“ｎ”ビットを含み、前記フラグフィールドはその“ｎ”ビットの１つまたは複数を含む。好ましくは、前記フラグフィールドは単一ビットを含む。それは、それによりフラグフィールドに必要な領域を最小にし、かつ特定の行がアドレスまたはデータ値を含むことを決める充分な情報を確実に与えるからである。
【００１９】
好ましい実施例において、データ処理装置はさらにプロセッサ本体から前記
アドレスとデータ値を受けるマルチプレクサと、前記マルチプレクサが前記データ値かアドレスの何れかを書込バッファに出力して特定の行に格納されるように制御する入力制御論理を備え、前記入力制御論理はさらに前記書込バッファを制御して特定の行のフラグフィールドを、その行がアドレスとデータ値の何れを格納しているかを示すように設定する。
【００２０】
さらに好ましい実施例において、各行はさらに制御フィールドを含み、アドレスが特定の行に格納されているとき、その行の制御フィールドは該アドレスに関連する制御データを格納するのに用いられる。従ってこの構成においては、入力制御論理は前記マルチプレクサから前記特定の行に格納するためのアドレスとその行の制御フィールドに格納する制御データを出力させ、前記フラグフィールドは前記特定の行がアドレスを含むことを示すように設定される。
【００２１】
好ましくは、もしデータ値が特定の行に格納されているなら、前記制御フィールドはデータを含む１つまたは複数の領域を同定するマスクデータを格納するのに用いられる。従って、例え前記行がアドレスよりはむしろデータ値を格納するのに用いられても、前記制御フィールドは依然として使用される。好ましい実施例において、前記行の複数のバイトが前記データ値を格納するのに予約され、前記マスクデータは前記複数のバイトの何れが前記データ値を含むかを示す。従って、もしデータワードが４バイトまでの長さであり、書込バッファが３２−ビットバスに接続されているなら、各行にデータ値を格納するため４バイトが予約される。しかし、もし各行に格納されるデータ値が４バイトより短い長さであるなら、各行の４バイトの全てをデータ値を格納するのに用いる必要がない。この場合、マスクデータはその行の複数のバイトの何れが前記データ値を含むかを示すのに用いられる。好ましい実施例において、入力制御論理が前記書込バッファを制御して前記マスクデータを発生するように構成される。
【００２２】
さらに好ましい実施例において、データ処理装置は書込バッファに格納されているアドレスとデータ値のメモリへの出力を制御する出力制御論理を含む。好ましくは、データ処理装置は書込バッファの１つの行の内容を受けるデマルチプレクサを含み、前記出力制御論理はフラグフィールドから前記行にアドレスまたはデータ値の何れが含まれているかを決め、前記デマルチプレクサにデータ値をデータ線上に、またはアドレスをアドレス線上に出力するように命令する。前記入力および出力制御論理は別個の論理要素により構成されても良いが、好ましい実施例においては同じ論理要素により構成される。
【００２３】
好ましい実施例において、書込バッファにおけるバーストモード格納はメモリバスに送られる前に再合成される。従って、好ましい実施例においてはデータ処理装置はさらにアドレス線上にアドレス出力を受けるため増分器を含む。従って、もし増分器でアドレスが受信された後複数の行のデータ値が書込バッファから読み出されるなら、データ値がメモリバスに置かれる毎に、該アドレスは増分器により増分され、対応する増分されたアドレスはメモリバスのアドレスバスに出力される。このようにして、メモリは必要なアドレス情報を受け取り、受け取った各データ値を格納できるようにする。
【００２４】
好ましい実施例において、デマルチプレクサは、書込バッファから受け取った前記行内の制御データを制御線上に出力するように構成され、データ処理装置はさらに前記制御データを格納するレジスタを含む。好ましい実施例において、データ値を含む書込バッファの１つの行がメモリバスに出力される毎に制御データが出力される。制御データをレジスタに格納することにより、この情報は必要に応じ、メモリバスの制御バスに出力することができる。
【００２５】
好ましい実施例において、書込バッファは先入れ先出し（ＦＩＦＯ）バッファである。これにより書込処理の順序が確実に維持される。
【００２６】
第２の観点から、本発明はメモリ内の位置を同定するアドレスと該メモリに格納されるデータ値を格納し、その後前記アドレスとデータ値を出力して該データ値が前記メモリに格納されるようにする書込バッファを提供する。前記書込バッファは、複数の行を含み、各行はアドレスまたはデータ値を格納するように構成され、また各行はそれと関連してその行がアドレスまたはデータ値の何れを含んでいるかを示すように設定されるフラグフィールドをもつ。
【００２７】
本発明の実施例を、単なる例示であるが以下添付図面を参照して説明する。添付図面において同じ参照符号は同じ要素を示すのに用いられる。
【００２８】
【好ましい実施例の詳細な説明】
本発明の好ましい実施例によるデータ処理回路を図１のブロック図を参照して説明する。図１に示されるように、データ処理回路はメモリ１２０から受け取った命令を処理するように構成されたプロセッサ本体１０をもつ。それら命令を実行するためプロセッサ本体１０に必要なデータもまたメモリ１２０から取り込まれる。キャッシュ３０はメモリ１２０から取り込んだデータと命令を格納するように設けられ、格納されたデータと命令はその後プロセッサ本体１０から容易にアクセス可能である。またキャッシュ制御ユニット４０がキャッシュ３０内のデータと命令の格納を制御し、さらにキャッシュからデータと命令の取り込みを制御するように設けられる。
【００２９】
プロセッサ本体１０が命令またはデータ項目（以下命令またはデータの両者をデータ値と呼ぶ）を必要とするとき、プロセッサ本体はそのデータ値のメモリアドレスをプロセッサバス５０のバス線５４上に与える。さらに、プロセッサ本体１０はバス線５２上にプロセッサ制御信号を与える。プロセッサ制御信号はアドレスが読出要求または書込要求に対応するかどうか、アクセスの形式（例えば順次）、アクセスのサイズ（例えばワード、バイト）、プロセッサの動作モード（例えば管理者モードまたは使用者モード）等の情報を含む。このプロセッサ制御信号はキャッシュ制御ユニット４０に与えられ、キャッシュ制御ユニットは直ちに必要とするデータ値がキャッシュ内に格納されているか否かを決める。キャッシュ制御ユニット４０はキャッシュ３０に命令して、バス線５４上のアドレスとキャッシュ内のアドレスを比較して、そのアドレスに対応するデータ値がキャッシュに格納されているか否かを決める。もし格納されていれば、そのデータ値はキャッシュ３０からデータバス線５６上に取り出され、プロセッサ本体１０により読み取られる。もし、アドレスに対応するデータ値がキャッシュ３０内に存在しなければ、キャッシュ制御ユニット４０は線１３０を介してバスインターフェイス・ユニット（ＢＩＵ）９５に信号を送り、データ値をメモリ１２０から取り出すことが必要であることを示す。
【００３０】
このキャッシュのルックアップ処理の間に、メモリ管理ユニット（ＭＭＵ）２０はバス線５２上のプロセッサ制御信号を受け、プロセッサ制御信号がメモリ１２０またはキャッシュ３０に対する潜在的な読取、または書込アクセスに関連することを確認した上、プロセッサ本体１０によりバス線５４に与えられたアドレスを調べるように構成される。
【００３１】
メモリ１２０の別の領域が、保護、キャッシュ可能、バッファ可能な属性のような異なる属性をもったデータ値を格納するのに用いられる。従って、ＭＭＵ２０はそのアドレスからメモリ１２０へのアクセスを制御する属性か、キャッシュ３０から取り出したデータ値の使用を制御する属性かを決定するように構成される。これら属性はＢＩＵ９５に送られる。
【００３２】
前に述べたように、ＭＭＵ２０はバス線５２からプロセッサ制御信号を受け取り、このプロセッサ制御信号は他の事項と共にプロセッサ本体１０の動作モードを画定する。従って、この情報を用いてＭＭＵ２０は、前記アドレスから決められた属性がプロセッサ本体１０が現在の動作モードにおいて必要とするメモリアドレスにアクセスするのを許すか否かを決めることができる。例えば、もしプロセッサ制御信号がプロセッサ本体１０が使用者モードにあることを示し、一方アドレスから決められた属性がメモリアドレスは管理者モードにおいてのみアクセスできることを示すならば、ＭＭＵ２０は中止信号を発生し、線路１４０を介してプロセッサ本体１０に、線路１７０を介してバスインターフェイス・ユニット９５に送る。
【００３３】
ＭＭＵ２０により実行される処理は充分な処理速度を保持するため好ましくはキャッシュルックアップ処理と同時に行われる。もし、必要とするデータ値がキャッシュ３０にあり、ＭＭＵ２０が線１４０上に中止信号を発生していなければ、プロセッサ本体１０はキャッシュ３０から取り出したデータを使用する。しかし、もし必要とするデータがキャッシュから得られないなら、前述の如く線路１３０に信号が送られバスインターフェイス・ユニット（ＢＩＵ）９５にメモリ１２０にアクセスしてそのデータ値を求めるように命令する。
【００３４】
ＢＩＵ９５はバス線５２上の信号を調べてプロセッサ本体１０から発生された命令が読取命令か書込命令であるかを決める。それが読取命令であり、論理９０から線路１７０を介して中止信号を受けていなければ、ＢＩＵ９５は多重化装置１００に命令して、バス線５４上のアドレスをバス６０の外部アドレスバス線６４に送る。（これは、メモリ１２０に対する未処理の書込命令が書込バッファ１０５に残っていない、と言う前提である。もしそのような未処理の書込信号が存在するなら、それは読出命令の前に完了されるであろう。書込バッファの動作については後に詳述する。）また、制御信号がバス線６２に与えられ、それによりメモリ制御装置１８０はメモリ１２０へのアクセスを制御する。メモリ制御装置１８０はバス線６２上の制御信号からメモリの読取が必要であると判断し、メモリに命令してアドレスバス線６４に示されるアドレスにあるデータをデータバス線６６に出力させる。
【００３５】
ＢＩＵ９５はバッファ１１０に信号を送り、バッファ１１０がメモリ１２０により外部バス線６６に与えられたデータをプロセッサバス線５６に送るようにさせる。加えて、もしＢＩＵ９５がＭＭＵ２０から受けた属性が前記アドレスがキヤシュ可能なデータ値を含んでいることを示すなら、ＢＩＵ９５は信号を線路１３５を介してキャッシュ制御４０に送り、キャッシュ制御に命令して前記取り込んだデータ値をキャッシュ３０に格納させる。メモリ１２０から取り込まれバス線５６に置かれたデータ値はキャッシュ３０に格納されると共にプロセッサ本体１０に送られる。その後、そのデータ値は容易にキャッシュからプロセッサ本体により容易にアクセスされる。もし、ＢＩＵ９５が受けた属性が前記データ値がキャッシュ可能でないことを示すなら、該データはキャッシュに格納されず、プロセッサ本体１０はデータ値をバス線５６から読み込む。
【００３６】
以上の記載は、ＭＭＵ２０がメモリ１２０からデータ値を読み込むためにどのように用いられるかを説明するものである。プロセッサ本体１０により発生されるアドレスがプロセッサがデータ値を書き込もうとするアドレスの場合は、次の手順が行われる。
【００３７】
プロセッサ本体はプロセッサ制御信号をバス線５２に、アドレスをバス線５４に、格納すべきデータ値をバス線５６に与える。ＭＭＵ２０はバス線５２上のプロセッサ制御信号を調べ、プロセッサ制御信号がメモリ１２０への書込アクセスに関連していると判断すると、バス線５４にプロセッサ本体１０により与えられたアドレスを調べる。ついで、そのアドレスに関連した属性がＢＩＵ９５に出力される。
【００３８】
ＢＩＵ９５はバス線５２上のプロセッサ制御信号を調べて、プロセッサ本体により発生された命令が読取命令か、書込命令かを決める。それが書込命令であるとすると、ＢＩＵは書込手順を使用することが必要と決め、ＭＭＵ２０から受けた属性情報を用いて書込手順を制御する。
【００３９】
ＭＭＵ２０はまた前記属性、プロセッサ制御信号からプロセッサ本体が現在の動作モードにおいて特定のアドレスに書き込むことができるかを決め、もしできないなら、中止信号を発生する。中止信号は線路１７０を介してＢＩＵ９５に送られ、ＢＩＵにその書込命令を無視させる。中止信号は線路１４０を介してプロセッサ本体１０にも送られ、前記データ、アドレスおよび制御信号をそれぞれバス線５６、５４、および５２から除去し、プロセッサ本体１０がそのような中止の場合に必要とする特別処理を実行できるようにする。
【００４０】
しかし、プロセッサ本体がバス線５４上のアドレスに書込が許され、従ってＢＩＵ９５に中止信号が与えられないとすると、ＢＩＵ９５はＭＭＵ２０からの属性情報を用いて書き込むべきデータがバッファ可能であるか否かを決める。もし、データがバッファ可能であるなら、ＢＩＵ９５は書込バッファ１０５にデータ、アドレスおよび制御信号をバス５０から取り込むように命令する。これがなされると、次の命令が書込命令が完了するのを待つことなくプロセッサ本体１０により処理される。
【００４１】
書込バッファは好ましくはＦＩＦＯバッファである。外部バス６０が空いているときは、ＢＩＵ９５はマルチプレクサ１００に命令して次の事項を書込バッファから外部バス６０に出力させる。ついで、マルチプレクサ１００は必要な制御、アドレスおよびデータ信号をバス線６２、６４および６６上にそれぞれ出力し、メモリ制御装置１８０は制御信号を用いてメモリ１２０に対する書込アクセスを制御する。この時点において、データはメモリ１２０に格納される。格納すべきデータが順次書込バッファ１０５から処理されると、同時にバス線５４にプロセッサにより与えられたアドレスに対応するデータがメモリ１２０に格納される。
【００４２】
しかし、もしバスインターフェイス・ユニット９５がデータを格納すべきアドレスがバッファ可能でないと決めたときは、バスインターフェイス・ユニット９５はマルチプレクサ１００に命令してプロセッサ制御、アドレスおよびデータ情報をバス線５２、５４および５６から直接選択させる。ついで、マルチプレクサ１００はこの情報を外部バス６０に出力し、該データをメモリ１２０の対応するアドレスに格納する。しかし、これを実行する前に、書込命令が正しい順序で処理されることを確実にするため、書込バッファ１０５は通常その中の全ての入力を排出する。現在の書込命令に対応する非バッファ可能データが格納されると、次の命令を処理することができる。
【００４３】
図１についての上記説明は、代表的データ処理装置の動作の一般的概要である。本発明の好ましい実施例の書込バッファ１０５の動作のさらに詳細な説明を図２、３を参照して次に述べる。
【００４４】
図３は本発明の好ましい実施例における書込バッファの構成を示す。図３に示す構成は３２−ビットデータバス、３２−ビットアドレスバスおよび４−ビット制御バスからなるプロセッサバスに接続された３２−ビットＲＩＳＣプロセッサに使用するのに適したものである。従って、書込バッファの各行３１０のビット０−３１はアドレスまたはデータ値を格納するように予約される。さらに、ビット３２−３５はその行に格納されるアドレスに関連する４−ビット制御データまたはその行に格納されるデータ値に関連する４−ビットデータマスクの何れかを格納するように予約される。
【００４５】
好ましい実施例において、アドレスを含むこれら行に格納される制御データの４ビットは、２−ビットのフィールド（８、１６、３２、６４ビット、データ転送幅（data transfer width)）と特権（privilege)（“管理”）アクセス指示のような任意の必要な追加の制御フラグを含む。
【００４６】
上記の３６ビットに加えて、本発明の好ましい実施例においては３７番目の１つのビットが各行に付加され、その行がアドレスまたはデータ値の何れを含むかを示すフラグのフィールドを与える。好ましい実施例において、論理“０”はその行がアドレスを含むことを示し、論理“１”はその行がデータ値を含むことを示す。しかし、例えば論理“１”がアドレスを示し、論理“０”がデータ値を示すようにこれら論理値を反対にしても本発明から逸脱することがないことは明らかである。
【００４７】
好ましい実施例において、図３に示すようにプロセッサ本体から出力されるデータは書込バッファの最下部に入力される。書込バッファはＦＩＦＯバッファであり、図３に示すようにバッファに最も長く格納されていた事項が最初に出力され、各行はバッファの最上部から読出される。
【００４８】
バーストモードにおいて、基本アドレスと対応する制御データは書込バッファの第１の行に格納され、３７番目のビットに論理０が加えられその行がアドレスを含むことを示す。基本アドレスに続く各データ値は書込バッファの別の行に格納され、３７番目のビットは論理１にセットされ、その行にデータが格納されていることを示す。従って、１６行の深さをもった書込バッファは、バッファが一杯になるまでに１５のデータワードのバーストを格納することができる。
【００４９】
非バーストモードにおいては、アドレスとデータ値は書込バッファに交互に格納、すなわちアドレスを含む行の次の行にそのアドレスに格納すべきデータ値が格納される。図３から明らかなように、特定の行に格納されているデータ値はデータワードであり、この例ではデータワードは３２−ビット、すなわち４−バイトの長さである。しかしまたは、データ値は、しばしばサブ・ワード長データ値（sub-word-length data value) と呼ばれるような、１バイト、２バイト、または３バイトの長さであっても良い。そのような場合は、データ値を含む各行のビット３２−３５に置かれる４−ビットデータマスクはデータ値に割り当てられた４バイトの何れが実際にデータ値を格納するかを同定するのに用いられる。従って好ましい実施例において、もしデータ値がデータワードであるなら、データマスクの４ビット全てを論理“１”に設定し、一方そのバイトの何れかがデータ値でないときは、データマスクの対応するビットは論理“０”に設定される。
【００５０】
上記の説明から、書込バッファは極めて融通性があり、バーストモードまたは非バーストモードの何れの書込伝送も格納できるように自動的に適応されることが分かる。従って、先に述べた１６行深さのＦＩＦＯの例で言えば、１５データワードまでのバーストモード書込から８つの１バイト幅までの非バースト書込が、スロット数をアドレスに必要な数に適応的に調整される前記ＦＩＦＯ書込バッファ構成により処理できる。
【００５１】
この適応的調整は、コンテキストおよびレジスタバンクセーブプロセッサ（ context and register bank save processors）について僅かのアドレスが割り当てられてバーストモード書込を行い、一方多くのアドレス情報が割り当てられる少ないバイトと半−ワード・非バーストストア処理（fewer byte and half-word non-burst store operations with more address information ）を行う基本的ロードおよびストアＲＩＳＣ処理（ basic load and Store RISC processors ）に対して適応している。
【００５２】
図３を参照して好ましい実施例の書込バッファの構成を説明したので、次に書込バッファの作動について図２を参照して更に詳細に説明する。
図２から明らかなように、書込バッファ１０５はマルチプレクサ２００によりプロセッサバス５０から分離される。図１を参照して前に述べたように、ＢＩＵ９５は先ずバス線５２の制御信号にアクセスする。これは図２において線路２３５により示される。書込むべきデータがバッファ可能と決められると、ＢＩＵ９５は信号を線路２４０を介してマルチプレクサ２００に送り、バス５２、５４上の制御およびアドレスデータを書込バッファ１０５に出力するように命令する。また、ＢＩＵ９５は線路２５５を介して書込バッファ１０５にマルチプレクサ２００より与えられた制御およびアドレスデータを格納するように命令する。加えて、ＢＩＵ９５は線路２５０を介して信号を送り、その行がアドレスを含むことを示すために関連する行のフラグフィールド、好ましい実施例においては３７番目のビットを論理“０”に設定する。
【００５３】
上記処理はデータバス５６のデータに対して繰り返され、ＢＩＵ９５はマルチプレクサ２００にデータを書込バッファ１０５に出力するように命令し、またＢＩＵ９５は関連する行のフラグフィールドを論理“１”に設定する。さらに、ＢＩＵ９５は書込バッファ１０５からマスクデータを発生し、それを関連する行のビット３２−３５に与え、データ値に割り当てられたその行の４つのバイトの中で実際にデータ値を含むバイトを示すようにする。
【００５４】
もし書込動作が非バーストモードであるなら、書込み動作に必要な全ての制御、アドレスおよびデータ情報は書込バッファに格納され、ＢＩＵ９５は、書込動作がバッファ可能と見なして、その後の各非バースト書込動作に対して上記処理を繰り返すように構成される。しかし、書込がバーストモードであるなら、ＢＩＵ９５はマルチプレクサ２００に、バーストモード書込動作における各データワードに対してデータを書込バッファ１０５に接続されるデータバス５６に出力するように命令を継続する。加えて、ＢＩＵ９５は書込バッファに格納される各データワードについて線路２５０に信号を送り、対応する行のフラグフィールドを論理“１”に設定してそれら行がデータを含むことを示すようにすると共に、書込バッファから必要なマスクデータを発生させる。
【００５５】
メモリ１２０に格納するためデータを書込バッファ１０５から読出すとき、ＢＩＵ９５はまず書込バッファから読出すデータの行のフラグフィールドの値を求め、その値を線路２６０を介してＢＩＵ９５に送る。好ましい実施例において書込バッファ１０５はＦＩＦＯ書込バッファであるので、書込バッファに最も長く格納されていたデータが最初に読出される。
【００５６】
フラグフィールドの値がＢＩＵ９５により決められると、ＢＩＵ９５は信号を線路２６５、２７０、２７５、２８０を介して書込バッファ１０５、デマルチプレクサ２１０、レジスタ２２０、増分器２３０にそれぞれ送り、外部バス６０の制御バス６２、アドレスバス６４、データバス６６への出力を制御する。特に、もしフラグフィールドが書込バッファの読出すべき行がアドレスを含むことを示すならば、ＢＩＵ９５は書込バッファ１０５にその行を読出すように命令し、デマルチプレクサ２１０にビット０−３１を増分器２３０にまたビット３２−３５をレジスタ２２０に送るように命令する。この方法により、アドレスは増分器２３０に送られ、制御データはレジスタ２２０に送られる。レジスタ２２０と増分器２３０の両者は、ＢＩＵ９５から線路２７０、２８０を介してそれぞれ送られる信号によりこれらの値を格納するように命令されている。
【００５７】
ついでＢＩＵ９５は次の行のフラグフィールドの値を求める。その値が論理“１”でその行がデータ値を含むことを示すものとする。ついで、書込バッファ１０５にその行をデマルチプレクサ２１０に出力するように命令し、デマルチプレクサ２１０に線路２７５を介してマスクデータにより示されるビット０−３１に格納されているデータ値をデータ線路２８５に出力するように命令する。このとき、レジスタ２２０と増分器２３０は制御データ、アドレスデータをそれぞれ制御線路２９０、アドレス線路２９５に出力する。このデータはついで外部バス６０に出力するためマルチプレクサ１００（図１に示される）に送られる。
【００５８】
もしＢＩＵ９５は書込バッファから読出すべき次の行がアドレスを含んでいると決めたときは、上記の処理が繰返され制御およびアドレス情報がレジスタ２２０、増分器２３０にそれぞれ送られ、制御およびアドレス情報は線路２９０、２９５に出力され、一方データは線路２８５から出力される。しかし、もしＢＩＵ９５が次の行もデータを含んでいると決めたときは、書込バッファ１０５にデータをデマルチプレクサに出力するように命令し、デマルチプレクサにビット０−３１（マスクデータにより同定される）のデータをデータ線路２８５に出力するように命令する。さらに、レジスタ２２０にすでにレジスタ２２０に格納されている制御データを線路２９０に出力するように命令し、増分器２３０にアドレスを増分し、増分されたアドレスをアドレス線路２９５に出力するように命令する。この方法により、制御、データ、アドレス情報が外部バス６０に送られる前に再合成される。
【００５９】
もし何れかの段階において、ＢＩＵ９５が書込バッファが満杯であり、しかもさらにバッファ可能な書込処理を書込バッファに適用すべきと決めたときは、ＢＩＵ９５は待機信号をプロセッサバス５０に送り、書込バッファ１０５が満杯であることを知らせる。この信号をどのように用いるかは、何れの論理ユニットでバッファ可能書込処理を始めるかに依存する。例えば、前に述べたように、もしプロセッサ本体１０がバッファ可能処理を実行しようとしており、書込バッファ１０５が満杯であるなら、プロセッサ本体は書込バッファの空きスロットが利用可能になるまで待機する。
【００６０】
以上特定の実施例について説明したが、本発明はそれに限定されることなく多くの変更や追加が本発明の範囲から逸脱することなくなされることが理解されるであろう。例えば、従属請求項の特徴の独立請求項の特徴との各種組み合わせが、本発明の範囲から逸脱することなく可能である。
【図面の簡単な説明】
【図１】本発明の好ましい実施例によるデータ処理装置を説明するブロック図面。
【図２】本発明の好ましい実施例の書込バッファに、アドレス、データ、制御信号を格納し、ついで前記アドレス、データ、制御信号を読出し、再合成するための論理を説明するブロック図面。
【図３】本発明の好ましい実施例の適応的書込バッファの構成を示す図面。
【符号の説明】
１０  プロセッサ本体
２０  ＭＭＵ
３０  キャッシュ
９５  ＢＩＵ
１０５  書込みバッファ
１２０  メモリ
２００  マルチプレクサ
２１０  デマルチプレクサ
【図１】
0003935286.tif 000002
【図２】
0003935286.tif 000003
【図３】
0003935286.tif 000004