JP2007328539A - バスシステムおよびバススレーブならびにバス制御方法 - Google Patents

バスシステムおよびバススレーブならびにバス制御方法 Download PDF

Info

Publication number
JP2007328539A
JP2007328539A JP2006158988A JP2006158988A JP2007328539A JP 2007328539 A JP2007328539 A JP 2007328539A JP 2006158988 A JP2006158988 A JP 2006158988A JP 2006158988 A JP2006158988 A JP 2006158988A JP 2007328539 A JP2007328539 A JP 2007328539A
Authority
JP
Japan
Prior art keywords
bus
response
blocking
wait
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.)
Granted
Application number
JP2006158988A
Other languages
English (en)
Other versions
JP4818820B2 (ja
Inventor
Hideki Matsuyama
英樹 松山
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.)
NEC Electronics Corp
Original Assignee
NEC Electronics 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 NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2006158988A priority Critical patent/JP4818820B2/ja
Priority to US11/806,782 priority patent/US7877533B2/en
Publication of JP2007328539A publication Critical patent/JP2007328539A/ja
Application granted granted Critical
Publication of JP4818820B2 publication Critical patent/JP4818820B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4286Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a handshaking protocol, e.g. RS232C link

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Advance Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】パイプライン処理が実行されるバスシステムの高性能化を図る。
【解決手段】1つ以上のバスマスタと、1つ以上のバススレーブと、応答手段を備える。バスマスタからバススレーブ内のリソースへのアクセス要求が出されたときに、応答手段は、このバススレーブがウエイト状態である場合において、バスマスタにブロッキングウエイト動作をさせるブロッキングウエイト応答とノンブロッキングウエイト動作をさせるノンブロッキングウエイト応答のいずれかであるウエイト応答を出す。
【選択図】図4

Description

本発明はバスシステム、具体的にはバスマスタのウエイト動作を制御する技術に関する。
コンピュータの性能を向上させる方法については、いろいろ考案されている。複数の命令処理を並列化して性能を向上させるための1つの手法としてパイプラインが用いられている。具体的には、1つの命令処理を2つ以上のステージに分け、複数命令の各ステージが並列に処理できるようにする。
パイプラインが適用されたバスシステムにおいて、プロセッサやDMAC(ダイレクト・メモリ・アクセス・コントローラ)などのバスマスタからバススレーブのリソースへのアクセス処理も複数のステージから構成される。図6は、バスマスタがバススレーブのレジスタから読出し(ロード)を行う処理を構成するステージの例を示している。なお、例としてバスマスタをCPUとする。
図6の例に示すように、CPUがバススレーブからデータをロードする命令を実行する処理がIF、ID、EX、DF、CM、WBの6つのステージから構成される。これらのステージは、それぞれ命令をCPUに読み込むステージ、命令を解読するステージ、命令を実行する(この例ではバススレーブにアクセス要求すなわちデータをロードする要求を出す)ステージ、演算結果を取得する(この例ではバススレーブから応答を取得する)ステージ、実行を完了するステージ、ライトバックすなわちCPU自身のリソースたとえばレジスタを更新するステージである。
ところで、バススレーブが何時でもバスマスタからのアクセス要求に応じた処理を行うことがきるわけではない。そのため、バススレーブから応答を取得するDFステージでは、CPUが取得可能な応答は、バススレーブが要求された処理が可能である状態を示すready応答以外に、処理が不可能である状態を示すwait応答(以下ウエイト応答ともいう)がある。ウエイト応答がされたCPUは、バススレーブの状態がreadyになるまで命令の実行を保留する。
なお、バススレーブが出しうる応答は上記2つ以外に、例外の発生を示す応答もあり、実行を完了するステージ(CM)において、この例外が検出された場合には、CPUはCMステージより前のステージの処理を中断して、例外処理を行う。また、ライトバックであるWBステージでは命令が実行することが確定されているので、処理が中断されることがない。
ウエイト応答がされたときに、バススレーブの状態がreadyになるまでのCPUの動作はノンブロッキングウエイト動作と、ブロッキングウエイト動作の2つに分けられることができる。この2つの詳細について図7、図8を用いて説明する。
ノンブロッキングウエイト動作の場合、ウエイト応答がなされた命令の実行はウエイトが解除されるまで保留されるが、この命令の後続の他の命令は保留されずに実行される。図7は、命令1〜命令5のうち、命令1と命令4のDFステージにおいてウエイト応答がされ、それに対してCPUがノンブロッキングウエイト動作をした例である。なお、以下、説明上の便宜のため、ノンブロッキングウエイト動作とブロッキングウエイト動作を単にノンブロッキング動作、ブロッキング動作ともいう。
図7のA、B、C、Dはそれぞれ、CPUが命令1〜5の各ステージを実行するタイミング、命令1と命令4のEXステージにおいてCPUが出力するアクセス要求に関わる信号のタイミング、命令1と命令4のDFステージにおいてバススレーブがready応答したときまたは例外(exp)が発生したときにCPUがデータを取得するタイミング、命令1と命令4のDFステージにおいてバススレーブからの応答のタイミング、を示すチャートであり、命令1の最初のステージ(IF)を1サイクル目として示している。B、C、Dにおける各タイミングはAで示した各サイクルに対応している。
図7のAに示すように、CPUは、3サイクル目において命令1のEXステージを実行し、バススレーブにアクセス要求を出す。その中身は、同図のBに示すように、バススレーブへ処理を要求する信号REQと、アクセスするアドレスADS、バススレーブに要求する処理の内容(ロード命令の場合は読出し)CMDを含む。なお、図中REQの欄において、ハイレベルの線はREQ信号がアクティブであることを示す。
命令1のEXステージにおけるアクセス要求(同図のBにおけるREQ信号がアクティブ)に応じて、バススレーブが応答する。この例では4、5サイクル目に、バススレーブがウエイト応答(WAIT)を出し、6サイクル目にready(RDY)を出している(同図のD)。CPUは、命令を保留し、6サイクル目において、ready応答に応じてバススレーブからデータD0を取得する(同図のC)。その後、実行を完了するステージCM、ライトバックステージWBを実行して、命令1を終了する。
命令2と命令3は、命令1の実行開始(1サイクル目)から1サイクルずつ遅れて実行が開始される命令である。図示のように、命令1のDFステージにおいて、ウエイト応答がされている間(4サイクル目、5サイクル目)、命令2のEXステージとDFステージ、命令3のIDステージとEXステージが実行される。このように、命令1のDFステージにおいてウエイト応答がされているとき、CPUがノンブロッキング動作をするため、後続の命令2、3が実行される。
命令4、5についても同じであり、4サイクル目、5サイクル目において、それぞれのIFステージとIDステージ、IFステージが実行されている。
また、命令4の場合、6サイクル目のEXステージにおいて、CPUはバススレーブにアクセス要求を出し(同図のB)、DFステージにおいて7、8サイクル目でウエイト応答がされている(同図のD)。そして、9サイクル目においてバススレーブから例外応答がされている(同図のDのEXP)。CPUはこの応答と同時にバススレーブからデータD1を取得しているが、10サイクル目のCMステージで「例外による異常完了」となる例外処理を行う。この場合、図示のように、命令4のWBステージが実行されず、9サイクル目において取得したデータD1は、11サイクル目のWBステージでライトバックされない。
なお、命令4のDFステージにおいて、ウエイト応答が出された7、8サイクル目では、CPUがノンブロッキング動作をするため、後続の命令5のステージが実行されている。
このように、CPUがノンブロッキング動作をする場合において、後続の命令が実行されるので、処理システム全体の処理性能が高い。
一方、図7に示す例における命令4のように、命令4の実行により例外処理が生じた場合において、例外処理が完了した際に(10サイクル目)、後続の命令5の実行も既に完了している。命令4を再実行しようとすると、命令5は2回実行されることになる。そのため、CPUがノンブロッキング動作をする場合には、例外が発生した命令4の再実行が困難という問題がある。
ブロッキングウエイト動作の場合において、ウエイト応答がなされた命令の実行はウエイトが解除されるまで保留されるとともに、この命令の後続の他の命令も保留される。図8は、命令1〜命令5のうち、命令1と命令4のDFステージにおいてウエイト応答がされ、それに対してCPUがブロッキング動作をした例である。
図8のA、B、C、Dは、CPUが命令1〜5の各ステージを実行するタイミングチャートと、命令1と命令4のEXステージにCPUが出したリクエストの中身、命令1と命令4のDFステージにおいてバススレーブがreadyまたは例外(exp)になったときにCPUが取得したデータ、命令1と命令4のDFステージにおいてバススレーブからの応答をそれぞれ示している。
命令1のEXステージにおけるアクセス要求に応じて、バススレーブが応答する。図示の例も、図7の例と同じように、4、5サイクル目に、バススレーブがウエイト応答を出し、6サイクル目にreadyを出している(同図のDのRDY)。CPUは、命令を保留し、6サイクル目において、ready応答に応じてバススレーブからデータD0を取得する(同図のC)。その後、7サイクル目と8サイクル目でそれぞれ完了ステージCM、ライトバックステージWBを実行して、命令1を終了する。
命令2と命令3は、命令1の実行開始(1サイクル目)から1サイクルずつ遅れて実行が開始される命令である。図示のように、命令1のDFステージにおいて、ウエイト応答がされている間(4サイクル目、5サイクル目)、命令2のEXステージ、命令3のIDステージも実行されずに保留されている。すなわち、4、5サイクル目において、命令1のDFステージでウエイトが解除されるまで、CPUがブロッキング動作をするため、後続の命令2、3も保留される。
命令4についても同じであり、4サイクル目、5サイクル目において、IFステージが保留されている。
また、命令4の場合、8サイクル目のEXステージにおいて、CPUはバススレーブにアクセス要求を出し(同図のB)、DFステージにおいて9、10サイクル目でウエイト応答がされている(同図のD)。そして、11サイクル目においてバススレーブから例外応答がされている(同図のD)。CPUはこの応答と同時にデータD1を取得しているが、12サイクル目のCMステージで「例外による異常完了」となる例外処理を行う。この場合、図示のように、命令4のWBステージが実行されない。
なお、命令4のDFステージにおいて、ウエイト応答が出された9、10サイクル目では、CPUがブロッキング動作をするため、後続の命令5のEXステージはウエイトが解除されるまで保留されている。
このように、CPUがブロッキング動作をする場合において、後続の命令が実行されないので、処理システム全体の処理性能は、CPUがノンブロッキングする場合より低くなる。
一方、図8に示す例における命令4のように例外処理が生じた場合において、例外処理が完了した際に(12サイクル目)、後続の命令5の実行はまだ完了していない。そのため、命令4を再実行しても、命令5は2回実行されることがないので、CPUがブロッキング動作をする場合には、例外が発生した命令の再実行が可能というメリットがある。
上述したように、ウエイト応答がなされた際にCPUがブロッキング動作をするかノンブロッキング動作をするかによってそれぞれメリットとデメリットがある。
従来、下記のようにCPUがブロッキング動作するかノンブロッキング動作をするかを決める手法(以下第1の手法という)がある。
図9に示すように、この手法によれば、バスマスタのアドレス空間は、ブロッキング動作するアドレス空間(以下ブロッキング動作空間という)とノンブロッキング動作するアドレス空間(以下ノンブロッキング動作空間という)に分けられる。バスマスタは、ブロッキング動作空間に接続したバススレーブに対するアクセスではブロッキング動作をし、ノンブロッキング動作空間に接続したバススレーブに対するアクセスではノンブロッキング動作をする。図示のバススレーブは、バスマスタのブロッキング動作空間に接続しているので、このバススレーブのリソース(図示の例では各レジスタ)に対してアクセスをする際に、バスマスタはブロッキング動作をする。
また、特許文献1において、別の手法(以下第2の手法という)が開示されている。この手法は、プロセッサの命令構造の中にウエイト信号を受け付けるか否かのフラグを設け、パイプライン動作中、ウエイト信号を受けると、このウエイト信号に対応した命令構造の中のフラグを参照して、ウエイト信号を受け付ける命令ならば、そのサイクルの終結を待たずに次のサイクルを実行し、ウエイト信号を受け付けない命令ならば、そのサイクルが終結した後、次のサイクルを実行する。
特開平4−372018号公報
ところで、1つのバススレーブは1つのリソースのみを有するとは限らない。また、1つのバススレーブが有する複数のリソースの全部はブロッキング動作を必要とするリソースであるとも限らない。たとえば図9に示すバススレーブの4つのレジスタA〜Dのうち、レジスタDのみがブロッキング動作を必要とする場合について考えると、他の3つのレジスタがブロッキング動作を必要としないにもかかわらず、前述した第1の手法では、このバススレーブをバスマスタのブロッキング動作空間に接続する必要がある。そのため、他の3つのレジスタに対してアクセスする際にも、バスマスタがブロッキング動作をしてしまい、システム全体の性能が低下する。
また、第2の手法は、本質的には、バスマスタの命令そのものをブロッキング動作命令とノンブロッキング動作命令に分けるようにしたものである。バスマスタは、命令に設けられた、この命令がブロッキング命令であるかノンブロッキング命令であるかを示すフラグを参照して、ブロッキング命令を実行する際にブロッキング動作をし、ノンブロッキング命令を実行する際にノンブロッキング動作をする。
この手法では、バスマスタが実行する命令構造の中にこの命令がブロッキング命令なのかノンブロッキング命令なのかを示すフラグを設け、バスマスタがブロッキング動作をするかノンブロッキング動作をするかを決めるようにしているので、2つの動作を切り替えるために、プログラムコードを書き換える必要がある。プログラムコードを書き換えるために、切り替えるポイントを見出す作業にコストがかかり、さらに、プログラムコードに変更を加えたことによりデグレートしてないことを検査する作業にもコストがかかる。これらの理由から、バスマスタがブロッキング動作をするかノンブロッキング動作をするかの切替えを行うためにプログラムコードの修正が必要で、ダイナミックな切替えが困難である。
本発明の一つの態様は、パイプライン処理が実行されるバスシステムである。このバスシステムは、バススレーブと、バススレーブへのアクセス要求をバススレーブに対して出力するバスマスタと、アクセス要求に対してバスマスタにウエイト動作をさせるウエイト応答を出す応答手段とを備える。応答手段は、ウエイト応答を出す際に、バスマスタにブロッキングウエイト動作をさせるブロッキングウエイト応答とノンブロッキングウエイト動作をさせるノンブロッキングウエイト応答のいずれかをバスマスタに対して出力する。
本発明のもう一つの態様はバス制御方法である。この方法は、パイプライン処理が実行されるバスシステムにおいて、バスマスタからバススレーブのリソースへのアクセス要求に対してウエイト応答を出す際に、バスマスタにブロッキングウエイト動作をさせるブロッキングウエイト応答とノンブロッキングウエイト動作をさせるノンブロッキングウエイト応答のいずれかを出す。
本発明の別の態様は、パイプライン処理が実行されるバスシステムにおけるバススレーブである。このバススレーブは、1つ以上のリソースと、バスマスタからいずれかのリソースにアクセス要求がなされたときに、バスマスタにブロッキングウエイト動作をさせるブロッキングウエイト応答とノンブロッキングウエイト動作をさせるノンブロッキングウエイト応答のいずれかのウエイト応答が可能な応答手段を備える。
本発明にかかるバスシステムおよびバスシステム制御方法によれば、バスマスタがブロッキング動作をするかノンブロッキング動作をするかの制御において有利である。
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本発明にかかる実施の形態によるバスシステム100の構成を示す。バスシステム100は、バスマスタ10、20、・・・、バス30、バススレーブ50、60、・・・を有し、バスマスタ10、20、・・・とバススレーブ50、60、・・・は、バス30を介して通信可能となるように接続されている。
バスマスタ10、20、・・・は、たとえばCPUや、DMACなど、バススレーブに対してリソースのアクセスをすることが可能なものである。バススレーブ50、60、・・・は、I/Oデバイスなど、自身のリソースへのアクセス要求をバスマスタから受けて、それに応じた返答を返すことが可能なものである。なお、DMACは、バスマスタ、バススレーブのいずれにもなりうる。あるいは、複数のCPUが接続されたバスシステムでは、一部のCPUはバススレーブとして動作することも可能である。また、図1において、バスマスタについてバスマスタ10とバスマスタ20の2つを示し、バススレーブについてはバススレーブ50とバススレーブ60の2つを示しているが、バスマスタとバススレーブの数は1つ以上の任意の数とすることができる。
以下、バスマスタとバススレーブについてそれぞれバスマスタ10とバススレーブ50で代表してバスシステム100の説明をする。
図2は、バスマスタ10とバススレーブ50の接続の詳細を示す。図示のように、バス30は、制御信号線31、アドレス線32、コマンド線33、データ線34、レスポンス信号線35を有する。以下、バスマスタ10がロード命令実行によりバススレーブ50をアクセスする場合を例にして説明する。
バスマスタ10は、制御信号線31に対してバススレーブ50へ処理を要求する要求信号REQを出す。また、この要求信号を出す際に、アドレスADSと、バススレーブに要求する処理の内容を示すコマンドCMD(ここでは読出コマンド)とをそれぞれアドレス線32とコマンド線33に出す。
バススレーブ50は、制御信号線31から要求信号REQを受けて、アドレス線32とコマンド線33からそれぞれアドレスADSとコマンドCMDを取得する。バススレーブ50は、取得したアドレスADSをデコードして、このアドレスは自身の所有するリソースのアドレスであるか否かを判別する。自身のリソースのアドレスであれば、レスポンス信号線35にレスポンスRESPを出す。
ここで、バススレーブ50が出すレスポンスRESPは、バススレーブ50が要求された処理が可能である状態を示すready(以下RDYともいう)応答と、処理が不可能である状態を示すウエイト応答がある。本実施の形態において、バススレーブ50が出すウエイト応答はさらに2種類に分けられるが、それらの詳細については後述する。
バススレーブ50は、RDY状態の場合において、要求されたコマンドCMDを実行する。この例では、コマンドCMDは読出コマンドであるので、バススレーブ50は、アドレスADSにより指定された番地のデータDATを読み出してデータ線34に出力する。
バスマスタ10は、レスポンス信号線35を介してバススレーブ50からRDY応答を受けると、データ線34からバススレーブ50により出力されたデータDATを取得する。
なお、バスマスタ10が、レスポンス信号線35を介してウエイト応答を受けた場合の動作については、バススレーブ50の詳細とともに説明する。
図3は、バススレーブ50の構成を示す。バススレーブ50は、アドレスデコーダ52と、応答手段54と、レジスタ群58を備える。応答手段54は、レスポンス生成部55と、制御部56を有する。図中の各信号REQ、ADS、CMDは、図2に示すバス30の相対応する信号線すなわち制御信号線31、アドレス線32、コマンド線33からそれぞれ入力され、DATとRESPは、図2に示すバス30の相対応するデータ線34、レスポンス信号線35にそれぞれ出力される。
図4は、バススレーブ50がバスマスタ10からの要求信号REQを受信した際の動作を示すフローチャートである。
アドレスデコーダ52は、バスマスタ10からの要求信号REQに伴ったアドレスADSをデコードして、このアドレスが自身が所属するバススレーブ50のリソースであるか否かを判別するとともに、その判別の結果を応答手段54に出力する(S10、S20)。
図3の例において、バススレーブ50は、複数のレジスタを含むレジスタ群58を有し、これらのレジスタは、バススレーブ50のリソースである。
応答手段54のレスポンス生成部55は、アドレスデコーダ52からの信号が、自身のリソースへのアクセスが要求されたことを示すものではなければ、処理を終了する(S20:No)。一方、アドレスデコーダ52からの信号が、自身のリソースへのアクセスが要求されたことを示すものであれば、要求信号REQ、アドレスADS、コマンドCMDを受信して、アドレスADSに該当するレジスタの種類を確認する(S20:Yes、S30)。
ここで、レジスタの種類は、ブロッキングウエイト動作を必要とするレジスタであるか否かの2種類である。
レスポンス生成部55がレジスタの種類を確認する手法については、ブロッキングウエイト動作を必要とするレジスタであるか否かを判別することができればいかなる仕組みを用いてもよい。たとえば、レジスタと、このレジスタがブロッキングウエイト動作を必要とするレジスタであるか否かとを対応付けたテーブルを設け、レスポンス生成部55はこのテーブルを参照して判別するようにすればよい。または、アドレスが16ビットである場合においてその下位4ビットを、ブロッキングウエイト動作を必要とするレジスタなのか否かを示すように用い、レスポンス生成部55は、アドレスデコーダ52から受けたアドレスの下位4ビットを参照して判別するようにしてもよい。
また、レスポンス生成部55は、ステップS30における確認結果(アクセスが要求されているレジスタの種類を示す情報)と共に、アドレスADS、コマンドCMDを制御部56に出力する(S20:Yes、S30、S40)。
制御部56は、要求された処理を実行可能か否かを判断する(S50)。この判断はたとえば現在処理中のコマンドの数を示すカウンタ(図示せず)を参照して行われる。要求された処理を実行可能であれば(S50:Yes)、制御部56は、処理可能を示すRDY応答をレスポンス信号線35に出力するとともに、要求された処理を該当するレジスタに対して実行する(S60)。たとえばCMDが読出コマンドである場合に、制御部56は、該当するレジスタからデータを読み出し、読出しが完了した際に、バスマスタ10に処理完了を示す信号を出力する。なお、制御部56は、読み出したデータをデータ線34に出力し、RDY応答をレスポンス信号線35に出力する。
なお、バスマスタ10は、バススレーブ50の制御部56からのRDY応答に応じてデータ線34からデータを取得し、処理完了を示す信号を受信すると実行完了処理をし、自身のリソースへのライトバックを行って、命令を終了する。
一方、ステップS50において、要求された処理を実行不可能であれば(S50:No)、制御部56は、レスポンス生成部55から知らせられたリソースの種類に応じてブロッキングウエイト応答またはノンブロッキングウエイト応答をバスマスタ10に返答する。具体的には、アクセス要求がなされたレジスタがブロッキングウエイト動作を必要とするレジスタであればブロッキングウエイト応答を出し(S70:Yes、S80)、アクセス要求がなされたレジスタがブロッキングウエイト動作を必要とするレジスタではなければ、ノンブロッキングエイト応答を出す(S70:No、S90)。
なお、バスマスタ10は、ブロッキングウエイト応答がなされた場合にはブロッキングウエイト動作をし、ノンブロッキングウエイト応答がなされた場合にはノンブロッキング動作をする。
また、図4のフローチャートに示していないが、バススレーブ50は、要求された処理の実行中に例外が起きた場合には、異常終了を示す例外応答(exp)をバスマスタ10に出す。バスマスタ10は例外応答がなされた場合には、例外応答の前にバススレーブ50による処理の実行途中に得られたデータを取得しているが、例外処理を行うべく自身のリソースへのライトバックをしない。
図5は、図1に示すバスシステム100において行われる処理の詳細例を示す。図中A、B、C、Dは、バスマスタ10が命令1〜5の各ステージを実行するタイミングチャートと、命令1と命令4のEXステージにバスマスタ10が出したリクエストの中身、命令1と命令4のDFステージにおいてバススレーブ50がreadyになったときにバスマスタ10が取得したデータ、命令1と命令4のDFステージにおいてバススレーブ50からの応答をそれぞれ示している。
命令1のEXステージにおけるアクセス要求に応じて、バススレーブ50が応答する。図示の例も、図7、図8の例と同じように、4、5サイクル目に、バススレーブ50がウエイト応答を出し、6サイクル目にreadyを出している。ここで例として、バススレーブ50がノンブロッキングウエイト応答(NBW)を出したとする。NBWを受けたバスマスタ10は、命令を保留し、6サイクル目において、ready応答に応じてバススレーブ50からデータD0を取得する(同図のC)。その後、7サイクル目と8サイクル目でそれぞれ完了ステージCM、ライトバックステージWBを実行して、命令1を終了する。
命令2と命令3は、命令1の実行開始(1サイクル目)から1サイクルずつ遅れて実行が開始される命令である。図示のように、命令1のDFステージにおいて、ノンブロッキングウエイト返答がされている間(4サイクル目、5サイクル目)、命令2のEXステージとDFステージ、命令3のIDステージとEXステージが実行されている。すなわち、4、5サイクル目において、命令1のDFステージでウエイト応答(ここではNBW)が出されている間において、バスマスタ10がノンブロッキング動作をするため、後続の命令2、3が実行される。
命令4についても同じであり、4サイクル目、5サイクル目において、IFステージとIDステージが実行されている。
また、命令4の場合、6サイクル目のEXステージにおいて、バスマスタ10はバススレーブ50にアクセス要求を出し(同図のB)、DFステージにおいて7、8サイクル目でウエイト応答がされている(同図のD)。ここでは例としてブロッキングウエイト応答(BLW)が出されたとする。図示のように、7、8サイクル目において、バスマスタ10がBLWに応じてブロッキング動作をするため、命令5のEXステージは保留される。
そして、9サイクル目において、命令4に対するウエイト応答が解除され、バスマスタ10は、バススレーブ50からデータD1を取得する。また、ウエイト応答の解除に伴って、命令5のEXステージも実行される。
このように、本実施の形態のバスシステム100によれば、バススレーブ50のレジスタ群58の各レジスタがブロッキングウエイト動作を必要とするレジスタなのか否かに応じて、ブロッキングウエイト動作を必要とするレジスタの場合においてのみバススレーブ50にブロッキングウエイト動作をさせるウエイト応答をしている。こうすることによって、バスシステム100において、バスマスタ10のブロッキングウエイト動作を必要最小限に抑えることができ、バスシステム100の高性能化を図ることができる。
また、本実施の形態のバスシステム100によれば、ブロッキングウエイト応答またはノンブロッキングウエイト応答を出すことによってバスマスタにブロッキングウエイト動作またはノンブロッキングウエイト動作をさせるようにしているので、バスマスタのプログラムを書き換えることなく、バスマスタの動作を切り替えることができる。これは、たとえばプログラムのデバッグにおいて大きな効力を発揮することができる。
プログラムをデバッグする際に、ある命令を再実行して確認することがある。そのため、実際の使用時に、ブロッキングウエイト動作を必要としないバススレーブについても、デバッグ時には命令の再実行ができるようにしたいときがある。これを実現するために、バススレーブの例外の許可と禁止を示すビットを設け、ウエイト応答をする際に、このビットの値に応じてブロッキングウエイト応答かノンブロッキングウエイト応答をするように決めておく。たとえばバススレーブが例外許可状態にある場合にはブロッキングウエイト応答をし、バススレーブが例外禁止状態にある場合にはノンブロッキングウエイト応答をするようにする。そして、プログラムのデバッグ時において、バススレーブが例外許可状態になるようにビット値を設定してバスマスタにブロッキングウエイト動作をさせる。こうすることによって、デバッグ時において例外が発生した場合に命令の再実行を可能にすることができる。一方、実際の使用時において、バススレーブが例外禁止状態になるようにビット値を設定し、バスマスタにノンブロッキングウエイト動作をさせる。こうすることによって、実際の使用時において、バスシステムの高性能化を図ることができる。
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、さまざまな変更、増減を加えてもよい。これらの変更、増減が加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
たとえば、上述した実施の形態のバスシステム100において、応答手段54はバススレーブ毎にその内部に備えられるようにしているが、応答手段54または応答手段54の一部をバススレーブの外部に設けてもよいし、複数のバススレーブに対して共通した1つの応答手段または応答手段の一部を設けるようにしてもよい。複数のバススレーブに対して共通した応答手段を設ける場合には、たとえばこの応答手段に、各バススレーブのそれぞれのレジスタと、その種類(ブロッキングウエイト動作を必要するレジスタなのか否か)とを対応付けたテーブルを設け、応答手段は、テーブルを参照してこれらの複数のバススレーブのそれぞれのレジスタがブロッキングウエイト動作を必要とするか否かを判別し、判別結果に応じてブロッキングウエイト応答またはノンブロッキングウエイトを返答するようにすればよい。
また、上述した実施の形態のバスシステム100において、アドレスデコーダ52はバススレーブ毎にその内部に備えられるようにしているが、アドレスデコーダ52をバススレーブの外部に設けてもよく、複数のバススレーブに対して共通したアドレスデコーダを設けてもよい。複数のバススレーブに対して共通したアドレスデコーダを設ける場合に、たとえば、アドレスと、このアドレスに対応するレジスタが属するバススレーブとを対応付けたテーブルを設け、アドレスデコーダは、このテーブルを参照して、バスマスタからのアクセス要求により指定されたアドレスに対応するレジスタが属するバススレーブに対して、このバススレーブが指定されたことを示す選択信号を出力するようにしてもよい。
また、図5に示す例において、実装のしやすさと処理の高速化を図るために、要求信号REQの次のサイクルにウエイト応答が返り、バスマスタ10は要求信号REQを発行したEXステージの次のDFステージで実行待ちを行っているが、たとえば、要求信号REQが出されたサイクル中にウエイト応答を返すようにシステムを構成してもよい。
本発明にかかる実施の形態によるバスシステムの構成を示すブロック図である。 図1に示すバスシステムにおけるバスマスタとバススレーブの接続の詳細を示す図である。 図1に示すバスシステムにおけるバススレーブの構成を示すブロック図である。 図3に示すバススレーブ50における処理を示すフローチャートである。 図1に示すバスシステムにおいて行われる処理の詳細を説明するための図である。 パイプライン処理を説明するための図である。 ノンブロッキングウエイト動作を説明するための図である。 ブロッキングウエイト動作を説明するための図である。 従来技術の手法を説明するための図である。
符号の説明
10 バスマスタ 20 バスマスタ
30 バス 31 制御信号線
32 アドレス線 33 コマンド線
34 データ線 35 レスポンス信号線
50 バススレーブ 60 バススレーブ
52 アドレスデコーダ 54 応答手段
55 レスポンス生成部 56 制御部
58 レジスタ群 100 バスシステム
REQ 要求信号 ADS アドレス
CMD コマンド DAT データ
RESP レスポンス

Claims (12)

  1. パイプライン処理が実行されるバスシステムであって、
    バススレーブと、
    前記バススレーブへのアクセス要求を前記バススレーブに対して出力するバスマスタと、
    前記アクセス要求に対して前記バスマスタにウエイト動作をさせるウエイト応答を出す際に、前記バスマスタにブロッキングウエイト動作をさせるブロッキングウエイト応答とノンブロッキングウエイト動作をさせるノンブロッキングウエイト応答のいずれかを前記バスマスタに対して出力する応答手段と、
    を備えることを特徴とするバスシステム。
  2. 前記アクセス要求は、前記バススレーブ内のリソースへのアクセス要求であることを特徴とする請求項1に記載のバスシステム。
  3. 前記応答手段は、前記アクセス要求がなされた前記リソースがブロッキングウエイト動作とノンブロッキングウエイト動作のいずれのウエイト動作を必要とするリソースであるかに応じて前記ウエイト応答を出力することを特徴とする請求項2に記載のバスシステム。
  4. 前記応答手段は、前記アクセス要求がなされた前記リソースがブロッキングウエイト動作とノンブロッキングウエイト動作のいずれのウエイト動作を必要とするリソースであるかの判定を行うレスポンス生成部と、
    該レスポンス生成部から出力された前記判定の結果に基づいて前記ウエイト応答を出力する制御部とを備えることを特徴とする請求項3に記載のバスシステム。
  5. 前記バススレーブは複数あり、
    前記応答手段は、前記バススレーブ毎に設けられていることを特徴とする請求項1から4のいずれか1項に記載のバスシステム。
  6. 前記応答手段は、前記バススレーブ内に設けられていることを特徴とする請求項5に記載のバスシステム。
  7. 前記応答手段は、前記バススレーブの外部に設けられていることを特徴とする請求項5に記載のバスシステム。
  8. 前記バススレーブは複数あり、
    前記応答手段は、複数の前記バススレーブに対して共通に設けられたものであり、該複数のバススレーブのうちの、前記アクセス要求がなされたバススレーブが前記バスマスタにウエイト動作をさせる状態にあるときに、前記ウエイト応答を出力することを特徴とする請求項1から4のいずれか1項に記載のバスシステム。
  9. パイプライン処理が実行されるバスシステムにおけるバススレーブであって、
    1つ以上のリソースと、
    バスマスタからいずれかの前記リソースにアクセス要求がなされたときに、前記バスマスタにブロッキングウエイト動作をさせるブロッキングウエイト応答とノンブロッキングウエイト動作をさせるノンブロッキングウエイト応答のいずれかであるウエイト応答を前記バスマスタに出力する応答手段を備えたことを特徴とするバススレーブ。
  10. 前記応答手段は、アクセス要求がなされた前記リソースがブロッキングウエイト動作とノンブロッキングウエイト動作のいずれのウエイト動作を必要とするリソースであるかに応じて前記ウエイト応答を出力することを特徴とする請求項9に記載のバススレーブ。
  11. パイプライン処理が実行されるバスシステムにおいて、
    バスマスタからバススレーブのリソースへのアクセス要求に対してウエイト応答を出す際に、前記バスマスタにブロッキングウエイト動作をさせるブロッキングウエイト応答とノンブロッキングウエイト動作をさせるノンブロッキングウエイト応答のいずれかを出すことを特徴とするバス制御方法。
  12. アクセス要求がなされた前記リソースがブロッキングウエイト動作とノンブロッキングウエイト動作のいずれのウエイト動作を必要とするリソースであるかに応じて前記ウエイト応答を出すことを特徴とする請求項11に記載のバス制御方法。
