JP7041339B2 - 情報処理システム、情報処理装置、及び情報処理システムの制御方法 - Google Patents

情報処理システム、情報処理装置、及び情報処理システムの制御方法 Download PDF

Info

Publication number
JP7041339B2
JP7041339B2 JP2017180156A JP2017180156A JP7041339B2 JP 7041339 B2 JP7041339 B2 JP 7041339B2 JP 2017180156 A JP2017180156 A JP 2017180156A JP 2017180156 A JP2017180156 A JP 2017180156A JP 7041339 B2 JP7041339 B2 JP 7041339B2
Authority
JP
Japan
Prior art keywords
information processing
request
unit
processing device
ring bus
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.)
Active
Application number
JP2017180156A
Other languages
English (en)
Other versions
JP2019057032A (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 JP2017180156A priority Critical patent/JP7041339B2/ja
Publication of JP2019057032A publication Critical patent/JP2019057032A/ja
Application granted granted Critical
Publication of JP7041339B2 publication Critical patent/JP7041339B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)

Description

本発明は、情報処理システム、情報処理装置、及び情報処理システムの制御方法に関する。
図16に、複数のノード(情報処理装置)110がリングバスRINGを介して環状に接続された情報処理システムを示す。各ノード110は、CPU(Central Processing Unit)111、メモリ112、メモリコントローラ113、及びクロスバ部(XB)114をそれぞれ有する。CPU111は、演算処理を行うとともに、リクエストを発行する。メモリコントローラ113は、受信したリクエストに応じて、メモリ112に対しデータの書き込み(データライト)や読み出し(データリード)を行う。クロスバ部(XB)114は、リングバスRINGを介して伝送されるリクエスト等のパケットの宛先判定を行い、パケットの伝送制御を行う。
クロスバ部(XB)114同士が環状に接続されており、各ノード110は、リングバスRINGを介して接続される任意のノードのメモリ112にアクセス可能である。各ノード110のクロスバ部(XB)114は、他ノード宛のリクエストを保持部であるキュー(バッファ)Q11、Q12に格納し、調停部115で調停を取って次段の他ノードに送信する。また、クロスバ部(XB)114は、自ノード宛のリクエストをキュー(バッファ)Q21、Q22に格納し、調停部116で調停を取ってメモリコントローラ113に送信する。このようにして各ノード110は、自ノード宛のリクエストを受け取って処理を行い、自ノード宛ではないリクエストを次段の他ノードに送信する。
ここで、図16に示したようなリングバスRINGを介して接続される複数のノード110を有する情報処理システムでは、あるノードがビジー状態になり前段のノードからのリクエストの受信を抑止すると、前段のノードにリクエストが溜まっていき、最終的には最初にビジー状態となったノードの次段のノードもビジー状態となって、デッドロックが発生する。
例えば、図16に示したノード(A)110-Aからノード(C)110-Cへのメモリアクセスリクエストにおいて、ノード(C)110-Cのメモリコントローラ113-Cの処理が遅く、ノード(B)110-Bがビジー状態になると、ノード(A)110-Aの他ノードからのリクエストも発行できなくなる。そして、ノード(A)110-Aがビジー状態になると、ノード(D)110-Dの他ノードからのリクエストも発行できなくなりビジー状態となってデッドロックが発生する。このようにリングバスRINGを介して接続される複数のノード110を有する情報処理システムでは、あるノードがビジー状態になることによってデッドロックが発生してしまうことがある。
特開平8-272676号公報 特開2008-9980号公報
1つの側面では、本発明の目的は、リングバスを介して接続される複数の情報処理装置を有する情報処理システムにおいて、デッドロックの発生を防止することにある。
情報処理システムの一態様は、環状のバスである第1のリングバスを介して接続される複数の情報処理装置を有し、情報処理装置は、リクエストを発行する発行部と、第1のリングバスを介して受信する他の情報処理装置への第1のリクエストを格納する複数のエントリを有する第1の保持部と、第1の保持部に格納した第1のリクエスト及び発行部が発行する他の情報処理装置への第2のリクエストを次段の情報処理装置へ順次送信する送信部と、第1の保持部におけるエントリの使用数が第1の閾値以上である状態が第1の時間より長く継続し、かつ次段の情報処理装置が第1のリングバスを介した第1のリクエスト及び第2のリクエストの受け付けを抑止することを示す信号が第の時間より長く継続して入力された場合、第1の保持部に格納された第1のリクエストのデータ部を削除するとともに、第1のリングバスへの第2のリクエストの送信を抑止する制御部とを有する。
発明の一態様においては、リングバスを介して接続される複数の情報処理装置を有する情報処理システムにおいて、デッドロックの発生を防止することができる。
図1は、第1の実施形態における情報処理システムの構成例を示す図である。 図2は、第1の実施形態におけるノードの構成例を示す図である。 図3は、第1の実施形態におけるデッドロック検出部の構成例を示す図である。 図4は、第1の実施形態におけるデッドロック解消部の構成例を示す図である。 図5は、第1の実施形態におけるリクエストを説明する図である。 図6(A)、図6(B)、及び図6(C)は、第1の実施形態におけるエントリ制御の例を説明する図である。 図7は、第1の実施形態におけるデッドロック制御の例を示すフローチャートである。 図8は、第1の実施形態におけるノードの動作例を示すフローチャートである。 図9は、第1の実施形態におけるメモリコントローラの動作例を示すフローチャートである。 図10は、第2の実施形態における情報処理システムの構成例を示す図である。 図11は、第2の実施形態におけるノードの動作例を示すフローチャートである。 図12は、第3の実施形態における情報処理システムの構成例を示す図である。 図13は、第3の実施形態におけるノードの構成例を示す図である。 図14は、第4の実施形態における情報処理システムの構成例を示す図である。 図15は、第4の実施形態におけるノードの構成例を示す図である。 図16は、情報処理システムの構成例を示す図である。
以下、本発明の実施形態を図面に基づいて説明する。
(第1の実施形態)
本発明の第1の実施形態について説明する。
図1は、第1の実施形態における情報処理システムの構成例を示す図である。第1の実施形態における情報処理システムは、複数のノードを環状に接続するリングバスRINGを介して接続される複数の情報処理装置としてのノード10を有する。図2にノード10内部の構成例を示す。
本実施形態では、あるノード10から発行されたリクエストは単方向(一方の方向のみ)に伝搬し、本例では、ノードA、B、C、D、A、B、・・・の方向に伝搬するものとするが、逆であってもよい。なお、図1には、4つのノード10-A~10-DがリングバスRINGを介して接続される構成を示しているが、これに限定されるものではなく、リングバスRINGを介して接続されるノードの数は任意の複数である。
図2は、第1の実施形態におけるノード10の構成例を示す図である。ノード10は、CPU(Central Processing Unit)11、メモリ12、メモリコントローラ13、及びクロスバ部(XB)14をそれぞれ有する。なお、図2においては、説明の便宜上、ノード10が有する機能部として、CPU11、メモリ12、メモリコントローラ13、及びクロスバ部(XB)14を示したが、他の機能部を有していてもよい。
CPU11は、演算処理を行うとともに、リクエストを発行する。メモリコントローラ13は、受信したリクエストに応じて、メモリ12に対しデータの書き込み(データライト)や読み出し(データリード)を行う。クロスバ部(XB)14は、リングバスRINGを介して伝送されるリクエスト等のパケットの宛先判定を行い、パケットの伝送制御を行う。また、クロスバ部(XB)14は、デッドロック状態の検出を行い、デッドロックが発生することを防止するための制御を行う。
クロスバ部(XB)14は、それぞれ保持部に該当する4つのキュー(バッファ)Q11、Q12、Q21、Q22、調停部(セレクタ)15、18、デッドロック制御部16、及び抑止部17を有する。クロスバ部(XB)14に入力されたリクエストREQF、REQNは、リクエスト内の宛先(発行先)情報に基づいてキュー(バッファ)Q11、Q12、Q21、Q22の何れかに格納される。キュー(バッファ)Q11、Q12、Q21、Q22は、それぞれ複数のエントリを有する。
第1の保持部としてのリモートキューQ11は、前段の(1つ前の)他ノードから受信するリクエストREQFの内の他ノード宛のリクエストを格納するキューである。リモートキューQ11は、リクエストがエントリに書き込まれたときに信号Q11Wを出力(値“1”に)し、リクエストがエントリから読み出されたときに信号Q11Rを出力(値“1”に)する。また、リモートキューQ11は、キュー制御信号QCSに応じてエントリ制御を行い、保持する情報に係る制御を行う。
第2の保持部としてのローカルキューQ12は、自ノードのCPU11が発行したリクエストREQNの内の他ノード宛のリクエストを格納するキューである。リモートキューQ11及びローカルキューQ12に格納されたリクエストは、調停部15での調停後、リクエストREQSとして次段の(1つ後の)他ノードに送信される。なお、調停部15は、次段の他ノードから入力されるビジー信号BSYIが“1”である場合、次段の他ノードへのリクエストの送信を抑止する。
キューQ21は、前段の他ノードから受信するリクエストREQFの内の自ノードのメモリ12に対するリクエストを格納するキューである。キューQ22は、自ノードのCPU11が発行したリクエストREQNの内の自ノードのメモリ12に対するリクエストを格納するキューである。キューQ21、Q22に格納されたリクエストは、調停部18での調停後、メモリコントローラ13に送信される。
デッドロック制御部16は、デッドロック状態を検出するデッドロック検出部19、及びデッドロック状態を解消するデッドロック解消部20を有する。デッドロック検出部19は、次段の他ノードから入力されるビジー信号BSYI及びリモートキューQ11から出力される信号Q11W、Q11Rに基づいて、デッドロック状態であるか否かを判定する。デッドロック制御部16は、デッドロック検出部19にてデッドロック状態であると判定した場合、デッドロック解消モードへ遷移して、自ノードからのリクエストのリングバスへの新規発行を抑止する抑止信号QASを出力(値“1”に)する。また、デッドロック検出部19は、リモートキューQ11で使用しているエントリ数が使用可能なエントリ数に達した場合、前段の他ノードにビジー信号BSYOを出力(値“1”に)する。
デッドロック解消部20は、デッドロック検出部19にてデッドロック状態であると判定された場合、デッドロック状態を解消するために、キュー制御信号QCSを出力してリモートキューQ11のエントリ制御を行う。抑止部17は、デッドロック制御部16から出力される抑止信号QASに応じて、ローカルキューQ12から調停部15へのリクエストの転送を制御する。抑止部17は、抑止信号QASの値が“1”である場合、ローカルキューQ12から調停部15へのリクエストの転送を抑止し、リングバスへの新規リクエストの発行を抑止する。
図3は、第1の実施形態におけるデッドロック検出部19の構成例を示す図である。デッドロック検出部19は、カウンタ301、302、311、論理和演算回路(OR回路)303、304、閾値保持回路305、312、313、比較回路306、307、314、315、論理積演算回路(AND回路)308、及びフラグ保持回路309を有する。
カウンタ301は、次段の他ノードからビジー信号BSYIが出力されている(値が“1”である)期間をカウントしてカウント値CNTAを出力する。また、カウンタ302は、自ノードからビジー信号BSYOを出力している(値が“1”である)期間をカウントしてカウント値CNTBを出力する。カウンタ301は、例えばビジー信号BSYIが“1”である場合、図示しないクロック信号の1サイクル毎にカウント値CNTAを1増加させ、OR回路303の出力が“1”となった場合、カウント値CNTAを0にクリアする。また、カウンタ302は、例えばビジー信号BSYOが“1”である場合、図示しないクロック信号の1サイクル毎にカウント値CNTBを1増加させ、OR回路304の出力が“1”となった場合、カウント値CNTBを0にクリアする。
OR回路303には、ビジー信号BSYIの反転信号及びAND回路308の出力が入力され、OR回路304には、ビジー信号BSYOの反転信号及びAND回路308の出力が入力される。したがって、カウンタ301は、ビジー信号BSYIが“0”である場合、又はAND回路308の出力が“1”となった場合、カウント値CNTAを0にクリアし、カウンタ302は、ビジー信号BSYOが“0”である場合、又はAND回路308の出力が“1”となった場合、カウント値CNTBを0にクリアする。
閾値保持回路305は、閾値Tを保持する。比較回路306は、カウンタ301から出力されるカウント値CNTAと閾値保持回路305により保持される閾値Tとを比較して比較結果を出力する。比較回路306は、カウント値CNTAが閾値Tより大きい場合、出力を“1”にし、カウント値CNTAが閾値T以下である場合、出力を“0”にする。また、比較回路307は、カウンタ302から出力されるカウント値CNTBと閾値保持回路305により保持される閾値Tとを比較して比較結果を出力する。比較回路307は、カウント値CNTBが閾値Tより大きい場合、出力を“1”にし、カウント値CNTBが閾値T以下である場合、出力を“0”にする。
AND回路308は、比較回路306、307の出力、及び抑止信号QASの反転信号が入力され、その演算結果を出力する。すなわち、AND回路308は、カウント値CNTA、CNTBがともに閾値Tより大きく、かつ抑止信号QASが“0”である場合、出力を“1”にし、そうでない場合、出力を“0”にする。
フラグ保持回路309は、デッドロック解消モードであるか否かを示すフラグを保持するとともに、フラグに応じた抑止信号QASを出力する。フラグ保持回路309は、AND回路308の出力が“1”になったとき、フラグを“1”(デッドロック解消モードである)に設定し、比較回路315の出力が“1”になったとき、フラグを“0”(デッドロック解消モードでない)に設定する。また、フラグ保持回路309は、フラグが“1”であれば出力する抑止信号QASを“1”にし、フラグが“0”であれば出力する抑止信号QASを“0”にする。
ここで、比較回路315の出力は、リモートキューQ11で使用しているエントリ数が閾値B未満であるときに“1”となる。したがって、フラグ保持回路309は、抑止信号QASが“0”であって、かつカウント値CNTA、CNTBがともに閾値Tより大きくなった場合、フラグを“1”に設定し、リモートキューQ11で使用しているエントリ数が閾値B未満になった場合、フラグを“0”に設定する。つまり、デッドロック解消モードでの動作時に、使用しているエントリ数が閾値B未満となると、デッドロック解消モードから通常モードに遷移する。
カウンタ311は、リモートキューQ11でのエントリの使用数をカウントしてカウント値CNTCを出力する。カウンタ311は、リモートキューQ11からの信号Q11Wが“1”になるとカウント値CNTCを1増加させ、リモートキューQ11からの信号Q11Rが“1”になるとカウント値CNTCを1減少させる。閾値保持回路312は閾値Aを保持し、閾値保持回路313は閾値Bを保持する。ここで、閾値AはリモートキューQ11のエントリ数であり、閾値Bはデッドロック解消モードから通常モードへ遷移する条件となるリモートキューQ11のエントリ数である。
比較回路314は、カウンタ311から出力されるカウント値CNTCと、閾値保持回路312により保持される閾値Aとを比較して、比較結果をビジー信号BSYOとして出力する。すなわち、カウント値CNTCと閾値Aとの比較結果がビジー信号BSYOとして出力される。比較回路314は、カウント値CNTCが閾値A以上である場合、出力(ビジー信号BSYO)を“1”にし、カウント値CNTCが閾値A未満である場合、出力(ビジー信号BSYO)を“0”にする。これにより、リモートキューQ11のエントリの使用数が閾値Aになると前段の他ノードから自ノードへのリクエストの送信が抑止される。
比較回路315は、カウンタ311から出力されるカウント値CNTCと、閾値保持回路313により保持される閾値Bとを比較して比較結果を出力する。比較回路315は、カウント値CNTCが閾値B未満である場合、出力を“1”にし、カウント値CNTCが閾値B以上である場合、出力を“0”にする。
図4は、第1の実施形態におけるデッドロック解消部20の構成例を示すブロック図である。デッドロック解消部20は、解析部401及び削除処理部402を有する。解析部401は、リモートキューQ11のエントリに格納される情報を解析する。削除処理部402は、デッドロック状態であると判定された場合、解析部401での解析結果に応じて、リモートキューQ11のエントリに格納されている情報を制御する。例えば、デッドロック解消部20は、デッドロック状態であると判定された場合、リモートキューQ11のエントリに格納された情報を解析し、ヘッダ部とデータ部とを有するリクエストである場合、そのデータ部を削除する処理を実行する。
図5に、本実施形態におけるリクエストの一例を示す。図5において、510はリクエストを含むパケットのヘッダ部であり、520はパケットのデータ部である。なお、リクエストを含むノード間で送受信されるパケットには、データ部520を有するものもあれば、データ部520を有しないものもある。データ部520を有するか否かは、データの有無を示すフィールド514に設定する値に応じて判定される。
ヘッダ部510は、パケットの宛先を示すディスティネーションフィールド511、命令の種別を示すフィールド512、パケットの送信元を示すソースフィールド513、データの有無を示すフィールド514、及びデータを有する場合にそのサイズを示すフィールド515を有する。また、ヘッダ部510は、デッドロック状態である場合に、そのノードでリクエストを正常に処理することができなかったことを示すフラグ(DRF)を設定するフィールド516をさらに有する。
デッドロック解消部20は、解析部401での解析結果に応じて、リモートキューQ11に格納されている情報の一部を削除する。これにより、デッドロック状態と検出された場合に、リモートキューQ11に空き領域を確保するように制御することで、デッドロックの発生を防止することができる。
例えば図6(A)に示すようにリクエストのヘッダ部(H)601、603、606、607及びデータ部(D)602、604、605、608が格納されているとする。このとき、デッドロック解消部20の削除処理部402は、書き込み及び読み込み単位であるエントリ毎の制御を行い、リモートキューQ11に格納されているリクエストのヘッダ部とデータ部のうち、データ部を削除し、例えば図6(B)に示すように、リクエストのヘッダ部601、603、606を格納するように、リモートキューQ11に対してエントリ制御を行う。
なお、図6(C)に示すように、1つのエントリにヘッダ部(H)611、614、617、619、621とデータ部(D)612、615、616、618、620、622、623が混在する場合も考えられるが、その場合には、データ部のみのエントリ613、616、623を削除するようにしても良い。また、データ部612、615、618、620、622を有するエントリも併せてデータ部を削除して、ヘッダ部を必要に応じてマージ処理を行い、リモートキューQ11のエントリの空き容量を増やすようにしても良い。
次に、図7を参照してデッドロック制御部16の動作を説明する。図7は、デッドロック制御部16の動作例を示すフローチャートである。各ノード10のデッドロック制御部16が、図7に示す動作をそれぞれ実行する。
まず、ステップS701にて、デッドロック制御部16のデッドロック検出部19は、デッドロック状態であるか否かの判定を行う。デッドロック検出部19は、通常モードにおいて、カウンタ301、302のカウント値CNTA、CNTBがともに閾値Tより大きい場合、デッドロック状態であると判定し、ステップS702へ進む。つまり、デッドロック検出部19は、通常モードにおいて、ビジー信号BSYI、BSYOが閾値Tよりも長く継続して出力されている場合、自ノード及び次段の他ノードのリモートキューQ11が詰まっているとしてデッドロック状態であると判定する。
次に、ステップS702にて、デッドロック検出部19は、フラグ保持回路309により保持される、デッドロック解消モードであることを示すフラグを“1”に変更し、デッドロック解消モードへ遷移する。次に、ステップS703にて、デッドロック制御部16のデッドロック解消部20は、リモートキューQ11のエントリ制御を行い、リクエストのデータ部を削除する。また、ステップS704にて、デッドロック検出部19は、フラグ保持回路309により保持されるフラグを“1”に変更したことに伴って、抑止信号QASを“1”にして自ノードからリングバスへの新規リクエストの発行を抑止する。
また、ステップS705にて、デッドロック制御部16は、データ部を削除することによってリモートキューQ11におけるエントリの使用数が閾値A未満になったことで、ビジー信号BSYOを“0”にしリングバスを介したリクエストの受け付け抑止状態を解除する。これにより、前段の他ノードからのリクエストを受け付ける。そして、ステップS706にて、デッドロック制御部16は、リクエストが順次処理され、リモートキューQ11におけるエントリの使用数が閾値B未満になるまで待つ。リモートキューQ11におけるエントリの使用数が閾値B未満になると、ステップS707にて、デッドロック制御部16は、フラグ保持回路309により保持されるフラグを“0”に変更し、デッドロック解消モードから通常モードへ遷移する。
図8は、第1の実施形態におけるノードの動作例を示すフローチャートである。なお、図8においては、リングバスRINGを介してリクエストを転送するときのノード10の動作を示している。
ステップS801にて、ノード10のクロスバ部(XB)14は、前段の他ノードから自ノード宛ではないリクエストを受信すると、受信したリクエストをリモートキューQ11に格納する。このとき、リモートキューQ11から出力される信号Q11Wが“1”となり、デッドロック制御部16が有するカウンタ311のカウント値CNTCが1増加する。
次に、ステップS802にて、クロスバ部(XB)14は、次段の他ノードから入力されるビジー信号BSYIが“1”であるか否かを判定する。ビジー信号BSYIが“1”ではないと判定した場合、ステップS803にて、クロスバ部(XB)14は、リモートキューQ11が調停部15での調停に勝利することで、リモートキューQ11に格納されているリクエストを次段の他ノードへ発行し、ステップS801へ戻る。このとき、リモートキューQ11から出力される信号Q11Rが“1”となり、デッドロック制御部16が有するカウンタ311のカウント値CNTCが1減少する。
一方、ステップS802での判定の結果、ビジー信号BSYIが“1”であると判定した場合、ステップS804にて、デッドロック制御部16は、リモートキューQ11におけるエントリの使用数が閾値A以上であるか否かを判定する。その結果、リモートキューQ11におけるエントリの使用数が閾値A以上である場合、ステップS805へ進み、そうでない場合、ステップS801へ戻る。
ステップS805にて、デッドロック制御部16は、カウンタ301、302のカウント値CNTA、CNTBがともに閾値Tより大きいか否かを判定する。すなわち、デッドロック制御部16は、デッドロック状態であるか否かを判定する。その結果、カウンタ301、302のカウント値CNTA、CNTBの少なくとも一方が閾値T以下である、すなわちデッドロック状態でないと判定した場合、ステップS802へ戻る。
一方、カウンタ301、302のカウント値CNTA、CNTBがともに閾値Tより大きい、すなわちデッドロック状態であると判定した場合、ステップS806にて、デッドロック制御部16のデッドロック検出部19は、フラグ保持回路309により保持される、デッドロック解消モードであることを示すフラグを“1”に変更する。これにより、デッドロック制御部16は、デッドロック解消モードに遷移する。
次に、ステップS810にて、デッドロック制御部16のデッドロック解消部20は、デッドロック状態であると判定されたリモートキューQ11のエントリの解析を行う。そして、ステップS811にて、デッドロック解消部20は、キュー制御信号QCSに従って、ステップS807での解析の結果においてデータ部であると判定された領域を削除してエントリの空き領域を作るとともに、それに併せてカウンタ311のカウント値CNTCを制御し、カウント値CNTCを情報を有するエントリ数を示すように操作する。次に、ステップS809にて、デッドロック制御部16は、データ部を削除し、リクエストに応じた処理が行われていないリクエストのフラグ(DRF)516を設定(例えばフラグDRFを“1”に設定)する。
次に、ステップS810にて、クロスバ部(XB)14は、次段の他ノードから入力されるビジー信号BSYIが“1”であるか否かを判定する。ビジー信号BSYIが“1”ではないと判定すると、ステップS811にて、クロスバ部(XB)14は、リモートキューQ11が調停部15での調停に勝利することで、リモートキューQ11に格納されているリクエストを次段の他ノードへ発行する。このとき、リモートキューQ11から出力される信号Q11Rが“1”となり、デッドロック制御部16が有するカウンタ311のカウント値CNTCが1減少する。
続いてステップS812にて、デッドロック制御部16は、リモートキューQ11におけるエントリの使用数が閾値B未満であるか否かを判定する。その結果、リモートキューQ11におけるエントリの使用数が閾値B未満でない場合、ステップS810へ戻り、エントリの使用数が閾値B未満である場合、ステップS813へ進む。ステップS813にて、デッドロック制御部16は、フラグ保持回路309により保持される、デッドロック解消モードであることを示すフラグを“0”に変更する。これにより、デッドロック制御部16は、通常モードに遷移する。そして、ステップS801へ戻る。
図9は、第1の実施形態におけるノード10のメモリコントローラ13の動作例を示すフローチャートである。メモリコントローラ13は、自ノード宛のメモリアクセスリクエストを受信すると(ステップS901のYES)、ステップS902にて、リクエストに応じた処理が行われていないリクエストのフラグ(DRF)の値が“1”であるか否かを判定する。その結果、フラグ(DRF)の値が“1”でない場合、メモリコントローラ13は、ステップS903にて、リクエストに応じたメモリアクセスを実行し、続くステップS904にて、送信元のノードに対して応答パケットを発行する。
一方、ステップS902において、リクエストに応じた処理が行われていないリクエストのフラグ(DRF)の値が“0”であると判定した場合、ステップS905にて、メモリコントローラ13は、リクエストの送信元ノードへフラグ(DRF)の値を“1”に設定した応答パケットを発行する。これにより、リクエストの送信元ノードへリクエストに応じた処理が実行されずに、応答パケットが送信されたことを通知する。
第1の実施形態によれば、デッドロック制御部16が、デッドロック状態であると判定した場合、リングバスへの新規のリクエストの発行を抑止する。また、リモートキューQ11にて格納されているリクエストの情報の一部を削除することで、リモートキューQ11に空き領域を作成し、前段のノードからのリクエストを受信可能にする。これにより、各ノード10のリモートキューQ11に格納されたリクエストを循環可能にし、デッドロック状態を解消してデッドロックの発生を防止することができる。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
第1の実施形態では、各ノードを接続するリングバスが1つである場合を一例に説明した。各ノードを接続するリングバスが、1つでなく、他のリングバスを有する場合には、デッドロック状態と検出された場合、そのリクエストを他のバスを介して伝送することによりデッドロックの発生を防止することが可能である。
図10は、第2の実施形態における情報処理システムの構成例を示す図である。なお、この図10において、図1に示した構成要素等と同一の機能を有する構成要素等には同一の符号を付し、重複する説明は省略する。図10に示す例では、デッドロック状態を発生するリクエストを、処理を実行せずに応答パケットを返すリングバスRINGCを返して各ノードに対して応答パケットとして通知するものを示している。
図10に示す第2の実施形態では、デッドロック制御部16は、デッドロック検出部19に加え、解析部1001及び変換処理部1002を有するデッドロック解消部20を有する。解析部1001は、リモートキューQ11のエントリに格納される情報を解析する。変換処理部1002は、デッドロック状態であると判定された場合、解析部1001での解析結果に応じて、リモートキューQ11のエントリに格納されている情報を、応答パケットに変換して送信元のノードに送信する。
例えば、図10に示すメモリアクセスのリクエストを伝送するリクエストを伝送するリングバスRINGRとは異なる、応答パケットを伝送するリングパスRINGCがあるとする。このとき、リクエストを伝送するリングバスRINGR上のリモートキュー(バッファ(Q11)がデッドロック状態であると判定した場合、それとは異なるリングバスRINGCのバッファQ31にリクエストを変換した応答パケッを格納することでリングバスRINGRのデッドロック状態を解消することが可能となる。
図11は、第2の実施形態におけるノードの動作例を示すフローチャートである。ステップS1101にて、ノード10のクロスバ部(XB)14は、前段の他ノードから自ノード宛ではないリクエストを受信すると、受信したリクエストをリモートキューQ11に格納する。このとき、リモートキューQ11から出力される信号Q11Wが“1”となり、デッドロック制御部16が有するカウンタ311のカウント値CNTCが1増加する。
次に、ステップS1102にて、クロスバ部(XB)14は、次段の他ノードから入力されるビジー信号BSYIが“1”であるか否かを判定する。ビジー信号BSYIが“1”ではないと判定した場合、ステップS1103にて、クロスバ部(XB)14は、リモートキューQ11が調停部15での調停に勝利することで、リモートキューQ11に格納されているリクエストを次段の他ノードへ発行し、ステップS1101へ戻る。このとき、リモートキューQ11から出力される信号Q11Rが“1”となり、デッドロック制御部16が有するカウンタ311のカウント値CNTCが1減少する。
一方、ステップS1102での判定の結果、ビジー信号BSYIが“1”であると判定した場合、ステップS1104にて、デッドロック制御部16は、リモートキューQ11におけるエントリの使用数が閾値A以上であるか否かを判定する。その結果、リモートキューQ11におけるエントリの使用数が閾値A以上である場合、ステップS1105へ進み、そうでない場合、ステップS1101へ戻る。
ステップS1105にて、デッドロック制御部16は、カウンタ301、302のカウント値CNTA、CNTBがともに閾値Tより大きいか否かを判定する。すなわち、デッドロック制御部16は、デッドロック状態であるか否かを判定する。その結果、カウンタ301、302のカウント値CNTA、CNTBの少なくとも一方が閾値T以下である、すなわちデッドロック状態でないと判定した場合、ステップS1102へ戻る。
一方、カウンタ301、302のカウント値CNTA、CNTBがともに閾値Tより大きい、すなわちデッドロック状態であると判定した場合、ステップS1106にて、デッドロック制御部16のデッドロック検出部19は、フラグ保持回路309により保持される、デッドロック解消モードであることを示すフラグを“1”に変更する。これにより、デッドロック制御部16は、デッドロック解消モードに遷移する。
次に、ステップS1107にて、デッドロック制御部16は、リモートキューQ11に格納されているリクエストを、リモートキューQ11から応答パケットにフォーマット変換して、ステップS1108にて、応答パケットを伝送する他のリングバスRINGCに接続されるキューQ31に転送する。また、デッドロック制御部16は、カウンタ311のカウント値CNTCを制御し、カウント値CNTCを情報を有するエントリ数を示すように操作する。
ステップS1109にて、クロスバ部(XB)14は、次段の他ノードから入力されるビジー信号BSYIが“1”であるか否かを判定する。ビジー信号BSYIが“1”ではないと判定すると、ステップS1110にて、クロスバ部(XB)14は、リモートキューQ11が調停部15での調停に勝利することで、リモートキューQ11に格納されているリクエストを次段の他ノードへ発行する。このとき、リモートキューQ11から出力される信号Q11Rが“1”となり、デッドロック制御部16が有するカウンタ311のカウント値CNTCが1減少する。
続いてステップS1111にて、デッドロック制御部16は、リモートキューQ11におけるエントリの使用数が閾値B未満であるか否かを判定する。その結果、リモートキューQ11におけるエントリの使用数が閾値B未満でない場合、ステップS1109へ戻り、エントリの使用数が閾値B未満である場合、ステップS1112へ進む。ステップS1112にて、デッドロック制御部16は、フラグ保持回路309により保持される、デッドロック解消モードであることを示すフラグを“0”に変更する。これにより、デッドロック制御部16は、通常モードに遷移する。そして、ステップS1101へ戻る。
(第3の実施形態)
次に、本発明の第3の実施形態について説明する。
図12は、第3の実施形態における情報処理システムの構成例を示す図である。第3の実施形態における情報処理システムは、第1の実施形態と同様に複数のノード(A~D)10-A~10-Dが複数のノードを環状に接続するリングバスRINGを介して接続され、さらにノード(A)10-Aに対してリングバスRING外からリクエストを発行するノード(E)10-Eが接続される。
なお、第3の実施形態におけるノード(A~E)10-A~10-Eのうち、ノード(B~E)10-B~10-Eの構成は、図2に示した第1の実施形態におけるノード10の構成と同様であるので説明は省略し、以下では第3の実施形態におけるノード(A)10-Aについて説明する。図13は、第3の実施形態におけるノード(A)10-Aの構成例を示す図である。図13において、図2に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。
ノード10-Aは、CPU11、メモリ12、メモリコントローラ13、及びクロスバ部(XB)14を有する。また、クロスバ部(XB)14は、それぞれ保持部に該当する4つのキュー(バッファ)Q11、Q12、Q21、Q22、調停部(セレクタ)15、18、デッドロック制御部16、及び抑止部17、21に加え、さらに2つのキューQ13、Q23を有する。キューQ13、Q23もそれぞれ複数のエントリを有する。
キューQ13は、ノード(E)10-Eから受信するリクエストREQEの内の他ノード宛のリクエストを格納するキューである。キューQ11~Q13に格納されたリクエストは、調停部15での調停後、リクエストREQSとして次段の他ノードに送信される。なお、調停部15は、次段の他ノードから入力されるビジー信号BSYIが“1”である場合、次段の他ノードへのリクエストの送信を抑止する。
また、キューQ23は、ノード(E)10-Eから受信するリクエストREQEの内の自ノードのメモリ12に対するリクエストを格納するキューである。キューQ21~Q23に格納されたリクエストは、調停部18での調停後、メモリコントローラ13に送信される。
抑止部21は、デッドロック制御部16から出力される抑止信号QASに応じて、キューQ13から調停部15へのリクエストの転送を制御する。抑止部21は、抑止信号QASの値が“1”である場合、ローカルキューQ13から調停部15へのリクエストの転送を抑止し、リングバスへの新規リクエストの発行を抑止する。つまり、第3の実施形態では、抑止信号QASの値が“1”である(デッドロック解消モードである)場合、キューQ12、Q13から調停部15へのリクエストの転送を抑止し、リングバスへの新規リクエストの発行を抑止する。
第3の実施形態によれば、デッドロック状態と判定したときに、リングバスRING外のノード(E)10-EからリングバスRINGに対して発行されるリクエストを、自身のCPU11が発行するリクエストと同様にローカルのリクエストとして抑止することで、第1の実施形態と同様の効果が得られる。
(第4の実施形態)
次に、本発明の第4の実施形態について説明する。
図14は、第4の実施形態における情報処理システムの構成例を示す図である。第4の実施形態における情報処理システムは、複数のノードを環状に接続するリングバスRING0、RING1を介してノード(A~G)10-A~10-Gが互いに通信可能に接続されている。
図14に示す第4の実施形態における情報処理システムでは、ノード(A)10-Aは、2つのリングバスRING0、RING1に接続されている。なお、図14において、破線で示すように、リングバスRING0に接続されるノード(A~D)10-A~10-DはリングバスRING1に接続可能であり、リングバスRING1に接続されるノード(A、E~G)10-A、10E~10-DはリングバスRING0に接続可能である。
なお、第4の実施形態におけるノード(A~G)10-A~10-Gのうち、ノード(B~G)10-B~10-Gの構成は、図2に示した第1の実施形態におけるノード10の構成と同様であるので説明は省略し、以下では第4の実施形態におけるノード(A)10-Aについて説明する。図15は、第4の実施形態におけるノード(A)10-Aの構成例を示す図である。図15において、図2及び図13に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。また、図15において、添え字“0”を付加した構成要素は、リングバスRING0に係る構成要素であり、添え字“1”を付加した構成要素は、リングバスRING1に係る構成要素であることを示す。
ノード10-Aは、CPU11、メモリ12、メモリコントローラ13、クロスバ部(XB)14-0、14-1、及び転送部31-0、31-1を有する。クロスバ部(XB)14-0は、キューQ13、Q23にかえてキューQ14-0、Q24-0を有し、図13に示したノード10-Aのクロスバ部(XB)14と同様に構成され、リングバスRING0を介して転送されるリクエストを処理する。また、クロスバ部(XB)14-1は、キューQ13、Q23にかえてキューQ14-1、Q24-1を有し、図13に示したノード10-Aのクロスバ部(XB)14と同様に構成され、リングバスRING1を介して転送されるリクエストを処理する。
転送部31-0は、リングバスRING0を介して入力されるリクエストREQF-0を、リクエスト内の宛先(発行先)情報に基づいてリングバスRING0又はリングバスRING1の一方に転送する。転送部31-0は、入力されるリクエストREQF-0がリングバスRING0に接続されたノード宛のリクエストである場合、自ノードからのリクエストREQF-00としてクロスバ部(XB)14-0に出力する。また、転送部31は、入力されるリクエストREQF-0がリングバスRING1に接続されたノード宛のリクエストである場合、他ノードからのリクエストREQF-01としてクロスバ部(XB)14-1に出力する。
同様に、転送部31-1は、リングバスRING1を介して入力されるリクエストREQF-1を、リクエスト内の宛先(発行先)情報に基づいてリングバスRING0又はリングバスRING1の一方に転送する。転送部31-1は、入力されるリクエストREQF-0がリングバスRING0に接続されたノード宛のリクエストである場合、他ノードからのリクエストREQF-11としてクロスバ部(XB)14-0に出力する。また、転送部31-1は、入力されるリクエストREQF-1がリングバスRING1に接続されたノード宛のリクエストである場合、自ノードからのリクエストREQF-10としてクロスバ部(XB)14-1に出力する。
第4の実施形態によれば、他のリングバスに接続されたノード宛のリクエストは第1の実施形態と同様に処理し、自装置が接続されたリングバスに接続されたノードからのリクエストは第3の実施形態と他のリングバスに接続されたノードからのリクエストとして処理する。これにより、他のノードに対するリクエストを順次処理することが可能となり、デッドロックの発生を防止することができる。
なお、前述した第3及び第4の実施形態では、第1の実施形態と同様にデッドロック制御部16がデータ部を削除することでデッドロック状態を解消する例を示したが、第2の実施形態と同様に、データ制御部16がリクエストを応答パケットに変換しデッドロック状態を解消するものについても第3及び第4の実施形態を適用可能である。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
10 ノード(情報処理装置)
11 CPU
12 メモリ
13 メモリコントローラ
14 クロスバ部
15、18 調停部
16 デッドロック制御部
19 デッドロック検出部
20 デッドロック解消部
17、21 抑止部
31 転送部
Q11、Q12、Q13、Q21、Q22、Q23 キュー(バッファ)
301、302、311 カウンタ
303、304 論理和演算回路
305、312、313 閾値保持回路
306、307、314、315 比較回路
308 論理積演算回路
309 フラグ保持回路
401 解消部
402 削除処理部

Claims (8)

  1. 環状のバスである第1のリングバスを介して接続される複数の情報処理装置を有する情報処理システムにおいて、
    前記情報処理装置は、
    リクエストを発行する発行部と、
    前記第1のリングバスを介して受信する他の情報処理装置への第1のリクエストを格納する複数のエントリを有する第1の保持部と、
    前記第1の保持部に格納した前記第1のリクエスト及び前記発行部が発行する他の情報処理装置への第2のリクエストを次段の情報処理装置へ順次送信する送信部と、
    前記第1の保持部における前記エントリの使用数が第1の閾値以上である状態が第1の時間より長く継続し、かつ次段の情報処理装置が前記第1のリングバスを介した前記第1のリクエスト及び前記第2のリクエストの受け付けを抑止することを示す信号前記の時間より長く継続して入力された場合、前記第1の保持部に格納された前記第1のリクエストのデータ部を削除するとともに、前記第1のリングバスへの前記第2のリクエストの送信を抑止する制御部とを有することを特徴とする情報処理システム。
  2. 前記制御部は、前記データ部のみの前記エントリ削除することを特徴とする請求項記載の情報処理システム。
  3. 前記制御部は、前記第1の保持部における前記エントリの使用数が第1の閾値以上である状態が第1の時間より長く継続し、かつ次段の情報処理装置が前記第1のリングバスを介した前記第1のリクエスト及び前記第2のリクエストの受け付けを抑止することを示す信号が前記第1の時間より長く継続して入力された場合、前記第1の保持部に格納した前記第1のリクエストを、前記第1のリングバスへ送信せずに、複数の情報処理装置を接続する環状のバスである第2のリングバスを介して該第1のリクエストを発行した情報処理装置に伝送することを特徴とする請求項1記載の情報処理システム。
  4. 前記制御部は、前記第1の保持部における前記エントリの使用数が前記第1の閾値以上になった後、前記エントリの使用数が第2の閾値未満になるまで、前記第1のリングバスへの前記第2のリクエストの送信を抑止することを特徴とする請求項1~の何れか1項に記載の情報処理システム。
  5. 前記第2のリクエストを格納する複数のエントリを有する第2の保持部を有し、
    前記制御部は、前記第2の保持部から前記送信部への前記第2のリクエストの送信を抑止することを特徴とする請求項1~の何れか1項に記載の情報処理システム。
  6. 前記第1のリングバスに接続された情報処理装置に接続される前記第1のリングバスの外部の情報処理装置を有し、
    前記外部の情報処理装置に接続される前記第1のリングバスに接続された情報処理装置の制御部は、前記第1の保持部における前記エントリの使用数が前記第1の閾値以上である状態が第1の時間より長く継続し、かつ次段の情報処理装置が前記第1のリングバスを介した前記第1のリクエスト及び前記第2のリクエストの受け付けを抑止することを示す信号前記の時間より長く継続して入力された場合、前記第2のリクエスト及び前記外部の情報処理装置から受信したリクエストの前記第1のリングバスへの送信を抑止することを特徴とする請求項1~の何れか1項に記載の情報処理システム。
  7. 環状のバスであるリングバスを介して他の情報処理装置に接続される情報処理装置において、
    リクエストを発行する発行部と、
    前記リングバスを介して受信する他の情報処理装置への第1のリクエストを格納する複数のエントリを有する第1の保持部と、
    前記第1の保持部に格納した前記第1のリクエスト及び前記発行部が発行する他の情報処理装置への第2のリクエストを次段の情報処理装置へ順次送信する送信部と、
    前記第1の保持部における前記エントリの使用数が第1の閾値以上である状態が第1の時間より長く継続し、かつ次段の情報処理装置が前記リングバスを介した前記第1のリクエスト及び前記第2のリクエストの受け付けを抑止することを示す信号前記の時間より長く継続して入力された場合、前記第1の保持部に格納された前記第1のリクエストのデータ部を削除するとともに、前記リングバスへの前記第2のリクエストの送信を抑止する制御部とを有することを特徴とする情報処理装置。
  8. 環状のバスであるリングバスを介して接続される複数の情報処理装置を有する情報処理システムの制御方法において、
    前記複数の情報処理装置の内の第1の情報処理装置の第1の保持部が、前記リングバスを介して受信する他の情報処理装置への第1のリクエストを格納し、
    前記第1の情報処理装置の送信部が、前記第1の保持部に格納した前記第1のリクエスト及び前記第1の情報処理装置の発行部が発行する他の情報処理装置への第2のリクエストを次段の情報処理装置へ順次送信し、
    前記第1の情報処理装置の制御部が、前記第1の保持部におけるエントリの使用数が第1の閾値以上である状態が第1の時間より長く継続し、かつ次段の情報処理装置が前記リングバスを介した前記第1のリクエスト及び前記第2のリクエストの受け付けを抑止することを示す信号前記の時間より長く継続して入力された場合、前記第1の保持部に格納された前記第1のリクエストのデータ部を削除するとともに、前記リングバスへの前記第2のリクエストの送信を抑止することを特徴とする情報処理システムの制御方法。
JP2017180156A 2017-09-20 2017-09-20 情報処理システム、情報処理装置、及び情報処理システムの制御方法 Active JP7041339B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017180156A JP7041339B2 (ja) 2017-09-20 2017-09-20 情報処理システム、情報処理装置、及び情報処理システムの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017180156A JP7041339B2 (ja) 2017-09-20 2017-09-20 情報処理システム、情報処理装置、及び情報処理システムの制御方法

Publications (2)

Publication Number Publication Date
JP2019057032A JP2019057032A (ja) 2019-04-11
JP7041339B2 true JP7041339B2 (ja) 2022-03-24

Family

ID=66107544

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017180156A Active JP7041339B2 (ja) 2017-09-20 2017-09-20 情報処理システム、情報処理装置、及び情報処理システムの制御方法

Country Status (1)

Country Link
JP (1) JP7041339B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009260535A (ja) 2008-04-15 2009-11-05 Fujitsu Ltd パケット転送装置およびパケット破棄方法
JP2012243162A (ja) 2011-05-20 2012-12-10 Canon Inc 情報処理装置、通信方法、及びプログラム
JP2014039174A (ja) 2012-08-16 2014-02-27 Nippon Telegr & Teleph Corp <Ntt> 通信装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3713949B2 (ja) * 1998-03-27 2005-11-09 富士電機機器制御株式会社 リング状ネットワークのデータ転送方式

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009260535A (ja) 2008-04-15 2009-11-05 Fujitsu Ltd パケット転送装置およびパケット破棄方法
JP2012243162A (ja) 2011-05-20 2012-12-10 Canon Inc 情報処理装置、通信方法、及びプログラム
JP2014039174A (ja) 2012-08-16 2014-02-27 Nippon Telegr & Teleph Corp <Ntt> 通信装置

Also Published As

Publication number Publication date
JP2019057032A (ja) 2019-04-11

Similar Documents

Publication Publication Date Title
US8855112B2 (en) NoC system and input switching device
US20070115995A1 (en) NoC system employing AXI protocol and interleaving method thereof
WO2011151241A1 (en) Network-on-a-chip with quality-of-service features
US8589614B2 (en) Network system with crossbar switch and bypass route directly coupling crossbar interfaces
JP4255833B2 (ja) コンピュータ・システムの入出力ノードにおけるタグ付けおよび調停メカニズム
JP7041339B2 (ja) 情報処理システム、情報処理装置、及び情報処理システムの制御方法
JP6853479B2 (ja) 情報処理システム、情報処理装置、及び情報処理システムの制御方法
JP4391819B2 (ja) コンピュータ・システムの入出力ノード
JP6882681B2 (ja) 情報処理システム、情報処理装置、及び情報処理システムの制御方法
KR102549085B1 (ko) 버스 제어회로
JP4687925B2 (ja) 優先調停システム及び優先調停方法
JP4104939B2 (ja) マルチプロセッサシステム
CN108228503B (zh) 一种防止总线死锁的方法及装置
US20040260890A1 (en) P-and v-semaphore operation
JP6295700B2 (ja) 調停回路及び調停回路の処理方法
JP2019087046A (ja) 情報処理システム、情報処理装置、及び情報処理システムの制御方法
JP4514916B2 (ja) バスシステム
JP5478342B2 (ja) 情報処理装置
KR100737904B1 (ko) 마스터/슬레이브 디바이스간의 인터페이스 장치 및 그 방법
WO2017002244A1 (ja) スレーブ装置及び通信方法及び通信プログラム
JPH0424737B2 (ja)
Golota et al. A universal, dynamically adaptable and programmable network router for parallel computers
JP3189952B2 (ja) トライステートロジックイネーブル制御回路
JP2763407B2 (ja) 多重化装置
JPH0414339A (ja) 端末装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200611

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210413

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220126

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220221

R150 Certificate of patent or registration of utility model

Ref document number: 7041339

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150