JP2016062513A - プロセッサおよびプロセッサシステム - Google Patents
プロセッサおよびプロセッサシステム Download PDFInfo
- Publication number
- JP2016062513A JP2016062513A JP2014191997A JP2014191997A JP2016062513A JP 2016062513 A JP2016062513 A JP 2016062513A JP 2014191997 A JP2014191997 A JP 2014191997A JP 2014191997 A JP2014191997 A JP 2014191997A JP 2016062513 A JP2016062513 A JP 2016062513A
- Authority
- JP
- Japan
- Prior art keywords
- error correction
- instruction
- data
- cache
- valid
- 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.)
- Pending
Links
- 238000012937 correction Methods 0.000 claims abstract description 99
- 238000004364 calculation method Methods 0.000 claims abstract description 47
- 238000012545 processing Methods 0.000 claims abstract description 36
- 238000013500 data storage Methods 0.000 claims description 16
- 238000010586 diagram Methods 0.000 description 25
- 238000012546 transfer Methods 0.000 description 3
- 238000000034 method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】キャッシュデータ中に誤りがあっても、処理能力の低下を抑制できるプロセッサを提供する。
【解決手段】プロセッサは、キャッシュメモリから読み出されたキャッシュデータの誤り訂正処理に並行して、誤り訂正前のキャッシュデータを用いて演算を実行する演算器20と、演算器にて演算された演算値を記憶するレジスタと、演算が有効か否かを示す情報を記憶するとともに、演算が有効でない場合には、誤り訂正処理による誤り訂正後のデータを用いて演算器にて再演算を実行させ、演算が有効な場合には、演算による演算値をレジスタに記憶する演算制御部と、を備える。
【選択図】図7
【解決手段】プロセッサは、キャッシュメモリから読み出されたキャッシュデータの誤り訂正処理に並行して、誤り訂正前のキャッシュデータを用いて演算を実行する演算器20と、演算器にて演算された演算値を記憶するレジスタと、演算が有効か否かを示す情報を記憶するとともに、演算が有効でない場合には、誤り訂正処理による誤り訂正後のデータを用いて演算器にて再演算を実行させ、演算が有効な場合には、演算による演算値をレジスタに記憶する演算制御部と、を備える。
【選択図】図7
Description
本発明は、キャッシュメモリを用いてメモリアクセスの高速化を図るプロセッサおよびプロセッサシステムに関する。
プロセッサによるメモリアクセスの高速化を図る方策として、キャッシュメモリを大容量化することが検討されている。従来のキャッシュメモリは、SRAM(Static RAM)を用いることが多かったが、SRAMは消費電力が大きく、メモリセルの小型化も困難であるという問題があり、SRAMの代わりにMRAMを用いたキャッシュメモリが注目されている。
MRAM(Magnetoresistive RAM)は不揮発性メモリであり、SRAMと比べて待機時のリーク電力ははるかに少ない。ところが、MRAMは、SRAMよりもデータの誤り率が高いという問題がある。データの誤りは、誤り訂正回路を設けることで、誤り訂正を行うことができるが、誤り訂正による遅延は、訂正ビット数が増えると急激に増大することが知られている。したがって、多ビットの誤りが生じた場合には、誤り訂正による遅延がプロセッサの処理能力を低下させてしまう。
本発明は、上述した課題を解決するためになされたものであり、キャッシュデータ中に誤りがあっても、処理能力の低下を抑制可能なプロセッサおよびプロセッサシステムを提供するものである。
上記の課題を解決するために、本実施形態では、 キャッシュメモリから読み出されたキャッシュデータの誤り訂正処理に並行して、誤り訂正前のキャッシュデータを用いて演算を実行する演算器と、
前記演算器にて演算された演算値を記憶するレジスタと、
前記演算が有効か否かを示す情報を記憶するとともに、前記演算が有効でない場合には、前記誤り訂正処理による誤り訂正後のデータを用いて前記演算器にて再演算を実行させ、前記演算が有効な場合には、前記演算による演算値を前記レジスタに記憶する演算制御部と、を備えるプロセッサが提供される。
前記演算器にて演算された演算値を記憶するレジスタと、
前記演算が有効か否かを示す情報を記憶するとともに、前記演算が有効でない場合には、前記誤り訂正処理による誤り訂正後のデータを用いて前記演算器にて再演算を実行させ、前記演算が有効な場合には、前記演算による演算値を前記レジスタに記憶する演算制御部と、を備えるプロセッサが提供される。
以下、図面を参照して本発明の実施形態を説明する。以下の実施形態では、プロセッサおよびプロセッサシステム内の特徴的な構成および動作を中心に説明するが、プロセッサおよびプロセッサシステムには以下の説明で省略した構成および動作が存在しうる。ただし、これらの省略した構成および動作も本実施形態の範囲に含まれるものである。
(第1の実施形態)
図1は第1の実施形態によるプロセッサシステム1の概略構成を示すブロック図である。図1のプロセッサシステム1は、プロセッサコア2と、キャッシュメモリ3と、誤り訂正回路(ECC:Error Correction Circuit)4とを備えている。キャッシュメモリ3は、図1では、キャッシュメモリ3としてL2キャッシュ3のみを図示しているが、3次(L3)以上の高次のキャッシュメモリを設けてもよい。図1では、L1キャッシュを省略しているが、L1キャッシュはプロセッサコア2に内蔵されている。
図1は第1の実施形態によるプロセッサシステム1の概略構成を示すブロック図である。図1のプロセッサシステム1は、プロセッサコア2と、キャッシュメモリ3と、誤り訂正回路(ECC:Error Correction Circuit)4とを備えている。キャッシュメモリ3は、図1では、キャッシュメモリ3としてL2キャッシュ3のみを図示しているが、3次(L3)以上の高次のキャッシュメモリを設けてもよい。図1では、L1キャッシュを省略しているが、L1キャッシュはプロセッサコア2に内蔵されている。
図1のL2キャッシュ3は、タグ記憶部5と、キャッシュデータ記憶部6と、キャッシュコントローラ7とを有する。タグ記憶部5は、キャッシュデータのアドレス情報であるタグデータを記憶する。キャッシュデータ記憶部6は、タグデータに対応するキャッシュデータを記憶する。キャッシュコントローラ7は、プロセッサコア2からアクセス要求のあったアドレスがタグ記憶部5に記憶されたタグデータに一致するか否かのヒット/ミス判定を行う。また、キャッシュコントローラ7は、プロセッサコア2からアクセス要求のあったアドレスに対応するデータをキャッシュデータ記憶部6から読み出したり、キャッシュデータ記憶部6に書き込む制御を行う。
誤り訂正回路4は、キャッシュデータ記憶部6に記憶されたキャッシュデータに対して誤り訂正処理を行い、エラーの有無を示すエラー信号と、誤り訂正後のデータとをプロセッサコア2に伝送する。
図2は図1のプロセッサシステム1の処理動作を説明する図であり、矢印線は時間軸を示している。図2(a)はキャッシュデータ記憶部6から読み出したキャッシュデータに誤りがなかった場合を示し、図2(b)は誤りがあった場合を示している。
図2(a)は、時刻t1〜t2の間に、キャッシュデータ記憶部6からキャッシュデータが読み出される例を示している。
本実施形態によるプロセッサコア2は、キャッシュデータ記憶部6からデータが読み出されると(時刻t1〜t2)、誤り訂正処理の結果を待たずに演算を開始する(時刻t2〜t5)。このような演算を投機的な演算と呼ぶ。誤り訂正回路4は、プロセッサコア2が演算を行うのに並行して、誤り訂正処理を行う(時刻t3〜t4)。
図2(a)の場合、誤り訂正回路4は、誤りがないと判断し、例えばエラー信号をロウにする。これにより、プロセッサコア2は、投機的な演算を行って得た演算値をコミットする(時刻t6〜t7)。コミットとは、投機的な演算を行って得た演算値を有効とみなしてレジスタに書き込む処理である。
図2(b)の場合、誤り訂正回路4は、ECC計算を行って、エラー信号を例えばハイにするとともに、誤り訂正を行う(時刻t3〜t4)。プロセッサコア2は、誤り訂正回路4からのエラー信号と誤り訂正済のデータを受信すると、このデータを用いて再演算を行い(時刻t6〜t7)、再演算した演算値をコミットする(時刻t7〜t8)。
このように、第1の実施形態によるプロセッサシステム1では、プロセッサコア2からの読出し要求に応じて読み出されたキャッシュデータに対して誤り訂正処理を施すのに並行して、このキャッシュデータを用いて投機的な演算を行い、誤りがないことがわかると、投機的な演算による演算値を有効なものとみなしてコミットする。これにより、誤り訂正処理の結果が得られてから演算を開始するのに比べて、演算時間を大幅に削減でき、プロセッサの処理性能を向上できる。なお、誤り訂正回路4で誤りが検出されて、誤り訂正が行われた場合には、誤り訂正後のデータを用いて再演算を行うため、信頼性が低下するおそれはない。
(第2の実施形態)
以下に説明する第2の実施形態は、誤り訂正回路4をキャッシュメモリ3内に設けるものである。
以下に説明する第2の実施形態は、誤り訂正回路4をキャッシュメモリ3内に設けるものである。
図3は第2の実施形態によるプロセッサシステム1の概略構成を示すブロック図である。図3では、図1と共通する構成部分には同一符号を付しており、以下では相違点を中心に説明する。
図3のプロセッサシステム1は、誤り訂正回路4を内蔵した拡張キャッシュコントローラ7aを有する。この拡張キャッシュコントローラ7aは、図1のキャッシュコントローラ7と同様にヒット/ミス判定とキャッシュメモリ3のアクセス制御とを行うととともに、誤り訂正処理を行う。
図4は拡張キャッシュコントローラ7aの内部構成の一例を示すブロック図である。図4の拡張キャッシュコントローラ7aは、キャッシュロジック8と誤り訂正回路4とを有する。
図4のキャッシュロジック8は、図1のキャッシュコントローラ7と同様に動作する。また、図4の誤り訂正回路4は、図1の誤り訂正回路4と同様に動作する。キャッシュロジック8は、タグデータを用いてヒット/ミス判定を行い、ヒットしたキャッシュデータをプロセッサコア2に伝送するとともに、誤り訂正回路4にも伝送する。誤り訂正回路4は、キャッシュデータに対して誤り訂正処理を行い、エラー信号の論理すなわち誤りの有無を決定するとともに、訂正後のデータをプロセッサコア2に伝送する。
図4の誤り訂正回路4は、キャッシュデータ記憶部6から読み出したキャッシュデータのみについて誤り訂正処理を行っていたが、タグ記憶部5から読み出したタグデータについても誤り訂正処理を行ってもよい。この場合の拡張キャッシュコントローラ7bの内部構成は図5のようなブロック図で表される。
図5の拡張キャッシュコントローラ7bは、図4と比べて、タグデータ用の誤り訂正回路4aが追加されている。タグデータ用の誤り訂正回路4aは、タグ記憶部5とキャッシュロジック8との間に設けられている。タグ記憶部5から読み出されたタグデータは、誤り訂正回路4aで誤り訂正処理が施される。そして、誤り訂正されたタグデータがキャッシュロジック8に入力される。よって、キャッシュロジック8は、誤り訂正されたタグデータを用いてヒット/ミス判定を行うことにより、ヒット/ミス判定の精度を向上できる。
このように、図5の拡張キャッシュコントローラ7bは、キャッシュデータ記憶部6から読み出されたキャッシュデータについては、誤り訂正処理を行っている間に投機的な演算を行うが、タグデータについては、誤り訂正がなされた後にヒット/ミス判定を行う。このように、タグデータについて、投機的な処理を行わない理由は、タグデータの誤りは、アクセスすべきデータのアドレスの誤りを意味し、データの誤りに比べて、投機的な処理が非常に複雑になるためである。
タグデータについても誤り訂正処理を行うか否かは、以下のことを考慮に入れて決めればよい。プロセッサシステム1を低電圧駆動すると、消費電力を低減できるが、データの信頼性は低下し、誤りが生じやすくなる。消費電力の低減を念頭に置かなくてよい場合は、タグデータの信頼性が確保できる程度の電源電圧レベルに設定して、図3のようなタグデータの誤り訂正なしのプロセッサシステム1の構成を選択すればよい。一方、消費電力を低減したい場合は、電源電圧レベルを下げるとともに、図5のようなタグデータの誤り訂正を行うプロセッサシステム1の構成を選択すればよい。
このように、第2の実施形態では、誤り訂正回路4をキャッシュメモリ3内に設けるため、キャッシュメモリ3とプロセッサコア2との他に誤り訂正回路4を設ける必要がなくなり、プロセッサシステム1の実装形態を簡略化できる。また、誤り訂正回路4をキャッシュメモリ3に内蔵することで、データキャッシュ記憶部、タグ記憶部5、キャッシュロジック8および誤り訂正回路4間のデータの送受を高速化できる。
(第3の実施形態)
以下に説明する第3の実施形態は、第2の実施形態とは逆に、プロセッサコア2の内部に誤り訂正回路4を設けるものである。
以下に説明する第3の実施形態は、第2の実施形態とは逆に、プロセッサコア2の内部に誤り訂正回路4を設けるものである。
図6は第3の実施形態によるプロセッサシステム1の概略構成を示すブロック図である。図6のプロセッサシステム1は、誤り訂正回路4を内蔵したプロセッサコア2を有する。近年のプロセッサコア2のクロック信号は、他の回路ブロックのクロック信号よりも高速であることが多い。よって、プロセッサコア2の内部に誤り訂正回路4を設けると、プロセッサコア2の外部に誤り訂正回路4を設けた場合と比べて、誤り訂正処理を高速に行える可能性が高い。
その一方で、誤り訂正回路4で誤りが検出されると、訂正済のデータをキャッシュメモリ3に書き戻す際に、プロセッサコア2とキャッシュメモリ3間のバスを占有してしまう。誤り率が高い場合には、バスの占有率も高くなるため、キャッシュメモリ3からプロセッサコア2にバスを介して伝送されるデータ量が減るおそれがある。
よって、誤り率が低い場合には、図6の構成を採用することで、誤り訂正処理の高速化を図ることができる。
このように、第3の実施形態では、プロセッサコア2の内部に誤り訂正回路4を設けるため、誤り訂正回路4から出力されるエラー信号と訂正済のデータとをいち早く取得できる。よって、投機的な演算が有効か否かの判断を迅速に行えるとともに、投機的な演算が無効であったことも迅速に判断でき、再演算のタイミングを早めることができる。
上述した第1〜第3の実施形態によるプロセッサシステム1のどれを採用するかは、キャッシュメモリ3の誤り発生率、プロセッサコア2によるバスの占有率、およびバス幅などを考慮に入れて決定するのが望ましい。
(第4の実施形態)
以下に説明する第4の実施形態は、上述した第1〜第3の実施形態におけるプロセッサコア2の内部構成を具体化したものである。
以下に説明する第4の実施形態は、上述した第1〜第3の実施形態におけるプロセッサコア2の内部構成を具体化したものである。
図7は第4の実施形態によるプロセッサシステム1のプロセッサコア2の内部構成を示すブロック図である。図7のプロセッサコア2は、L1データキャッシュ11と、L1データキャッシュコントローラ12と、命令キャッシュ13と、命令キャッシュコントローラ14と、命令発行ユニット15と、命令キュー16と、拡張リオーダ・バッファ(Reorder Buffer)17と、レジスタ18と、リザベーション・ステーション(Reservation Stations)19と、演算器20とを有する。
拡張リオーダ・バッファ17とリザザーション・ステーション19は投機演算制御部に対応し、拡張リオーダ・バッファ17は第1記憶部に対応し、リザベーション・ステーション19は第2記憶部に対応する。
L1データキャッシュ11は、プロセッサコア2がアクセス要求をしたデータを記憶する。図7では、省略しているが、L1データキャッシュ11に入りきれないデータは、L2キャッシュ3以降の高次のキャッシュメモリ3かメインメモリに格納される。
L1データキャッシュコントローラ12は、プロセッサコア2がアクセス要求をしたデータがL1データキャッシュ11に格納されているか否かのヒット/ミス判定と、L1データキャッシュ11に対するアクセス制御と、L1データキャッシュ11にデータが格納されていない場合にL2キャッシュ3にアクセスする制御とを行う。
L1データキャッシュコントローラ12は、L2キャッシュ3からのデータを受け取ると、このデータを拡張リオーダ・バッファ17に伝送する。この時点では、このデータに誤りがあるか否かがわからないため、拡張リオーダ・バッファ17には、誤り訂正待ちであることを示すフラグ情報W(wait)が記憶される。L2キャッシュ3からのデータに誤りがあるか否かは、L2キャッシュ3の誤り訂正回路4からのエラー信号の論理により判断される。L1データキャッシュコントローラ12は、エラー信号により、L2キャッシュ3からのデータに誤りがないと判断すると、そのデータをL1データキャッシュ11に記憶する。これにより、L1データキャッシュ11には、誤りのないデータを記憶することができる。
命令キャッシュコントローラ14は、L2キャッシュ3から命令が送られてくると、命令発行ユニット15を介して命令キュー16にその命令を記憶する。この時点では、この命令に誤りがあるか否かがわからないため、誤り訂正待ちであることを示すフラグ情報W(wait)が命令キュー16に記憶される。その後、L2キャッシュ3からのエラー信号により、命令に誤りがないことがわかると、フラグ情報はV(valid)に変更される。一方、エラー信号により、命令に誤りがあることがわかると、L2キャッシュ3の誤り訂正回路4で誤り訂正した命令が命令キュー16に伝送され、フラグ情報はV(valid)に変更される。
命令キュー16は、複数のエントリを有し、各エントリには、命令発行ユニット15が発行した命令と、対応する命令のフラグ情報16aとが格納される。フラグ情報16aは、対応する命令が誤り訂正待ちであることを示すW(wait)情報と、対応する命令が有効であることを示すV(valid)情報とを含んでいる。
命令キュー16から発行された命令は順にリザベーション・ステーション19に送られる。リザベーション・ステーション19は、命令キュー16からの命令を受け取ると、その命令に対応するオペランドをレジスタ18から取得する。リザベーション・ステーション19は、命令とオペランドとを一つのエントリとして対応づけて、複数のエントリ分を記憶可能である。そして、リザベーション・ステーション19は、命令とオペランドが揃ったエントリから優先して、そのエントリの情報を演算器20に伝送し、演算器20での演算が実行される。演算器20で演算された演算値は、拡張リオーダ・バッファ17に記憶される。
図7のリザベーション・ステーション19は、命令と2つのオペランドとを対応づけているが、一つのエントリに対応づけられるオペランドの数には特に制限はない。
命令キュー16から発行された命令は、拡張リオーダ・バッファ17にも送られる。拡張リオーダ・バッファ17に送られた命令は、命令キュー16から削除される。拡張リオーダ・バッファ17は、命令に誤りがあった場合は、誤り訂正後の命令を記憶するとともに、後続のエントリを削除(フラッシュ)する。後続のエントリを削除するのは、間違った命令以降の演算結果は、正しいという保証が得られないためである。
図8は拡張リオーダ・バッファ17のデータ構成の一例を示す図である。図示のように、拡張リオーダ・バッファ17は、エントリ番号(Entry)と、ビジー情報(Busy)と、命令(Instruction)と、命令のフラグ情報と、オペランド1と、オペランド1のフラグ情報と、オペランド2と、オペランド2のフラグ情報と、保存先(Destination)と、保存先のフラグ情報と、演算値(Value)と、各エントリの状態(State)とを、一つのエントリとして対応づけて、複数エントリ分を記憶している。
拡張リオーダ・バッファ17に記憶される各情報は、L2キャッシュ3、データキャッシュコントローラ7または命令キュー16から伝送される。命令、オペランド1、オペランド2および保存先の各情報は、拡張リオーダ・バッファ17に記憶された時点では、誤り訂正結果がまだ得られていないため、フラグ情報はW(wait)に設定される。リザベーション・ステーション19から拡張リオーダ・バッファ17に転送要求があった場合には、拡張リオーダ・バッファ17は命令、オペランド1およびオペランド2の各情報を組にしてリザベーション・ステーション19に伝送する。拡張リオーダ・バッファ17は、これらの情報を用いて演算器20が演算を行った演算値を記憶する。
また、誤り訂正回路4が出力したエラー信号が拡張リオーダ・バッファ17に入力されると、エラー信号の論理により、対応する情報に誤りがないことがわかると、V(valid)のフラグ情報が設定される。エラー信号の論理により、対応する情報に誤りがあることがわかると、対応するエントリ以降のすべての情報が削除(フラッシュ)される。例えば、拡張リオーダ・バッファ17内の命令をフラッシュした後は、命令発行ユニット15が新たな命令をフェッチして演算を継続して行ってもよいし、拡張リオーダ・バッファ17のエントリを命令キュー16に書き戻して演算を継続して行ってもよい。
演算が実行中のエントリのビジー情報はyesとセットされ、演算が終了するとnoとセットされる。命令、オペランド1、オペランド2、および保存先のすべてのフラグ情報がvalidになり、かつビジー情報がnoの時、各エントリの状態はCommitになる。Commitになると、そのエントリの演算値がレジスタ18に保存される。
本実施形態では、上述した第1〜第3の実施形態と同様に、L2キャッシュ3等の高次のキャッシュメモリ3から読み出されたキャッシュデータに対して誤り訂正処理を行うのに並行して、このキャッシュデータを用いて投機的な演算を行う。投機的な演算を行っている最中は、命令、オペランド、および保存先に対応する各フラグ情報はwaitに設定される。この状態で投機的な演算を行って得られた演算値は、拡張リオーダ・バッファ17に格納され、その演算値に対応するエントリの状態はやはりW(wait)に設定される。
誤り訂正回路4からのエラー信号により、命令、オペランド、および保存先に誤りがないことがわかり、かつビジー情報がnoの時、拡張リオーダ・バッファ17は、対応するエントリの状態をCommitに設定して、投機的な演算により得られた演算値をレジスタ18に書き込む。
逆に、誤り訂正回路4からのエラー信号により、拡張リオーダ・バッファ17内の命令、オペランド、および保存先の少なくとも一つに誤りがあることがわかると、その誤りのあるエントリ以降のすべてのエントリが無効となり、削除(フラッシュ)される。
このように、第4の実施形態によるプロセッサコア2は、命令キュー16に各命令に対応したフラグ情報16aを設けるため、命令キュー16内の各エントリの命令に誤りがあるか否かを把握できる。命令キュー16は、命令に誤りがある場合は、その命令以降のエントリをすべて削除するため、命令の投機的な実行を行った場合でも、誤りのある命令の実行による演算結果がレジスタ18に書き込まれるおそれはない。
(第5の実施形態)
以下に説明する第5の実施形態は、第4の実施形態とはレジスタ18の内部構成が異なるものである。
以下に説明する第5の実施形態は、第4の実施形態とはレジスタ18の内部構成が異なるものである。
図9は第5の実施形態によるプロセッサシステム1のプロセッサコア2の内部構成を示すブロック図である。図9のプロセッサコア2は、リザベーション・ステーション19のデータ構成が図7と異なる他は、図7と共通する。図9のリザベーション・ステーション19は、命令、オペランド1、オペランド2の各情報に対応するフラグ情報19aを有する。これらのフラグ情報19aは、命令キュー16と拡張リオーダ・バッファ17に記憶されているフラグ情報に基づいて設定される。
演算器20は、リザベーション・ステーション19の各エントリの中で、V(valid)のフラグ情報を有する命令を優先して選択して演算を実行する。これにより、演算器20は、正しいデータのみを用いて演算を行うことができ、演算値が有効である確率を上げることができ、プロセッサの処理能力を向上できる。
このように、第5の実施形態では、リザベーション・ステーション19内にフラグ情報19aを設けるため、このフラグ情報19aを参照して、演算器20は演算順序を決定でき、演算器20で演算した演算値が有効である確率を向上できる。
(第6の実施形態)
図10は第6の実施形態によるプロセッサシステム1のプロセッサコア2の内部構成を示すブロック図である。図9のプロセッサコア2は、バックアップレジスタ21を有し、またレジスタ18のデータ構成が図7と異なっている。これ以外は、図7と共通する。
図10は第6の実施形態によるプロセッサシステム1のプロセッサコア2の内部構成を示すブロック図である。図9のプロセッサコア2は、バックアップレジスタ21を有し、またレジスタ18のデータ構成が図7と異なっている。これ以外は、図7と共通する。
図10のレジスタ18は、各エントリごとにフラグ情報18aを有する。このフラグ情報18aは、誤り訂正回路4から送られて来るエラー信号や拡張リオーダ・バッファ17により設定される。
バックアップレジスタ21は、レジスタ18の各エントリにデータを記憶する際に、このエントリに今まで記憶されていたデータを記憶する。バックアップレジスタ21を設ける理由は、レジスタ18に新たに記憶したデータが誤りであった場合に、元のデータに戻せるようにするためである。バックアップレジスタ21には、バックアップしたデータが誤り訂正前か後かを区別するために、すなわちバックアップしたデータが有効か否かを示すフラグ情報21aも保存される。
図7では、レジスタ18に記憶されるデータは拡張リオーダ・バッファ17からレジスタ18に伝送されたが、図10では、L2キャッシュ3から直接レジスタ18にデータを記憶できるようにしている。これにより、レジスタ18へのデータ転送を高速化でき、ひいては演算器20へのデータ転送を高速化できる。
(第7の実施形態)
図11は第7の実施形態によるプロセッサシステム1のプロセッサコア2の内部構成を示すブロック図である。図11のプロセッサコア2は、図10のリザベーション・ステーション19に、図9と同様にフラグ情報19aを設けており、これ以外は図10のプロセッサコア2と共通する。
図11は第7の実施形態によるプロセッサシステム1のプロセッサコア2の内部構成を示すブロック図である。図11のプロセッサコア2は、図10のリザベーション・ステーション19に、図9と同様にフラグ情報19aを設けており、これ以外は図10のプロセッサコア2と共通する。
図11のプロセッサコア2では、リザベーション・ステーション19内にフラグ情報19aを設けるため、このフラグ情報19aを参照して、演算器20は演算順序を決定でき、演算器20で演算した演算値が有効である確率を向上でき、プロセッサの処理性能の向上が図れる。
(第8の実施形態)
図12は第8の実施形態によるプロセッサシステム1のプロセッサコア2の内部構成を示すブロック図である。図12のプロセッサコア2は、レジスタ18のデータ構成が図7と異なっている。これ以外は、図7と共通する。
図12は第8の実施形態によるプロセッサシステム1のプロセッサコア2の内部構成を示すブロック図である。図12のプロセッサコア2は、レジスタ18のデータ構成が図7と異なっている。これ以外は、図7と共通する。
図12のレジスタ18は、各エントリごとに、レジスタ・フィールド18bと、バックアップ・フィールド18cと、レジスタ・フィールド18b内のデータのフラグ情報18a、バックアップ・フィールド18cのデータのフラグ情報18dとを有する。レジスタ・フィールド18bには、レジスタ18に記憶されるべき本来のデータが記憶される。バックアップ・フィールド18cには、対応するレジスタ・フィールド18b内のデータを更新する際に、このレジスタ・フィールド18bに今まで記憶されていたデータが記憶され、そのデータが誤り訂正前か後か、すなわち有効か否かを示すフラグ情報18dが記憶される。
レジスタ18内のフラグ情報は、誤り訂正回路4から送られて来るエラー信号や拡張リオーダ・バッファ17により設定される。バックアップ・フィールド18cは、図10のバックアップレジスタ21と同様の目的で用いられるが、バックアップ・フィールド18cはレジスタ18の各エントリごとに設けられるため、誤りが多い場合であっても、バックアップ・フィールド18cが不足するおそれは少ない。よって、バックアップ・フィールド18cを有効活用して、投機演算を行うことができる。
(第9の実施形態)
図13は第7の実施形態によるプロセッサシステム1のプロセッサコア2の内部構成を示すブロック図である。図13のプロセッサコア2は、図12のリザベーション・ステーション19に、図9と同様にフラグ情報19aを設けており、これ以外は図12のプロセッサコア2と共通する。
図13は第7の実施形態によるプロセッサシステム1のプロセッサコア2の内部構成を示すブロック図である。図13のプロセッサコア2は、図12のリザベーション・ステーション19に、図9と同様にフラグ情報19aを設けており、これ以外は図12のプロセッサコア2と共通する。
図13のプロセッサコア2では、リザベーション・ステーション19内にフラグ情報19aを設けるため、このフラグ情報19aを参照して、演算器20は演算順序を決定でき、演算器20で演算した演算値が有効である確率を向上でき、プロセッサの処理性能の向上が図れる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 プロセッサシステム、2 プロセッサコア、3 キャッシュメモリ、4 誤り訂正回路、5 タグ記憶部、6 キャッシュデータ記憶部、7 キャッシュコントローラ、7a 拡張キャッシュコントローラ、8 キャッシュロジック、11 L1データキャッシュ、12 L1データキャッシュコントローラ、13 命令キャッシュ、14 命令キャッシュコントローラ、15 命令発行ユニット、16 命令キュー、16a、18a、19a フラグ情報、17 拡張リオーダ・バッファ、18 レジスタ、19 リザベーション・ステーション、20 演算器
Claims (15)
- キャッシュメモリから読み出されたキャッシュデータの誤り訂正処理に並行して、誤り訂正前のキャッシュデータを用いて演算を実行する演算器と、
前記演算器にて演算された演算値を記憶するレジスタと、
前記演算が有効か否かを示す情報を記憶するとともに、前記演算が有効でない場合には、前記誤り訂正処理による誤り訂正後のデータを用いて前記演算器にて再演算を実行させ、前記演算が有効な場合には、前記演算による演算値を前記レジスタに記憶する演算制御部と、を備えるプロセッサ。 - 命令を発行する命令発行ユニットと、
前記命令発行ユニットが発行した命令を、当該命令が有効か否かを示すフラグ情報と対応づけて記憶する命令キューと、を備える請求項1に記載のプロセッサ。 - 前記演算制御部は、
前記命令キューから発行された命令と、当該命令に対応するフラグ情報と、当該命令に対応するオペランドと、当該命令に対応する演算結果保存先情報と、前記演算器による演算値と、を対応づけて記憶する第1記憶部と、
前記命令キューから発行された命令を前記演算器に対応づけて記憶する第2記憶部と、を有し、
前記演算器は、前記第2記憶部に記憶された命令に基づいて演算を行い、
前記第1記憶部は、前記演算器が演算した演算値を記憶する請求項2に記載のプロセッサ。 - 前記第1記憶部は、前記演算器にて演算を行うべき命令と、当該命令が有効か否かを示す情報と、当該命令に対応するオペランドと、当該オペランドが有効か否かを示す情報と、当該命令に対応する前記演算器で演算された演算値の保存先と、当該保存先が有効か否かを示す情報と、当該保存先に保存されるべき前記演算値と、当該演算値が有効か否かを示す情報と、を対応づけて記憶する請求項3に記載のプロセッサ。
- 前記第2記憶部は、前記演算器にて実行されるべき命令と、当該命令が有効か否かを示す情報と、当該命令に対応するオペランドと、当該オペランドが有効か否かを示す情報と、を記憶する請求項3または4に記載のプロセッサ。
- 前記演算器は、前記第2記憶部に記憶された命令のうち、対応する命令およびオペランドがともに有効な命令を優先して実行する請求項5に記載のプロセッサ。
- 前記レジスタのあるエントリに有効か否かが不明のデータを記憶する際に、当該エントリに記憶されていた元データを記憶するバックアップレジスタを備え、
前記レジスタおよび前記バックアップレジスタはそれぞれ、各エントリごとに、各エントリのデータが有効か否かを示すフラグ情報を記憶する請求項1乃至6のいずれかに記載のプロセッサ。 - 前記レジスタは、エントリごとに、データを記憶する第1フィールドと、前記第1フィールドのデータを更新する際に前記第1フィールドに記憶されていた元データを記憶する第2フィールドと、前記第1フィールドに記憶されたデータが有効か否かを示すフラグ情報を記憶する第3フィールドと、前記第2フィールド内の前記第1フィールドに記憶されていた元データが有効か否かを示すフラグ情報を記憶する第4フィールドと、を有する請求項1乃至6のいずれかに記載のプロセッサ。
- 前記誤り訂正処理を行う誤り訂正回路を備える請求項1乃至8のいずれかに記載のプロセッサ。
- キャッシュメモリと、
前記キャッシュメモリから読み出されたキャッシュデータの誤り訂正処理を行う誤り訂正回路と、
前記誤り訂正処理に並行して、誤り訂正前のキャッシュデータを用いて演算を実行し、前記誤り訂正処理の結果に基づいて、前記演算が有効か否かを示す情報を記憶するとともに、前記演算が有効でない場合には、前記誤り訂正処理による誤り訂正後のキャッシュデータを用いて前記演算器にて再演算を実行させ、前記演算が有効な場合には、前記演算による演算値をレジスタに記憶するプロセッサコアと、を備えるプロセッサシステム。 - 前記誤り訂正回路は、前記キャッシュメモリに内蔵されるか、前記キャッシュメモリと前記プロセッサコアとの間に設けられるか、あるいは前記プロセッサコアに内蔵される請求項10に記載のプロセッサシステム。
- 前記キャッシュメモリは、
タグデータを記憶するタグ記憶部と、
前記タグデータに対応するキャッシュデータを記憶するキャッシュデータ記憶部と、
前記プロセッサコアからアクセス要求のあったアドレスが前記タグ記憶部に記憶されたタグデータに一致するか否かのヒット/ミス判定を行うヒット/ミス判定部と、を有し、
前記誤り訂正回路は、前記キャッシュデータ記憶部に記憶された前記キャッシュデータに対して前記誤り訂正処理を行う請求項10または11に記載のプロセッサシステム。 - 前記キャッシュメモリは、
タグデータを記憶するタグ記憶部と、
前記タグデータに対応するキャッシュデータを記憶するキャッシュデータ記憶部と、
前記プロセッサコアからアクセス要求のあったアドレスが前記タグ記憶部に記憶されたタグデータに一致するか否かのヒット/ミス判定を行うヒット/ミス判定部と、を有し、
前記誤り訂正回路は、
前記タグ記憶部から読み出されたタグデータの誤り訂正を行う第1誤り訂正部と、
前記キャッシュデータ記憶部から読み出されたキャッシュデータの誤り訂正を行う第2誤り訂正部と、を有し、
前記ヒット/ミス判定部は、前記第1誤り訂正部で誤り訂正を行った後のタグデータを用いて前記ヒット/ミス判定を行う請求項10または11に記載のプロセッサシステム。 - 前記プロセッサコアは、1次キャッシュを含み、
前記キャッシュメモリは、2次以上の高次のキャッシュメモリを含む請求項10乃至13のいずれかに記載のプロセッサシステム。 - 前記キャッシュメモリは、MRAM(Magnetoresistive RAM)を含む請求項14に記載のプロセッサシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014191997A JP2016062513A (ja) | 2014-09-19 | 2014-09-19 | プロセッサおよびプロセッサシステム |
PCT/JP2015/076486 WO2016043271A1 (ja) | 2014-09-19 | 2015-09-17 | プロセッサおよびプロセッサシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014191997A JP2016062513A (ja) | 2014-09-19 | 2014-09-19 | プロセッサおよびプロセッサシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016062513A true JP2016062513A (ja) | 2016-04-25 |
Family
ID=55533307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014191997A Pending JP2016062513A (ja) | 2014-09-19 | 2014-09-19 | プロセッサおよびプロセッサシステム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2016062513A (ja) |
WO (1) | WO2016043271A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10141038B2 (en) | 2017-03-21 | 2018-11-27 | Toshiba Memory Corporation | Computer system and memory device |
JP7480595B2 (ja) | 2020-06-04 | 2024-05-10 | 富士通株式会社 | 半導体装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11216379B2 (en) | 2019-07-30 | 2022-01-04 | Analog Devices International Unlimited Company | Fast cache loading with zero fill |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04181331A (ja) * | 1990-11-15 | 1992-06-29 | Nec Ibaraki Ltd | 命令リトライ方式 |
US5509119A (en) * | 1994-09-23 | 1996-04-16 | Hewlett-Packard Company | Fast comparison method and apparatus for error corrected cache tags |
WO1996025705A1 (en) * | 1995-02-14 | 1996-08-22 | Fujitsu Limited | Structure and method for high-performance speculative execution processor providing special features |
JP2970553B2 (ja) * | 1996-08-30 | 1999-11-02 | 日本電気株式会社 | マルチスレッド実行方法 |
JP2001075864A (ja) * | 1999-09-02 | 2001-03-23 | Fujitsu Ltd | キャッシュ制御装置 |
JP5498526B2 (ja) * | 2012-04-05 | 2014-05-21 | 株式会社東芝 | キャッシュシステム |
-
2014
- 2014-09-19 JP JP2014191997A patent/JP2016062513A/ja active Pending
-
2015
- 2015-09-17 WO PCT/JP2015/076486 patent/WO2016043271A1/ja active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10141038B2 (en) | 2017-03-21 | 2018-11-27 | Toshiba Memory Corporation | Computer system and memory device |
JP7480595B2 (ja) | 2020-06-04 | 2024-05-10 | 富士通株式会社 | 半導体装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2016043271A1 (ja) | 2016-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9298632B2 (en) | Hybrid cache state and filter tracking of memory operations during a transaction | |
US9710268B2 (en) | Reducing latency for pointer chasing loads | |
CN101694613B (zh) | 不对准存储器存取预测 | |
US8131951B2 (en) | Utilization of a store buffer for error recovery on a store allocation cache miss | |
US8683179B2 (en) | Method and apparatus for performing store-to-load forwarding from an interlocking store using an enhanced load/store unit in a processor | |
CN104794067A (zh) | 堆栈存储的变量值预测 | |
WO2020243102A1 (en) | Pipelined read-modify-write operations in cache memory | |
CN109643237B (zh) | 分支目标缓冲器压缩 | |
KR20160031503A (ko) | 마이크로프로세서에서의 선택적 리네이밍을 위한 방법 및 장치 | |
US8645588B2 (en) | Pipelined serial ring bus | |
US20210011729A1 (en) | Managing Commit Order for an External Instruction Relative to Queued Instructions | |
JP2008107983A (ja) | キャッシュメモリ | |
US10719327B1 (en) | Branch prediction system | |
US10007524B2 (en) | Managing history information for branch prediction | |
WO2016043271A1 (ja) | プロセッサおよびプロセッサシステム | |
US20110055647A1 (en) | Processor | |
US9223714B2 (en) | Instruction boundary prediction for variable length instruction set | |
US20180203703A1 (en) | Implementation of register renaming, call-return prediction and prefetch | |
JP2010102623A (ja) | キャッシュメモリ及びその制御方法 | |
US10552158B2 (en) | Reorder buffer scoreboard having multiple valid bits to indicate a location of data | |
KR20220054328A (ko) | 프로세서에서의 인터럽트된 명령어 복구를 위한 레지스터 재명명 맵 테이블(rmt) 상태 복구를 위한 프로세서 재정렬 버퍼(rob)의 순회 최소화 | |
US7900023B2 (en) | Technique to enable store forwarding during long latency instruction execution | |
US8645791B2 (en) | Data cache controller, devices having the same, and method of operating the same | |
JP6016689B2 (ja) | 半導体装置 | |
US8856498B2 (en) | Prefetch request circuit |