JP2016076108A - 情報処理装置、メモリ制御装置及び情報処理装置の制御方法 - Google Patents

情報処理装置、メモリ制御装置及び情報処理装置の制御方法 Download PDF

Info

Publication number
JP2016076108A
JP2016076108A JP2014206423A JP2014206423A JP2016076108A JP 2016076108 A JP2016076108 A JP 2016076108A JP 2014206423 A JP2014206423 A JP 2014206423A JP 2014206423 A JP2014206423 A JP 2014206423A JP 2016076108 A JP2016076108 A JP 2016076108A
Authority
JP
Japan
Prior art keywords
request
response
transmitted
write
storage device
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
JP2014206423A
Other languages
English (en)
Other versions
JP6331944B2 (ja
Inventor
明夫 常世田
Akio Tokiyoda
明夫 常世田
広治 細江
Koji Hosoe
広治 細江
正寿 相原
Masatoshi Aihara
正寿 相原
雄太 豊田
Yuta Toyoda
雄太 豊田
須賀 誠
Makoto Suga
誠 須賀
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 JP2014206423A priority Critical patent/JP6331944B2/ja
Priority to US14/847,360 priority patent/US20160098212A1/en
Publication of JP2016076108A publication Critical patent/JP2016076108A/ja
Application granted granted Critical
Publication of JP6331944B2 publication Critical patent/JP6331944B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing

Abstract

【課題】メモリの性能を効率的に利用する情報処理装置、メモリ制御装置及び情報処理装置の制御方法を提供する。【解決手段】I/F25及び26は、HMC3に接続する。リクエストキュー21は、読出要求又は書込要求をプロセッサ1から受信する。I/F選択部23は、I/F25及び26に既に送信され且つ応答を受信していない送信済み読出要求及び送信済み書込要求の数を基に、送信済み読出要求及び前記送信済み書込要求に対する応答を受信するまでの所要時間をI/F25及び26毎に算出し、所要時間を基に使用出力経路を選択する。送信部22は、読出要求又は書込要求を、使用出力経路を介してHMC3に送信する。レスポンス管理部24は、HMC3からの応答を使用出力経路を介して受信する。【選択図】図1

Description

本発明は、情報処理装置、メモリ制御装置及び情報処理装置の制御方法に関する。
近年、HPC(High Performance Computing)、サーバ、PC(Personal Computer)、携帯電話などの情報処理装置に搭載されるプロセッサは、製造プロセスの細分化が進み、プロセッサあたりの計算速度はますます向上してきている。このようなプロセッサの計算速度向上にしたがい、主記憶装置においても容量や帯域幅が拡大していくことが好ましい。
このようなメモリの性能向上に対応するために、様々な技術が提案されてきている。例えば、最近では、従来採用されてきたDIMM(Dual Inline Memory Module)に変わる素子として、HMC(Hybrid Memory Cube)に代表されるDRAM(Dynamic Random Access Memory)コントロール素子を内蔵したメモリ素子が開発されている。
HMCは、DRAMの積層化技術により、実装密度を向上させることで、大容量化を達成している。また、HMCは、複数のメモリコントローラを内蔵し、且つ、CPU(Central Processing Unit)とメモリとの間のインタフェースに高速シリアル通信を採用することで、広帯域を実現している。
さらに、HMCは、CPUと接続するためのインタフェースを複数有している。そして、接続するインタフェースの数に比例して合計のバンド幅が大きくなり、すべてのインタフェースを用いた場合に、HMCに搭載されたメモリは、最大性能を発揮する。
HMCでは、メモリのアドレスに応じて、そのアドレス空間の制御を行うメモリコントローラが割り当てられている。そして、HMCは、上述のように複数のインタフェースを有しており、それぞれのインタフェースはスイッチを介してメモリコントローラに接続している。インタフェースは、スイッチで接続される経路によりレイテンシに差がある。各メモリに対して、そのメモリを管理するメモリコントローラとの間でレイテンシがより小さくなるインタフェースが、直属インタフェースとして割り当てられる場合がある。この直属のインタフェースを用いてメモリにアクセスすると、レイテンシが少なくなるため、従来は、アクセスするアドレスによりどのインタフェースにアクセスするかを振り分ける方法が一般的であった。
なお、メモリの制御技術として、マルチポートのメモリにおいて、処理要求のQoSパラメータに応じて、各ポートで受信した処理要求の処理順序を決定する従来技術がある。また、メモリへの処理要求を格納するキューとそのキューを迂回する短絡路を設けて、直接メモリに処理要求を送る場合に短絡路を用いて処理要求をメモリへ送信する従来技術がある。
特開2012−74042号公報 特開平07−253923号公報
しかしながら、レイテンシに基づくアドレスを用いた処理要求の振り分けでは、アクセスが特定のインタフェースに集中するおそれがある。その場合、他のインタフェースへのアクセスが減り、メモリの合計のバンド幅が減ってしまうおそれがある。そのため、従来のレイテンシに応じた処理要求の振り分けでは、メモリ性能の効率的な利用は困難であった。
また、処理要求のQoSパラメータに応じて処理要求の処理順序を変更する従来技術やキューを迂回する短絡路を設ける従来技術を用いても、インタフェースへのアクセスを平準化することは困難であり、メモリ性能を効率的に利用することは困難である。
開示の技術は、上記に鑑みてなされたものであって、メモリの性能を効率的に利用する情報処理装置、メモリ制御装置及び情報処理装置の制御方法を提供することを目的とする。
本願の開示する情報処理装置、メモリ制御装置及び情報処理装置の制御方法は、一つの態様において、演算処理装置、記憶装置及びメモリ制御装置を有する。前記演算処理装置は、前記記憶装置に対する読出要求及び書込要求を出力する演算処理部を備える前記記憶装置は、受信した前記読出要求又は前記書込要求に応じて処理を行い、処理完了後に応答を出力する処理部を備える。前記メモリ制御装置は、以下の各部を備える。複数の出力経路は、前記記憶装置に接続する。受信部は、前記読出要求又は前記書込要求を前記演算処理装置から受信する。選択部は、各前記出力経路に既に送信され且つ前記応答を受信していない送信済み読出要求及び送信済み書込要求の数を基に、前記送信済み読出要求及び前記送信済み書込要求に対する前記応答を受信するまでの所要時間を前記出力経路毎に算出する。選択部は、前記所要時間を基に使用出力経路を選択する。送信部は、前記受信部が受信した前記読出要求又は前記書込要求を、前記使用出力経路を介して前記記憶装置に送信する。応答受信部は、前記記憶装置からの前記読出要求又は前記書込要求に対する前記応答を前記使用出力経路を介して受信する。
本願の開示する情報処理装置、メモリ制御装置及び情報処理装置の制御方法の一つの態様によれば、メモリの性能を効率的に利用することができるという効果を奏する。
図1は、実施例1に係る情報処理装置のブロック図である。 図2は、HMCの詳細を表すブロック図である。 図3は、実施例1に係る情報処理装置によるコマンド発行処理のフローチャートである。 図4は、実施例2に係る情報処理装置のブロック図である。 図5は、実施例2に係る情報処理装置によるリクエストの処理順序の保証処理のフローチャートである。
以下に、本願の開示する情報処理装置、メモリ制御装置及び情報処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、メモリ制御装置及び情報処理装置の制御方法が限定されるものではない。
図1は、実施例1に係る情報処理装置のブロック図である。図1に示すように、本実施例に係る情報処理装置100は、プロセッサ1、メモリコントローラ2及びHMC3を有する。
プロセッサ1は、HMC3からのデータの読出要求(以下、「リードリクエスト」という。)をメモリコントローラ2へ出力する。その後、プロセッサ1は、出力したリードリクエストの応答であるリードレスポンスをメモリコントローラ2から受信する。
また、プロセッサ1は、HMC3へのデータの書込要求(以下、「ライトリクエスト」という。)をメモリコントローラ2へ出力する。その後、プロセッサ1は、出力したライトリクエストの応答としてライトレスポンスをメモリコントローラ2から受信する。以下では、ライトリクエスト及びリードリクエストをまとめて、「リクエスト」と呼ぶ。このプロセッサ1が、「演算処理装置」の一例にあたる。
メモリコントローラ2は、リクエストキュー21、送信部22、I/F(Interface)選択部23、レスポンス管理部24、並びに、I/F25及び26を有する。ここで、本実施例では、I/Fが2つの場合で説明するが、メモリコントローラ2は、2つ以上のI/Fを備えていれば、I/Fの数はいくつでもよい。例えば、メモリコントローラ2は、4つ又は8つのI/Fを有してもよい。このメモリコントローラ2が、「メモリ制御装置」の一例にあたる。またI/F25及び26が、「複数の出力経路」の一例にあたる。
リクエストキュー21は、リクエストをプロセッサ1から受信する。そして、リクエストキュー21は、受信したリクエストを古いリクエストが前になるようにキューに蓄積する。
さらに、リクエストキュー21は、キューに格納したリクエストのうち先頭のリクエストを送信部22に送信する。このリクエストキュー21が、「受信部」の一例にあたる。
送信部22は、リクエストをリクエストキュー21から取得する。次に、送信部22は、取得したリクエストがリードリクエスト又はライトリクエストのいずれの種類のリクエストであるかをI/F選択部23へ送信する。その後、送信部22は、I/F選択部23が選択したI/Fの情報を受信する。ここでは、I/F25がI/F選択部23により選択された場合で説明する。
さらに、送信部22は、リクエストが指定するアドレスの取得要求をI/F選択部23から受けた場合、リクエストが指定するアドレスをI/F選択部23へ出力する。
そして、送信部22は、取得したリクエストを、I/F選択部23により選択されたI/F25を経由させてHMC3へ送信する。その後、送信部22は、送信したリクエストの識別情報をレスポンス管理部24へ送信する。ここで、リクエストの識別情報とは、例えば、送信部22が送信するリクエストのタグである。
I/F選択部23は、リクエストの種類の情報をリクエスト送信部22から受信する。次に、I/F選択部23は、I/F25及び26のそれぞれにおける、リードレスポンスの待ち数とライトレスポンスの待ち数とをレスポンス管理部24から受信する。
ここで、ライトレスポンスとは、ライトリクエストに応じたライトコマンドを送信部22がHMC3へ発行した場合の、そのライトコマンドに対するHMC3からの応答である。そして、ライトレスポンスの待ち数とは、ライトコマンドをHMC3へ送信部22が発行した後、そのライトコマンドに対応するライトレスポンスをレスポンス管理部24が受けていない状態のライトリクエストの数である。この発行済みのライトレスポンスが、「送信済み書込要求」の一例にあたる。
また、リードレスポンスとは、リードリクエストに応じたリードコマンドを送信部22がHMC3へ発行した場合の、そのリードコマンドに対するHMC3からの応答である。そして、リードレスポンスの待ち数とは、リードコマンドをHMC3へ送信部22が発行した後、そのリードコマンドに対応するリードレスポンスをレスポンス管理部24が受けていない状態のリードリクエストの数である。この発行済みのリードレスポンスが、「送信済み読出要求」の一例にあたる。
ここで、I/F選択部23は、ライトレスポンスの取得にかかるサイクル数、及びリードレスポンスの取得にかかるサイクル数を記憶している。
ライトリクエストの発行にかかるサイクル数は、コマンドを送出するサイクル数と、データを送出するサイクル数の和である。この場合、ライトリクエストの発行にかかるサイクル数は、コマンドの1サイクルとデータの8サイクルを加算して9サイクルとなる。
ライトレスポンスの取得にかかるサイクル数は、コマンドを受信するサイクル数のみである。ここで、レスポンス管理部24が1パケットを受信するのに1サイクルかかる。そして、コマンドは、1パケットである。すなわち、ライトレスポンスの取得にかかるサイクル数は1サイクルとなる。
また、リードレスポンスの取得にかかるサイクル数は、コマンドを受信するサイクル数と、データを受信するサイクル数の和である。また、1回のリードレスポンスで送られるパケット数は情報処理装置100に応じて予め決められている。本実施例では、1回のリードレスポンスで送られるパケット数が8パケットの場合で説明する。この場合、リードレスポンスの取得にかかるサイクル数は、コマンドの1サイクルとデータの8サイクルを加算して9サイクルとなる。
また、I/F選択部23は、I/F25及び26のそれぞれのライトコマンドの発行状態を送信部22から取得する。I/F選択部23は、I/F25及び26のいずれもライトコマンドの発行中の場合、1サイクル待機し、再度I/F25及び26のコマンド発行状態を取得する。
これに対して、I/F25又は26のいずれか一方がライトコマンドの発行中でない場合、I/F選択部23は、ライトコマンドを発行していないI/Fをコマンドを送信するI/Fとして選択する。このライトコマンドを発行していないI/Fが、「未使用経路」の一例にあたる。また、コマンドを送信するI/Fが、「使用出力経路」の一例にあたる。
一方、I/F25及び26の双方がライトコマンドの発行中でない場合、I/F選択部23は、コマンドを送信するI/Fの選択処理を行う。具体的には、I/F選択部23は、レスポンス管理部24から受信したI/F25及び26のそれぞれにおけるリードレスポンスの待ち数にリードレスポンスの取得にかかるサイクル数を乗算し、全てのリードレスポンスの取得に係るサイクル数を算出する。また、I/F選択部23は、レスポンス管理部24から受信したI/F25及び26のそれぞれにおけるライトレスポンスの待ち数にライトレスポンスの取得にかかるサイクル数を乗算し、全てのライトレスポンスの取得に係るサイクル数を算出する。
次に、I/F選択部23は、I/F25における全てのリードレスポンスの取得に係るサイクル数と全てのライトレスポンスの取得に係るサイクル数とを合計し、I/F25における全てのリクエストのレスポンスの取得に係るサイクル数の合計を算出する。また、I/F選択部23は、I/F26における全てのリードレスポンスの取得に係るサイクル数と全てのライトレスポンスの取得に係るサイクル数とを合計し、I/F26における全てのリクエストのレスポンスの取得に係るサイクル数の合計を算出する。
I/F25における全てのリクエストのレスポンスの取得に係るサイクル数の合計とI/F26における全てのリクエストのレスポンスの取得に係るサイクル数の合計とが等しい場合、I/F選択部23は、リクエストが指定するアドレスを送信部22から取得する。ここで、I/F選択部23は、各メモリに対する直属のI/FがI/F25又は26のいずれであるかを予め記憶している。ここで、直属のI/Fには、各メモリに対する読み書きのレイテンシが最も小さいI/Fが割り当てられる。I/F選択部23は、I/F25又は26の中から取得したアドレスを有するメモリの直属のI/Fを特定し、特定したI/Fをコマンドを送信するI/Fとして選択する。
そして、I/F選択部23は、送信部22が受信したリクエストがライトリクエストの場合、I/F25及びI/F26のうち、全てのリクエストのレスポンスの取得に係るサイクル数の合計が小さい方をコマンドを送信するI/Fとして選択する。
また、I/F選択部23は、送信部22が受信したリクエストがリードリクエストの場合、I/F25及びI/F26のうち、全てのリクエストのレスポンスの取得に係るサイクル数の合計が大きい方をコマンドを送信するI/Fとして選択する。このI/F選択部23が、「選択部」の一例にあたる。
ここで、ライトリクエストの送信にかかるサイクル数は、コマンドを送信するサイクル数と、データを送信するサイクル数との和である。ここで、送信部22が1パケットを送るのに1サイクルかかる。そして、1回のライトリクエストで送信するパケット数は、1回のリードレスポンスで送られるパケット数と同じである。そこで、リードレスポンスの取得にかかるサイクル数は、コマンドの1サイクルとデータの8サイクルを加算して9サイクルとなる。
また、リードリクエストの送信にかかるサイクル数は、コマンドを送信するサイクル数のみである。すなわち、リードリクエストの送信にかかるサイクル数は1サイクルとなる。
このように、ライトリクエストの送信には、リードリクエストの送信に比べて長い時間がかかる。そこで、ライトリクエストは、既に送信されたリクエストの処理が完了するまでの時間が長いI/Fへ送出し、リードリクエストは、既に送信されたリクエストの処理が完了するまでの時間が短いI/Fへ送出する。これにより、I/F25及びI/F26の使用率を平準化できる。
レスポンス管理部24は、HMC3から送信されたライトレスポンス又はリードレスポンスをI/F25又はI/F26を介して受信する。ここで、レスポンス管理部24がレスポンスの取得に用いるI/Fは、そのレスポンスの元となるコマンドを送信するのに送信部22が用いたI/Fと一致する。
さらに、レスポンス管理部24は、送信したリクエストの識別情報を送信部22から受信する。次に、レスポンス管理部24は、受信したレスポンスの情報を用いて、ライトレスポンスの待ち数及びリードレスポンスの待ち数を求める。そして、レスポンス管理部24は、ライトレスポンスの待ち数及びリードレスポンスの待ち数をI/F選択部23へ送信する。このレスポンス管理部24が、「応答受信部」の一例にあたる。
HMC3は、図2に示すようにリンク31及び32、スイッチ33、メモリコントローラ301〜304及びメモリ311〜314を有している。このHMC3が、「記憶措置」の一例にあたる。図2は、HMCの詳細を表すブロック図である。
メモリ311〜314は、例えばDRAMである。そして、メモリ311〜314は、それぞれ異なるアドレスが割り当てられている。以下では、メモリ311〜314のそれぞれを区別しない場合、「メモリ310」という。
メモリコントローラ301〜304は、それぞれメモリ311〜314に接続されて、接続されたメモリを管理する。以下では、メモリコントローラ301〜304のそれぞれを区別しない場合、「メモリコントローラ300」という。メモリコントローラ300は、ライトリクエスト及びリードリクエストを受けて、管理するメモリ310に対してデータの読み書きを行う。
ライトリクエストの場合、メモリコントローラ300は、管理するメモリ310への書き込み処理が完了すると、処理完了を通知するレスポンスをコマンドの送信元のリンク31又は32に送信する。また、リードリクエストの場合、メモリコントローラ300は、管理するメモリ310への書き込み処理が完了すると、読み出したデータを送信するレスポンスをコマンドの送信元のリンク31又は32に送信する。
スイッチ33は、リンク31及び32とメモリコントローラ300との接続経路を切り替えるスイッチである。スイッチ33は、例えばリンク31にコマンドが入力された場合、そのコマンドで指定されたアドレスを有するメモリ310に接続するメモリコントローラ300に、リンク31が接続するように接続を切り替える。
リンク31は、I/F25と接続するためのHMC3のインタフェースである。リンク32は、I/F26と接続するためのHMC3のインタフェースである。ここでは、リンク31を例に説明する。リンク31は、I/F25又は26を介して送信部22から送られたコマンドを受信する。そして、リンク31は、コマンドで指定されたアドレスを有するメモリ310を管理するメモリコントローラ300に接続するようにスイッチ33を切り替える。そして、リンク31は、受信したコマンドをスイッチ33を介してメモリコントローラ300へ送信する。
その後、リンク31は、送信したコマンドに対するレスポンスをメモリコントローラ300から受信する。具体的には、ライトリクエストの場合、リンク31は、処理完了の通知のレスポンスを受信する。また、リードリクエストの場合、リンク31は、リードコマンドにしたがいメモリ310から読み出されたデータを受信する。そして、リンク31は、受信したレスポンスをメモリコントローラ2へ送信する。
ここで、リンク31及び32は各メモリコントローラ300との接続経路の距離に差がある。そして、通常は通信距離が短いほどレイテンシは短くなる。すなわち、リンク31及び32は、それぞれ最もレイテンシが短くなるメモリコントローラ300を有する。メモリコントローラ300は、メモリ310に一対一に対応しているので、各メモリ310は、リンク31及び32のうち最もレイテンシが短いリンク有する。そして、リンク31はI/F25に対応し、リンク32はI/F26に対応する。すなわち、各メモリ310は、それぞれ最もレイテンシが短いI/Fを有する。そこで、本実施例では、各メモリ300に対して、最もレイテンシが短いI/Fを直属のI/Fとして割り当てられている。例えば、本実施例では、メモリ311及び312には、I/F25が直属のI/Fとして割り当てられている。また、メモリ313及び314には、I/F26が直属のI/Fとして割り当てられている。
次に、図3を参照して、本実施例に係る情報処理装置によるコマンド発行処理の流れについて説明する。図3は、実施例1に係る情報処理装置によるコマンド発行処理のフローチャートである。ここでは、I/F25及び26のそれぞれを区別しない場合、「I/F20」という。
リクエストキュー21が、プロセッサ1から出力されたリクエストを受信する(ステップS1)。
受信されたリクエストがリクエストキュー21に格納される(ステップS2)。
送信部22は、リクエストキュー21の先頭からリクエストを取得する(ステップS3)。さらに、送信部22は、取得したリクエストの種類をI/F選択部23に送信する。
I/F選択部23は、I/F25及び26の双方がライトコマンドを発行中か否かを判定する(ステップS4)。双方がライトコマンドを発行中の場合(ステップS4:肯定)、I/F選択部23は、1サイクル待機し(ステップS5)、ステップS4へ戻る。
これに対して、少なくともいずれか一方がライトコマンドを発行していない場合(ステップS4:否定)、I/F選択部23は、ライトコマンドを発行中でないI/F20が1つのみか否かを判定する(ステップS6)。ライトコマンドを発行中のI/F20が1つのみの場合(ステップS6:肯定)、I/F選択部23は、ライトコマンドを発行中でないI/F20を、コマンドを送信するI/Fとして選択する(ステップS7)。その後、処理はステップS15へ進む。
これに対して、ライトコマンドを発行中でないI/F20が複数ある場合(ステップS6:否定)、I/F選択部23は、各I/F20のリードレスポンス待ち数及びライトレスポンス待ち数をレスポンス管理部24から取得する。そして、I/F選択部23は、I/F20毎における返っていないレスポンスのサイクル数の合計を算出する(ステップS8)。
そして、I/F選択部23は、送信部22が受信したリクエストがライトリクエストか否かを判定する(ステップS9)。リクエストがライトリクエストの場合(ステップS9:肯定)、I/F選択部23は、返っていないレスポンスのサイクル合計が最多のI/F20は1つのみか否かを判定する(ステップS10)。
返っていないレスポンスのサイクル合計が最多のI/F20が1つのみの場合(ステップS10:肯定)、I/F選択部23は、返っていないレスポンスのサイクル合計が最多のI/F20を、コマンドを送信するI/Fとして選択する(ステップS11)。
これに対して、返っていないレスポンスのサイクル合計が最多のI/F20が複数ある場合(ステップS10:否定)、I/F選択部23は、リクエストで指定されたアドレスを有するメモリ300に直属のI/F20を抽出する。そして、I/F選択部23は、抽出したI/F20を、コマンドを送信するI/Fとして選択する(ステップS14)。
一方、リクエストがリードリクエストの場合(ステップS9:否定)、I/F選択部23は、返っていないレスポンスのサイクル合計が最小のI/F20は1つのみか否かを判定する(ステップS12)。
返っていないレスポンスのサイクル合計が最小のI/F20は1つのみの場合(ステップS12:肯定)、I/F選択部23は、返っていないレスポンスのサイクル合計が最小のI/F20を、コマンドを送信するI/Fとして選択する(ステップS13)。
これに対して、返っていないレスポンスのサイクル合計が最小のI/F20が複数ある場合(ステップS12:否定)、I/F選択部23は、リクエストで指定されたアドレスを有するメモリ300に直属のI/F20を抽出する。そして、I/F選択部23は、抽出したI/F20を、コマンドを送信するI/Fとして選択する(ステップS14)。
送信部22は、I/F選択部23により選択されたI/F20を用いてコマンドをHMC3へ発行する(ステップS15)。
以上に説明したように、本実施例に係る情報処理装置は、各I/Fにおける返っていないレスポンスのサイクル合計を基に、コマンドを発行するI/Fを決定する。これにより、I/F毎の使用量が平準化され、メモリのバンド幅の性能を最大限に生かすことができる。
図4は、実施例2に係る情報処理装置のブロック図である。本実施例に係る情報処理装置は、ライトリクエストの順番を保証することが実施例1と異なる。以下では、リクエストの順番の保証のための処理について主に説明する。また、実施例1と同じ各部の機能については説明を省略する。
実施例1の場合、I/Fが同じ場合は、同じアドレスに対するリクエストの処理の順序は守られる。しかし、リクエストを別々のI/Fから送信した場合、処理の順番が保証されない。その場合、例えば、先発のライトリクエストよりも後発のリードリクエストが先に処理され、更新前のデータが読み込まれてしまう。また、先発のライトリクエストよりも後発のライトリクエストが先の処理された場合、データが古いデータに更新されてしまう。そこで、先発のライトリクエストに対する後発のリクエストの順番を保証することが好ましい。
送信部22は、HMC3に送信したライトコマンドに対応するリクエストの識別子とともに、そのライトリクエストが指定するアドレスをレスポンス管理部24へ送信する。
レスポンス管理部24は、HMC3に送信したライトコマンドに対応するリクエストの識別子とともに、そのライトリクエストが指定するアドレスを送信部22から受信する。
そして、レスポンス管理部24は、受信したライトリクエストが指定するアドレスをそのリクエストの識別子とともに格納する。その後、レスポンス管理部24は、ライトレスポンスを受信した場合、格納している情報の中から、そのライトレスポンスに対応するリクエストの識別子及び指定されたアドレスを削除する。すなわち、レスポンス管理部24は、コマンド発行済で且つライトレスポンスが返ってきていないライトリクエストが指定するアドレスを記憶するといえる。
リクエストキュー21は、レスポンス管理部24が記憶するコマンド発行済で且つライトレスポンスが返ってきていないライトリクエストが指定するアドレスを取得する。そして、リクエストキュー21は、取得したアドレスと一致するアドレスを指定しているライトリクエスト及びリードリクエストを送信部22の取得対象から外す。
ここで、レスポンス管理部24がライトレスポンスを受信すれば、レスポンス管理部24が記憶する情報からそのライトレスポンスに対応するライトリクエストのアドレスが削除される。その場合、リクエストキュー21は、そのライトリクエストが指定するアドレスと同じアドレスを指定するリクエストを送信部22の取得対象に戻す。
送信部22は、コマンド発行済で且つライトレスポンスが返ってきていないライトリクエスト及びリードリクエストを除くリクエストの中で、最もキューの先頭にあるリクエスト、すなわち格納されたタイミングが最も古いリクエストを取得する。そして、送信部22は、実施例1と同様のコマンドを送信するI/Fの選択処理を行い、取得したリクエストを選択したI/Fを用いてHMC3へ送信する。
これにより、先発のライトリクエストと同じアドレスを指定する後発のライトリクエスト及びリードリクエストは、その先発のライトリクエストより先に処理されることはなくなる。
次に、図5を参照して、本実施例に係る情報処理装置によるリクエストの処理順序の保証処理の流れについて説明する。図5は、実施例2に係る情報処理装置によるリクエストの処理順序の保証処理のフローチャートである。フローチャートで示される処理は、例えば、図3のフローチャートにおけるステップS3で行われる。
リクエストキュー21は、レスポンス管理部24が記憶するコマンド発行済で且つライトレスポンスが返ってきていないライトリクエストが指定するアドレスを取得する。そして、リクエストキュー21は、格納中のリクエストが指定するアドレスの中に発行済みでライトレスポンスのないライトリクエストが指定するアドレスと同じアドレスが存在するか否かを判定する(ステップS101)。
同じアドレスが存在しない場合(ステップS101:否定)、送信部22は、リクエストキュー21の全てのリクエストのうち先頭にあるリクエストを取得する(ステップS102)。
これに対して、同じアドレスが存在する場合(ステップS101:肯定)、リクエストキュー21は、アドレスが一致するライトリクエスト及びリードリクエストを送信部22の取得対象から外す。そして、送信部22は、発行済みでライトレスポンスのないリクエストが指定したアドレスと同じアドレスを指定するリクエスト以外のリクエストのうち一番先頭にあるものを取得する(ステップS103)。
以上に説明したように、本実施例に係る情報処理装置は、先発のライトリクエストの処理順序を保証する。これにより、誤った処理がデータの読み出しや書き込みを回避することができる。
また、実施例2では先発のライトレスポンスの順序の保証を対象としたが、それに加えて、先発のリードレスポンスの順序の保証を行ってもよい。例えば、先発のリードリクエストに対してもライトリクエストの場合と同様の処理を行い、リクエストキュー21、リードレスポンスのないリクエストが指定したアドレスと同じアドレスを指定するリクエストも送信部22の取得対象から外してもよい。
これにより、先発のリードレスポンス対しても処理の順序を保証することができる。例えば、先発のリードリクエストより後発のライトリクエストが先に処理された場合、更新前のデータを読み出すはずが更新後のデータを読み出してしまうという状態を回避することができる。
また、以上の説明では、プロセッサ1とメモリコントローラ2とを別に設けたが、実装方法はこれに限らない。例えば、プロセッサ1の中にメモリコントローラ2が搭載されてもよい。その場合、プロセッサ1の機能は、プロセッサ1に搭載されたプロセッサコアが実行する。
また、以上の説明は記憶装置としてHMCを例に説明したが、メモリコントローラとの間に複数のインタフェースを有する記憶装置であればこれに限らない。
1 プロセッサ
2 メモリコントローラ
3 HMC
21 リクエストキュー
22 送信部
23 I/F選択部
24 レスポンス管理部
25,26 I/F
31,32 リンク
33 スイッチ
301〜304 メモリコントローラ
311〜314 メモリ

Claims (8)

  1. 演算処理装置、記憶装置及びメモリ制御装置を有する情報処理装置であって、
    前記演算処理装置は、前記記憶装置に対する読出要求及び書込要求を出力し、
    前記記憶装置は、受信した前記読出要求又は前記書込要求に応じて処理を行い、処理完了後に応答を出力し、
    前記メモリ制御装置は、
    前記記憶装置に接続する複数の出力経路)と、
    前記読出要求又は前記書込要求を前記演算処理装置から受信する受信部と、
    各前記出力経路に既に送信され且つ前記応答を受信していない送信済み読出要求及び送信済み書込要求の数を基に、前記送信済み読出要求及び前記送信済み書込要求に対する前記応答を受信するまでの所要時間を前記出力経路毎に算出し、前記所要時間を基に使用出力経路を選択する選択部と、
    前記受信部が受信した前記読出要求又は前記書込要求を、前記使用出力経路を介して前記記憶装置に送信する送信部と、
    前記記憶装置からの前記読出要求又は前記書込要求に対する前記応答を前記使用出力経路を介して受信する応答受信部とを備えた
    ことを特徴とする情報処理装置。
  2. 前記選択部は、前記出力経路毎に、前記送信済み書込要求に対する前記応答の受信にかかる時間に、前記送信済み書込要求の数を乗算した結果と、前記送信済み読出要求に対する前記応答の受信にかかる時間に、前記送信済み読出要求の数を乗算した結果とを加算して、各前記出力経路の前記所要時間を算出することを特徴とする請求項1に記載の情報処理装置。
  3. 前記選択部は、前記出力経路の中に前記送信済み読出要求及び前記送信済み書込要求のいずれも有さない未使用経路が1つ存在する場合、前記未使用経路を前記使用出力経路として選択することを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記選択部は、前記受信部が前記書込要求を受信した場合、前記所要時間が最も短い前記出力経路を前記使用出力経路として選択することを特徴とする請求項1〜3のいずれか一つに記載の情報処理装置。
  5. 前記選択部は、前記受信部が前記読出要求を受信した場合、前記所要時間が最も長い前記出力経路を前記使用出力経路として選択することを特徴とする請求項1〜4のいずれか一つに記載の情報処理装置。
  6. 前記記憶装置は、データを格納する場所を表すアドレスを有し、
    前記演算処部は、前記書込要求及び前記読出要求で対象となる前記アドレスを指定し、
    前記受信部は、受信した前記書込要求及び前記読出要求を格納し、
    前記送信部は、前記受信部に格納された前記書込要求及び前記読出要求を送信し、且つ、特定の送信済み書込要求で指定されたアドレスと同じアドレスに対する前記書込要求又は前記読出要求は、前記特定の送信済み書込要求の処理が完了するまで送信しないことを特徴とする請求項1〜5のいずれか一つに記載の情報処理装置。
  7. 記憶装置に接続する複数の出力経路と、
    前記記憶装置に対する読出要求又は書込要求を演算処理装置から受信する受信部と、
    各前記出力経路に既に送信され且つ前記記憶装置からの応答を受信していない送信済み読出要求及び送信済み書込要求の数を基に、前記送信済み読出要求及び前記送信済み書込要求に対する前記応答を受信するまでの所要時間を前記出力経路毎に算出し、前記所要時間を基に使用出力経路を選択する選択部と、
    前記受信部が受信した前記読出要求又は前記書込要求を、前記使用出力経路を介して前記記憶装置に送信する送信部と、
    前記記憶装置からの前記読出要求又は前記書込要求に対する前記応答を前記使用出力経路を介して受信する応答受信部と
    を備えたことを特徴とするメモリ制御装置。
  8. 演算処理装置、記憶装置及びメモリ制御装置を有する情報処理装置の制御方法であって、
    前記演算処理装置に、読出要求及び書込要求を前記記憶装置に対して出力させ、
    前記メモリ制御装置に、前記読出要求又は前記書込要求を受信させ、前記記憶装置に接続する複数の出力経路に既に送信され且つ前記記憶装置からの応答を受信していない送信済み読出要求及び送信済み書込要求の数を基に、前記送信済み読出要求及び前記送信済み書込要求に対する前記応答を受信するまでの所要時間を前記出力経路毎に算出させ、前記所要時間を基に使用出力経路を選択させ、受信した前記読出要求又は前記書込要求を、前記使用出力経路を介して前記記憶装置に送信させ、
    前記記憶装置に、前記使用出力経路を介して受信した前記読出要求又は前記書込要求に応じて処理を行わせ、処理完了後に応答を出力させ、
    前記メモリ制御装置に、前記記憶装置からの前記読出要求又は前記書込要求に対する前記応答を前記使用出力経路を介して受信させる
    ことを特徴とする情報処理装置の制御方法。
JP2014206423A 2014-10-07 2014-10-07 情報処理装置、メモリ制御装置及び情報処理装置の制御方法 Active JP6331944B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014206423A JP6331944B2 (ja) 2014-10-07 2014-10-07 情報処理装置、メモリ制御装置及び情報処理装置の制御方法
US14/847,360 US20160098212A1 (en) 2014-10-07 2015-09-08 Information processor apparatus, memory control device, and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014206423A JP6331944B2 (ja) 2014-10-07 2014-10-07 情報処理装置、メモリ制御装置及び情報処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2016076108A true JP2016076108A (ja) 2016-05-12
JP6331944B2 JP6331944B2 (ja) 2018-05-30

Family

ID=55632847

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014206423A Active JP6331944B2 (ja) 2014-10-07 2014-10-07 情報処理装置、メモリ制御装置及び情報処理装置の制御方法

Country Status (2)

Country Link
US (1) US20160098212A1 (ja)
JP (1) JP6331944B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110196824B (zh) * 2018-05-31 2022-12-09 腾讯科技(深圳)有限公司 实现数据传输的方法及装置、电子设备
US11520703B2 (en) 2019-01-31 2022-12-06 EMC IP Holding Company LLC Adaptive look-ahead configuration for prefetching data in input/output operations
US10871902B2 (en) 2019-04-29 2020-12-22 EMC IP Holding Company LLC Adaptive look-ahead configuration for prefetching data in input/output operations based on request size and frequency
US11182321B2 (en) * 2019-11-01 2021-11-23 EMC IP Holding Company LLC Sequentiality characterization of input/output workloads

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004152062A (ja) * 2002-10-31 2004-05-27 Nec Corp データ転送システム及び転送制御部並びにプログラム
JP2008545187A (ja) * 2005-06-30 2008-12-11 アンテルユニヴェルシテール・ミクロ−エレクトロニカ・サントリュム・ヴェー・ゼッド・ドゥブルヴェ マルチプロセッサシステムのためのメモリ配列
US20090216960A1 (en) * 2008-02-27 2009-08-27 Brian David Allison Multi Port Memory Controller Queuing
US20090254689A1 (en) * 2008-02-12 2009-10-08 Vijay Karamcheti Methods and apparatus for two-dimensional main memory
US20130007386A1 (en) * 2011-06-29 2013-01-03 Synopsys Inc. Memory arbiter with latency guarantees for multiple ports

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6557075B1 (en) * 1999-08-31 2003-04-29 Andrew Maher Maximizing throughput in a pairwise-redundant storage system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004152062A (ja) * 2002-10-31 2004-05-27 Nec Corp データ転送システム及び転送制御部並びにプログラム
JP2008545187A (ja) * 2005-06-30 2008-12-11 アンテルユニヴェルシテール・ミクロ−エレクトロニカ・サントリュム・ヴェー・ゼッド・ドゥブルヴェ マルチプロセッサシステムのためのメモリ配列
US20090254689A1 (en) * 2008-02-12 2009-10-08 Vijay Karamcheti Methods and apparatus for two-dimensional main memory
US20090216960A1 (en) * 2008-02-27 2009-08-27 Brian David Allison Multi Port Memory Controller Queuing
US20130007386A1 (en) * 2011-06-29 2013-01-03 Synopsys Inc. Memory arbiter with latency guarantees for multiple ports

Also Published As

Publication number Publication date
US20160098212A1 (en) 2016-04-07
JP6331944B2 (ja) 2018-05-30

Similar Documents

Publication Publication Date Title
US10732879B2 (en) Technologies for processing network packets by an intelligent network interface controller
US8856392B2 (en) Dividing a port into smaller ports
CN109196461A (zh) 用于在分布式存储系统中提供动态管理的服务质量的技术
US10877913B2 (en) Queue depth management for host systems accessing a peripheral component interconnect express (PCIe) device via a PCIe switch
WO2017000822A1 (zh) 一种直接内存访问的传输控制方法及装置
KR102362687B1 (ko) 컴퓨팅 시스템 및 그것의 리소스 관리 방법
JP6514329B2 (ja) メモリアクセス方法、スイッチ、およびマルチプロセッサシステム
US10534541B2 (en) Asynchronous discovery of initiators and targets in a storage fabric
JP6331944B2 (ja) 情報処理装置、メモリ制御装置及び情報処理装置の制御方法
US20160070475A1 (en) Memory Management Method, Apparatus, and System
US9176917B2 (en) SAS latency based routing
CN113127177B (zh) 处理装置及分布式处理系统
CA2987807C (en) Computer device and method for reading/writing data by computer device
WO2014206078A1 (zh) 内存访问方法、装置及系统
US10802760B2 (en) Apparatus and method of intelligent dynamic application aware storage device optimization
US20080225858A1 (en) Data transferring apparatus and information processing system
CN109783002B (zh) 数据读写方法、管理设备、客户端和存储系统
JP2015158910A (ja) ラップ読出しから連続読出しを行うメモリサブシステム
US10917496B2 (en) Networked storage architecture
US10581997B2 (en) Techniques for storing or accessing a key-value item
JP2016218635A (ja) 情報処理装置、メモリ制御装置、および情報処理装置の制御方法
TWI772550B (zh) 記憶體系統、計算系統及其操作方法
US11016666B2 (en) Memory system and operating method thereof
JP2020087408A (ja) メモリーシステム
US20240143498A1 (en) Methods, devices, and systems for allocating memory space

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170704

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180328

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180416

R150 Certificate of patent or registration of utility model

Ref document number: 6331944

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150