JP6142783B2 - メモリコントローラ,情報処理装置及びメモリコントローラの制御方法 - Google Patents

メモリコントローラ,情報処理装置及びメモリコントローラの制御方法 Download PDF

Info

Publication number
JP6142783B2
JP6142783B2 JP2013242943A JP2013242943A JP6142783B2 JP 6142783 B2 JP6142783 B2 JP 6142783B2 JP 2013242943 A JP2013242943 A JP 2013242943A JP 2013242943 A JP2013242943 A JP 2013242943A JP 6142783 B2 JP6142783 B2 JP 6142783B2
Authority
JP
Japan
Prior art keywords
request
read
write
bus
transmission
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
JP2013242943A
Other languages
English (en)
Other versions
JP2015103008A (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 JP2013242943A priority Critical patent/JP6142783B2/ja
Priority to US14/542,730 priority patent/US9785579B2/en
Publication of JP2015103008A publication Critical patent/JP2015103008A/ja
Application granted granted Critical
Publication of JP6142783B2 publication Critical patent/JP6142783B2/ja
Active 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/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
    • 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/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • 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/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/366Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using a centralised polling arbiter

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Bus Control (AREA)

Description

本発明は,メモリコントローラ,情報処理装置及びメモリコントローラの制御方法に関する。
メモリコントローラは,プロセッサなどの演算処理装置内に内蔵され,または演算処理装置の外部に設けられ,DRAM(Dynamic Random Access Memory)などのメインメモリへのアクセスを制御する。
情報処理装置のメインメモリとして,従来のDRAMモジュールに代わる素子として,HMC(Hybrid Memory Cube)等に代表されるような,DRAMコントローラチップを内蔵したメモリモジュールの開発が行われている。このようなメモリモジュールは,プロセッサ側のメモリコントローラと高速シリアルバスで接続されている。高速シリアルバスは,送信シリアルバスと受信シリアルバスとを有し,プロセッサ側からのアクセスを要求するリクエストコマンドが送信シリアルバスを介してメモリモジュールに送信される。ライトリクエストの場合は,そのライトリクエストコマンドに加えてライトデータが送信シリアルバスを介して送出される。一方,リードリクエストの場合は,リードリクエストコマンドが送信シリアルバスを介して送出され,レイテンシ後に,メモリモジュールから読み出されたリードデータが受信シリアルバスを介してプロセッサ側に返信される。
特開2011−180656号公報
上記の高速シリアルバスの構成においてメモリアクセスを理論的に最大スループットに近づけるためには,プロセッサ側のメモリコントローラが,送信シリアルバスと受信シリアルバスを効率的に占有するようにリクエストコマンドを発行することが望ましい。
しかしながら,上記の高速シリアルバスは,送信シリアルバスには,リードコマンドと,ライトデータ付きのライトコマンドとが混在して送出され,一方,受信シリアルバスにはリードデータが返信されるという制約を有する。そのため,メモリコントローラがライトコマンドを優先して送出するとリードコマンドを送出することができず,逆に,リードコマンドを優先して送出するとライトコマンドの送出が行われず,理論的に最大スループットで制御することは容易ではない。
そこで,本発明の目的は,メモリアクセスのスループットを向上させたメモリコントローラ,情報処理装置及びメモリコントローラの制御方法を提供することにある。
本実施の形態の第1の側面は,受信したライトリクエストとリードリクエストを保持するリクエスト保持部と,
前記ライトリクエストとライトデータ又は前記リードリクエストを送信バスを介してメモリに送出する送信部と,
前記リードリクエストに対応するリードデータを受信バスを介して前記メモリから受信する受信部と,
前記リクエスト保持部が保持する送出待ちのライトリクエストとリードリクエストのうち,
前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信バスに送出したときに前記リードリクエストに対応するリードデータを前記メモリから前記受信バスを介して受信開始する第1の受信時間が,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信バスに送出したときにおける第2の受信時間より遅くならない場合,前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信部から送信バスに送出する第1の処理を行い,
前記第1の受信時間が前記第2の受信時間より遅くなる場合,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信部から送信バスに送出する第2の処理を行うリクエスト調停部と有するメモリコントローラである。
第1の側面によれば,メモリアクセスのスループットを向上させることができる。
本実施の形態におけるメモリコントローラとプロセッサとメインメモリの構成を示す図である。 本実施の形態におけるライトリクエスト時のメモリコントローラの動作を示す図である。 本実施の形態におけるリードリクエスト時のメモリコントローラの動作を示す図である。 本実施の形態におけるメモリコントローラ30の構成図である。 本実施の形態におけるリクエスト調停部の調停制御を示すフローチャート図である。 リクエスト受信順に送出する場合のメモリコントローラの動作を示す図である。 リードリクエストをライトリクエストに優先して送出する場合のメモリコントローラの動作を示す図である。 本実施の形態におけるメモリコントローラのリクエスト調停動作を示す図である。 本実施の形態におけるメモリコントローラのリクエスト調停を説明する図である。 本実施の形態におけるメモリコントローラのリクエスト調停を説明する図である。 カウンタCnがリセットされる場合を説明する図である。
図1は,本実施の形態におけるメモリコントローラとプロセッサとメインメモリの構成を示す図である。図1の例では,プロセッサ1は,プロセッサコア10と,キャッシュユニット20と,メモリコントローラ30とを有する。
プロセッサコア10は,例えば,命令フェッチ回路11と,フェッチした命令をデコードするデコーダ12と,デコードした命令を実行する実行部13とを有する。一般に,命令の実行時には,プロセッサコア10は,メインメモリ2からデータをフェッチしてレジスタに格納し,命令に対応する演算を実行し,演算結果をメインメモリ2に書き込む。
キャッシュユニット20は,キャッシュコントローラ21とキャッシュメモリ22とを有する。キャッシュコントローラ21は,プロセッサコア10からのメインメモリへのアクセスリクエスト,即ち,ライトリクエストまたはリードリクエストに応答して,キャッシュヒットするか否か判定し,キャッシュヒットミスした場合に,メモリコントローラ30にライトリクエストまたはリードリクエストを発行する。
メモリコントローラ30は,発行されたライトリクエストまたはリードリクエストを受信して,図示しないリクエスト保持部で保持し,メインメモリ2に送信シリアルバス(送信バス)T-BUSを介してライトリクエストまたはリードリクエストを送出する。そして,メモリコントローラ30は,メインメモリから受信シリアルバス(受信バス)R-BUSを介してリードリクエストに対応するリードデータを受信する。メモリコントローラ30は,ライトリクエストを送出する場合は,後述するとおり,ライトリクエストにライトデータを付加して送出する。
図2は,本実施の形態におけるライトリクエスト時のメモリコントローラの動作を示す図である。メインメモリ2は,例えばDRAMモジュールであり,DRAMコントローラ3と,DRAMメモリと,それらを接続するアドレス及びデータ配線5とを有する。
メモリコントローラ30は,ライトリクエストをメインメモリ2に送出する場合,ライトリクエストのヘッダW-REQと,そのライトリクエストでライトするデータ群WDATAとからなる9個のライトパケット群40を,送信シリアルバス(送信バス)T-BUSに送出する。
ライトリクエストのヘッダW-REQは,例えば,メモリアドレスと,バースト長と,ライトリクエストとを有するパケットである。ライトリクエストのヘッダW-REQとライトデータ群WDATAのパケットは,例えば64ビット長である。図2の例では,バースト長が8であり,それに伴い,8個のデータのパケットWDATAがヘッダW-REQに続いてシリアルに送出される。
送信シリアルバス(送信バス)T-BUSは64ビット幅を有し,64ビットのパケットがクロックに同期して送出される。したがって,図2の9個のライトパケット群40は,9クロックサイクルの間,送信シリアルバスT-BUSを占有する。また,ライトリクエスト時は,受信シリアルバス(受信バス)R-BUSは占有されない。
メインメモリ2内のDRAMコントローラ3は,ライトリクエストのヘッダW-REQに応答して,DRAM4に,例えばアクティブコマンドとロウアドレスを供給し,その後ライトコマンドとコラムアドレス及びライトデータを供給する。
図3は,本実施の形態におけるリードリクエスト時のメモリコントローラの動作を示す図である。メモリコントローラ30は,リードリクエストをメインメモリ2に送出する場合,リードリクエストのヘッダR-REQを,送信シリアルバス(送信バス)T-BUSに送出する。リードリクエストのヘッダR-REQは,ライトリクエストのヘッダと同様に,メモリアドレスと,バースト長と,リードリクエストとを有する64ビットのパケットである。したがって,リードリクエストのヘッダのパケットR-REQは,1クロックサイクルの間,送信シリアルバスT-BUSを占有する。
一方,メモリコントローラ30は,リードリクエストのヘッダR-REQを送出してからレイテンシLa経過後に,リード応答ヘッダR-RESとそれに後続するメインメモリ2から読み出された8バースト長のリードデータ群RDATAを有する9個のリード応答パケット群42を,受信シリアルバス(受信バス)R-BUSを介して受信開始する。リードデータ群RDATAも64ビットのパケットである。メインメモリ2内のDRAMコントローラ3は,クロックに同期してリード応答パケット群42を送信するので,9個のリード応答パケット群42は,9クロックサイクルの間,受信シリアルバスR-BUSを占有する。
以上のとおり,ライトリクエストなら,そのライトリクエストのヘッダW-REQと8個のライトデータWDATAのパケット群40が,送信シリアルバス(送信バス)T-BUSを占有する。一方,リードリクエストなら,そのリードリクエストのヘッダR-REQのパケット41が送信シリアルバスT-BUSを1クロックサイクル占有し,レイテンシ経過後に8個のリードデータRDATAのパケット群42が受信シリアルバスR-BUSを占有する。なお,上記のバースト長8は一例であり,バースト長は固定であっても変動であってもよい。
そこで,ライトリクエスト発行時に送信バスT-BUSを占有するクロックサイクル数をTw,リードリクエスト発行後リードデータ受信時に受信バスR-BUSを占有するクロックサイクル数をTr,リードリクエスト発行時のリードリクエスト送出からリードデータを受信開始するまでの平均レイテンシをLaとそれぞれ定義する。上記の例では,バースト長が8であるので,Tw=9,Tr=9であり,リードリクエストのヘッダR-REQが送信バスT-BUSを占有するクロックサイクル数は1である。また,平均レイテンシLaは,一例としてLa=20とする。
メインメモリ2は,図2,3で説明したとおり,DRAMメモリコントローラ3が,DRAM4内の図示しない複数のメモリブロックに,リードリクエストに対応するアクティブコマンドとリードコマンドを出力する。したがって,連続する複数のリードリクエストのアドレスが同じメモリブロックに重なると,レイテンシは長くなる傾向になり,重ならないと短くなる傾向になる。そこで,本実施の形態では,平均レイテンシLaを利用してリクエスト調停を行う。但し,リードリクエストのレイテンシが正確に判定できる場合は,そのレイテンシを利用してリクエスト調停を行っても良い。
図4は,本実施の形態におけるメモリコントローラ30の構成図である。メモリコントローラ30は,受信したライトリクエストとリードリクエストを保持するリクエスト保持部31と,ライトリクエストとライトデータ又は前記リードリクエストを送信バス(送信シリアルバス)T-BUSを介してメモリ2に送出する送信部(リクエスト送信部)TXと,リードリクエストに対応するリードデータを受信バス(受信シリアルバス)R-BUSを介してメモリ2から受信する受信部(リクエスト受信部)RXと,ライトリクエストとリードリクエストのいずれを先に送出するかを調停するリクエスト調停部32とを有する。
リクエスト調停部32は,例えば,リクエスト保持部31が保持する送出待ちのライトリクエストとリードリクエストのうち,ライトリクエストを先に送出してもその後に送出されるリードリクエストに対応するリードデータの受信開始時間が,リードリクエストを先に送出した場合と同じ場合は,ライトリクエストを優先して送出する。一方,リクエスト調停部32は,ライトリクエストを先に送出してその後リードリクエストを送出した場合に,そのリードリクエストに対応するリードデータの受信開始時間が,リードリクエストを先に送出した場合より遅れる場合は,リードリクエストを優先して送出する。
別の言い方をすれば,リクエスト調停部32は,原則としてリードリクエストが送出待ち状態であればライトリクエストに優先して送出するよう調停する。但し,複数のリードリクエストを送出した結果,受信バスR-BUSがそれらリードリクエストのリードデータのパケット群42により受信バスR-BUSが長時間にわたり占有されてしまい,次のリードリクエストより先にライトリクエストを送出しても,次のリードリクエストのリードデータの受信開始時間がライトリクエストを優先したことにより遅れることがない場合は,ライトリクエストを優先して送出するよう調停する。これにより,原則リードリクエストを優先して送出することで受信バスをR−BUSの占有状態を最適化でき,更にライトリクエストを先に送出してもリードデータの受信時間が同じ場合はライトリクエストを先に送出することで,ライトリクエストの送出が遅れることを回避できる。
図5は,本実施の形態におけるリクエスト調停部の調停制御を示すフローチャート図である。リクエスト調停部32は,リクエスト保持部31がライトリクエストとリードリクエストを同時に保持していずれのリクエストも送出対象になっているかを判定する(S10)。リクエスト調停部32は,リードリクエストのみが送出対象であれば(S10のRのみ),そのリードリクエストを選択してリクエスト送信部TXから送出させる(S11)。一方,リクエスト調停部32は,ライトリクエストのみが送出対象であれば(S10のWのみ),そのライトリクエストを選択してリクエスト送信部TXから送出させる(S12)。
リードリクエストとライトリクエストがいずれも送出対象としてリクエスト保持部31に保持されている場合は(S10のYES),リクエスト調停部32は,ライトリクエストを先に送出してもリードリクエストに対応するリードデータの受信開始時間が,リードリクエストを先に送出した場合と同じであるか否か,別の言い方をすれば,ライトリクエストを先に送出してもリードリクエストに対応するリードデータの受信開始時間が遅くならないか否かを判定する(S13)。
ライトリクエストを先に送出してもリードリクエストに対応するリードデータの受信開始時間が,リードリクエストを先に送出した場合と同じである場合は(S13のYES),リクエスト調停部32は,ライトリクエストを選択して,リードリクエストに優先して先にライトリクエストをリクエスト送信部TXに出力し,送信バスT-BUSに送出させる(S14)。受信開始時間が同じではなく(S13のNO),リードデータの受信開始時間が遅くなる場合は,リクエスト調停部32は,リードリクエストを選択して,ライトリクエストに優先して先にリードリクエストをリクエスト送信部TXに出力し,送信婆T-BUSに送出させる(S15)。
以上のように,リクエスト調停部による調停制御では,リードリクエスト間及びライトリクエスト間それぞれでは,ファーストインファーストアウトで送出し,リードリクエストとライトリクエストが競合する場合は,原則リードリクエストを優先して送出し,ライトリクエストを先に送出してもリードデータの受信開始時間が遅れない場合にライトリクエストを優先して先に送出する。
より具体的にリクエスト調停制御を説明すると,次のとおりである。
すなわち,リクエスト調停部32は,リクエスト保持部31が保持する送出待ちのライトリクエストとリードリクエストのうち,ライトリクエストとライトデータをリードリクエストより先に送信バスT-BUSに送出した場合にリードリクエストに対応するリードデータをメモリ2から受信バスR-BUSを介して受信する第1の受信時間が,リードリクエストをライトリクエストとライトデータより先に送信バスT-BUSに送出する場合における第2の受信時間より遅くならない場合に,ライトリクエストとライトデータをリードリクエストより先にリクエスト送信部TXから送信バスT-BUSに送出する第1の処理を行う。また,リクエスト調停部32は,第1の受信時間が第2の受信時間より遅くなる場合に,リードリクエストをライトリクエストとライトデータより先にリクエスト送信部TXから送信バスT-BUSに送出する第2の処理を行う。
図4に示されたメモリコントローラ30のより具体的な構成は以下のとおりである。
メモリコントローラ30内のリクエスト保持部31は,プロセッサコア側から受信するライトリクエストまたはリードリクエストを受信してライトリクエストとリードリクエストの種別を判別して,ライトリクエストならライトキュー保持部WQに保持させ,リードリクエストならリードキュー保持部RQに保持させるリクエスト処理部31を有する。
更に,リクエスト保持部31は,ライトキュー保持部WQとリードキュー保持部RQとを有し,それらは,共に,FIFO(First-In-First-Out)方式で記憶するバッファである。したがって,ライトリクエスト間では,プロセッサコア側から受信した順番にメインメモリ2に送出され,同様に,リードリクエスト間では,プロセッサコア側から受信した順番にメインメモリ2に送出される。
リクエスト調停部32は,ライトキュー保持部WQとリードキュー保持部RQそれぞれの先頭のライトリクエストとリードリクエストを調停して,いずれを先に送信バスT-BUSから送出するかを選択する。リクエスト調停部32で選択されたリクエストは,リクエスト送信部TXから,送信シリアルバスT-BUSに,ライトリクエストのパケット群40として送出されるか,またはリードリクエストのヘッダR-REQのパケット41として送出される。
リクエスト調停部32は,ライトキュー保持部WQとリードキュー保持部RQそれぞれの先頭のライトリクエストとリードリクエストのうちいずれかを先に送出すべきかを判定する調停制御部34と,調整制御部34が先に送出すると判定したライトリクエストまたはリードリクエストを選択してリクエスト送信部TXに出力するリクエストセレクタ33とを有する。図中,R/Wは選択信号である。
リクエスト調停部32の調停制御部34は,前述した方法でライトリクエストとリードリクエストのいずれを先に送出するかを調停する。調整制御部34の具体的な構成は,リードリクエストを送出した時に,リクエスト送信部TXからのリードリクエスト送出信号Routに応答して,受信バス占有サイクル数Trを加算し,カウンタ値Cnが0でないときにクロックCLKに同期してクロックサイクル毎に1減算するCnカウンタ35を有すると共に,Cnカウンタ35のカウンタ値Cnと送信バス占有サイクル数Twとを比較する比較器36とを有する。
そして,比較器36は,カウント値Cnが送信バス占有サイクル数Tw以上(Cn≧Tw)であれば,ライトリクエストをリードリクエストに優先して選択し,Cn≧Twが成立しない場合は,リードリクエストをライトリクエストに優先して選択する。比較器36がライトリクエストを選択したら,リクエストセレクタ33がライトキュー保持部WQ内のライトリクエストを選択して,リクエスト送信部TXにライトリクエストのパケット群40を送信バスT-BUSに送出させる。一方,比較器36がリードリクエストを選択したら,リクエストセレクタ33がリードキュー保持部RQ内のリードリクエストを選択して,リクエスト送信部TXにリードリクエストのヘッダパケット41を送信バスT-BUSに送出させる。リクエスト送信部TXがリードリクエストのヘッダパケット41を送出するタイミングで出力するリードリクエスト送出信号Routに応答して,アンドゲート37を介してCnカウンタ35にTrが加算される。
次に,メモリコントローラ30によるリクエスト調停について図を参照して説明する。この説明により,上記のCn≧Trによるリクエスト調停の原理が理解される。
図6は,リクエスト受信順に送出する場合のメモリコントローラの動作を示す図である。前提として,リードリクエストを送出してからリードデータの受信開始までの時間であるレイテンシLaの平均時間をLa=20,ライトリクエストのパケット群が送信バスを占有する時間TwをTw=9,リードリクエストに対応するリードデータのパケット群が受信バスを占有する時間TrをTr=9とする。つまり,ライトリクエストもリードリクエストもバースト長が8の例である。そして,リクエスト保持部31には,R1,W1,W2,R2,R3,R4の順番でリクエストを既に受信し保持しているものとする。なお,Rは受信リクエスト,Wはライトリクエストである。
図6の例では,メモリコントローラ30のリクエスト調停部32が,リクエストを受信順に送信バスT-BUSに送出する調停を行う。したがって,(1)クロックCLK=1でリードリクエストR1のヘッダ41が送信バスT-BUSに送出され,レイテンシLa_R1=20のクロックCLK=21から9サイクル(Tr=9)の間,リードデータが受信バスを占有する。そして,(2)クロックCLK=2でライトリクエストW1が送信バスT-BUSに送出され,クロックCLK=2から9サイクル(Tw=9)の間,ライトリクエストのヘッダとライトデータのパケット群が送信バスT-BUSを占有する。
さらに,(3)クロックCLK=11から9サイクル,次のライトリクエストW2のパケット群が,送信バスT-BUSを占有する。その後,(4)クロックCLK=20からリードリクエストR2,R3,R4が連続して送信バスT-BUSに送出され,リードレイテンシLa=20後のクロックCLK=40からリードリクエストR2のリードデータが9サイクルの間受信バスR-BUSを占有し,クロックCLK=49,58からリードリクエストR3,R4のリードデータがそれぞれ9サイクルの間受信バスR-BUSを占有する。
図6のようにリクエストを受信順に送出すると,クロックCLK=2〜19において,ライトリクエストW1,W2を送出する18サイクルの間リードリクエストを送出できないので,リードリクエストR2,R3,R4の送出がCLK=20-22と遅れて,それぞれのレイテンシLa_R2,La_R3,La_R4後にならないとリードデータを受信できない。
プロセッサコアは,一般に,データをメインメモリからフェッチし,演算し,演算結果をメインメモリにライトバックする。したがって,データのライトよりもデータのリード(データフェッチ)を優先して実行させ,できるだけ遅延なくリードデータを取得することが望ましい。そのため,図6の例では,CLK=30-39の期間50で受信バスR-BUSに空きが発生しているので,スループットが低下している。
図7は,リードリクエストをライトリクエストに優先して送出する場合のメモリコントローラの動作を示す図である。前提条件は,図6と同じである。プロセッサコアのデータフェッチ,演算,演算結果のライトバックという一般的な処理の順番を考慮すると,図7のようにリードリクエストをライトリクエストに優先して送出して受信バッファに空きサイクルが発生しないようにするのが望ましい。
リードリクエスト優先にすると,図7に示されるとおり,CLK=1-4でリードリクエストR1,R2,R3,R4が先に送出され,その後,クロックCLK=5からライトリクエストW1のパケット群が送出され,CLK=14からライトリクエストW2のパケット群が送出される。そして,リードリクエストR1のレイテンシLa_R1後のクロックCLK=21から4つのリードリクエストに対するリードデータ群が連続して受信バスR-BUSを占有する。したがって,受信バスR-BUSには空きサイクルは発生しない。
ただし,リードリクエストを優先したため,ライトリクエストW1,W2がいつまでも送出されないことになる。
しかも,リードリクエストR1に対するリードデータは,レイテンシLa_R1後のCLK=21から受信開始するが,R2に対するリードデータはレイテンシLa_R2に8サイクル加えたクロックCLK=30から受信開始し,R3の場合はLa_R3に16サイクル加えたクロックCLK=39から受信開始し,R4の場合はLa_R4に24サイクル加えたクロックCLK=47から受信開始している。このことは,たとえリードリクエストを優先して送出しても,複数のリードリクエストを連続して送出すると,受信バスR-BUSの占有状態が長期化して,受信開始まで長い時間待たされることを意味する。したがって,そのリードデータの長い待ち時間の間にライトリクエストを先に送出しても,リードリクエストの受信開始時間は同じになる場合があることを意味する。
図8は,本実施の形態におけるメモリコントローラのリクエスト調停動作を示す図である。また,図9,10は,本実施の形態におけるメモリコントローラのリクエスト調停を説明する図である。前提条件は,図6,7と同じである。
図5に示したとおり,本実施の形態でのリクエスト調停では,リードリクエストとライトリクエストがリクエスト保持部31に保持され送出を待っている場合は,リードリクエストを優先して送出した場合のリードデータの受信開始時間と,ライトリクエストを優先して送出しその後リードリクエストを送出した場合のリードデータの受信開始時とを比較し,ライトリクエストを優先して送出してもリードデータの受信開始時間が同じである場合は,ライトリクエストを先に送出した後にリードリクエストを送出する。この原理に基づいて,リクエスト調停動作を説明する。
[CLK=1でR1かW1かの調停]
リクエスト調停部32は,まず,リードリクエストR1とライトリクエストW1のいずれを先に送出するかについて判定する。この段階では,リードリクエストR1をCLK=1で送出するとそのレイテンシLa_R1=20後のCLK=21からリードデータを受信開始できるので,当然にリードリクエストR1をライトリクエストW1より先に送出するよう調停する。すなわち,図8では,CLK=1でリードリクエストR1が送出されている。
[CLK=2でR2かW1かの調停]
次に,リクエスト調停部32は,CLK=2において,リードリクエストR2とライトリクエストW1のいずれを先に送出するかについて判定する。この判定方法が,図9に示されている。図9には,リードリクエストR2を先に送出する場合R2と,ライトリクエストW1を先に送出した後にリードリクエストR2を送出する場合W1/R2とが示されている。
リードリクエストR2を先に送出する場合R2は,クロックCLK=2でリードリクエストR2のヘッダ41を送信バスT-BUSに送出すると,レイテンシLa_R2にCLK=22-29の8サイクルを加えたCLK=30から受信バスR-BUSにリードデータが受信開始する。このCLK=22-29の8サイクルは,クロックCLK=2でのカウンタCnのカウント値に等しい。つまり,このCLK=22-29の8サイクルは,リードリクエストR1のリードデータが受信バスR-BUSの占有を完了するまでのクロックサイクル(La_R1+Tr)と,CLK=2で送出したリードリクエストR2のレイテンシLa_R2からCLK=1からCLK=2までの経過クロック数CLK(1)を加えたクロックサイクル(La_R2+CLK(1))との差分であり,次のとおりである。
(La_R1+Tr)−(La_R2+CLK(1)) (式1)
リードリクエストR1のレイテンシLa_R1とR2のLa_R2とが等しい(La_R1=La_R2=20)とすると,上記の式1は,次の通りである。
(La_R1+Tr)−(La_R2+CLK(1))=Tr-CLK(1) (式2)
この式2は,リードリクエストR1のリードデータが受信バスR-BUSを占有するサイクルTr=9から,リードリクエストR1送出後次のリードリクエストR2を送出するまでに経過したクロックサイクル1を減じたカウンタCnのカウント値に等しい。
Cn=Tr-CLK(1) (式3)
このカウント値Cnは,図9中の破線51(CLK=22-28)のクロックサイクルを意味する。
一方,ライトリクエストW1を先に送出した後にリードリクエストR2を送出する場合W1/R2は,CLK=2でライトリクエストW1のパケット群40を送出するとリードリクエストR2はCLK=11で送出されるので,それからレイテンシLa_R2後のCLK=31からリードデータを受信開始することになる。この受信開始時間CLK=31は,リードリクエストR2を先に送出した場合の受信開始時間CLK=30より遅れる。それに伴い,受信バスR-BUSには1サイクルの空サイクルが発生することになる。つまり,R2を先に送出する場合は,R1,R2が連続して送出されるため,R2に対するリードデータの受信開始は,R1のリードデータの受信が完了した後になる。
そこで,リクエスト調停部32は,図9中破線51で示した,R2を先に送出した場合のR2のレイテンシLa_R2経過後からR1のリードデータの受信が完了する時間までのサイクル数Cnが,ライトリクエストW1による送信バスT-BUSの占有サイクルTw以上(Cn≧Tw)か否かを判定する。Cn≧TwがYESであればライトリクエストW1を先に送出してリードリクエストR2の送出がサイクルTw遅くなってもリードデータ受信開始は遅れない。一方,NOであればライトリクエストW1を挿入するとリードデータ受信開始が遅れるので,リードリクエストR2を先に送出する。
図9の例では,カウンタCnは,CLK=1でR1の送出によりCn=9になり,CLK=2でCn=8になっているので,Cn≧TwがNOとなり,リードリクエストR2が先に送出される。すなわち,図8に示されるとおり,CLK=2ではリードリクエストR2がW1より先に送出される。
このように,カウンタCnは,リードリクエストが送出されるとTr追加され,カウント値が0でなければクロックCLKに同期して1ずつ減算する。よって,カウンタCnのカウント値は,La_R1=La_R2とすれば,判定時CLK=2からレイテンシLa_R2経過時(CLK=20)と,判定時CLK=2で送出済みリードリクエストのリードデータによる受信バスR-BUS占有状態が終了する時(CLK=29)との間のサイクル数(図9中破線矢印51のサイクル数)を意味する。
[CLK=3でR3かW1かの調停]
次に,リクエスト調停部32は,CLK=3において,リードリクエストR3とライトリクエストW1のいずれを先に送出するかについて判定する。この判定方法が,図10に示されている。図10には,リードリクエストR3を先に送出する場合R3と,ライトリクエストW1を先に送出した後にリードリクエストR3を送出する場合W1/R3とが示されている。
リードリクエストR3を先に送出する場合は,クロックCLK=3でリードリクエストR3のヘッダ41を送信バスT-BUSに送出すると,レイテンシLa_R3に矢印52で示す16サイクルを加えたCLK=39から受信バスR-BUSにリードデータが受信開始する。この16サイクルは,リードリクエストR1,R2のレイテンシLa_R1,La_R2とR3のLa_R3とが等しい(La_R1=La_R2=La_R3=20)とすると,リードリクエストR1,R2のリードデータが受信バスR-BUSを占有するサイクル2Tr=18から,リードリクエストR1後R3を送出するまでに経過したクロックサイクル2を減じたカウンタCnのカウント値に等しい。
一方,ライトリクエストW1を先に送出した後にリードリクエストR3を送出する場合W1/R3は,CLK=3でライトリクエストW1のパケット群40を送出することにより,リードリクエストR3はCLK=12で送出され,それからレイテンシLa_R3経過後であってR1,R2のリードデータの受信バスR-BUS占有状態が完了した後のCLK=39からR3のリードデータを受信開始することになる。この受信開始時間CLK=39は,リードリクエストR3を先に送出した場合の受信開始時間CLK=39と同じであり,遅れることはない。したがって,図8に示したように,リクエスト調停部31は,ライトリクエストW1を先に送出するよう調停する。
上記の調停を,カウンタCnのカウント値で説明すると,図10に示されるとおり,CLK=3でのカウンタCnのカウント値はCn=16に減じられている。したがって,CLK=3の判定時では,Cn=16≧Tr=9はYESとなる。つまり,リードリクエストR3を先に送出した場合は,CLK=3からレイテンシLa_R3=20経過後さらにサイクルCn=16後のCLK=39からしかR3に対するリードデータを受信開始できないので,R3の前にW1を送出しても,リードデータの受信開始時間はCLK=39と同じであることを意味している。したがって,ライトリクエストW1が先に送出される。
[CLK=12でR3かW2かの調停]
次に,図8に示されるように,リクエスト調停部32は,CLK=12でR3かW2かの判定を行う。CLK=12ではカウント値がCn=7に減っているので,Cn=7≧Tr=9はNOとなり,リードリクエストR3が先に送出される。
[CLK=13でR4かW2かの調停]
次に,図8に示されるように,リクエスト調停部32は,CLK=13で,R4かW2かの判定を行う。CLK=13ではカウント値がCn=15に増加しているので,Cn=15≧Tr=9はYESとなり,ライトリクエストW2が先に送出される。
図8に示されるように,本実施の形態のリクエスト調停方法によれば,受信バスR-BUSにできるだけ空きサイクルが生じないように,リードリクエストの送出を優先的に行うが,連続してリードリクエストが送出されると受信バスR-BUSを占有する時間が長くなり送出するリードリクエストのリードデータ受信開始時間が遅くなる。したがって,この遅れのサイクル数Cnがライトリクエスト送出による送信バスT-BUSの占有サイクルTw以上であれば,ライトリクエストをリードリクエストに優先して送出する。この判断は,カウンタCnのカウント値が占有サイクルTw以上か否かによって行うことができる。
図11は,カウンタCnがリセットされる場合を説明する図である。図11の例は,リクエスト保持部31が,CLK=1の時にリードリクエストR1のみを保持し,その後一定のクロックサイクル後のCLK=11でR2,R3,W1,W1,R4を保持する場合を前提にしている。
リクエスト調停部32は,CLK=1で送出待ちの唯一のリードリクエストR1を送出する。したがって,Cn=9になる。そして,カウント値Cnはクロックサイクル毎に減じられCLK=10で0になる。したがって,それ以上カウント値が減じられることはない。
その後,CLK=11でリードリクエストR2が送出されると,カウント値Cnが新たにTr=9加算されて,新たにクロックサイクル毎に減じられることになる。
このように,リードリクエストが連続して送出されない場合でも,カウンタCnのカウント値は0になるとリセットされ,後続するリードリクエストの送出で再度Tr=9が加算されて新たにカウントダウンを開始するので,カウンタCnのカウント値は適切にリクエスト調停の判定のために維持される。
[第2の実施の形態]
第2の実施の形態でのリクエスト調停部31の調停方法では,Cn+D≧Tw (Dは許容できるリードデータ受信遅延量)がYESならライトリクエストWを先に送出し,NOならリードリクエストRを先に送出する。ここで,Dは許容できるリードデータ受信遅延量に設定され,例えばD=2などである。Cn+D≧TwがYESの場合はリードデータの受信開始時間の遅れが許容遅延時間D以内になるので,ライトリクエストWの送出を行い,NOなら遅れが許容遅延時間Dを超えるのでリードリクエストRの送出を行う。
リクエスト調停部32がこの許容可能遅延時間Dを適応制御することで,リードリクエストの優先度の度合いまたはライトリクエストの遅延の度合いを適応制御することができる。つまり,リクエスト調停部32は,受信バスR-BUSにリードデータの占有状態が空き状態になる許容遅延時間Dを適切に設定することで,上記の適応制御を行う。
[第3の実施の形態]
第1の実施の形態では,リードリクエストとライトリクエストのバースト長が8と固定であることを前提にして,Tr=9,Tw=9で判定した。それに対して,第3の実施の形態では,選択対象のリードリクエストのバースト長が固定でなく変動する場合,及び/又はライトリクエストのバースト長が固定でなく変動する場合にも対応できるようにする。
すなわち,第3の実施の形態では,Tr=バースト長+1,Tw=バースト長+1で,リードリクエスト送出時にカウンタCnにTrを加算し,Cn≧Twの判定を行うようにする。このようにすることで,バースト長が可変の場合にも,本実施の形態のリクエスト調停の判定を行うことができる。
第3の実施の形態においても,第2の実施の形態のように許容遅延時間Dを考慮してリクエスト調停の判定をおこなってもよい。
以上説明したとおり,本実施の形態によれば,メモリコントローラとメインメモリとの間を送信シリアルバスT-BUSと受信シリアルバスR-BUSで接続する構成において,理論上最大のスループットでリードリクエストとライトリクエストの送出制御を行うことができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
受信したライトリクエストとリードリクエストを保持するリクエスト保持部と,
前記ライトリクエストとライトデータ又は前記リードリクエストを,送信バスを介してメモリに送出する送信部と,
前記リードリクエストに対応するリードデータを,受信バスを介して前記メモリから受信する受信部と,
前記リクエスト保持部が保持する送出待ちのライトリクエストとリードリクエストのうち,
前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信バスに送出したときに前記リードリクエストに対応するリードデータを前記メモリから前記受信バスを介して受信開始する第1の受信時間が,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信バスに送出したときにおける第2の受信時間より遅くならない場合,前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信部から送信バスに送出する第1の処理を行い,
前記第1の受信時間が前記第2の受信時間より遅くなる場合,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信部から送信バスに送出する第2の処理を行うリクエスト調停部と有するメモリコントローラ。
(付記2)
付記1において,
前記送信部は,クロックに同期して,前記ライトリクエストとライトバースト長のライトデータ又は前記リードリクエストを前記送信バスを介して前記メモリに送出し,
前記受信部は,前記クロックに同期して,前記メモリから前記受信バスを介してリードバースト長の前記リードデータを受信し,
前記リクエスト調停部は,前記リードリクエストを前記送信部から送出するたびに,前記送出するリードリクエストに対応するリードデータ受信時に前記リードデータが前記受信バスを占有するリードデータ受信サイクル数を加算し,カウント値が0でない場合に前記クロックのサイクル毎に1減算するカウンタを有し,
前記リクエスト調停部は,
前記カウンタのカウント値が,前記ライトリクエストとライトバースト長のライトデータを前記送信部から送出するときの前記送信バスを占有するライト送信サイクル数以上の場合,前記第1の処理を行い,
前記カウンタのカウント値が前記ライト送信サイクル数未満の場合,前記第2の処理を行うメモリコントローラ。
(付記3)
付記1または2において,
前記リクエスト保持部は,前記ライトリクエストを受信順に保持し前記受信順に出力するライトリクエストキュー保持部と,前記リードリクエストを受信順に保持し前記受信順に出力するリードリクエストキュー保持部とを有し,
前記リクエスト調停部は,前記ライトリクエストキュー保持部の先頭のライトリクエストと,前記リードリクエストキュー保持部の先頭のリードリクエストのいずれを先に送出するかを調停するメモリコントローラ。
(付記4)
受信したライトリクエストとリードリクエストを保持するリクエスト保持部と,
前記ライトリクエストとライトデータ又は前記リードリクエストを送信バスを介してメモリに送出する送信部と,
前記リードリクエストに対応するリードデータを受信バスを介して前記メモリから受信する受信部と,
前記リクエスト保持部が保持する送出待ちのライトリクエストとリードリクエストのうち,
前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信バスに送出したときに前記リードリクエストに対応するリードデータを前記メモリから前記受信バスを介して受信開始する第1の受信時間が,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信バスに送出したときにおける第2の受信時間より基準時間以上遅くならない場合,前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信部から送信バスに送出する第1の処理を行い,
前記第1の受信時間が前記第2の受信時間より前記基準時間以上遅くなる場合,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信部から送信バスに送出する第2の処理を行うリクエスト調停部とを有するメモリコントローラ。
(付記5)
付記4において,
前記送信部は,クロックに同期して,前記ライトリクエストとライトバースト長のライトデータ又は前記リードリクエストを前記送信バスを介して前記メモリに送出し,
前記受信部は,前記クロックに同期して,前記メモリから前記受信バスを介してリードバースト長の前記リードデータを受信し,
前記リクエスト調停部は,前記リードリクエストを前記送信部から送出するたびに,前記送出するリードリクエストに対応するリードデータ受信時に前記リードデータが前記受信バスを占有するリードデータ受信サイクル数を加算し,カウント値が0でない場合に前記クロックのサイクル毎に1減算するカウンタを有し,
前記リクエスト調停部は,前記カウンタのカウント値に前記基準時間のクロックサイクル数を加算した値が,前記ライトリクエストとライトバースト長のライトデータを前記送信部から送出するときの前記送信バスを占有するライト送信サイクル数以上の場合に,前記第1の処理を行い,
前記カウンタのカウント値に前記基準時間のクロックサイクル数を加算した値が前記ライト送信サイクル数未満の場合に,前記第2の処理を行うメモリコントローラ。
(付記6)
メモリへのライトリクエスト及びリードリクエストを発行するプロセッサコアと,
前記プロセッサコアが発行する前記ライトリクエスト及びリードリクエストを受信して,前記ライトリクエストまたはリードリクエストを送信バスに送出するメモリコントローラとを有し,
前記メモリコントローラは,
受信したライトリクエストとリードリクエストを保持するリクエスト保持部と,
前記ライトリクエストとライトデータ又は前記リードリクエストを送信バスを介してメモリに送出する送信部と,
前記リードリクエストに対応するリードデータを受信バスを介して前記メモリから受信する受信部と,
前記リクエスト保持部が保持する送出待ちのライトリクエストとリードリクエストのうち,
前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信バスに送出したときに前記リードリクエストに対応するリードデータを前記メモリから前記受信バスを介して受信開始する第1の受信時間が,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信バスに送出したときにおける第2の受信時間より遅くならない場合,前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信部から前記送信バスに送出する第1の処理を行い,
前記第1の受信時間が前記第2の受信時間より遅くなる場合,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信部から前記送信バスに送出する第2の処理を行うリクエスト調停部とを有する
情報処理装置。
(付記7)
受信したライトリクエストとリードリクエストを保持するリクエスト保持部と,前記ライトリクエストとライトデータ又は前記リードリクエストを送信バスを介してメモリに送出する送信部と,前記リードリクエストに対応するリードデータを受信バスを介して前記メモリから受信する受信部とを有するメモリコントローラの制御方法であって,
前記リクエスト保持部が保持する送出待ちのライトリクエストとリードリクエストのうち,
前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信バスに送出したときに前記リードリクエストに対応するリードデータを前記メモリから前記受信バスを介して受信開始する第1の受信時間が,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信バスに送出したときにおける第2の受信時間より遅くならない場合,前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信部から送信バスに送出する第1の処理を行い,
前記第1の受信時間が前記第2の受信時間より遅くなる場合,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信部から送信バスに送出する第2の処理を行うメモリコントローラの制御方法。
(付記8)
受信したライトリクエストとリードリクエストを保持するリクエスト保持部と,前記ライトリクエストとライトデータ又は前記リードリクエストを送信バスを介してメモリに送出する送信部と,前記リードリクエストに対応するリードデータを受信バスを介して前記メモリから受信する受信部とを有するメモリコントローラの制御方法であって,
前記リクエスト保持部が保持する送出待ちのライトリクエストとリードリクエストのうち,
前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信バスに送出したときに前記リードリクエストに対応するリードデータを前記メモリから前記受信バスを介して受信開始する第1の受信時間が,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信バスに送出したときにおける第2の受信時間より基準時間以上遅くならない場合,前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信バスに送出する第1の処理を行い,
前記第1の受信時間が前記第2の受信時間より前記基準時間以上遅くなる場合,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信バスに送出する第2の処理を行うメモリコントローラの制御方法。
1:プロセッサ(情報処理装置)
10:プロセッサコア
30:メモリコントローラ
T−BUS:送信シリアルバス(送信バス)
R−BUS:受信シリアルバス(受信バス)
31:リクエスト保持部
32:リクエスト調停部
35:Cnカウンタ
Cn:カウント値
Tw:ライトリクエスト及びライトデータの送信バス占有クロックサイクル数
Tr:リードデータの受信バス占有クロックサイクル数

Claims (5)

  1. 受信したライトリクエストとリードリクエストを保持するリクエスト保持部と,
    前記ライトリクエストとライトデータ又は前記リードリクエストを,送信バスを介してメモリに送出する送信部と,
    前記リードリクエストに対応するリードデータを,受信バスを介して前記メモリから受信する受信部と,
    前記リクエスト保持部が保持する送出待ちのライトリクエストとリードリクエストのうち,
    前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信バスに送出したときに前記リードリクエストに対応するリードデータを前記メモリから前記受信バスを介して受信開始する第1の受信時間が,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信バスに送出したときにおける第2の受信時間より遅くならない場合,前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信部から送信バスに送出する第1の処理を行い,
    前記第1の受信時間が前記第2の受信時間より遅くなる場合,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信部から送信バスに送出する第2の処理を行うリクエスト調停部と有するメモリコントローラ。
  2. 請求項1において,
    前記送信部は,クロックに同期して,前記ライトリクエストとライトバースト長のライトデータ又は前記リードリクエストを前記送信バスを介して前記メモリに送出し,
    前記受信部は,前記クロックに同期して,前記メモリから前記受信バスを介してリードバースト長の前記リードデータを受信し,
    前記リクエスト調停部は,前記リードリクエストを前記送信部から送出するたびに,前記送出するリードリクエストに対応するリードデータ受信時に前記リードデータが前記受信バスを占有するリードデータ受信サイクル数を加算し,カウント値が0でない場合に前記クロックのサイクル毎に1減算するカウンタを有し,
    前記リクエスト調停部は,
    前記カウンタのカウント値が,前記ライトリクエストとライトバースト長のライトデータを前記送信部から送出するときの前記送信バスを占有するライト送信サイクル数以上の場合,前記第1の処理を行い,
    前記カウンタのカウント値が前記ライト送信サイクル数未満の場合,前記第2の処理を行うメモリコントローラ。
  3. 受信したライトリクエストとリードリクエストを保持するリクエスト保持部と,
    前記ライトリクエストとライトデータ又は前記リードリクエストを送信バスを介してメモリに送出する送信部と,
    前記リードリクエストに対応するリードデータを受信バスを介して前記メモリから受信する受信部と,
    前記リクエスト保持部が保持する送出待ちのライトリクエストとリードリクエストのうち,
    前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信バスに送出したときに前記リードリクエストに対応するリードデータを前記メモリから前記受信バスを介して受信開始する第1の受信時間が,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信バスに送出したときにおける第2の受信時間より基準時間以上遅くならない場合,前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信部から送信バスに送出する第1の処理を行い,
    前記第1の受信時間が前記第2の受信時間より前記基準時間以上遅くなる場合,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信部から送信バスに送出する第2の処理を行うリクエスト調停部とを有するメモリコントローラ。
  4. メモリへのライトリクエスト及びリードリクエストを発行するプロセッサコアと,
    前記プロセッサコアが発行する前記ライトリクエスト及びリードリクエストを受信して,前記ライトリクエストまたはリードリクエストを送信バスに送出するメモリコントローラとを有し,
    前記メモリコントローラは,
    受信したライトリクエストとリードリクエストを保持するリクエスト保持部と,
    前記ライトリクエストとライトデータ又は前記リードリクエストを送信バスを介してメモリに送出する送信部と,
    前記リードリクエストに対応するリードデータを受信バスを介して前記メモリから受信する受信部と,
    前記リクエスト保持部が保持する送出待ちのライトリクエストとリードリクエストのうち,
    前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信バスに送出したときに前記リードリクエストに対応するリードデータを前記メモリから前記受信バスを介して受信開始する第1の受信時間が,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信バスに送出したときにおける第2の受信時間より遅くならない場合,前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信部から前記送信バスに送出する第1の処理を行い,
    前記第1の受信時間が前記第2の受信時間より遅くなる場合,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信部から前記送信バスに送出する第2の処理を行うリクエスト調停部とを有する
    情報処理装置。
  5. 受信したライトリクエストとリードリクエストを保持するリクエスト保持部と,前記ライトリクエストとライトデータ又は前記リードリクエストを送信バスを介してメモリに送出する送信部と,前記リードリクエストに対応するリードデータを受信バスを介して前記メモリから受信する受信部とを有するメモリコントローラの制御方法であって,
    前記リクエスト保持部が保持する送出待ちのライトリクエストとリードリクエストのうち,
    前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信バスに送出したときに前記リードリクエストに対応するリードデータを前記メモリから前記受信バスを介して受信開始する第1の受信時間が,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信バスに送出したときにおける第2の受信時間より遅くならない場合,前記ライトリクエストとライトデータを前記リードリクエストより先に前記送信部から送信バスに送出する第1の処理を行い,
    前記第1の受信時間が前記第2の受信時間より遅くなる場合,前記リードリクエストを前記ライトリクエストとライトデータより先に前記送信部から送信バスに送出する第2の処理を行うメモリコントローラの制御方法。
JP2013242943A 2013-11-25 2013-11-25 メモリコントローラ,情報処理装置及びメモリコントローラの制御方法 Active JP6142783B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013242943A JP6142783B2 (ja) 2013-11-25 2013-11-25 メモリコントローラ,情報処理装置及びメモリコントローラの制御方法
US14/542,730 US9785579B2 (en) 2013-11-25 2014-11-17 Memory controller, information processing apparatus, and method of controlling memory controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013242943A JP6142783B2 (ja) 2013-11-25 2013-11-25 メモリコントローラ,情報処理装置及びメモリコントローラの制御方法

Publications (2)

Publication Number Publication Date
JP2015103008A JP2015103008A (ja) 2015-06-04
JP6142783B2 true JP6142783B2 (ja) 2017-06-07

Family

ID=53183657

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013242943A Active JP6142783B2 (ja) 2013-11-25 2013-11-25 メモリコントローラ,情報処理装置及びメモリコントローラの制御方法

Country Status (2)

Country Link
US (1) US9785579B2 (ja)
JP (1) JP6142783B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6160717B1 (ja) * 2016-01-15 2017-07-12 日本電気株式会社 プロセッサ、および、データ転送方法
JP7060784B2 (ja) * 2017-12-19 2022-04-27 富士通株式会社 演算処理装置、メモリアクセスコントローラおよび演算処理装置の制御方法
US11494316B2 (en) 2020-08-24 2022-11-08 Advanced Micro Devices, Inc. Memory controller with a plurality of command sub-queues and corresponding arbiters

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209067B1 (en) * 1994-10-14 2001-03-27 Compaq Computer Corporation Computer system controller and method with processor write posting hold off on PCI master memory request
JP2003271445A (ja) * 2002-03-15 2003-09-26 Sony Corp メモリ制御装置及び方法
US7529893B2 (en) * 2003-04-11 2009-05-05 Sun Microsystems, Inc. Multi-node system with split ownership and access right coherence mechanism
WO2004093408A2 (en) * 2003-04-11 2004-10-28 Sun Microsystems, Inc. Multi-node computer system implementing global access state dependent transactions
US7209983B2 (en) * 2003-07-03 2007-04-24 Integrated Device Technology, Inc. Sequential flow-control and FIFO memory devices that are depth expandable in standard mode operation
US7360035B2 (en) * 2004-09-01 2008-04-15 International Business Machines Corporation Atomic read/write support in a multi-module memory configuration
JP2006301724A (ja) * 2005-04-15 2006-11-02 Seiko Epson Corp メモリコントローラ、画像処理コントローラ及び電子機器
US20070204076A1 (en) * 2006-02-28 2007-08-30 Agere Systems Inc. Method and apparatus for burst transfer
JP5531427B2 (ja) * 2009-03-16 2014-06-25 株式会社リコー スイッチ、情報処理装置、アービトレーション方法及び画像形成システム
WO2010134201A1 (ja) * 2009-05-22 2010-11-25 株式会社日立製作所 半導体装置
US8838853B2 (en) * 2010-01-18 2014-09-16 Marvell International Ltd. Access buffer
JP2011180656A (ja) 2010-02-26 2011-09-15 Kyocera Mita Corp インタフェース装置、画像形成装置
JP5625737B2 (ja) * 2010-10-22 2014-11-19 富士通株式会社 転送装置、転送方法および転送プログラム
JP5754273B2 (ja) * 2011-07-11 2015-07-29 株式会社リコー メモリ制御装置、情報処理装置およびメモリ制御方法
US20130185477A1 (en) * 2012-01-18 2013-07-18 International Business Machines Corporation Variable latency memory delay implementation

Also Published As

Publication number Publication date
JP2015103008A (ja) 2015-06-04
US9785579B2 (en) 2017-10-10
US20150149675A1 (en) 2015-05-28

Similar Documents

Publication Publication Date Title
WO2011089660A1 (ja) バス調停装置
US20050172091A1 (en) Method and an apparatus for interleaving read data return in a packetized interconnect to memory
TWI498918B (zh) 存取緩衝器
US8095744B2 (en) Device for controlling access from a plurality of masters to shared memory composed of a plurality of banks each having a plurality of pages
JP6058122B2 (ja) バスマスタ、バスシステム及びバス制御方法
US20020184453A1 (en) Data bus system including posted reads and writes
US8838862B2 (en) Data transfer device, method of transferring data, and image forming apparatus
US20080028175A1 (en) Self Timed Memory Chip Having an Apportionable Data Bus
US7620763B2 (en) Memory chip having an apportionable data bus
JP6142783B2 (ja) メモリコントローラ,情報処理装置及びメモリコントローラの制御方法
US20070156937A1 (en) Data transfer in multiprocessor system
JP2007172112A (ja) メモリコントローラ
US7844769B2 (en) Computer system having an apportionable data bus and daisy chained memory chips
JP2009116702A (ja) 半導体集積回路
US7774513B2 (en) DMA circuit and computer system
KR100676982B1 (ko) 데이터 처리 장치 및 방법과 컴퓨터 판독 가능 저장 매체
EP2280349B1 (en) Processor and data transfer method
JP2004318628A (ja) 演算処理装置
JP2004086798A (ja) マルチプロセッサシステム
JP3599692B2 (ja) データ伝送装置
US20080028161A1 (en) Daisy chainable self timed memory chip
US7617350B2 (en) Carrier having daisy chained memory chips
JP4593220B2 (ja) メモリアクセス制御方式と方法、及び共有メモリアクセス制御方式と方法
JP6575194B2 (ja) 演算処理装置および演算処理装置の制御方法
JP6339331B2 (ja) インタフェースを制御する情報処理装置及びインタフェース制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170323

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170424

R150 Certificate of patent or registration of utility model

Ref document number: 6142783

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150