JP6227767B2 - 情報処理装置、その処理方法、及び入出力装置 - Google Patents

情報処理装置、その処理方法、及び入出力装置 Download PDF

Info

Publication number
JP6227767B2
JP6227767B2 JP2016518658A JP2016518658A JP6227767B2 JP 6227767 B2 JP6227767 B2 JP 6227767B2 JP 2016518658 A JP2016518658 A JP 2016518658A JP 2016518658 A JP2016518658 A JP 2016518658A JP 6227767 B2 JP6227767 B2 JP 6227767B2
Authority
JP
Japan
Prior art keywords
processor
input
processing
notification
completion
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
JP2016518658A
Other languages
English (en)
Other versions
JPWO2015173853A1 (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2015173853A1 publication Critical patent/JPWO2015173853A1/ja
Application granted granted Critical
Publication of JP6227767B2 publication Critical patent/JP6227767B2/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
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • 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/14Handling requests for interconnection or transfer
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/22Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/372Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a time-dependent priority, e.g. individually loaded time counters or time slot
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • G06F9/4837Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent

Landscapes

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

Description

本発明は、情報処理装置に関し、特に、入出力命令の実行完了を知らせるための割り込み信号の送出回数がCPUに対して過大になることを防ぐためのコンピュータに接続する入出力装置に関する。
一般的な入出力装置では、処理の完了を通知する方法として入出力装置がCPUに対して能動的に通知する割り込み通知方式と、CPUが一定の時間間隔で入出力装置の特定領域を監視するポーリング方式が使われる。
前者は入出力処理がない場合にはCPUの処理時間を消費せず、入出力処理が完了してから直ちにCPUが完了処理を行うため、入出力にかかる時間が短くてすむ利点がある。
一方で、後者は入出力回数が多い場合であってもCPU上で実行される他処理を邪魔せず、一定の負荷で完了処理を行うことができる利点がある。
一般的なOSでは、複数のデバイスが同時に動作しているため、処理がない場合にはCPUの処理時間を消費しない割り込み通知方式が用いられている。しかし、割り込み通知方式は入出力回数が多くなると割り込み通知の頻度がCPUにとって過大となり、特に高い入出力性能を持つ装置では、最高性能が頭打ちになる原因となってきている。そのため、割り込み通知頻度が過大となる可能性がある場合には、頻度を抑制する必要が出てきた。
特許文献1は、ホスト側の動作に制約条件をつけて、特定のイベント発生時に割り込み通知の送出を一定時間遅延させることを開示している。特許文献1では、遅延契機のイベントが、デバイスによるパケット受信時と、CPUが受信パケットを処理したことをデバイスに伝えるときである。また、特許文献1では、抑制される割り込み信号は、パケット信号の送信完了確認要求のための割り込み信号である。
US2011/0093637
特許文献1では、CPUが入出力命令をデバイスに発行する際の課題については、何ら配慮されていない。
割り込み通知は、入出力装置がCPUに対してオンデマンドで処理を要求するために一般的に用いられる手法であるが、割り込み処理はCPUにとって無視できない負荷を発生させる。入出力装置の性能が高くなるにつれて、単位時間あたりに処理可能な入出力命令数が多くなり、それに伴って入出力命令の実行完了を知らせるための割り込み通知回数も増加してきたため、割り込み処理の負荷が入出力性能に影響を与えるほど大きくなってきている。
本発明の目的は、入出力命令の実行完了を知らせるための割り込み通知の回数を削減し、割り込み処理の負荷を軽減するための情報処理装置を提供することにある。
本発明は、プロセッサーと、記憶部と、該プロセッサーから処理の指示を受ける入出力装置とからなる情報処理装置において、
前記情報処理装置は、
前記プロセッサーからの指示に基づいて、
前記プロセッサーからの処理指示時に先行する処理が完了しているかを確認し、
前記入出力装置は、
前記プロセッサーへの処理完了の通知としての割り込み信号を送信する割り込み通知送信部と、
前記プロセッサーに、処理完了の通知の送信を一定時間待機させる待機部と、
前記プロセッサーからの処理開始指示を検知したことを契機に、
前記プロセッサーへ送信を待機させた前記一定時間を、さらに延長する延長部を、
有する情報処理装置に特徴がある。
本発明によれば、入出力命令の実行完了を知らせるための割り込み通知の回数を削減し、割り込み処理の負荷を軽減することができる。
本願発明の第一の実施例に係る入出力装置の概略図を示す図。 主記憶装置上の入出力命令格納領域・入出力完了通知格納領域の概略を示す図。 ドライバソフトウェアの動作シーケンスを示す図。 入出力装置制御部の動作シーケンスを示す図。 タイマーカウンタを含む割り込み通知頻度抑制機能の動作シーケンスを示す図。 複数の入出力命令・完了通知格納領域が主記憶装置へ配置されている状態を示す図。 発行キュー・完了キューの構造の概略を示す図。 複数の発行キュー・完了キューを扱う本願発明の第二の実施例に係る入出力装置の概略を示す図。 複数キューが存在する場合のドライバソフトウェアの動作シーケンスを示す図。 複数キューが存在する場合のタイマーカウンタを含む割り込み通知頻度抑制機能の動作シーケンス(1)を示す図。 複数キューが存在する場合のタイマーカウンタを含む割り込み通知頻度抑制機能の動作シーケンス(2)を示す図。 完了通知の処理完了信号を割り込み通知頻度の抑制に用いた本願発明の第三の実施例に係る入出力装置の概略を示す図。 完了通知の処理完了信号を、割り込み通知頻度の抑制に用いた時の第二の実施例に対する追加動作シーケンスを示す図。 OSの統計情報表示画面の例を示す図。
以下、図面を参照していくつかの実施例を説明する。
本発明では、ドライバソフトウェア(201)に対して、入出力命令を発行した後に、必ず先行する入出力命令の完了状態を確認することを規定する。すなわち、入出力命令の発行タイミングを先行する入出力命令の完了状態を確認するためのポーリングタイミングと見なす。
入出力装置は割り込み通知をCPUに対して送信する前に、タイマーを設定してあらかじめ規定された時間だけ待機する。この間にドライバから次の入出力命令を発行したという通知が入出力装置に到着した場合、タイマーをリセットし、待機時間をあらかじめ規定された時間分だけ延長する、という動作を行う処理部を入出力装置に対して追加している。 以下の文面では図中の要素を表す単語の後に括弧書きで要素番号を示す。また、同じ要素が複数存在し、それらを区別する必要がある場合には要素番号の後にアルファベットを追加して表記する。
本発明を構成する基本構成要素は、中央演算装置(200)、主記憶装置(210)、入出力装置(100)およびそれらを接続する信号線とデータバス(240)である。入出力装置(100)にはデータを記憶し、読み書きされたことを検出して外部に通知する機能を持つレジスタ(300,301,310,311)が存在する。
本発明の最良の実施形態の一つを図1に示す。
本発明の主要な動作概要を図1にて説明する。
入出力装置制御部(110)は、割り込み通知をだす必要が生じたときに、タイマーカウンタ(310)に対してカウントの開始を指示する。すでにカウントが開始されている場合は、タイマーカウンタ(310)は、入出力装置制御部(110)からのカウント開始指示を無視する。 タイマーカウンタ(310)は、タイマー用クロック生成部(130)から一定時間ごとに発信されるクロック信号が到着するごとに、カウンタの値を1ずつ加算する。
比較器(320)は、タイマーカウンタ(310)とタイマー閾値レジスタ(311)の値を比較器(320)によって比較し、両者が一致したら割り込み通知送信部(120)に対して、CPU(200)へ割り込み通知を送出するように指示を出す。同時に、タイマーカウンタ(310)の値をリセットし、カウントの加算を停止させる。
割り込み通知送信部(120)は、送出指示を受けると中央演算装置(200)に対して割り込み通知を送出する。
中央演算装置(200)が入出力命令を発行したことを入出力装置(100)に対して通知するために、SQPIレジスタ(300)への書き込みを行ったとき、SQPIレジスタは書き込みが行われたことを入出力装置制御部(110)に通知するとともに、タイマーカウンタ(310)の値をリセットする。SQPIレジスタは、Submission Queue Producer Index registerの略称であり、入出力命令の発行をCPUから入出力装置に対して通知するためのレジスタである。ただし、SQPIレジスタ(300)からタイマーカウンタ(310)に出される信号では、タイマーカウンタ(310)の加算は停止させない。
以上の動作が割り込み通知回数を抑制するときの基本動作である。
以上の動作を、各部の動作ごとに詳細に説明する。
図2と図3を用いてドライバソフトウェア(201)の動作を説明する。ドライバソフトウェア(201)は、OSから入出力の処理要求が到着し、CPU(200)の制御権を渡された時点、または割り込み通知が到着した時点から処理が開始される。以降で動作説明文の先頭に記載されている番号は、図中の番号と対応している。以下のドライバソフトウェア(201)の動作シーケンスの説明では、CPU(200)が、主記憶装置(210)に格納したドライバソフトウェア(201)を読みだして、ドライバソフトウェア(201)の機能を実行する動作を示す。
(1000)OSから入出力処理要求が到着し、CPU(200)の制御権が渡される。
(1001)入出力命令(221)を作成し、主記憶装置(210)に確保された特定領域(220)に書き込む。
(1002)入出力装置(100)に対して新たな命令を発行したことを通知するためにSQPIレジスタ(300)に対して書き込みを行う。
手順(1011)に進む。
(1010)入出力装置(100)から割り込み通知が到着し、OSからドライバソフトウェア(201)に対してCPUの制御権が渡される。
手順(1011)に進む。
(1011)主記憶(210)上に確保されている入出力完了通知を格納する領域(230)をチェックする。
(1012)主記憶(210)上の完了通知格納領域(230)に未処理の入出力完了通知(231)が存在する場合、手順(1103)に進む。未処理の入出力完了通知(231)が存在しない場合、手順(1020)に進む。
(1013)主記憶(210)上の入出力完了通知格納領域(230)に格納されている未処理の完了通知(231)を1つ読み込み、OS依存の方法に則って完了処理を行う。
(1014)入出力装置(100)のCQCIレジスタ(301)に対して書き込みを行い、完了通知(231)の処理が終わったことを入出力装置(100)に通知する。
手順(1011)に進む。CQCIレジスタは、Completion Queue Consumer Index registerの略称であり、入出力命令に対する入出力装置からの完了通知を処理したことをCPUから入出力装置に対して通知するためのレジスタである。
(1020)CPU(200)の制御権をOSに返す。
図2と図4を用いて入出力装置制御部(110)の動作を説明する。
(1100)CPU(200)からSQPI(300)レジスタに対して書き込みが行われたことを検出する。
(1101)主記憶装置(210)に確保されている入出力命令格納領域(220)から入出力命令(221)を1つ読み込む。
(1102)入出力命令(221)を処理する。
(1103)入出力処理が完了したら手順(1104)に進む。
未完了の場合、手順(1103)を繰り返す。
(1104)入出力完了通知(231)を作成する。
(1105)入出力完了通知格納領域(230)に空きがある場合は手順(1106)へ進む。
空きがない場合は手順(1120)へ進む。
(1106)主記憶装置(210)確保された入出力完了通知格納領域(230)の空き領域に入出力完了通知(231)を書き込む。
(1107)カウンタ加算開始の指示をタイマーカウンタ(310)に指示する。
(1108)入出力処理を完了する。
(1120)完了通知格納領域(230)の開放処理が終了するまで待機する。
手順(1105)へ進む。
(1130)CPU(200)からCQCIレジスタ(301)に対して書き込みが行われたことを検出する。
(1131)CPU(200)によって処理済みとなった完了通知(231)が格納されていた領域を開放する。
(1132)完了通知格納領域(230)の中に未処理の完了通知(231)が存在する場合には手順(1134)へ進む。未処理の完了通知(231)が存在しない場合には手順(1133)に進む。
(1133)タイマーカウンタ(310)をリセットし、加算停止を指示する。
(1134)完了通知格納領域(230)の開放処理を終了する。
図1と図5を用いてタイマーカウンタ(310)を含む割り込み通知頻度抑制機能全体の動作シーケンスを説明する。
(1200)初期化完了または完了キューを作成するコマンドの実行完了に伴って完了キューの動作が開始される。
(1201)カウンタ加算開始信号が到着した場合、手順(1202)へ進む。
到着していない場合、手順(1201)を繰り返す。
(1202)クロック生成部(130)から信号が到着した場合、手順(1210)へ進む。
到着していない場合、手順(1203)へ進む。
(1203)カウンタ加算停止信号が到着した場合、手順(1213)へ進む。
到着していない場合、手順(1204)へ進む。
(1204)SQPIレジスタ(300)への書き込みがあった場合、手順(1214)へ進む。
書き込みがなかった場合、手順(1202)へ進む。
(1210)タイマーカウンタ(310)を1加算する。
(1211)タイマーカウンタ(310)の値が閾値レジスタ(311)と一致した場合、手順(1212)へ進む。
不一致の場合、手順(1203)へ進む。
(1212)割り込み通知信号をCPU(200)に対して送出する。
(1213)タイマーカウンタ(310)をリセットする。
手順(1201)へ進む。
(1214)タイマーカウンタをリセットする。
手順(1202)へ進む。
本実施例によれば、割り込み通知のみで入出力処理の完了を通知した場合に比べて、割り込み通知の頻度を抑制することができる。特に、あらかじめ設定する待機時間よりも短い間隔でドライバから入出力命令の発行が行われる場合、割り込み通知の送信は常に遅延される状態となり、割り込み通知を送信せずに入出力処理を進めることが可能な状態となる。これにより、従来では割り込み処理の負荷が問題となっていた高頻度で入出力命令を処理する状態になった場合、割り込み処理を行うことなく入出力動作を完了することが可能となる。
また、待機時間の設定値は単発の入出力処理の遅延時間に影響を与えるが、本発明では、待機時間は入出力処理の発行間隔より長いときに大きな効果を得られるため、入出力命令の発行が高頻度の時に対象を定めて短い待機時間を設定すれば、単発入出力処理の遅延時間悪化を最小限に抑えることができる。
本発明を、CPU(200)と入出力装置(100)の間で、複数の独立した入出力命令格納領域(220)と入出力完了通知格納領域(230)を用いた場合で実施した例を示す。なお、入出力命令格納領域(220)の数と入出力完了通知格納領域(230)の数は一致しなくてもよい。以降では、入出力命令格納領域(220)を発行キュー、入出力完了通知格納領域(230)を完了キューと呼ぶ。
主記憶上装置(210)に複数の発行キュー(220)と完了キュー(230)が存在している状態を図6に示す。発行キューと完了キューは、ともに論理番号空間上で無効領域と有効領域が連続しており、それらの境界がPI(331)またはCI(330)によって示され、始点と終点が連結されて循環境界条件を満たす、図7に示すようなリングバッファによって構成されているものとする。PI(331)およびCI(330)は発行キュー(220)と完了キュー(230)の両方に2つずつ存在する。この4つのポインタのうち、発行キュー(220)のPI(331)を入出力装置内のSQPI(300)に格納し、完了キュー(230)のCI(331)を入出力装置内のCQCI(301)に格納する。それ以外のポインタについては、主記憶装置(210)上の適切な位置に配置する。
ある発行キュー(220)に投入した入出力命令(221)に対応する完了通知(231)をどの完了キュー(230)から受け取るのかは、ドライバソフトウェア(201)から入出力装置(100)に対して、入出力装置(100)の初期化時に指定するか、または発行キュー(220)の動作を開始させることを入出力装置(100)に指示するときの管理コマンドによって指定する。
入出力装置(100)は、CPU(200)に対して割り込み方式によって完了通知(231)の処理を要求するときに、処理が必要な完了キュー(230)をCPU(200)が一意に判別可能となるように、PCI-express規格(PCI expressは、Peripheral Component Interconnect Special Interest Group(PCI-SIG)の商標である。)で定義されているMSI(Message Signaled Interrupts)またはMSI-X(Message Signaled Interrupts extended)を用いる。MSIおよびMSI-Xは、CPU(200)側が設定した特殊なメモリアドレスに、入出力装置(100)が書き込み動作を行うことで割り込み処理要求が発生したことをCPU(200)に伝える仕組みであり、書き込み先のアドレスを異なるものにすることで、CPU(200)は異なる要因で割り込み処理要求が発生していることを識別することが可能である。MSI/MSI-Xの割り込みは単に書き込み先のメモリアドレスの違いでしかないため、割り込み要因数が増加しても物理的な配線が増加することはない。
本実施例では、完了キュー(230)が割り込み処理を要求するときに用いるMSI番号またはMSI-X番号を、ドライバソフトウェア(201)が入出力装置(100)の初期化時に指定するか、完了キュー(230)の動作開始を入出力装置(100)に指示するときの管理コマンドによって指定する。また、これらの情報を保持するためのMSI/MSI-X番号レジスタ(303)を入出力装置(100)の内部に配置する。
複数の発行キュー(220)および完了キュー(230)を扱う入出力装置(100)の概略図を図8に示す。本実施例では、完了キューごとにタイマーカウンタ(310a,310b)、閾値レジスタ(311a,311b)、MSI/MSI-X番号レジスタ(303a,303b)、比較器(320a,320b)を搭載する。
発行キュー(220)と完了キュー(230)の対応付け情報は発行・完了対応レジスタ(302a,302b)に保持しておき、この情報に基づいてタイマーカウンタ(310)リセット信号のルーティングスイッチ部 (140)が適切な完了キューのタイマーカウンタ(310)に対してリセット信号を送出する。
タイマーカウンタの値が閾値に達し、割り込み通知を送信するとき、当該完了キューが使うべきMSIまたはMSI-Xのベクタ番号が格納されているMSI/MSI-X番号レジスタ(303)を参照し、割り込み番号を割り込み通知送信部(120)に送る。割り込み通知送信部(120)は指定された割り込み番号に基づいて算出された特殊なメモリアドレスへの書き込み動作を行うことによって、CPU(200)に対して割り込み通知を送信する。
図9を用いて、複数の発行キュー(220)と完了キュー(220)が存在する場合のドライバソフトウェア(201)の挙動を説明する。本シーケンスでは一部OSの挙動も含んでいる。
(1000)OSから入出力処理要求が到着し、CPUの制御権が渡される。
(1001)入出力命令(221)を作成し、主記憶装置(210)に確保された特定領域(220)に書き込む。
(1002)入出力装置(100)に対して新たな命令を発行したことを通知するためにSQPIレジスタ(300)に対して書き込みを行う。
手順(1011)に進む。
(1030)入出力装置(100)から特定のMSI番号またはMSI-X番号に対して割り込み通知が到着する。
(1031)OSは割り込み通知で指定されたMSI番号またはMSI-Xに対応する割り込み処理関数(ハンドラ)を呼び出す。
手順(1011)に進む。
(1011)主記憶(210)上に確保されている入出力完了通知を格納する領域(230)をチェックする。
(1012)主記憶(210)上の完了通知格納領域(230)に未処理の完了通知(231)が存在する場合、手順(1103)に進む。未処理の完了通知(231)が存在しない場合、手順(1020)に進む。
(1013)主記憶(210)上の完了通知領域(230)に格納されている未処理の完了通知(231)を1つ読み込み、OS依存の方法に則って完了処理を行う。
(1014)入出力装置(100)のCQCIレジスタ(301)に対して書き込みを行い、完了通知の処理が終わったことを通知する。
手順(1011)に進む。
(1040)OSからドライバソフトウェア(201)に対して入出力装置(100)初期化要求が到着する。
(1041)ドライバソフトウェア(201)はMSI番号またはMSI-X番号を確保し、確保した番号に関連づけて割り込み処理関数(ハンドラ)を設定する。
(1042)入出力装置(100)に対してMSI番号またはMSI-X番号を指定して、完了キュー(230)を作成する管理コマンドを送り、完了キュー(230)を生成する。
(1043)入出力装置に対して対応する完了キュー(230)番号を指定し、発行キュー(220)を作成する管理コマンドを送り、発行キュー(220)を生成する。
手順(1043)に進む。
(1020)CPU(200)の制御権をOSに返す。
入出力装置制御部(110)のシーケンスは図4と変化しない。ただし、手順(1107)および手順(1133)において制御の対象となるタイマーカウンタ(310)は、入出力完了通知(231)が配置される完了キュー(230)に関連づけられたもののみが対象となる点が異なる。
また、複数の発行キュー(220)に対して図4の手順は複数の入出力処理を実行する制御部(110)が並列に動作してもよい。複数の制御部が並列に発行キューを処理する場合、タイマーの開始信号またはリセット信号を送る対象となるタイマーカウンタ(310)は発行キュー(220)に関連づけられた完了キュー(230)に属するもののみとなる。
図10を用いて複数キューが存在する場合の割り込み通知頻度抑制機能の動作シーケンスを述べる。図10は完了キューごとに行われる動作シーケンスを示している。
(1200)初期化完了または完了キューを作成するコマンドの実行完了に伴って完了キューの動作が開始される。
(1201)カウンタ加算開始信号が到着した場合、手順(1202)へ進む。
到着していない場合、手順(1201)を繰り返す。
(1202)クロック生成部(130)から信号が到着した場合、手順(1210)へ進む。
到着していない場合、手順(1203)へ進む。
(1203)カウンタ加算停止信号が到着した場合、手順(1213)へ進む。
到着していない場合、手順(1230)へ進む。
(1210)タイマーカウンタ(310)を1加算する。
(1211)タイマーカウンタ(310)の値が閾値レジスタ(311)と一致した場合、手順(1220)へ進む。
不一致の場合、手順(1203)へ進む。
(1213)タイマーカウンタ(310)をリセットする。
手順(1201)へ進む。
(1214)タイマーカウンタをリセットする。
手順(1202)へ進む。
(1220)MSI番号またはMSI-X番号をMSI/MSI-X番号レジスタ(303)から読み出して入出力装置制御部(110)に伝達する。
(1221)入出力装置制御部(110)は伝えられたMSI番号またはMSI-X番号を用いて、CPU(200)に対して割り込み通知を送出する。
手順(1213)へ進む。
(1230)カウンタリセット信号が到着した場合、手順(1214)へ進む。
到着していない場合、手順(1202)へ進む。
図11を用いて、SQPIレジスタ(300)への書き込みを契機にタイマーカウンタをリセットする動作フローを説明する。
(1300)発行キュー(220)の動作を開始した。
(1301)SQPIレジスタ(300)の値が変化した場合、手順(1302)へ進む。
変化していない場合、手順(1301)を繰り返す。
(1302)更新された発行キュー(220)に関連づけられている完了キュー(230)の番号を完了キュー番号レジスタ(302)から読み出す。
(1303)特定された完了キュー(230)に対応づけられたタイマーカウンタ(310)に対してカウンタリセット信号を送る。
手順(1301)へ進む。
図12に示すように、中央演算処理装置200を構成する2つのコア200のそれぞれに対応して、SQPIレジスタ300、CQCIレジスタ301を割り当てている。本実施例2では、発行キューをMSI番号またはMSI-X番号に対応させていることで、マルチコアの場合に、特定の完了キューにI/Oの処理が集中して、I/O処理のボトルネックが発生しないようにできる。
ドライバソフトウェア(201)が、ある完了キュー(230)の状態を確認しにいったとき、完了キュー領域(230)に存在する入出力完了通知(231)を連続して処理するという動作をする場合、完了キュー領域にある完了通知をCPUが処理したことを入出力装置に伝えるためのCQCIレジスタ(301)も割り込み通知のタイミングを遅延させるために利用できる。
CQCI(301)の値が更新されたとき、その直前に完了キュー(230)に書き込んだ入出力完了通知(231)が処理されている可能性があるため、割り込み通知の送出をしばらく停止してみることで割り込み通知頻度の抑制効果が見込める。
CQCIレジスタ(301)は完了キュー(230)に一対一で関連づけられているため、このレジスタへの書き込みが検出された段階で対応する完了キュー(230)のタイマーカウンタ(310)をリセットすれば、一定時間完了通知の送出を遅延させる効果が得られる。この動作を実現するハードウェア概要を図12に示す。
ドライバソフトウェア(201)、入出力装置制御部の動作フローは実施例2と同様である。割り込み通知頻度抑制機能の動作フローに図13のシーケンスを追加する。
図13のCQCIレジスタ更新契機でのタイマーカウンタリセットの動作シーケンスについてフローを示す。
(1400)完了キュー(230)の動作を開始した。
(1401)CQCIレジスタ(301)の値が変化した場合、手順(1402)へ進む。
変化していない場合、手順(1401)を繰り返す。
(1402)CQCIレジスタ(301)に対応する完了キュー(230)に関連づけられたタイマーカウンタ(310)に対してカウンタリセット信号を送る。
手順(1401)へ進む。
本実施例3によれば、CPU(200)が、一つの完了キュー(230)内の一つの入出力完了通知(231)を読むだけではなく、他の入出力完了通知が完了キュー(230)内に存在すれば、それら複数の入出力完了通知を、まとめて読みだすことが出来るためCPU(200)の負荷を減らすことができる。
以上の実施例において、CPU(200)上で動作するOSから見た挙動について述べる。本発明が実施されている入出力装置(100)の挙動は、OSが提供する単位時間あたりの入出力処理数と割り込み回数の統計情報から得ることができる。たとえば、Linux(Linus Torvaldsの米国およびその他の国における登録商標あるいは商標である。)では単位時間あたりの入出力処理数や割り込み回数を取得するためのインターフェイスをprocfsとして実装している。
図14はOSのターミナル画面からprocfsを通して統計情報を可視化した例を示している。これらの情報を参照することで、本発明の動作について観察することが可能である。割り込み回数統計値表示画面(400)では、左の列から、割り込み番号、プロセッサごとの割り込み回数、割り込みを通知するデバイスの種類が示されている。入出力処理回数統計値表示画面(401)では、左の列からデバイス名、読み込み命令数、書き込み命令数が示されている。
本発明では、入出力要求数が一定の頻度に達するまでは従来の入出力装置と同様に、単位時間あたりの入出力回数(図14中401)に対して単位時間あたりの割り込み回数(図14中400の変化量)は比例する関係にある。
単位時間あたりの入出力回数が増加し、一定の閾値を超えると、単位時間あたりの割り込み回数(図14中400)の当該デバイスの割り込み回数が増加しない状態となる。この現象は本発明特有の挙動であり、本発明の実施状態を確認するための一助となる。
コンピュータに接続する入出力装置を備えた情報処理装置において、入出力命令の実行完了を知らせるための割り込み信号の送出回数が、CPUに対して過大になることを防ぐために、本発明は、情報処理装置に広く適用することができる。
100 入出力装置
110 入出力装置制御部
120 割り込み通知送信部
130 タイマー用クロック生成部
140 ルーティングスイッチ部
200 中央演算処理装置(CPU)
210 主記憶装置
240 主記憶装置への読み書き用データバス
300 SQPIレジスタ
301 CQCIレジスタ
310 タイマーカウンタ
311 タイマー閾値レジスタ
320 比較器

Claims (12)

  1. プロセッサーと、記憶部と、該プロセッサーから処理の指示を受ける入出力装置とからなる情報処理装置において
    記プロセッサーは、先行する処理が完了しているかを確認し、完了していない処理が所定数より少ない場合に処理開始指示を発行可能であり、
    前記入出力装置は、
    前記プロセッサーから受け付けた処理の処理完了の通知としての割り込み信号を前記プロセッサーに送信する割り込み通知送信部と、
    前記通知送信部に、前記処理完了の通知の送信を一定時間待機させる待機部と、
    前記待機中に前記プロセッサーから処理開始指示を受信した場合に、前記プロセッサーへ処理完了の通知の送信を待機させた前記一定時間を、さらに延長する延長部と、を有する
    ことを特徴とする情報処理装置。
  2. 請求項1に記載の情報処理装置において、
    前記プロセッサーからの処理開始の指示を、
    前記入出力装置の内部にあるレジスタへの書き込みによって検知することを特徴とする情報処理装置。
  3. 請求項2に記載の情報処理装置であって、
    前記割り込み通知送信部は、
    前記記憶部に設けた複数の処理完了キューを識別する識別情報とともに前記割り込み信号を送信することを特徴とする情報処理装置。
  4. 請求項2もしくは請求項3に記載の情報処理装置であって、
    複数のプロセッサーからの指示に対応して、前記入出力装置が、複数の処理開始指示を検知し、
    該処理開始指示を検知した場合には、
    前記延長部が、
    前記プロセッサーへ通知するまでの前記一定時間を、さらに延長することを特徴とする情報処理装置。
  5. 請求項1乃至4のいずれかに記載の情報処理装置であって、
    前記延長部は、
    前記プロセッサーからの処理完了通知を処理したことを知らせる信号を検知したときに、
    前記プロセッサーへ通知するまでの前記一定時間を、さらに延長することを特徴とする情報処理装置。
  6. プロセッサーと、記憶部と、該プロセッサーから処理の指示を受ける入出力装置とからなる情報処理装置の処理方法において
    記プロセッサーは、先行する処理が完了しているかを確認し、完了していない処理が所定数より少ない場合に処理開始指示を発行可能であり、
    前記入出力装置は、
    一定時間待機した後に、前記プロセッサーから受け付けた処理の処理完了の通知としての割り込み信号を送信し、前記待機中に前記プロセッサーから処理開始指示を受信した場合に、前記プロセッサーへの処理完了の通知の送信を待機させた前記一定時間を、さらに延長することを特徴とする情報処理装置の処理方法。
  7. 請求項6に記載の情報処理装置の処理方法において、
    前記プロセッサーからの処理開始の指示を、
    前記入出力装置の内部にあるレジスタへの書き込みによって検知することを特徴とする情報処理装置の処理方法。
  8. 請求項7に記載の情報処理装置の処理方法であって、
    前記記憶部に設けた複数の処理完了キューを識別する識別情報とともに前記割り込み信号を送信することを特徴とする情報処理装置の処理方法。
  9. 請求項7もしくは請求項8に記載の情報処理装置の処理方法であって、
    プロセッサーからの指示は、複数のコアからの指示であり、複数の指示に対応して、前記入出力装置が、複数の処理開始指示を検知し、
    該処理開始指示を検知した場合には、
    前記プロセッサーへ通知するまでの前記一定時間を、さらに延長することを特徴とする情報処理装置の処理方法。
  10. 請求項6乃至9のいずれかに記載の情報処理装置の処理方法であって、
    前記プロセッサーからの処理完了通知を処理したことを知らせる信号を検知したときに、
    前記プロセッサーへ通知するまでの前記一定時間を、さらに延長することを特徴とする情報処理装置の処理方法。
  11. プロセッサーから処理の指示を受ける入出力装置であって、
    記プロセッサーは、先行する処理が完了しているかを確認し、完了していない処理が所定数より少ない場合に処理開始指示を発行可能であり、
    前記入出力装置は、
    前記プロセッサーから受け付けた処理の処理完了の通知としての割り込み信号を前記プロセッサーに送信する割り込み通知送信部と、
    前記通知送信部に、前記処理完了の通知の送信を一定時間待機させる待機部と、
    前記待機中に前記プロセッサーから処理開始指示を受信した場合に、前記プロセッサーへ処理完了の通知の送信を待機させた前記一定時間を、さらに延長する延長部と、を有する
    ことを特徴とする入出力装置。
  12. 請求項11に記載の入出力装置において、
    前記プロセッサーからの処理開始の指示を、
    前記入出力装置の内部にあるレジスタへの書き込みによって検知することを特徴とする入出力装置。
JP2016518658A 2014-05-12 2014-05-12 情報処理装置、その処理方法、及び入出力装置 Expired - Fee Related JP6227767B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/062550 WO2015173853A1 (ja) 2014-05-12 2014-05-12 情報処理装置、その処理方法、及び入出力装置

Publications (2)

Publication Number Publication Date
JPWO2015173853A1 JPWO2015173853A1 (ja) 2017-04-20
JP6227767B2 true JP6227767B2 (ja) 2017-11-08

Family

ID=54479427

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016518658A Expired - Fee Related JP6227767B2 (ja) 2014-05-12 2014-05-12 情報処理装置、その処理方法、及び入出力装置

Country Status (3)

Country Link
US (1) US10481946B2 (ja)
JP (1) JP6227767B2 (ja)
WO (1) WO2015173853A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111867594A (zh) * 2018-03-19 2020-10-30 大鹏药品工业株式会社 包含烷基硫酸钠的药物组合物
US11144481B2 (en) 2018-04-11 2021-10-12 Apple Inc. Techniques for dynamically adjusting the manner in which I/O requests are transmitted between a computing device and a storage device
CN108874541A (zh) * 2018-06-05 2018-11-23 中国平安人寿保险股份有限公司 分布式运算方法、装置、计算机设备及存储介质
KR102560251B1 (ko) 2018-06-20 2023-07-26 삼성전자주식회사 반도체 장치 및 반도체 시스템
US10635355B1 (en) * 2018-11-13 2020-04-28 Western Digital Technologies, Inc. Bandwidth limiting in solid state drives

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58146941A (ja) * 1982-02-26 1983-09-01 Hitachi Ltd マイクロプログラム制御デ−タ処理装置
JPS6347861A (ja) * 1986-08-18 1988-02-29 Oki Electric Ind Co Ltd 電子計算機の入出力制御方法
JPH03111960A (ja) * 1989-09-26 1991-05-13 Mitsubishi Electric Corp ワンチップマイクロコンピュータ
US5588125A (en) 1993-10-20 1996-12-24 Ast Research, Inc. Method and apparatus for increasing bus bandwidth on a system bus by inhibiting interrupts while posted I/O write operations are pending
US5557782A (en) * 1994-07-12 1996-09-17 Zenith Data Systems Corporation Flexible deterministic state machine
US5761444A (en) * 1995-09-05 1998-06-02 Intel Corporation Method and apparatus for dynamically deferring transactions
US5905881A (en) * 1995-11-30 1999-05-18 Unisys Corporation Delayed state writes for an instruction processor
US5961621A (en) * 1997-03-28 1999-10-05 Intel Corporation Mechanism for efficiently processing deferred order-dependent memory access transactions in a pipelined system
JP2001331329A (ja) 2000-05-22 2001-11-30 Mitsubishi Electric Corp 割込み制御装置及び割込み制御方法
JP3389920B2 (ja) * 2000-07-10 2003-03-24 日本電気株式会社 ディスクアレイ装置およびディスクアレイ装置の割り込み実行方法
DE10131124A1 (de) * 2001-06-28 2003-01-23 Infineon Technologies Ag Konfigurierbare Adressierungsvorrichtung
JP2007074320A (ja) 2005-09-07 2007-03-22 Matsushita Electric Ind Co Ltd ネットワーク機器装置
JP4659008B2 (ja) 2007-09-13 2011-03-30 ルネサスエレクトロニクス株式会社 ホスト負荷調整機能付周辺回路
JP2010140239A (ja) 2008-12-11 2010-06-24 Internatl Business Mach Corp <Ibm> 割り込みレイテンシーを短縮する装置及び方法
US8566508B2 (en) * 2009-04-08 2013-10-22 Google Inc. RAID configuration in a flash memory data storage device
US8244946B2 (en) * 2009-10-16 2012-08-14 Brocade Communications Systems, Inc. Interrupt moderation
JP2012146150A (ja) 2011-01-13 2012-08-02 Renesas Electronics Corp 割り込み信号生成装置および割り込み信号生成方法

Also Published As

Publication number Publication date
JPWO2015173853A1 (ja) 2017-04-20
WO2015173853A1 (ja) 2015-11-19
US10481946B2 (en) 2019-11-19
US20170017516A1 (en) 2017-01-19

Similar Documents

Publication Publication Date Title
JP6227767B2 (ja) 情報処理装置、その処理方法、及び入出力装置
EP1645968B1 (en) Multi-threaded DMA
JP2008176482A (ja) 仮想計算機システム
US9684613B2 (en) Methods and systems for reducing spurious interrupts in a data storage system
JP2008176360A (ja) マルチプロセッサシステム
JPWO2012001835A1 (ja) マルチプロセッサシステム
WO2022227565A1 (zh) 中断控制器、中断控制方法、芯片、计算机设备以及介质
US20170212852A1 (en) Method and accelerator unit for interrupt handling
TWI516944B (zh) 以多重中斷向量模擬訊息發訊中斷之方法
US20170329730A1 (en) Method and unit for handling interrupts in a system
JP2007058716A (ja) データ転送バスシステム
CN114817110B (zh) 一种数据传输方法及装置
CN115168256A (zh) 中断控制方法、中断控制器、电子设备、介质和芯片
US11061840B2 (en) Managing network interface controller-generated interrupts
KR20160039846A (ko) 인터럽트 처리 시스템 및 인터럽트 처리 방법
JP5981004B2 (ja) 半導体装置
JP6123487B2 (ja) 制御装置、制御方法及び制御プログラム
US20140052879A1 (en) Processor, information processing apparatus, and interrupt control method
JP5076967B2 (ja) 情報処理システム、情報処理システムの制御方法、および情報処理システムの制御プログラム
US10078604B1 (en) Interrupt coalescing
EP2413248A1 (en) Direct memory access device for multi-core system and operating method of the same
US10884733B2 (en) Information processing apparatus, and information processing method
US20150220465A1 (en) Speculative interrupt signalling
JP5805546B2 (ja) 半導体装置
WO2006042108A1 (en) Multi-threaded direct memory access

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170704

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170831

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171011

R150 Certificate of patent or registration of utility model

Ref document number: 6227767

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees