(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-21
(45)【発行日】2024-10-29
(54)【発明の名称】制御装置及び制御方法
(51)【国際特許分類】
G06F 12/06 20060101AFI20241022BHJP
【FI】
G06F12/06 550A
(21)【出願番号】P 2021074596
(22)【出願日】2021-04-27
【審査請求日】2024-01-11
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110004185
【氏名又は名称】インフォート弁理士法人
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】北村 泰浩
【審査官】田中 啓介
(56)【参考文献】
【文献】特開昭57-025054(JP,A)
【文献】特開2001-154913(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/00-12/06
G06F13/16-13/18
G11C11/401-11/4099
G11C11/56
H01L21/8229
H01L21/8239-21/8246
H01L27/10-27/11597
(57)【特許請求の範囲】
【請求項1】
それぞれが待ち時間情報を含む複数の処理待ちエントリと、
前記複数の処理待ちエントリそれぞれに対応付けられた設定部と、
前記複数の処理待ちエントリそれぞれに対応付けられた減算部と、
アクセス対象に対するアクセス要求を受け付け、前記複数の処理待ちエントリのうち何れかの処理待ちエントリに前記アクセス要求を設定する受付部と、
前記アクセス要求に対応するコマンドを発行する発行部と、
前記何れかの処理待ちエントリの前記待ち時間情報に基づいて、前記コマンドの発行を制御する制御部とを備え、
前記何れかの処理待ちエントリに対応付けられた前記設定部は、前記何れかの処理待ちエントリの前記待ち時間情報に、前記アクセス要求に対する待ち時間を示す値を設定し、
前記何れかの処理待ちエントリに対応付けられた前記減算部は、単位時間毎に、前記何れかの処理待ちエントリの前記待ち時間情報から所定値を減算
し、
前記アクセス要求に対する待ち時間を示す値は、前記コマンドよりも前に発行された発行済みコマンドの次のコマンドが発行可能になるまでの残り時間に基づいて設定されることを特徴とする制御装置。
【請求項2】
それぞれが残り時間情報を含む複数の処理済みエントリと、
前記残り時間情報を管理する管理部と、
前記残り時間情報を取得する取得部とをさらに備え、
前記複数の処理済みエントリ各々は、前記コマンドよりも前に発行された発行済みコマンドに対応するアクセス要求をさらに含み、
前記複数の処理済みエントリ各々の前記残り時間情報は、前記発行済みコマンドの次のコマンドが発行可能になるまでの残り時間を示し、
前記管理部は、第1発行済みコマンドが発行されたとき、前記複数の処理済みエントリのうち、前記第1発行済みコマンドに対応するアクセス要求を含む第1処理済みエントリの前記残り時間情報に、所定時間を示す値を設定し、前記単位時間毎に、前記第1処理済みエントリの前記残り時間情報から前記所定値を減算し、
前記受付部は、前記アクセス要求を受け付けたとき、時間取得要求を前記取得部へ送信し、
前記取得部は、前記時間取得要求に基づいて、前記第1処理済みエントリから前記残り時間情報を取得し、取得した前記残り時間情報に基づいて
前記アクセス要求に対する待ち時間を示す値を求め、前記アクセス要求に対する待ち時間を示す値を、前記何れかの処理待ちエントリに対応付けられた前記設定部へ送信することを特徴とする請求項1記載の制御装置。
【請求項3】
前記何れかの処理待ちエントリは、前記何れかの処理待ちエントリを示す第1識別情報をさらに含み、
前記時間取得要求は、前記第1識別情報を含み、
前記取得部は、前記時間取得要求に含まれる前記第1識別情報を第2識別情報として含み、かつ、前記アクセス要求に対する待ち時間を示す値を含む時間取得応答を、前記複数の処理待ちエントリそれぞれに対応付けられた前記設定部へ送信し、
前記何れかの処理待ちエントリに対応付けられた前記設定部は、前記時間取得応答に含まれる前記第2識別情報が前記何れかの処理待ちエントリの前記第1識別情報と一致する場合、前記何れかの処理待ちエントリの前記待ち時間情報に、前記時間取得応答に含まれる前記アクセス要求に対する待ち時間を示す値を設定することを特徴とする請求項2記載の制御装置。
【請求項4】
前記第1発行済みコマンドよりも後に第2発行済みコマンドが発行されたとき、前記所定時間を示す値に基づいて、前記アクセス要求に対する更新後の待ち時間を示す更新値を、前記何れかの処理待ちエントリに対応付けられた前記設定部へ送信する更新部をさらに備え、
前記何れかの処理待ちエントリに対応付けられた前記設定部は、前記何れかの処理待ちエントリの前記待ち時間情報に前記更新値を設定し、
前記管理部は、前記第2発行済みコマンドが発行されたとき、前記複数の処理済みエントリのうち、前記第2発行済みコマンドに対応するアクセス要求を含む第2処理済みエントリの前記残り時間情報に、前記所定時間を示す値を設定することを特徴とする請求項2又は3記載の制御装置。
【請求項5】
前記アクセス対象は、記憶装置に含まれる複数のバンクのうち何れかのバンクであり、
前記受付部は、前記アクセス要求を受け付けたとき、前記何れかのバンクを示す第1バンク情報を前記何れかの処理待ちエントリに設定し、
前記更新部は、前記複数のバンクのうち、前記第2発行済みコマンドに対応するアクセス要求のアクセス対象であるバンクを示す第2バンク情報と、前記更新値とを含む更新要求を、前記複数の処理待ちエントリそれぞれに対応付けられた前記設定部へ送信し、
前記何れかの処理待ちエントリに対応付けられた前記設定部は、前記更新要求に含まれる前記第2バンク情報が前記何れかの処理待ちエントリの前記第1バンク情報と一致する場合、前記何れかの処理待ちエントリの前記待ち時間情報に、前記更新要求に含まれる前記更新値を設定することを特徴とする請求項4記載の制御装置。
【請求項6】
アクセス対象に対するアクセス要求を受け付け、
それぞれが待ち時間情報を含む複数の処理待ちエントリのうち何れかの処理待ちエントリに、前記アクセス要求を設定し、
前記何れかの処理待ちエントリの前記待ち時間情報に、前記アクセス要求に対する待ち時間を示す値を設定し、
単位時間毎に、前記何れかの処理待ちエントリの前記待ち時間情報から所定値を減算し、
前記何れかの処理待ちエントリの前記待ち時間情報に基づいて、前記アクセス要求に対応するコマンドの発行を制御する、
処理を制御装置が実行
し、
前記アクセス要求に対する待ち時間を示す値は、前記コマンドよりも前に発行された発行済みコマンドの次のコマンドが発行可能になるまでの残り時間に基づいて設定されることを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御技術に関する。
【背景技術】
【0002】
情報処理装置(コンピュータ)のメモリとして、DDR(Dual Data Rate)メモリが用いられている。DDR SDRAM(Synchronous Dynamic Random Access Memory)は、DDRメモリの一例である。DDRメモリを使用する際、ホスト側のCPU(Central Processing Unit)は、いくつかのペナルティを順守してコマンドを発行する。例えば、DDRメモリに連続してアクセスする場合、CPUは、ペナルティを順守するために、DDRメモリの構成単位であるバンクを切り替えてアクセスする。
【0003】
プログラムからランダムにアドレスを指定して生成されるリクエストによって、バンクに対するアクセスのコンフリクトが発生することがある。このようなコンフリクトによる性能低下を防ぐためには、メモリ制御装置内のリクエストキューにリクエストを蓄積して、バンクのビジー状態を基にアウトオブオーダーでリクエストを処理することが有効である。
【0004】
複数のバンクを有するメモリに関連して、リクエスト発行待ちが発生して性能低下が生じる、ということを解決するメモリ制御装置が知られている(例えば、特許文献1を参照)。より少ない論理物量で最適な主記憶アクセスを実現する主記憶制御装置も知られている(例えば、特許文献2を参照)。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2018-136592号公報
【文献】特開2001-154913号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
近年、DDRメモリの大容量化に伴って、DDRメモリに含まれるバンクの個数が増大している。また、DDRメモリの高速化に伴って、メモリアクセスの性能を改善するために、メモリ制御装置内のリクエストキューのエントリの個数も増大している。
【0007】
メモリ制御装置は、アウトオブオーダーでリクエストを処理するために、リクエストキューの各エントリに保持されているリクエストのアクセス対象である、バンクのビジー状態をチェックする。しかしながら、リクエストキューのエントリの個数とチェック対象のビジー状態の個数とが増大すると、リクエストとビジー状態の組み合わせが増大するため、ビジー状態をチェックする回路の回路規模が増大する。
【0008】
なお、かかる問題は、DDRメモリに対するリクエストの処理に限らず、様々なアクセス対象に対するアクセス要求の処理において生ずるものである。
【0009】
1つの側面において、本発明は、アクセス対象に対するアクセス要求を処理する制御装置の回路規模を削減することを目的とする。
【課題を解決するための手段】
【0010】
1つの案では、制御装置は、それぞれが待ち時間情報を含む複数の処理待ちエントリ、複数の処理待ちエントリそれぞれに対応付けられた設定部、複数の処理待ちエントリそれぞれに対応付けられた減算部、受付部、発行部、及び制御部を含む。
【0011】
受付部は、アクセス対象に対するアクセス要求を受け付け、複数の処理待ちエントリのうち何れかの処理待ちエントリにアクセス要求を設定する。
【0012】
アクセス要求が設定された処理待ちエントリに対応付けられた設定部は、アクセス要求が設定された処理待ちエントリの待ち時間情報に、アクセス要求に対する待ち時間を示す値を設定する。アクセス要求が設定された処理待ちエントリに対応付けられた減算部は、単位時間毎に、アクセス要求が設定された処理待ちエントリの待ち時間情報から所定値を減算する。
【0013】
発行部は、アクセス要求に対応するコマンドを発行する。制御部は、アクセス要求が設定された処理待ちエントリの待ち時間情報に基づいて、コマンドの発行を制御する。
【発明の効果】
【0014】
1つの側面によれば、アクセス対象に対するアクセス要求を処理する制御装置の回路規模を削減することができる。
【図面の簡単な説明】
【0015】
【
図2】読み出しリクエストによるメモリアクセスのタイミングチャートである。
【
図3】複数のバンクに並列にアクセスするメモリアクセスのタイミングチャートである。
【
図4】比較例のメモリ制御装置のハードウェア構成図である。
【
図8】実施形態のメモリ制御装置のハードウェア構成図である。
【
図9】リクエストキューのハードウェア構成図である。
【
図10】リクエスト処理のタイミングチャートである。
【発明を実施するための形態】
【0016】
以下、図面を参照しながら、実施形態を詳細に説明する。
【0017】
図1は、実施形態の情報処理装置のハードウェア構成例を示している。
図1の情報処理装置101は、CPU111及びメモリ112を含む。CPU111及びメモリ112は、ハードウェアである。メモリ112は、例えば、DDRメモリであり、複数のバンクを含む。メモリ112は、DIMM(Dual Inline Memory Module)であってもよい。メモリ112は、記憶装置の一例であり、バンクは、アクセス対象の一例である。
【0018】
CPU111は、コア121、メモリ制御装置122、及びIO(Input Output)制御装置123を含む。これらの構成要素は、ハードウェア回路である。メモリ制御装置122は、メモリコントローラと呼ばれることもあり、IO制御装置123は、IOコントローラと呼ばれることもある。
【0019】
メモリ制御装置122とIO制御装置123は、コマンドバス131及びデータバス141により接続されており、IO制御装置123とメモリ112は、コマンドバス132及びデータバス142により接続されている。
【0020】
コア121は、プログラムを実行し、メモリアクセスのリクエストをメモリ制御装置122へ送信する。メモリアクセスのリクエストは、プログラムからメモリ112内のアドレスを指定して生成される。コア121から送信されるリクエストは、アクセス要求の一例であり、メモリ112内の何れかのバンクをアクセス対象として指定する。
【0021】
メモリ制御装置122は、受信したリクエストを、そのリクエストに対応するコマンドに変換し、変換後のコマンドを、コマンドバス131を介してIO制御装置123へ送信する。受信したリクエストが書き込みリクエストである場合、メモリ制御装置122は、ライトデータを、データバス141を介してIO制御装置123へ送信する。
【0022】
IO制御装置123は、コマンドバス131を介してコマンドを受信し、受信したコマンドを、コマンドバス132を介してメモリ112へ送信する。また、IO制御装置123は、データバス141を介してライトデータを受信し、受信したライトデータを、データバス142を介してメモリ112へ送信する。
【0023】
メモリ112は、コマンドバス132を介してコマンドを受信し、データバス142を介してライトデータを受信する。受信したコマンドが読み出しコマンドである場合、メモリ112は、指定されたアドレスに格納されているデータをリードデータとして、データバス142を介してIO制御装置123へ送信する。受信したコマンドが書き込みコマンドである場合、メモリ112は、受信したライトデータを指定されたアドレスに格納する。
【0024】
IO制御装置123は、データバス142を介してリードデータを受信し、受信したリードデータを、データバス141を介してメモリ制御装置122へ送信する。メモリ制御装置122は、データバス141を介してリードデータを受信し、受信したリードデータをコア121へ送信する。
【0025】
図2は、
図1の情報処理装置101における読み出しリクエストによるメモリアクセスの例を示すタイミングチャートである。CLKは、クロックサイクルを表し、コマンドバスは、コマンドバス132上のコマンドを表し、データバスは、データバス142上のリードデータを表す。ACTは、ACTIVATEコマンドを表し、RDは、読み出しコマンドを表し、PREは、プリチャージコマンドを表す。
【0026】
tRCD(Row Address to Column Delay)は、ACTから読み出しコマンド又は書き込みコマンドまでの遅延時間を表し、tRAS(Row Active Time)は、ACTからPREまでの遅延時間を表す。CL(Column Address Strobe Latency)は、RDからリードデータの出力までの遅延時間を表し、tRP(Row Precharge Time)は、PREから次のACTが発行可能になるまでの遅延時間を表す。
【0027】
図2の例では、tRCDは5サイクルであり、tRASは10サイクルであり、CLは6サイクルであり、tRPは10サイクルである。tRCD、tRAS、及びtRPは、メモリペナルティと呼ばれることがある。
【0028】
まず、CPU111は、CLK“0”においてACTを発行し、メモリ112内のアクセス対象のバンクをACTIVE状態にする。次に、CPU111は、tRCDだけ後のCLK“5”においてRDを発行する。これにより、CLだけ後のCLK“11”において、リードデータの転送が開始され、CLK“11”~CLK“14”において、リードデータD0~リードデータD7が、メモリ112からCPU111へ転送される。
【0029】
ACTからtRASだけ後のCLK“10”において、CPU111は、PREを発行し、アクセス対象のバンクのクローズ処理を行う。そして、tRPだけ後のCLK“20”において、同じバンクに対する次のACTの発行が可能になる。最初のACTからtRAS+tRPの間、バンクはビジーである。
【0030】
図3は、複数のバンクに並列にアクセスするメモリアクセスの例を示すタイミングチャートである。まず、CPU111は、CLK“0”において、1番目のバンクに対するACT301-1を発行し、tRCDだけ後のCLK“5”においてRD302-1を発行する。
【0031】
これにより、CLだけ後のCLK“11”において、リードデータの転送が開始され、CLK“11”~CLK“14”において、リードデータD0~リードデータD7が、1番目のバンクからCPU111へ転送される。ACT301-1からtRASだけ後のCLK“10”において、CPU111は、PRE303-1を発行し、1番目のバンクのクローズ処理を行う。
【0032】
CPU111は、CLK“4”において、2番目のバンクに対するACT301-2を発行し、tRCDだけ後のCLK“9”においてRD302-2を発行する。
【0033】
これにより、CLだけ後のCLK“15”において、リードデータの転送が開始され、CLK“15”~CLK“18”において、リードデータX0~リードデータX7が、2番目のバンクからCPU111へ転送される。ACT301-2からtRASだけ後のCLK“14”において、CPU111は、PRE303-2を発行し、2番目のバンクのクローズ処理を行う。
【0034】
CPU111は、CLK“8”において、3番目のバンクに対するACT301-3を発行し、tRCDだけ後のCLK“13”においてRD302-3を発行する。
【0035】
これにより、CLだけ後のCLK“19”において、リードデータの転送が開始され、CLK“19”~CLK“22”において、リードデータY0~リードデータY7が、3番目のバンクからCPU111へ転送される。ACT301-3からtRASだけ後のCLK“18”において、CPU111は、PRE303-3を発行し、3番目のバンクのクローズ処理を行う。
【0036】
図3のメモリアクセスでは、ACT301-1から4サイクル後にACT301-2が発行され、ACT301-2から4サイクル後にACT301-3が発行されている。これにより、CLK“11”~CLK“22”において、1番目~3番目のバンクからリードデータが連続してCPU111へ転送される。したがって、
図2のメモリアクセスと比べて、スループットが向上する。
【0037】
複数のバンクを効率的に使用するためには、メモリ制御装置122において、複数のバンクのビジー状態を適切に管理することが望ましい。
【0038】
図4は、比較例のメモリ制御装置122のハードウェア構成例を示している。
図4のメモリ制御装置122は、入力部411、受付部412、リクエストキュー413、制御部414、リクエストパイプライン415、発行部416、及び出力部417を含む。これらの構成要素は、ハードウェア回路である。制御部414は、チェック部421及び調停部422を含む。
【0039】
リクエストキュー413は、N個(Nは2以上の整数)のエントリを含み、各エントリは、処理待ちのリクエストを保持する。リクエストキュー413に複数のリクエストを蓄積しておき、アクセス可能なバンクに対するリクエストを選択して、アウトオブオーダーでコマンドを発行することで、複数のバンクを効率的に使用することができる。
【0040】
受付部412は、コア121から送信されたリクエストが入力部411から入力されたとき、入力されたリクエストを受け付け、そのリクエストをリクエストキュー413の何れかのエントリに設定する。
【0041】
リクエストパイプライン415は、M個(Mは2以上の整数)のエントリを含み、各エントリは、発行済みコマンドに対応する処理済みのリクエストを保持する。リクエストパイプライン415は、発行されたコマンドに対応するリクエストの履歴を取るために用いられる。リクエストパイプライン415の各エントリは、保持しているリクエストのアクセス対象のバンクがビジーである場合、そのバンクのバンクアドレスを制御部414へ出力する。
【0042】
制御部414のチェック部421は、リクエストパイプライン415を監視し、リクエストキュー413から、コマンドを発行可能なリクエストを選択して、調停部422へ出力する。調停部422は、セレクタを含み、チェック部421から複数のリクエストが出力された場合、調停を行って何れかのリクエストを選択し、リクエストパイプライン415へ出力する。
【0043】
発行部416は、制御部414から出力されたリクエストに対応するコマンドを、出力部417を介してIO制御装置123に発行する。発行部416は、リクエストパイプライン415を監視し、
図2及び
図3に示したように、バンク毎のメモリペナルティを守ってコマンドを発行する。
【0044】
図5は、
図4のチェック部421のハードウェア構成例を示している。
図5のチェック部421は、N×M個の比較器511を含む。各比較器511は、リクエストキュー413の各エントリから出力されるバンクアドレスと、リクエストパイプライン415の各エントリから出力されるビジー情報とを比較する。
【0045】
リクエストキュー413の各エントリから出力されるバンクアドレスは、そのエントリに保持されているリクエストのアクセス対象であるバンクのバンクアドレスである。
【0046】
リクエストパイプライン415の各エントリから出力されるビジー情報は、そのエントリに保持されているリクエストのアクセス対象であるバンクのバンクアドレス、又はビジーではないことを示す特定の値である。アクセス対象のバンクがビジーである場合、そのバンクのバンクアドレスが出力され、アクセス対象のバンクがビジーではない場合、特定の値が出力される。
【0047】
比較器511は、リクエストキュー413のエントリから出力されるバンクアドレスと、リクエストパイプライン415のエントリから出力されるビジー情報とが一致した場合、論理“1”を出力し、両者が一致しない場合、論理“0”を出力する。
【0048】
リクエストキュー413の各エントリから出力されるバンクアドレスと、リクエストパイプライン415のM個のエントリから出力されるM個のビジー情報は、M個の比較器511によって比較される。何れかの比較器511が論理“1”を出力した場合、そのエントリに保持されているリクエストは選択されない。一方、M個の比較器511のすべてが論理“0”を出力した場合、そのエントリに保持されているリクエストが選択されて、調停部422へ出力される。
【0049】
図4のメモリ制御装置122では、処理待ちのリクエストに対応するコマンドが発行可能であるか否かをチェックするために、N×M個の比較器511が設けられている。このため、リクエストキュー413とチェック部421との間に、N×M本の信号線が接続され、リクエストパイプライン415とチェック部421との間にも、N×M本の信号線が接続される。
【0050】
リクエストパイプライン415のエントリの個数Mは、tRAS+tRPが長くなるにつれて増加し、tRAS+tRPは、データの転送レートが増加するにつれて長くなる。したがって、データの転送レートが増加するとMも増加する。リクエストキュー413のエントリの個数Nとリクエストパイプライン415のエントリの個数Mがともに増加すると、比較器511の個数及び信号線の本数が膨大になり、メモリ制御装置122の回路規模が増大する。
【0051】
図6は、実施形態の制御装置601の構成例を示している。
図6の制御装置601は、受付部611、制御部615、及び発行部616を含む。さらに、制御装置601は、それぞれが待ち時間情報を含む処理待ちエントリ612-1~処理待ちエントリ612-N(Nは2以上の整数)、設定部613-1~設定部613-N、及び減算部614-1~減算部614-Nを含む。
【0052】
設定部613-i及び減算部614-i(i=1~N)は、処理待ちエントリ612-iに対応付けられている。制御装置601は、アクセス対象に対するアクセス要求を処理する。
【0053】
図7は、
図6の制御装置601が行うアクセス要求処理の例を示すフローチャートである。まず、受付部611は、アクセス要求を受け付け(ステップ701)、何れかの処理待ちエントリ612-k(k=1~N)に、受け付けたアクセス要求を設定する(ステップ702)。
【0054】
次に、アクセス要求が設定された処理待ちエントリ612-kに対応付けられた設定部613-kは、処理待ちエントリ612-kの待ち時間情報に、アクセス要求に対する待ち時間を示す値を設定する(ステップ703)。次に、処理待ちエントリ612-kに対応付けられた減算部614-kは、単位時間毎に、処理待ちエントリ612-kの待ち時間情報から所定値を減算する(ステップ704)。
【0055】
制御部615は、処理待ちエントリ612-kの待ち時間情報に基づいて、アクセス要求に対応するコマンドの発行を制御し、発行部616は、制御部615による制御に従ってコマンドを発行する(ステップ705)。
【0056】
図6の制御装置601によれば、制御装置601の回路規模を削減することができる。
【0057】
図8は、実施形態のメモリ制御装置122のハードウェア構成例を示している。
図8のメモリ制御装置122は、
図6の制御装置601に対応し、入力部811、受付部812、リクエストキュー813、調停部814、リクエストパイプライン815、及び管理部816を含む。さらに、メモリ制御装置122は、生成部817、検索部818、発行部819、及び出力部820を含む。これらの構成要素は、ハードウェア回路である。
【0058】
受付部812及び発行部819は、
図6の受付部611及び発行部616にそれぞれ対応する。生成部817は、更新部の一例であり、検索部818は、取得部の一例である。
【0059】
リクエストキュー813は、N個のエントリを含み、各エントリは、処理待ちのリクエストを保持する。各エントリは、そのエントリに保持されているリクエストのアクセス対象であるバンクのビジー状態を示すビジーカウンタ821を含む。
【0060】
図9は、
図8のリクエストキュー813のハードウェア構成例を示している。
図9のリクエストキュー813は、エントリ911-0~エントリ911-(N-1)、比較部912、比較部913、減算部914、及びチェック部915を含む。これらの構成要素は、ハードウェア回路である。
【0061】
比較部912、比較部913、減算部914、及びチェック部915は、エントリ911-0に対応付けられている。
図9では省略されているが、エントリ911-i(i=1~N-1)にも、エントリ911-0と同様に、比較部912、比較部913、減算部914、及びチェック部915が対応付けられている。
【0062】
各エントリ911-i(i=0~N-1)は、
図6の処理待ちエントリ612-(i+1)に対応する。各エントリ911-iに対応付けられた比較部912及び比較部913は、処理待ちエントリ612-(i+1)に対応付けられた設定部613-(i+1)に対応する。
【0063】
各エントリ911-iに対応付けられた減算部914は、処理待ちエントリ612-(i+1)に対応付けられた減算部614-(i+1)に対応する。各エントリ911-iに対応付けられたチェック部915及び調停部814は、制御部615に対応する。
【0064】
各エントリ911-iは、エントリID、有効フラグV、エントリセットフラグS、オペランドOp、アドレス、及びビジーカウンタを含む。エントリIDは、エントリ911-iの識別情報であり、事前に設定されている。エントリ911-iのエントリIDは、“Ei”である。
【0065】
有効フラグVは、エントリ911-iが有効なリクエストを保持しているか否かを示す。有効フラグVが論理“1”である場合、エントリ911-iは有効なリクエストを保持しており、有効フラグVが論理“0”である場合、エントリ911-iは有効なリクエストを保持していない。
【0066】
エントリセットフラグSは、エントリ911-iに対するビジー検索が完了したか否かを示す。エントリセットフラグSが論理“1”である場合、ビジー検索は完了しており、エントリセットフラグSが論理“0”である場合、ビジー検索は完了していない。
【0067】
オペランドOpは、リクエストの種別を表し、例えば、読み出しリクエスト又は書き込みリクエストの何れかを示す情報を含む。アドレスは、リクエストによってアクセスされるデータのアドレスを表す。データのアドレスは、リクエストのアクセス対象であるバンクのバンクアドレスと、バンク内の記憶領域のアドレスとを含む。オペランドOp及びアドレスは、エントリ911-iに保持されているリクエストを表す。
【0068】
ビジーカウンタは、
図8のビジーカウンタ821に対応し、エントリ911-iに保持されているリクエストに対する待ち時間を示す。リクエストに対する待ち時間は、そのリクエストのアクセス対象であるバンクのビジーが解除されるまでの残り時間であり、例えば、クロックサイクルの個数で表される。ビジーカウンタが0以外の値である場合、バンクはビジーであり、ビジーカウンタが0である場合、バンクはビジーではない。待ち時間を示すビジーカウンタは、待ち時間情報に対応する。
【0069】
リクエストパイプライン815は、M個のエントリを含み、各エントリは、発行済みコマンドに対応する処理済みのリクエストを保持する。リクエストパイプライン815は、発行されたコマンドに対応するリクエストの履歴を取るために用いられる。リクエストパイプライン815内のリクエストに対応するコマンドは、リクエストキュー813内のリクエストに対応するコマンドよりも前に発行済みである。
【0070】
リクエストパイプライン815の各エントリは、アドレス及びカウンタを含む。アドレスは、保持されているリクエストに対応する発行済みコマンドによってアクセスされるデータのアドレスを表す。データのアドレスは、リクエストのアクセス対象であるバンクのバンクアドレスと、バンク内の記憶領域のアドレスとを含む。
【0071】
カウンタは、発行済みコマンドの次のコマンドが発行可能になるまでの残り時間を示す。次のコマンドが発行可能になるまでの残り時間は、保持されているリクエストのアクセス対象であるバンクのビジーが解除されるまでの残り時間であり、例えば、クロックサイクルの個数で表される。
【0072】
リクエストパイプライン815の各エントリは、処理済みエントリの一例であり、残り時間を示すカウンタは、残り時間情報の一例である。
【0073】
管理部816は、リクエストパイプライン815のM個のエントリそれぞれのリクエスト及びカウンタを管理する。管理部816は、リクエストに対応するコマンドが発行されたとき、そのリクエストをエントリに設定する。そして、管理部816は、そのエントリのカウンタに所定時間を示す値T0を設定し、クロックサイクル毎にカウンタから所定値を減算する。
【0074】
T0としては、例えば、メモリペナルティであるtRAS+tRPが用いられ、所定値としては、例えば、1サイクルが用いられる。この場合、カウンタの値は、クロックサイクル毎に1ずつデクリメントされる。クロックサイクルは、単位時間に対応する。
【0075】
受付部812は、コア121から送信されたリクエストが入力部811から入力されたとき、入力されたリクエストを受け付け、リクエストキュー813から空きエントリを検索する。空きエントリは、論理“0”の有効フラグVを有するエントリ911-iである。そして、受付部812は、1つ以上の空きエントリの中から、何れかのエントリ911-kを選択し、選択されたエントリ911-kに、受け付けたリクエストを設定する。エントリ911-kは、例えば、最も小さなエントリIDを有する空きエントリである。
【0076】
このとき、受付部812は、エントリ911-kの有効フラグVに論理“1”を設定し、オペランドOp及びアドレスに、受け付けたリクエストに含まれるオペランド及びアドレスを設定する。そして、受付部812は、ビジー検索要求を生成して、検索部818へ送信する。ビジー検索要求は、エントリ911-kのエントリIDと、エントリ911-kのアドレスに含まれるバンクアドレスとを含む。ビジー検索要求は、時間取得要求の一例である。
【0077】
検索部818は、リクエストパイプライン815から、受信したビジー検索要求に含まれるバンクアドレスを含むアドレスを有するエントリを検索し、そのエントリからカウンタの値を取得する。そして、検索部818は、取得した値に基づいてビジー検索応答を生成し、生成されたビジー検索応答を、リクエストキュー813の各エントリ911-iに対応付けられた比較部912へ送信する。
【0078】
ビジー検索応答は、受信したビジー検索要求に含まれるエントリIDと、そのエントリIDが示すエントリ911-kに設定されたリクエストに対する待ち時間を示す値とを含む。検索部818は、例えば、取得した値から1を減算することで、待ち時間を示す値を求める。ビジー検索応答は、時間取得応答の一例である。
【0079】
各エントリ911-iに対応付けられた比較部912は、エントリ911-iのエントリIDと、受信したビジー検索応答に含まれるエントリIDとを比較する。エントリ911-iのエントリIDは、第1識別情報の一例であり、ビジー検索応答に含まれるエントリIDは、第2識別情報の一例である。
【0080】
ビジー検索応答に含まれるエントリIDがエントリ911-iのエントリIDと一致する場合、比較部912は、エントリ911-iのビジーカウンタに、ビジー検索応答に含まれる値を設定する。そして、比較部912は、エントリ911-iのエントリセットフラグSに、論理“1”を設定する。
【0081】
エントリ911-kに対応付けられた比較部912は、ビジー検索応答に含まれるエントリIDがエントリ911-kのエントリIDと一致するため、エントリ911-kのビジーカウンタに、ビジー検索応答に含まれる値を設定する。そして、比較部912は、エントリ911-kのエントリセットフラグSに、論理“1”を設定する。
【0082】
検索部818から比較部912へビジー検索応答を送信することで、エントリ911-kのビジーカウンタに、アクセス対象のバンクがビジーになっている期間を、待ち時間として設定することができる。このとき、ビジー検索応答に含まれるエントリIDがエントリ911-iのエントリIDと一致した場合に待ち時間を設定することで、受け付けたリクエストのビジーカウンタを識別して、待ち時間を設定することが可能になる。
【0083】
エントリ911-kに対応付けられた減算部914は、エントリ911-kのビジーカウンタの値が0でない場合、クロックサイクル毎にビジーカウンタから所定値を減算する。所定値としては、例えば、1サイクルが用いられる。この場合、ビジーカウンタの値は、クロックサイクル毎に1ずつデクリメントされる。
【0084】
エントリ911-kに対応付けられたチェック部915は、エントリ911-kのエントリセットフラグS及びビジーカウンタをチェックする。エントリセットフラグSが論理“1”であり、かつ、ビジーカウンタの値が0である場合、チェック部915は、エントリ911-kに保持されているリクエストが調停に参加することを許可する。
【0085】
そこで、チェック部915は、エントリ911-kのオペランドOp及びアドレスを、コマンドを発行可能なリクエストとして選択し、調停部814へ出力する。このとき、チェック部915は、エントリ911-kの有効フラグV及びエントリセットフラグSに論理“0”を設定することで、エントリ911-kを開放する。これにより、エントリ911-kは、空きエントリになる。
【0086】
調停部814は、セレクタを含み、エントリ911-0~エントリ911-(N-1)から複数のリクエストが出力された場合、調停を行って何れかのリクエストを選択し、リクエストパイプライン815へ出力する。
【0087】
発行部819は、調停部814から出力されたリクエストに対応するコマンドを、出力部820を介してIO制御装置123に発行する。発行部819は、リクエストパイプライン815を監視し、
図2及び
図3に示したように、バンク毎のメモリペナルティを守ってコマンドを発行する。
【0088】
生成部817は、調停部814から出力されたリクエストに対応するコマンドが発行されたとき、所定時間を示す値T0に基づいて更新要求を生成する。そして、生成部817は、生成された更新要求を、リクエストキュー813の各エントリ911-iに対応付けられた比較部913へ送信する。
【0089】
更新要求は、発行されたコマンドに対応するリクエストのアクセス対象であるバンクのバンクアドレスと、各エントリ911-iに保持されたリクエストに対する更新後の待ち時間を示す更新値とを含む。更新値は、発行されたコマンドによって発生する、次のコマンドが発行可能になるまでの残り時間を表す。生成部817は、例えば、T0から1を減算することで、更新値T0-1を求める。
【0090】
各エントリ911-iに対応付けられた比較部913は、エントリ911-iのアドレスに含まれるバンクアドレスと、受信した更新要求に含まれるバンクアドレスとを比較する。エントリ911-iのアドレスに含まれるバンクアドレスは、第1バンク情報の一例であり、更新要求に含まれるバンクアドレスは、第2バンク情報の一例である。
【0091】
更新要求に含まれるバンクアドレスがエントリ911-iのアドレスに含まれるバンクアドレスと一致する場合、比較部913は、エントリ911-iのビジーカウンタに、更新要求に含まれる更新値を設定する。これにより、更新要求に含まれるバンクアドレスに対応するエントリ911-iのビジーカウンタの値が更新される。ビジーカウンタの値が更新された後、減算部914、チェック部915、調停部814、リクエストパイプライン815、及び発行部819は、更新前と同様の動作を行う。
【0092】
生成部817から比較部913へ更新要求を送信することで、コマンドの発行に伴って新たに発生するバンクのビジーをビジーカウンタに反映させることができる。このとき、更新要求に含まれるバンクアドレスがエントリ911-iのバンクアドレスと一致する場合に更新値を設定することで、ビジーになったバンクをアクセス対象とするリクエストのビジーカウンタを識別して、更新値を設定することが可能になる。
【0093】
検索部818及び生成部817を設けることで、各エントリ911-iに保持されているリクエストを、ビジーカウンタに基づいてアウトオブオーダーで処理することが可能になる。
【0094】
図5に示した比較例のチェック部421では、リクエストキュー413の各エントリから出力されるバンクアドレスと、リクエストパイプライン415の各エントリから出力されるビジー情報とを直接比較することで、バンクのビジー状態がチェックされる。このため、リクエストキュー413のエントリの個数とリクエストパイプライン415のエントリの個数がともに増加すると、比較器511の個数及び信号線の本数が膨大になる。
【0095】
これに対して、
図8のメモリ制御装置122では、リクエストキュー813の各エントリ911-iにビジーカウンタが設けられ、エントリ911-i毎に減算部914及びチェック部915が設けられている。これにより、リクエストキュー813内で、エントリ911-i毎にビジーカウンタを更新しながら、バンクのビジー状態をチェックすることができる。
【0096】
この場合、N個のエントリ911-iにそれぞれ対応するN個の比較部912及びN個の比較部913を設けるだけでよく、N×M個の比較器511を設ける必要はない。N個の比較部912と検索部818との間にはN本の信号線が接続され、N個の比較部913と生成部817との間にもN本の信号線が接続されるが、N×M本の信号線を接続する必要はない。したがって、
図4のメモリ制御装置122よりも配線性が向上するとともに、回路規模が削減される。
【0097】
メモリ制御装置122の回路規模が削減されることで、CPU111の省電力及び性能向上に寄与する。また、メモリ112のバンクの個数又はスループットが増加した場合であっても、メモリ制御装置122に少量の回路を追加するだけで、同様の制御を実現することができる。
【0098】
図10は、
図8のメモリ制御装置122が行うリクエスト処理の例を示すタイミングチャートである。CLKは、クロックサイクルを表す。リクエストの網掛の四角形は、入力部811からのリクエストの入力を表し、リクエストの下のメモリアドレスは、そのリクエストに含まれるアドレスを表す。メモリアドレス“A0”、“A1”、及び“A2”は、メモリ112に含まれる特定のバンクのバンクアドレス“B0”を含む。
【0099】
ビジー検索要求の網掛の四角形は、受付部812から検索部818へ送信されるビジー検索要求を表す。ビジー検索要求の下のエントリID及びバンクアドレスは、ビジー検索要求に含まれるエントリID及びバンクアドレスを表す。
【0100】
ビジー検索応答の網掛の四角形は、検索部818から比較部912へ送信されるビジー検索応答を表す。ビジー検索応答の下のエントリID及び待ち時間を示す値は、ビジー検索応答に含まれるエントリID及び待ち時間を示す値を表す。
【0101】
リクエストキューエントリ0~リクエストキューエントリ2は、リクエストキュー813のエントリ911-0~エントリ911-2を表す。リクエストキューエントリi(i=0,1,2)の網掛の四角形は、リクエストキューエントリiの有効フラグVが論理“1”であることを表す。
【0102】
リクエストキューエントリiの下のアドレス、エントリセットフラグ、及びビジーカウンタは、エントリ911-iに含まれるアドレス、エントリセットフラグS、及びビジーカウンタを表す。エントリセットフラグの網掛の四角形は、エントリセットフラグSが論理“1”であることを表す。
【0103】
調停参加の網掛の四角形は、チェック部915から調停部814へのリクエストの出力を表し、コマンド発行の網掛の四角形は、そのリクエストに対応するコマンドの発行を表す。
【0104】
リクエストパイプラインエントリ0及びリクエストパイプラインエントリ1は、リクエストパイプライン815のエントリを表す。リクエストパイプラインエントリi(i=0,1)の網掛の四角形は、リクエストパイプラインエントリiが有効であることを表す。リクエストパイプラインエントリiの下のアドレス及びカウンタは、リクエストパイプラインエントリiに含まれるアドレス及びカウンタを表す。
【0105】
更新要求の網掛の四角形は、生成部817から比較部913へ送信される更新要求を表す。更新要求の下のバンクアドレス及び更新値は、更新要求に含まれるバンクアドレス及び更新値を表す。
【0106】
まず、CLK“0”において、メモリアドレス“A0”を含むリクエストが入力される。次に、CLK“1”において、そのリクエストのメモリアドレス“A0”が、リクエストキューエントリ0のアドレスに設定され、リクエストキューエントリ0の有効フラグVが論理“1”に変更される。そして、エントリID“E0”及びバンクアドレス“B0”を含むビジー検索要求が、検索部818へ送信される。
【0107】
この場合、何れのリクエストパイプラインエントリiも有効ではないため、CLK“2”において、待ち時間を示す値が“0”に設定され、エントリID“E0”及び値“0”を含むビジー検索応答が、検索部818から送信される。
【0108】
次に、CLK“3”において、ビジー検索応答に含まれる値“0”が、リクエストキューエントリ0のビジーカウンタに設定され、リクエストキューエントリ0のエントリセットフラグSが論理“1”に変更される。このとき、ビジーカウンタが“0”であるため、リクエストキューエントリ0のリクエストが調停部814へ出力される。
【0109】
次に、CLK“4”において、出力されたリクエストに対応するコマンドが発行され、リクエストパイプラインエントリ0が有効になる。そして、リクエストキューエントリ0のアドレス“A0”及びT0が、リクエストパイプラインエントリ0のアドレス及びカウンタにそれぞれ設定される。この例では、T0=16である。そこで、“16”から1を減算することで更新値“15”が求められ、バンクアドレス“B0”及び更新値“15”を含む更新要求が、生成部817から送信される。
【0110】
リクエストパイプラインエントリ0に保持されるリクエストは、第1処理済みエントリの一例であり、発行されたコマンドは、第1発行済みコマンドの一例である。
【0111】
次に、CLK“5”において、リクエストキューエントリ0の有効フラグV及びエントリセットフラグSが、論理“0”に変更される。リクエストパイプラインエントリ0のカウンタは、クロックサイクル毎に1ずつデクリメントされ、CLK“20”において“0”になる。
【0112】
CLK“10”において、メモリアドレス“A1”を含むリクエストが入力される。次に、CLK“11”において、そのリクエストのメモリアドレス“A1”が、リクエストキューエントリ1のアドレスに設定され、リクエストキューエントリ1の有効フラグVが論理“1”に変更される。そして、エントリID“E1”及びバンクアドレス“B0”を含むビジー検索要求が、検索部818へ送信される。
【0113】
この場合、リクエストパイプラインエントリ0が有効であり、かつ、ビジー検索要求に含まれるバンクアドレス“B0”を含むアドレス“A0”を有するため、CLK“12”において、リクエストパイプラインエントリ0からカウンタ“8”が取得される。そして、“8”から1を減算することで待ち時間を示す値“7”が求められ、エントリID“E1”及び値“7”を含むビジー検索応答が、検索部818から送信される。
【0114】
次に、CLK“13”において、ビジー検索応答に含まれる値“7”が、リクエストキューエントリ1のビジーカウンタに設定され、リクエストキューエントリ1のエントリセットフラグSが論理“1”に変更される。リクエストキューエントリ1のビジーカウンタは、クロックサイクル毎に1ずつデクリメントされ、CLK“20”において“0”になる。
【0115】
CLK“11”において、メモリアドレス“A2”を含むリクエストが入力される。次に、CLK“12”において、そのリクエストのメモリアドレス“A2”が、リクエストキューエントリ2のアドレスに設定され、リクエストキューエントリ2の有効フラグVが論理“1”に変更される。そして、エントリID“E2”及びバンクアドレス“B0”を含むビジー検索要求が、検索部818へ送信される。
【0116】
この場合、リクエストパイプラインエントリ0が有効であり、かつ、ビジー検索要求に含まれるバンクアドレス“B0”を含むアドレス“A0”を有するため、CLK“13”において、リクエストパイプラインエントリ0からカウンタ“7”が取得される。そして、“7”から1を減算することで待ち時間を示す値“6”が求められ、エントリID“E2”及び値“6”を含むビジー検索応答が、検索部818から送信される。
【0117】
次に、CLK“14”において、ビジー検索応答に含まれる値“6”が、リクエストキューエントリ2のビジーカウンタに設定され、リクエストキューエントリ2のエントリセットフラグSが論理“1”に変更される。リクエストキューエントリ2のビジーカウンタは、クロックサイクル毎に1ずつデクリメントされ、CLK“20”において“0”になる。
【0118】
CLK“20”において、リクエストキューエントリ1及びリクエストキューエントリ2のビジーカウンタが“0”になったため、リクエストキューエントリ1及びリクエストキューエントリ2のリクエストが調停部814へ出力される。
【0119】
次に、CLK“21”において、リクエストキューエントリ1のリクエストが選択されて、そのリクエストに対応するコマンドが発行される。このとき、リクエストパイプラインエントリ0が無効になり、リクエストパイプラインエントリ1が有効になる。
【0120】
そして、リクエストキューエントリ1のアドレス“A1”及び“16”が、リクエストパイプラインエントリ1のアドレス及びカウンタにそれぞれ設定される。さらに、“16”から1を減算することで更新値“15”が求められ、バンクアドレス“B0”及び更新値“15”を含む更新要求が、生成部817から送信される。
【0121】
リクエストパイプラインエントリ1に保持されるリクエストは、第2処理済みエントリの一例であり、発行されたコマンドは、第2発行済みコマンドの一例である。
【0122】
次に、CLK“22”において、リクエストキューエントリ1の有効フラグV及びエントリセットフラグSが、論理“0”に変更される。リクエストパイプラインエントリ1のカウンタは、クロックサイクル毎に1ずつデクリメントされる。
【0123】
リクエストキューエントリ2のアドレス“A2”に含まれるバンクアドレス“B0”は、更新要求に含まれるバンクアドレス“B0”と一致する。このため、CLK“22”において、リクエストキューエントリ2のビジーカウンタに、更新要求に含まれる更新値“15”が設定される。リクエストキューエントリ2のビジーカウンタは、クロックサイクル毎に1ずつデクリメントされる。
【0124】
図11は、
図8のメモリ制御装置122が行うリクエスト処理の例を示すフローチャートである。まず、受付部812は、コア121から送信されたリクエストが入力部811から入力されたとき、入力されたリクエストを受け付ける(ステップ1101)。そして、受付部812は、リクエストキュー813から空きエントリを検索し、空きエントリであるエントリ911-kに、受け付けたリクエストを設定する(ステップ1102)。
【0125】
次に、受付部812は、エントリ911-kのエントリIDと、エントリ911-kのアドレスに含まれるバンクアドレスとを含むビジー検索要求を生成して、検索部818へ送信する。
【0126】
検索部818は、リクエストパイプライン815から、受信したビジー検索要求に含まれるバンクアドレスを含むアドレスを有するエントリを検索し、そのエントリからカウンタの値を取得する(ステップ1103)。そして、検索部818は、ビジー検索要求に含まれるエントリIDと、取得した値に基づく待ち時間を示す値とを含むビジー検索応答を生成して、リクエストキュー813の各エントリ911-iに対応付けられた比較部912へ送信する。
【0127】
この場合、ビジー検索応答に含まれるエントリIDは、エントリ911-kのエントリIDと一致する。そこで、エントリ911-kに対応付けられた比較部912は、エントリ911-kのビジーカウンタに、ビジー検索応答に含まれる待ち時間を示す値を設定する(ステップ1104)。
【0128】
次に、エントリ911-kに対応付けられた減算部914は、クロックサイクル毎にビジーカウンタから1を減算する(ステップ1105)。そして、エントリ911-kに対応付けられたチェック部915は、エントリ911-kのビジーカウンタの値を0と比較する(ステップ1106)。ビジーカウンタの値が0でない場合(ステップ1106,NO)、メモリ制御装置122は、ステップ1105以降の処理を繰り返す。
【0129】
ビジーカウンタの値が0になった場合(ステップ1106,YES)、チェック部915は、エントリ911-kに保持されているリクエストを調停部814へ出力し、調停部814は、そのリクエストをリクエストパイプライン815へ出力する。そして、発行部819は、調停部814から出力されたリクエストに対応するコマンドを、IO制御装置123に発行する(ステップ1107)。
【0130】
次に、生成部817は、出力されたリクエストのアクセス対象であるバンクのバンクアドレスと、待ち時間を示す更新値とを含む更新要求を生成して、リクエストキュー813の各エントリ911-iに対応付けられた比較部913へ送信する。
【0131】
各エントリ911-iに対応付けられた比較部913は、エントリ911-iのアドレスに含まれるバンクアドレスと、更新要求に含まれるバンクアドレスとを比較する。更新要求に含まれるバンクアドレスがエントリ911-iのアドレスに含まれるバンクアドレスと一致する場合、比較部913は、更新要求に含まれる更新値を用いて、エントリ911-iのビジーカウンタを更新する(ステップ1108)。
【0132】
図1の情報処理装置101の構成は一例に過ぎず、情報処理装置101の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、情報処理装置101は、補助記憶装置又は通信装置を含んでいてもよく、CPU111は、複数のコアを含んでいてもよい。
【0133】
図4のメモリ制御装置122の構成は一例に過ぎず、情報処理装置101の構成又は条件に応じて一部の構成要素を省略又は変更してもよい。
図5のチェック部421の構成は一例に過ぎず、メモリ制御装置122の構成又は条件に応じて一部の構成要素を省略又は変更してもよい。
【0134】
図6の制御装置601の構成は一例に過ぎず、制御装置601の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
図8のメモリ制御装置122の構成は一例に過ぎず、情報処理装置101の構成又は条件に応じて一部の構成要素を省略又は変更してもよい。
図9のリクエストキュー813の構成は一例に過ぎず、メモリ制御装置122の構成又は条件に応じて一部の構成要素を省略又は変更してもよい。
【0135】
図2、
図3、及び
図10に示したタイミングチャートは一例に過ぎず、リクエスト処理は、メモリ制御装置122に入力されるリクエストに応じて変化する。
図7及び
図11のフローチャートは一例に過ぎず、制御装置601又はメモリ制御装置122の構成又は条件に応じて一部の処理を省略又は変更してもよい。
【0136】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【0137】
図1乃至
図11を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
それぞれが待ち時間情報を含む複数の処理待ちエントリと、
前記複数の処理待ちエントリそれぞれに対応付けられた設定部と、
前記複数の処理待ちエントリそれぞれに対応付けられた減算部と、
アクセス対象に対するアクセス要求を受け付け、前記複数の処理待ちエントリのうち何れかの処理待ちエントリに前記アクセス要求を設定する受付部と、
前記アクセス要求に対応するコマンドを発行する発行部と、
前記何れかの処理待ちエントリの前記待ち時間情報に基づいて、前記コマンドの発行を制御する制御部とを備え、
前記何れかの処理待ちエントリに対応付けられた前記設定部は、前記何れかの処理待ちエントリの前記待ち時間情報に、前記アクセス要求に対する待ち時間を示す値を設定し、
前記何れかの処理待ちエントリに対応付けられた前記減算部は、単位時間毎に、前記何れかの処理待ちエントリの前記待ち時間情報から所定値を減算することを特徴とする制御装置。
(付記2)
それぞれが残り時間情報を含む複数の処理済みエントリと、
前記残り時間情報を管理する管理部と、
前記残り時間情報を取得する取得部とをさらに備え、
前記複数の処理済みエントリ各々は、前記コマンドよりも前に発行された発行済みコマンドに対応するアクセス要求をさらに含み、
前記複数の処理済みエントリ各々の前記残り時間情報は、前記発行済みコマンドの次のコマンドが発行可能になるまでの残り時間を示し、
前記管理部は、第1発行済みコマンドが発行されたとき、前記複数の処理済みエントリのうち、前記第1発行済みコマンドに対応するアクセス要求を含む第1処理済みエントリの前記残り時間情報に、所定時間を示す値を設定し、前記単位時間毎に、前記第1処理済みエントリの前記残り時間情報から前記所定値を減算し、
前記受付部は、前記アクセス要求を受け付けたとき、時間取得要求を前記取得部へ送信し、
前記取得部は、前記時間取得要求に基づいて、前記第1処理済みエントリから前記残り時間情報を取得し、取得した前記残り時間情報に基づいて、前記アクセス要求に対する待ち時間を示す値を、前記何れかの処理待ちエントリに対応付けられた前記設定部へ送信することを特徴とする付記1記載の制御装置。
(付記3)
前記何れかの処理待ちエントリは、前記何れかの処理待ちエントリを示す第1識別情報をさらに含み、
前記時間取得要求は、前記第1識別情報を含み、
前記取得部は、前記時間取得要求に含まれる前記第1識別情報を第2識別情報として含み、かつ、前記アクセス要求に対する待ち時間を示す値を含む時間取得応答を、前記複数の処理待ちエントリそれぞれに対応付けられた前記設定部へ送信し、
前記何れかの処理待ちエントリに対応付けられた前記設定部は、前記時間取得応答に含まれる前記第2識別情報が前記何れかの処理待ちエントリの前記第1識別情報と一致する場合、前記何れかの処理待ちエントリの前記待ち時間情報に、前記時間取得応答に含まれる前記アクセス要求に対する待ち時間を示す値を設定することを特徴とする付記2記載の制御装置。
(付記4)
前記第1発行済みコマンドよりも後に第2発行済みコマンドが発行されたとき、前記所定時間を示す値に基づいて、前記アクセス要求に対する更新後の待ち時間を示す更新値を、前記何れかの処理待ちエントリに対応付けられた前記設定部へ送信する更新部をさらに備え、
前記何れかの処理待ちエントリに対応付けられた前記設定部は、前記何れかの処理待ちエントリの前記待ち時間情報に前記更新値を設定し、
前記管理部は、前記第2発行済みコマンドが発行されたとき、前記複数の処理済みエントリのうち、前記第2発行済みコマンドに対応するアクセス要求を含む第2処理済みエントリの前記残り時間情報に、前記所定時間を示す値を設定することを特徴とする付記2又は3記載の制御装置。
(付記5)
前記アクセス対象は、記憶装置に含まれる複数のバンクのうち何れかのバンクであり、
前記受付部は、前記アクセス要求を受け付けたとき、前記何れかのバンクを示す第1バンク情報を前記何れかの処理待ちエントリに設定し、
前記更新部は、前記複数のバンクのうち、前記第2発行済みコマンドに対応するアクセス要求のアクセス対象であるバンクを示す第2バンク情報と、前記更新値とを含む更新要求を、前記複数の処理待ちエントリそれぞれに対応付けられた前記設定部へ送信し、
前記何れかの処理待ちエントリに対応付けられた前記設定部は、前記更新要求に含まれる前記第2バンク情報が前記何れかの処理待ちエントリの前記第1バンク情報と一致する場合、前記何れかの処理待ちエントリの前記待ち時間情報に、前記更新要求に含まれる前記更新値を設定することを特徴とする付記4記載の制御装置。
(付記6)
アクセス対象に対するアクセス要求を受け付け、
それぞれが待ち時間情報を含む複数の処理待ちエントリのうち何れかの処理待ちエントリに、前記アクセス要求を設定し、
前記何れかの処理待ちエントリの前記待ち時間情報に、前記アクセス要求に対する待ち時間を示す値を設定し、
単位時間毎に、前記何れかの処理待ちエントリの前記待ち時間情報から所定値を減算し、
前記何れかの処理待ちエントリの前記待ち時間情報に基づいて、前記アクセス要求に対応するコマンドの発行を制御する、
処理を制御装置が実行することを特徴とする制御方法。
(付記7)
前記制御装置は、前記コマンドよりも前に発行された発行済みコマンドに対応するアクセス要求と、前記発行済みコマンドの次のコマンドが発行可能になるまでの残り時間を示す残り時間情報とをそれぞれ含む、複数の処理済みエントリを有し、
前記制御装置は、
第1発行済みコマンドが発行されたとき、前記複数の処理済みエントリのうち、前記第1発行済みコマンドに対応するアクセス要求を含む第1処理済みエントリの前記残り時間情報に、所定時間を示す値を設定し、
前記単位時間毎に、前記第1処理済みエントリの前記残り時間情報から前記所定値を減算し、
前記アクセス要求を受け付けたとき、時間取得要求を生成し、
前記時間取得要求に基づいて、前記第1処理済みエントリから前記残り時間情報を取得する、
処理をさらに実行し、
前記アクセス要求に対する待ち時間を示す値を設定する処理は、取得した前記残り時間情報に基づいて、前記何れかの処理待ちエントリの前記待ち時間情報に、前記アクセス要求に対する待ち時間を示す値を設定する処理を含むことを特徴とする付記6記載の制御方法。
(付記8)
前記何れかの処理待ちエントリは、前記何れかの処理待ちエントリを示す第1識別情報をさらに含み、
前記時間取得要求は、前記第1識別情報を含み、
取得した前記残り時間情報に基づいて、前記何れかの処理待ちエントリの前記待ち時間情報に、前記アクセス要求に対する待ち時間を示す値を設定する処理は、
前記時間取得要求に含まれる前記第1識別情報を第2識別情報として含み、かつ、前記アクセス要求に対する待ち時間を示す値を含む時間取得応答を生成する処理と、
前記時間取得応答に含まれる前記第2識別情報が前記何れかの処理待ちエントリの前記第1識別情報と一致する場合、前記何れかの処理待ちエントリの前記待ち時間情報に、前記時間取得応答に含まれる前記アクセス要求に対する待ち時間を示す値を設定する処理とを含むことを特徴とする付記7記載の制御方法。
(付記9)
前記第1発行済みコマンドよりも後に第2発行済みコマンドが発行されたとき、前記複数の処理済みエントリのうち、前記第2発行済みコマンドに対応するアクセス要求を含む第2処理済みエントリの前記残り時間情報に、前記所定時間を示す値を設定し、
前記所定時間を示す値に基づいて、前記アクセス要求に対する更新後の待ち時間を示す更新値を、前記何れかの処理待ちエントリの前記待ち時間情報に設定する、
処理を前記制御装置がさらに実行することを特徴とする付記7又は8記載の制御方法。
(付記10)
前記アクセス対象は、記憶装置に含まれる複数のバンクのうち何れかのバンクであり、
前記何れかの処理待ちエントリに前記アクセス要求を設定する処理は、前記何れかのバンクを示す第1バンク情報を前記何れかの処理待ちエントリに設定する処理を含み、
前記更新値を前記何れかの処理待ちエントリの前記待ち時間情報に設定する処理は、
前記複数のバンクのうち、前記第2発行済みコマンドに対応するアクセス要求のアクセス対象であるバンクを示す第2バンク情報と、前記更新値とを含む更新要求を生成する処理と、
前記更新要求に含まれる前記第2バンク情報が前記何れかの処理待ちエントリの前記第1バンク情報と一致する場合、前記何れかの処理待ちエントリの前記待ち時間情報に、前記更新要求に含まれる前記更新値を設定する処理とを含むことを特徴とする付記9記載の制御方法。
【符号の説明】
【0138】
101 情報処理装置
111 CPU
112 メモリ
121 コア
122 メモリ制御装置
123 IO制御装置
131、132 コマンドバス
141、142 データバス
301-1~301-3 ACT
302-1~302-3 RD
303-1~303-3 PRE
411、811 入力部
412、611、812 受付部
413、813 リクエストキュー
414、615 制御部
415、815 リクエストパイプライン
416、616、819 発行部
417、820 出力部
421、915 チェック部
422、814 調停部
511 比較器
601 制御装置
612-1~612-N 処理待ちエントリ
613-1~613-N 設定部
614-1~614-N、914 減算部
816 管理部
817 生成部
818 検索部
821 ビジーカウンタ
911-0~911-(N-1) エントリ
912、913 比較部