JP2006158988A 2006-06-07 2006-06-07 バスシステムおよびバススレーブならびにバス制御方法 Expired - Fee Related JP4818820B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006158988A JP4818820B2 (ja) 2006-06-07 2006-06-07 バスシステムおよびバススレーブならびにバス制御方法
US11/806,782 US7877533B2 (en) 2006-06-07 2007-06-04 Bus system, bus slave and bus control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006158988A JP4818820B2 (ja) 2006-06-07 2006-06-07 バスシステムおよびバススレーブならびにバス制御方法

Publications (2)

Publication Number Publication Date
JP2007328539A true JP2007328539A (ja) 2007-12-20
JP4818820B2 JP4818820B2 (ja) 2011-11-16

Family

ID=38823263

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006158988A Expired - Fee Related JP4818820B2 (ja) 2006-06-07 2006-06-07 バスシステムおよびバススレーブならびにバス制御方法

Country Status (2)

Country Link
US (1) US7877533B2 (ja)
JP (1) JP4818820B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2564322A4 (en) * 2010-04-30 2017-03-08 Hewlett-Packard Enterprise Development LP Management data transfer between processors
KR20230111055A (ko) 2022-01-17 2023-07-25 한국전자통신연구원 분할운용 컴퓨팅 시스템 및 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04372018A (ja) * 1991-06-21 1992-12-25 Hitachi Ltd 高速プロセッサ
US5455924A (en) * 1993-02-09 1995-10-03 Intel Corporation Apparatus and method for partial execution blocking of instructions following a data cache miss
US6449690B1 (en) * 1999-06-25 2002-09-10 Hewlett-Packard Company Caching method using cache data stored in dynamic RAM embedded in logic chip and cache tag stored in static RAM external to logic chip
JP2004110256A (ja) * 2002-09-17 2004-04-08 Denso Corp ウエイト制御方法、マイクロコンピュータ、バスコントローラ、中央処理ユニット
US7155718B1 (en) * 2002-04-04 2006-12-26 Applied Micro Circuits Corp. Method and apparatus to suspend and resume on next instruction for a microcontroller

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02128267A (ja) * 1988-11-09 1990-05-16 Fujitsu Ltd 共有メモリによる通信方式
JP3392236B2 (ja) * 1994-11-04 2003-03-31 富士通株式会社 分散トランザクション処理システム
US5799207A (en) * 1995-03-28 1998-08-25 Industrial Technology Research Institute Non-blocking peripheral access architecture having a register configure to indicate a path selection for data transfer between a master, memory, and an I/O device
US6052151A (en) * 1995-12-08 2000-04-18 Sony Corporation Editing apparatus
US6070170A (en) * 1997-10-01 2000-05-30 International Business Machines Corporation Non-blocking drain method and apparatus used to reorganize data in a database
US7233977B2 (en) * 1998-12-18 2007-06-19 Emc Corporation Messaging mechanism employing mailboxes for inter processor communications
US6973521B1 (en) * 2000-05-16 2005-12-06 Cisco Technology, Inc. Lock controller supporting blocking and non-blocking requests
WO2004107180A1 (ja) * 2003-05-30 2004-12-09 Fujitsu Limited マルチプロセッサシステム
US7047364B2 (en) * 2003-12-29 2006-05-16 Intel Corporation Cache memory management
US7366801B2 (en) * 2004-01-30 2008-04-29 International Business Machines Corporation Method for buffering work requests
JP4451705B2 (ja) * 2004-04-26 2010-04-14 株式会社日立製作所 ストレージ装置、これを備えたストレージシステム、このシステムのデータ管理方法、及びストレージ装置のコントローラ実行プログラム
US6987961B1 (en) * 2004-06-28 2006-01-17 Neomagic Corp. Ethernet emulation using a shared mailbox between two processors in a feature phone
JP2006172142A (ja) * 2004-12-16 2006-06-29 Matsushita Electric Ind Co Ltd マルチプロセッサシステム
JP2006215873A (ja) * 2005-02-04 2006-08-17 Toshiba Corp 制御装置、情報処理装置、及び転送処理方法
JP2007241612A (ja) * 2006-03-08 2007-09-20 Matsushita Electric Ind Co Ltd マルチマスタシステム
US8321872B2 (en) * 2006-06-28 2012-11-27 Nvidia Corporation Reusable, operating system aware hardware mutex

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04372018A (ja) * 1991-06-21 1992-12-25 Hitachi Ltd 高速プロセッサ
US5455924A (en) * 1993-02-09 1995-10-03 Intel Corporation Apparatus and method for partial execution blocking of instructions following a data cache miss
US6449690B1 (en) * 1999-06-25 2002-09-10 Hewlett-Packard Company Caching method using cache data stored in dynamic RAM embedded in logic chip and cache tag stored in static RAM external to logic chip
US7155718B1 (en) * 2002-04-04 2006-12-26 Applied Micro Circuits Corp. Method and apparatus to suspend and resume on next instruction for a microcontroller
JP2004110256A (ja) * 2002-09-17 2004-04-08 Denso Corp ウエイト制御方法、マイクロコンピュータ、バスコントローラ、中央処理ユニット

Also Published As

Publication number Publication date
US7877533B2 (en) 2011-01-25
JP4818820B2 (ja) 2011-11-16
US20070288675A1 (en) 2007-12-13

Similar Documents

Publication Publication Date Title
US7590774B2 (en) Method and system for efficient context swapping
JP5400443B2 (ja) 集積回路、デバッグ回路、デバッグコマンド制御方法
JP4874165B2 (ja) マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス権設定方法
JP6005392B2 (ja) ルーティングのための方法及び装置
US7996648B2 (en) Coupled symbiotic operating systems
JP2007219816A (ja) マルチプロセッサシステム
JP4642531B2 (ja) データ要求のアービトレーション
JP5054558B2 (ja) マルチコアlsi
JP4818820B2 (ja) バスシステムおよびバススレーブならびにバス制御方法
US7552269B2 (en) Synchronizing a plurality of processors
JP2001282704A (ja) データ処理装置及びデータ処理方法とデータ処理システム
JP2017182533A (ja) 同期処理ユニット、デバイス、システムおよび方法
JP6726136B2 (ja) データアクセス装置及びアクセスエラーの通知方法
JP2006285872A (ja) マルチcpuシステム
JP2010092101A (ja) 情報処理装置
JP2019179414A (ja) 情報処理装置
JPH0736704A (ja) プログラムダウンロード方式
JP3077807B2 (ja) マイクロコンピュータシステム
JP4583981B2 (ja) 画像処理装置
WO2011030498A1 (ja) データ処理装置及びデータ処理方法
JPH1185673A (ja) 共有バスの制御方法とその装置
JP2017167644A (ja) データ転送装置、データ転送方法、プログラム
JP2785738B2 (ja) 分散メモリ型マルチプロセッサ情報処理システム
JP2825589B2 (ja) バス制御方式
JP2008129672A (ja) プロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110502

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110517

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110719

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: 20110830

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110831

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

Free format text: PAYMENT UNTIL: 20140909

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees