JP2011048681A - プロセッサ - Google Patents

プロセッサ Download PDF

Info

Publication number
JP2011048681A
JP2011048681A JP2009197259A JP2009197259A JP2011048681A JP 2011048681 A JP2011048681 A JP 2011048681A JP 2009197259 A JP2009197259 A JP 2009197259A JP 2009197259 A JP2009197259 A JP 2009197259A JP 2011048681 A JP2011048681 A JP 2011048681A
Authority
JP
Japan
Prior art keywords
ecc
data
read
storage unit
load
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
JP2009197259A
Other languages
English (en)
Other versions
JP4865016B2 (ja
Inventor
Seiji Maeda
誠司 前田
Kenta Yasufuku
健太 安福
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2009197259A priority Critical patent/JP4865016B2/ja
Priority to US12/862,081 priority patent/US8484520B2/en
Publication of JP2011048681A publication Critical patent/JP2011048681A/ja
Application granted granted Critical
Publication of JP4865016B2 publication Critical patent/JP4865016B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

【課題】アドレス比較回路等を不要にしてフォワーディング回路の規模を小さくして、半導体チップ上のフォワーディング回路の占める面積の小さいプロセッサを提供する。
【解決手段】プロセッサ1は、ALU11と、ロード/ストアユニット13と、タイマ13aと、ECC計算器13bと、複数のECCレジスタ13cと、を有する。ロード/ストアユニット13は、主メモリ14にデータを書き込む時に、書き込みデータとタイマ13aのカウント値とを主メモリ14に書き込むと共に、その書き込みデータについてのECCが正しくないことを示すECC状態フラグデータを主メモリ14にセットし、そのセット後、ECC計算器13bに書き込みデータについてのECCを計算させ、ECCが計算して得られた後、その計算して得られたECC主メモリ14に書き込むと共に、ECC状態フラグデータをリセットする。
【選択図】図1

Description

本発明は、プロセッサに関し、特に、エラー訂正符号を含むデータを記憶する記憶部に対してデータのロード及びストアを行うプロセッサに関する。
従来より、データ保護のためのエラー訂正符号を利用するプロセッサでは、エラー訂正符号の計算にプロセッサのクロックに対して複数サイクルが必要となる場合が多い(例えば、特許文献1参照)。
例えば、メモリあるいはキャッシュメモリに記憶されたあるデータ(例えば128ビット)が更新される場合は、その更新されたデータの全体(128ビット)についてエラー訂正符号(例えば9ビット)の計算が行われ、その更新データとエラー訂正符号(以下、ECCともいう)が同時にメモリに書き込まれる。このとき、ECCの計算には、複数サイクルの時間が掛かる。
また、あるデータの一部(すなわち128ビット未満のデータ)の更新を行う場合もある。この場合は、例えば、まず既にメモリ等に記憶されているデータの全体(128ビット)を読み出し、その読み出したデータに、その更新データを反映させたデータの全体(128ビット)を生成して、そのデータ全体についてECCの計算をして、その更新データとECCとが同時にメモリに書き込まれる。
すなわち、書き込まれるデータが128ビットデータの場合は、既に記憶されている128ビットデータの読み出しは必要ないが、データの更新処理には、データの一部の更新の場合もあるため、読み出し、ECC計算及び書き込みの3つの処理のための演算サイクルを確保しなければならない。例えば、アドレス計算に2サイクル、読み出しに1サイクル、ECC計算に2サイクル、そして書き込みに1サイクルが必要であれば、データ更新処理すなわちデータストア処理は、必ず6サイクルを必要とする処理となる。ストア処理において、この6サイクルは、処理時間の最も長い処理シーケンス、いわゆるクリティカルパスである。
一方、データ読み出しだけの処理すなわちデータロード処理の場合、アドレス計算に2サイクル、読み出しに1サイクル掛かるとすれば、データ読み出し処理は、3サイクルを必要とする処理である。
このようなストア処理とロード処理にサイクル数の差がある場合に、データ更新の直後に、更新データのデータ読み出しがあると、データ更新がされる前のデータがメモリ等から読み出されてしまうという問題がある。そのため、そのようなデータのストア処理とロード処理の処理サイクル数の差に起因する間違ったデータの読み出しを防止するため、いわゆるフォワーディング回路が設けられる。
フォワーディング回路は、先行するストア処理の書き込みデータ数サイクル分を、後続のロード処理に対してフォワーディングする回路である。フォワーディング回路は、メモリ等にデータの書き込み処理があった直後に、同じアドレスに対するデータ読み出しがあった場合、メモリ等からデータを読み出す代わりに、複数サイクル前に書き込まれたデータを保持する複数のレジスタからデータが読み出されるようにする回路である。そのため、フォワーディング回路は、複数サイクル分の複数のアドレス比較回路を有する。
例えば、データの読み出し処理と更新(すなわち書き込み)処理に3サイクル分の差があれば、フォワーディング回路は、その3サイクル前までのそれぞれのアドレスと、現在の読み出しアドレスとの比較を行うための3つのアドレス比較回路を有し、かつ、その3サイクル分の書き込みデータを保持する3つのレジスタも有していた。
そして、アドレスデータが64ビット等の大きなビット幅を有する場合、アドレスデータのビット数分の信号線が比較のために各比較回路に接続され、各レジスタには、128ビット等の大きなビット幅の信号線が出力のために接続されることになる。結果として、フォワーディング回路規模は大きくなり、CPUが搭載された半導体チップ上のフォワーディング回路の占める面積も大きくなるという問題があった。
特開平4−369733号公報
そこで、本発明は、アドレス比較回路等を不要にしてフォワーディング回路の規模を小さくして、半導体チップ上のフォワーディング回路の占める面積の小さいプロセッサを提供することを目的とする。
本発明の一態様によれば、パイプライン処理を実行可能なプロセッサであって、ALUと、ロード/ストアユニットと、所定のクロックに従って動作するカウンタと、ECC計算器と、複数のECCレジスタと、を有し、前記ロード/ストアユニットは、記憶部にデータを書き込む時に、書き込みデータと前記カウンタのカウント値とを前記記憶部に書き込むと共に、その書き込みデータについてのECCが正しくないことを示すECC状態フラグデータを前記記憶部にセットし、そのセット後、前記ECC計算器に前記書き込みデータについての前記ECCを計算させ、前記ECCが計算して得られた後、その計算して得られたECCを前記記憶部に書き込むと共に、前記ECC状態フラグデータをリセットし、前記記憶部からデータを読み出す時には、前記記憶部からデータと、そのデータについての前記ECC状態フラグデータ、前記カウンタのカウント値及びECCを読み出し、読み出したデータからECCの再計算を実行し、前記読み出したデータについての前記ECC状態フラグデータがセットされている場合、読み出したカウント値から比較のためのECCレジスタを前記複数のECCレジスタの中から決定し、前記読み出したデータから再計算したECCと、前記比較のためのECCレジスタのECCとを比較し、前記読み出したデータの前記ECC状態フラグデータがセットされていない場合、前記読み出したデータから再計算して得られたECCと、読み出したECCとを比較することによって、ECCエラー判定を行うプロセッサを提供することができる。
本発明によれば、アドレス比較回路等を不要にしてフォワーディング回路の規模を小さくして、半導体チップ上のフォワーディング回路の占める面積の小さいプロセッサを実現することができる。
本発明の第1の実施の形態に係わるプロセッサの構成を示す概略構成図である。 本発明の第1の実施の形態に係わる主メモリ14に記憶されるデータのデータ構造の例を示す図である。 本発明の第1の実施の形態に係わる主メモリ14のデータ構造を示す図である。 本発明の第1の実施の形態に係わるタイマ13aのカウント値Tmを説明するための図である。 本発明の第1の実施の形態に係わるロード/ストアユニット13の構成を示す構成図である。 本発明の第1の実施の形態に係わる、データの書き込み時のロード/ストアユニット13の動作を説明するための図である。 本発明の第1の実施の形態に係わる、データの読み出し時にフラグデータ24aが「0」の場合におけるロード/ストアユニット13の動作を説明するための図である。 本発明の第1の実施の形態に係わる、データの読み出し時にフラグデータ24aが「1」の場合におけるロード/ストアユニット13の動作を説明するための図である。 本発明の第2の実施の形態に係わる、本実施の形態に係るロード/ストアユニット13Aの構成を示す構成図である。
以下、図面を参照して本発明の実施の形態を説明する。
(第1の実施の形態)
1.プロセッサの全体構成
まず、図1に基づき、本発明の第1の実施の形態に係わるプロセッサの概略構成を説明する。図1は、本発明の第1の実施の形態に係わるプロセッサの構成を示す概略構成図である。
図1に示すように、プロセッサ1は、1チップの半導体装置であり、その1つのチップには、算術論理演算装置(以下、ALUという)11と、レジスタファイル12と、ロード/ストアユニット13と、記憶部としての主メモリ14と、制御ユニット15とが搭載されている。本実施の形態では、プロセッサ1は、処理の高速化のためのパイプライン処理機構を有し、各パイプラインは複数のステージで構成される。プロセッサ1の各命令を実現するための処理は、複数の処理ステップに分割され、各処理ステップは各ステージにてクロックに同期して順に実行される。異なるステージは、おのおの異なる命令の処理ステップを同時に実行できるため、パイプライン全体では複数の命令を同時に実行することができる。
制御ユニット15は、主メモリ14から命令を読み出して、ALU11とレジスタファイル12とロード/ストアユニット13を制御し、ロード/ストアユニット13からのECCエラーを受信して所定の処理を行う、等のプロセッサ1の全体の制御を行う回路である。
ALU11は、制御ユニット15の制御の下、レジスタファイル12からのデータに対して、所定の演算を行い、演算結果をレジスタファイル12に書き込む。
ロード/ストアユニット13は、制御ユニット15の制御の下、主メモリ14に対するデータのロードとストア処理を行う回路である。ロード/ストアユニット13は、主メモリ14からのデータの読み出し時(すなわちロード時)は、レジスタファイル12から読み出しアドレスが入力され、その入力されたアドレスに基づいて、主メモリ14からデータを読み出して、読み出したデータ(R data)をレジスタファイル12の所定のレジスタへ書き込む。ロード/ストアユニット13は、主メモリ14へのデータの書き込み時(すなわちストア時)は、レジスタファイル12の所定のレジスタから書き込みデータ(W data)が入力され、その書き込まれたデータをアドレスで指定された主メモリ14の記憶領域へ書き込む。
なお、図1において、ロード時の読み出しアドレスは、第1のアドレスデータRAと第2のアドレスデータRBからなる。第1のアドレスデータRAは、メモリ空間における先頭アドレスであり、第2のアドレスデータRBは、第1のアドレスデータRAからのオフセット値を示すデータである。
パイプライン処理を実行可能なプロセッサ1は、実行プログラムに基づく処理を、複数のステージのそれぞれにおいて、所定の順序制御の下で実行し、パイプライン処理の中で、データのロードとストアが行われる。データのロードとストア処理は、ロード/ストアユニット13において、パイプライン処理により行われる。
ロード/ストアユニット13は、タイマ13aと、ECC計算器13bと、ECCレジスタ群13cを含む。タイマ13aは、プロセッサ1内の所定のクロックに従って動作し、そのクロックにインクリメントするカウンタである。ここでは、タイマ13aは、2ビットのカウンタである。ECC計算器13bは、入力されたデータのECCを計算する回路である。ECCレジスタ群13cは、複数のECCレジスタを含む。ECCレジスタの数は、データの読み出し処理と書き込み処理の時間差(すなわちサイクル数の差)に応じて、決定される。ここでは、ECCレジスタの数は3個であり、3サイクル前までのECC、すなわち3つのECCが保持される。よって後述するように、読み出したデータが3サイクル以内に書き込まれたものである場合、その読み出したデータに対応するECCは、ECCレジスタ群13cに含まれている。
2.データ構造
図2は、主メモリ14に記憶されるデータのデータ構造の例を示す図である。主メモリ14に記憶される各データ21は、128ビットのデータからなるデータ部22と、9ビットのECCからなるECC部23と、3ビットのECC状態ビット(stat)からなるECC状態ビット部24を含む、140ビットのデータである。データ部22のデータは、演算用あるいは演算結果のデータである。ECC部23のECCは、データ部22のデータについてのエラー訂正符号である。
ECC状態ビット(stat)は、ECCが正しいか否かあるいはECCが再計算中であるか否かを示すECCの状態を示すECC状態フラグデータであるフラグデータ24aと、タイマ13aのカウント値24bを含むデータである。本実施の形態では、フラグデータ24aは、1ビットデータであり、「1」は、そのECCは正しくないすなわち対応するデータのECCが再計算中であることを示し、「0」は、そのECCは正しいすなわちECCが再計算中でないことを示す。また、カウント値24bは、データの書き込み時に書かれたタイマ13aの2ビットのカウント値である。
なお、ここでは、ECC状態フラグデータであるフラグデータ24aは1ビットであるが、複数ビットでもよい。同様に、タイマ13aのカウント値も、3ビット以上でもよい。
図3は、主メモリ14のデータ構造を示す図である。メモリ空間上のアドレスAddrが指定されることによって、そのアドレスAddrのデータ(DATA)の読み出し及び書き込みが行われる。各データについて、ECCと、ECC状態ビット(stat)が記憶可能となっている。
データの書き込みでは、データとECCとECC状態ビット(stat)は、それぞれ別々に書き込みが可能であり、データの読み出しでは、データとECCとECC状態ビット(stat)が同時に読み出し可能である。
図3でも説明したように、ECCを備えるメモリアレイである主メモリ14中の各データは、データ部22のデータ(128ビット)とECC部23のECC(9ビット)に加えて、ECC状態ビット部24のECC状態ビット(3ビット)が付加されている。なお、各データは最小アクセス単位である1バイト単位で書き込むことが可能である。
後述するように、本実施の形態では、データとECCとECC状態ビット(stat)の主メモリ14への書き込みは、2回に分けて行われる。第1回目に、書き込みデータ(W data)が書き込まれ、さらに、書き込みデータ(W data)のECCが再計算中であることを示すフラグデータ24a(すなわち「1」)と、そのときのタイマ13aのカウント値Tmとが、主メモリ14の対応するアドレスに書き込まれる。その後、複数のクロックに亘って書き込みデータ(W data)のECCが計算される。その計算して得られたECCは、第2回目の書き込み時に、その書き込みデータ(W data)のECCとして書き込まれ、同時に、フラグデータ24aは再計算中でないことを示すフラグデータ24aに変更されてクリア(すなわち「0」に)される。
すなわち、図2において、データの書き込み時は、データ部22とECC状態ビット部24が、第1回目の書き込み処理で書かれ、ECCと、ECCの再計算中ではないことを示すフラグデータ24aが、第2回目の書き込み処理時に書かれる。
また、データの読み出し時、データとECCとECC状態ビット(stat)が、主メモリ14の対応するアドレスから読み出される。読み出したデータについてECCの再計算が行われる。後述するように、その読み出したデータのフラグデータ24aの状態に応じて、「読み出したECC」又は「ECCレジスタ群13cの中の一つのECC」のいずれかを選択して、再計算されたECCとの比較が行われる。もしも、読み出したデータのECC状態ビット部24のフラグデータ24aが「0」であれば、再計算して得られたECCと、読み出したデータのECCとを比較することによって、読み出されたデータに誤りが無いかのチェックが行われる。
もしも、読み出したデータのECC状態ビット部24のフラグデータ24aが「1」であれば、読み出したデータのECCは再計算中である(すなわち、読み出したデータは3サイクル以内に更新されたデータである)ので、再計算して得られたECCと、ECCレジスタ群13cの中の一つのECC (ECC状態ビット部24のカウント値24bとタイマ13aの現在のカウント値Tmとの差に応じて選択された1つのECCレジスタのECC)とを比較することによって、読み出されたデータに誤りが無いかのチェックが行われる。
3.タイマ
図4は、タイマ13aのカウント値Tmを説明するための図である。タイマ13aは、カウンタであり、プロセッサ1内の所定のクロックに従って、1つずつインクリメントするように動作し、カウントアップすると「0」に戻る。図5に示すように、タイマ13aは2ビットカウンタであり、「00」から「01」へインクリメントし、「01」から「10」へ、そして次に「11」にインクリメントして、「00」に戻るように、カウント値Tmは、そのクロックに応じて変化する。
ここでは、ストア処理とロード処理に3クロック分の差があるので、少なくとも3クロック分の差を検出できるように、タイマ13aは、2ビットのカウンタとなっている。
4.ロード/ストアユニットの構成
図5は、ロード/ストアユニット13の構成を示す構成図である。図5に示すように、ロード/ストアユニット13は、パイプライン構造を有し、9つのステージを有する。ロード/ストアユニット13は、上述したようにタイマ13a、ECC計算器13b及びECCレジスタ群13cを有し、さらに、図5に示すように、アドレス計算器31、セレクタ群32、差分器33、セレクタ34及び比較器35を含む。以下、各ステージについて説明する。なお、図6において、符号を付さないブロックは、レジスタを示す。
ステージa0では、アドレス計算のためのアドレスRA,RBが2つのレジスタにセットされる。また、書き込みデータ(W data)がある場合には、その書き込みデータ(W data)も別のレジスタにセットされる。書き込みデータ(W data)は、ステージb1,c2の各レジスタへ順次伝達される。
ステージb1では、アドレス計算器31が入力されたアドレスRAとRBから、データが読み出しあるいは書き込みされるアドレスAddrの計算を行い、そのアドレスAddrがレジスタにセットされる。
ステージc2では、計算して得られたアドレスAddrに基づき、データの書き込みあるいは読み出しが行われ、そのための複数のレジスタが設けられている。読み出されるデータは、図2で説明したようなデータ構造を有しているため、レジスタもそれらのデータを保持できるようになっている。なお、ステージc2において、図5の「data」と「stat」と「ECC」を含む、一点鎖線で示す部分101は、主メモリ14に存在し、主メモリ14から読み出された「data」と「stat」と「ECC」は、それぞれプロセッサ1内の対応するレジスタ101a、101b、101cに記憶される。データの書き込み時には、ECC状態ビット(stat)に、タイマ13aのカウント値Tmとフラグデータ24bのセット(「1」のセット)が行われる。
ステージd3では、データの書き込み時には、読み出したデータと書き込みデータとのマージがセレクタ群32により行われる。データの読み出し時には、次のステージでECC計算をするための読み出しデータ(R data)のレジスタへのセットが行われる。
ステージe4とf5では、ECC計算器13bにより、書き込みデータあるいは読み出しデータについてのECC計算が行われる。
ステージg6では、データの書き込み時には、そのデータについて、ECCの書き込みと、フラグデータ24bを「0」にするためのリセットが行われる。さらに、計算されたECCがECCレジスタ13c1にストアされる。データの読み出し時には、差分器33,セレクタ34及び比較器35が動作して、ECCの比較が行われる。比較の結果、一致しなければ、比較器35からECCエラーが出力される。ECCエラーは、制御ユニット15へ伝達される。なお、ステージg6において、図5の「stat」と「ECC」を含む、一点鎖線で示す部分102は、主メモリ14に存在する。
差分器33は、読み出したデータのフラグデータ24aがセットされている場合、読み出したカウント値24bと、再計算時のタイマ13aのカウント値との差に基づいて、ECCレジスタ群13cの中から比較のためのECCレジスタを決定するために用いられる。
セレクタ34は、フラグデータ24aがセットされている場合、再計算して得られたECCと比較のためのECCレジスタのECCとを選択して、比較器35に比較させ、フラグデータ24aがセットされていない場合、再計算して得られたECCと読み出したECCとを選択して、比較器35に比較させるために用いられる。
ステージh7では、ECCレジスタ13c1のデータが次のECCレジスタ13c2に転送される。
ステージi8では、ECCレジスタ13c2のデータが次のECCレジスタ13c3に転送される。
なお、図5では、3つのECCレジスタ13c1、13c2,13c3からの信号は、1つの信号線を介してセレクタ34に入力されているように示されているが、各ECCレジスアからの信号線が、セレクタ34に入力されている。ECCは、9ビットデータなので、27本の信号線が、セレクタ34に、ECCレジスタ群13cから入力される。
図5において、点線で示した範囲FWが、フォワーディング回路を示す。
次に、以上のような構成のロード/ストアユニット13の動作を、データの書き込みと読み出しの場合に分けて説明する。
5.動作
5.1 データの書き込み時の動作
図6は、データの書き込み時のロード/ストアユニット13の動作を説明するための図である。
ステージa0で、ロード/ストアユニット13には、主メモリ14のアドレスRA,RBと、書き込みデータ(W data)が与えられる。
ステージb1で、RAとRBからアドレスAddrが計算されて特定される。
ステージc2で、まず、そのアドレスAddrのデータが読み出される。書き込みデータ(W data)は、一点鎖線L1で示すようにステージc2へ伝達される。その後、ECC状態ビット(stat)のフラグデータ24aに「1」と、そのときのタイマ13aのカウント値Tmとを、書き込みデータ(W data)と共に主メモリ14に書き込む(第1回目の書き込みR1)。このとき、ECCの書き換えは行われない。すなわち、第1回目の書き込みで、フラグデータ24aが、ECCが正しくないことを示す「1」にセットされる。
なお、ステージc2では、その書き込みデータ(W data)が書き込まれるアドレスAddrの全ビット(すなわち128ビット)が読み出されているが、これは、128ビットのデータの一部だけ(すなわちECC付与単位未満のデータサイズのデータだけ)が書き込まれる場合に、書き込みデータ(W data)を主メモリ14に書き込む前に、更新前のデータを主メモリ14から読み出し、その一部のデータと他の部分のデータとマージして、ECC付与単位の128ビットのデータを生成するためである。そのマージは、次のステージd3で行われ、それに続くステージe4,f5で、マージされたデータについてのECCの計算が行われる。例えば、あるデータの128ビット中の16ビットだけについて書き込みが行われる場合、読み出した128ビットデータから残りの112ビットを抽出し、その16ビットとマージされて、マージされたデータについてECCが計算されて付与される。よって、そのアドレスのECC付与単位である全ビットの書き込みが行われる場合には、全ビットの読み出し処理を行わないようにしてもよい。
ステージd3では、上述したように、読み出されたデータ(一点鎖線L2で示す)と、書き込みデータ(W data)(一点鎖線L1で示す)とはセレクタ群32によりマージされる。
ステージe4とf5で、一点鎖線L3で示すようにマージされたデータについてのECCが、ECC計算器13bにより計算される。
ステージg6では、そのアドレスAddrのデータのECCデータとして、計算して得られたECCを、ECC状態ビット(stat)のフラグデータ24aの「0」と共に、主メモリ14に書き込む(第2回目の書き込みR2)。すなわち、第2回目の書き込みで、フラグデータ24aが「0」にリセットされ、「0」はECCが正しいことを示すことになる。
なお、ステージg6で得られたECCは、第1のECCレジスタ13c1に書き込まれる。ステージh7では、第1のECCレジスタ13c1のデータが、第2のECCレジスタ13c2に書き込まれ、ステージi8では、第2のECCレジスタ13c2のデータが、第3のECCレジスタ13c3に書き込まれる。このように、ステージg6からi8では、ECCは、フォワーディングのために複数のECCレジスタに保持される。
以上のように、データの書き込み時には、メモリ14へのデータの書き込みとそのデータのECCの書き込みとが分離され、ECCの書き込みがされるまで、ECC状態ビット(stat)のフラグデータは、ECCが再計算中であることを示すように(すなわちECCが正しくないことを示すように)書き換えられる。
5.2 データの読み出し時(フラグデータ24aが「0」の場合)の動作
図7は、データの読み出し時にフラグデータ24aが「0」の場合におけるロード/ストアユニット13の動作を説明するための図である。読み出したデータ(read data)のECC状態ビット(stat)に含まれるフラグデータ24aが「0」であるときは、読み出したECCが正しいことを示している。
ステージa0とb1は、書き込み時と同じ処理が実行される。読み出されたデータのEC状態ビット(3ビットデータ)は、一点鎖線L11で示すように、ステージc2からステージf5まで転送される。
ステージc2では、フラグデータ24aが「0」であるときには、ステージd3で、読み出したECCが、一点鎖線L12で示すように、ECC用のレジスタにセットされ、読み出したデータ(read data)は、一点鎖線L13で示すように、対応するレジスタ(R data)にセットされる。
ステージe4、f5では、一点鎖線L14で示すように、読み出したデータ(R data)からECCが再計算される。また、ステージe4、f5では、一点鎖線L15で示すように、読み出したECCが転送される。
ステージg6では、差分器33は、フラグデータ24aが「0」なので、一点鎖線L14で示すように、転送されてきたECCを選択するように選択信号をセレクタ34に出力する。比較器35は、読み出されたECCと再計算されたECCとを比較する。すなわち、フラグデータ24aが「0」であるときは、読み出されたECCが正しいECCであるので、セレクタ34は、読み出されたECCを比較器35に出力し、比較器35は、再計算されたECCと読み出されたECCとを比較して、読み出されたデータが正しいか否かのチェック、すなわちECCエラー判定、を行う。比較の結果、2つのECC状態ビットが一致しないと、比較器35は、ECCエラーを制御ユニット15へ出力する。
5.3 データの読み出し時(フラグデータ24aが「1」の場合)の動作
図8は、データの読み出し時にフラグデータ24aが「1」の場合におけるロード/ストアユニット13の動作を説明するための図である。読み出したデータ(read data)のECC状態ビット(stat)に含まれるフラグデータ24aが「1」であるときは、読み出したECCが正しいものでないことを示している。
ステージa0とb1は、書き込み時と同じ処理が実行される。読み出されたデータのEC状態ビット(3ビットデータ)は、一点鎖線L21で示すように、ステージc2からステージf5まで転送される。
ステージd3では、読み出したデータ(read data)は、一点鎖線L22で示すように、対応するレジスタ(R data)にセットされる。
ステージe4、f5では、一点鎖線L23で示すように、読み出したデータ(R data)からECCが再計算される。
ステージg6では、フラグデータ24aが「1」なので、差分器33は、ECCレジスタ群13cの中からECC状態ビット(stat)に含まれるカウント値24bとタイマ13aのそのときのカウント値Tmとの差に応じたECCレジスタを選択するように、選択出力をセレクタ34に出力する。
上述したように、読み出したECC状態ビット部24のカウント値24bは、データの書かれた時のタイマ13aの値(カウント値)である。現在のタイマ13aのカウント値Tmとの差に応じて、読み出したデータ(R data)についてのECCがストアされているECCレジスタが、3つのECCレジスタ13cの中から選択される。
例えば、読み出されたデータ(R data)のECC状態ビット(stat)のカウント値が「11」(すなわち3)で、ステージg6で比較するときのタイマ13aの現在のカウント値が「01」(すなわち1)であるとする。このとき、次の式(1)からECCレジスタ群13cへのECCのストアが何サイクル先行しているかが判定できる。
先行サイクル数=((ECC状態ビットのカウント値)−(タイマの現カウント値)+(ステージg6とc2とのサイクル数の差))%4 ・・・式(1)
上記の場合では、先行サイクル数=((3)−(1)+(4))=2となる。よって、ECCレジスタ群13cへのストアが2サイクル先行していることになる。
よって、差分器33は、このような式(1)の演算に基づく、読み出したデータ(R data)に対応するECCがストアされたECCレジスタの出力を選択するように、セレクタ35へ選択信号を出力する。
図8では、2サイクル先行するECCを保持するECCレジスタ13c2の出力が、セレクタ34によって選択され、再計算したECCとの比較が比較器35においてされていることが示されている。
すなわち、ECCレジスタ群13cには、サイクル数の差に応じてECCが保持され、読み出されたデータ(R data)のカウント値24bと現在のカウント値Tmとの差分が、差分器33により計算され、その差分に応じて、3つのECCレジスタの1つの出力が選択されて、比較器35に入力される。比較器35では、3つのECCレジスタの1つからのECCと、再計算されたECCとが比較される。比較の結果、2つのECC状態ビットが一致しないと、比較器35は、ECCエラーを制御ユニット15へ出力する。
以上のように、ロード/ストアユニット13は、主メモリ14にデータを書き込む時に、書き込みデータ(W data)とカウント値24bとを主メモリ14に書き込むと共に、その書き込みデータについてのECCが正しくないことを示すフラグデータ24aを主メモリ14にセットする。そのセット後、ロード/ストアユニット13は、ECC計算器13bに書き込みデータ(W data)についてのECCを計算させ、ECCが計算して得られた後、その計算して得られたECCを主メモリ14に書き込むと共に、フラグデータ24aをリセットする。
また、ロード/ストアユニット13は、主メモリ14からデータを読み出す時には、主メモリ14からデータと、そのデータについてのフラグデータ24a、カウント値24b及びECCを読み出し、読み出したデータ(R data)からECCの再計算を実行し、読み出したデータ(R data)についてのフラグデータ24aがセットされている場合、読み出したカウント値24bから比較のためのECCレジスタをECCレジスタ群13cの中から決定し、読み出したデータ(R data)から再計算したECCと、比較のためのECCレジスタのECCとを比較する。ロード/ストアユニット13は、読み出したデータ(R data)のフラグデータ24aがセットされていない場合、読み出したデータ(R data)から再計算して得られたECCと、読み出したECCとを比較することによって、ECCエラー判定を行う。
6.効果
以上のように、本実施の形態のプロセッサによれば、フォワーディング回路は、従来のようなアドレス比較回路及び書き込みデータ用のレジスタを有せず、フォワーディング回路の回路規模を小さくすることができ、ひいては、フォワーディング回路の占めるチップ上の面積も小さくすることができる。本実施の形態のプロセッサ1では、ECCが9ビットであれば、フォワーディング回路において、各ECCレジスタからの配線は9本で済む。また、アドレス比較回路とデータ書き込み用のレジスタがないので、プロセッサ1の消費電力の削減にも繋がる。
(第2の実施の形態)
第1の実施の形態では、読み出したデータ(R data)のECCが正しくない場合は、タイマの値を利用して、ECCレジスタ群13c中から、読み出したデータ(R data)に対応するECCを保持するECCレジスタを選択しているが、本実施の形態のプロセッサでは、読み出したデータ(R data)のECCが正しくない場合は、読み出しのパイプライン処理をフラッシュして、そのデータの読み出しを中止し、データの読み出しを再度実行させるようにした。
1.構成
以下、本実施の形態に係るプロセッサの構成を説明するが、第1の実施の形態と同じ構成要素については、同じ符号を付し、説明は省略する。特に、主として、ロード/ストアユニットの構成が異なるので、ロード/ストアユニットの構成について説明する。
図9は、本実施の形態に係るロード/ストアユニット13Aの構成を示す構成図である。図9に示すように、ロード/ストアユニット13Aは、パイプライン構造を有し、7つのステージを有する。ロード/ストアユニット13Aは、アドレス計算器31、セレクタ群32、ECC計算器13b及び比較器35を有するが、第1の実施の形態におけるタイマ13a、ECCレジスタ群13c、差分器33、セレクタ34はない。
また、ECC状態ビット(stat)は、1ビットである。その1ビットは、上述したフラグデータ24aであり、カウンタ値は含まれない。
(動作)
図9の構成によれば、データの書き込み時には、ステージc2で、フラグデータ24aの「1」と共にデータが、主メモリ14へ書き込まれる(第1回目の書き込みR1)。
そして、ステージe4とf5において一点鎖線L41で示すようにECCの計算がされた後、ステージg6で、計算して得られたECCを、ECC状態ビット(stat)のフラグデータ24aの「0」と共に、主メモリ14に書き込む(第2回目の書き込みR2)。
データの読み込み時は、読み出されたデータのECC状態ビットのフラグデータ24aが「0」であれば、一点鎖線L42で示すように、読み出されたデータ(R data)のECCが転送される。また、読み出されたデータ(R data)についてのECCが、一点鎖線L43で示すように、ECC計算器13bにより再計算される。そして、ステージg6で、再計算されたECCと、読み出されたECCとの比較が行われる。
また、データの読み込み時、読み出されたデータのECC状態ビットのフラグデータ24aが「1」であれば、読み出されたECCは正しくないので、制御ユニット15へ、読み出し処理のフラッシュを指示する信号を出力し、読み出しのパイプライン処理が中止され、同じアドレスに対するデータの読み出し処理が再度実行される。
再度の読み出し処理の実行は、制御ユニット15が、ロード/ストアユニット13Aからのフラッシュ指示を受信してから、その再実行の開始を指示することによって、行われる。
以上のように、ロード/ストアユニット13Aは、主メモリ14にデータを書き込む時に、書き込みデータ(W data)を主メモリ14に書き込むと共に、その書き込みデータ(W data)についてのECCが正しくないことを示すフラグデータ24aを主メモリ14にセットする。そのセット後、ロード/ストアユニット13Aは、ECC計算器13bに書き込みデータ(W data)についてのECCを計算させ、ECCが計算して得られた後、その計算して得られたECCを主メモリ14に書き込むと共に、フラグデータ24aをリセットする。
また、ロード/ストアユニット13Aは、主メモリ14からデータを読み出す時には、主メモリ14からデータと、そのデータについてのフラグデータ24a及びECCを読み出し、フラグデータ24aがセットされている場合、データの読み出しを再実行し、フラグデータ24aがセットされていない場合、読み出したデータ(R data)から再計算して得られたECCと、読み出したECCとを比較することによって、ECCエラー判定を行う。
(効果)
以上のように、本実施の形態によれば、データの読み出し時にECCが正しくないことを示すフラグデータが立っていたときには、そのデータの読み出しのパイプライン処理をフラッシュし、同じデータの読み出し処理が再度実行されるようにしたので、第1の実施の形態におけるECCレジスタ群13c等も省くことができ、フォワーディング回路のさらに簡略化することができる。
また、本実施の形態の場合は、主メモリ14中のECC状態ビットが1ビットだけで済むというメリットもある。
従って、上述した各実施の形態によれば、ECCの計算に時間を要する場合に、記憶部にデータをストアするとき、データだけの書き込みだけを先行して行い、ECCの書き込みをその後遅延して行うことにより、データのストアに要するサイクル数を削減し、それに続くデータのロードに対するフォワーディング回路が簡略化できるプロセッサを実現することができる。
以上のように、上述した各実施の形態に係るプロセッサによれば、アドレス比較回路等が不要となり、結果としてフォワーディング回路の規模を小さくでき、半導体チップ上のフォワーディング回路の占める面積を小さくすることができる。
なお、上述した各実施の形態では、ロード/ストアユニット13は、記憶部としての主メモリ14に対してデータのストアとロードを行っているが、記憶部は、キャッシュメモリあるいはローカルメモリでもよい。
また、上述した各実施の形態では、主メモリ14は、プロセッサ1の1つの半導体チップ内に内蔵されているが、主メモリ14は、ALU11を含むプロセッサ1とは別の半導体チップに内蔵されていてもよい。その場合、主メモリ14は、バスを介してプロセッサ1と接続される。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
1 プロセッサ、11 ALU、12 レジスタファイル、13 ロード/ストアユニット、13a タイマ、13b ECC計算器、13c ECCレジスタ群、14 主メモリ、15 制御ユニット、31 アドレス計算器、32,セレクタ群、33 差分器、34 セレクタ、35 比較器

Claims (5)

  1. パイプライン処理を実行可能なプロセッサであって、
    ALUと、
    ロード/ストアユニットと、
    所定のクロックに従って動作するカウンタと、
    ECC計算器と、
    複数のECCレジスタと、
    を有し、
    前記ロード/ストアユニットは、
    記憶部にデータを書き込む時に、書き込みデータと前記カウンタのカウント値とを前記記憶部に書き込むと共に、その書き込みデータについてのECCが正しくないことを示すECC状態フラグデータを前記記憶部にセットし、そのセット後、前記ECC計算器に前記書き込みデータについての前記ECCを計算させ、前記ECCが計算して得られた後、その計算して得られたECCを前記記憶部に書き込むと共に、前記ECC状態フラグデータをリセットし、
    前記記憶部からデータを読み出す時には、前記記憶部からデータと、そのデータについての前記ECC状態フラグデータ、前記カウンタのカウント値及びECCを読み出し、読み出したデータからECCの再計算を実行し、前記読み出したデータについての前記ECC状態フラグデータがセットされている場合、読み出したカウント値から比較のためのECCレジスタを前記複数のECCレジスタの中から決定し、前記読み出したデータから再計算したECCと、前記比較のためのECCレジスタのECCとを比較し、前記読み出したデータの前記ECC状態フラグデータがセットされていない場合、前記読み出したデータから再計算して得られたECCと、読み出したECCとを比較することによって、ECCエラー判定を行うことを特徴とするプロセッサ。
  2. パイプライン処理を実行可能なプロセッサであって、
    ALUと、
    ロード/ストアユニットと、
    ECC計算器と、
    を有し、
    前記ロード/ストアユニットは、
    記憶部にデータを書き込む時に、書き込みデータを前記記憶部に書き込むと共に、その書き込みデータについてのECCが正しくないことを示すECC状態フラグデータを前記記憶部にセットし、そのセット後、前記ECC計算器に前記書き込みデータについての前記ECCを計算させ、前記ECCが計算して得られた後、その計算して得られたECCを前記記憶部に書き込むと共に、前記ECC状態フラグデータをリセットし、
    前記記憶部からデータを読み出す時には、前記記憶部からデータと、そのデータについての前記ECC状態フラグデータ及びECCを読み出し、前記ECC状態フラグデータがセットされている場合、前記データの読み出しを再実行し、前記ECC状態フラグデータがセットされていない場合、前記読み出したデータから再計算して得られたECCと、読み出したECCとを比較することによって、ECCエラー判定を行うことを特徴とするプロセッサ。
  3. 前記ロード/ストアユニットは、前記書き込みデータが前記記憶部から読み出されるデータの一部であるときには、前記書き込みデータを前記記憶部に書き込む前に、その書き込みによって更新される前のデータを前記記憶部から読み出し、前記読み出したデータと前記一部のデータとから書き込みのためのデータを生成して前記書き込みデータを前記記憶部に書き込むことを特徴とする請求項1又は2に記載にプロセッサ。
  4. 前記記憶部は、主メモリ、キャッシュメモリあるいはローカルメモリであることを特徴とする請求項1から3のいずれか1つに記載のプロセッサ。
  5. 前記記憶部は、前記ロード/ストアユニット、前記ALU、前記カウンタ、前記ECC計算器及び前記複数のECCレジスタと共に1つの半導体チップに搭載されていることを特徴とする請求項1に記載のプロセッサ。
JP2009197259A 2009-08-27 2009-08-27 プロセッサ Expired - Fee Related JP4865016B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009197259A JP4865016B2 (ja) 2009-08-27 2009-08-27 プロセッサ
US12/862,081 US8484520B2 (en) 2009-08-27 2010-08-24 Processor capable of determining ECC errors

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009197259A JP4865016B2 (ja) 2009-08-27 2009-08-27 プロセッサ

Publications (2)

Publication Number Publication Date
JP2011048681A true JP2011048681A (ja) 2011-03-10
JP4865016B2 JP4865016B2 (ja) 2012-02-01

Family

ID=43626633

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009197259A Expired - Fee Related JP4865016B2 (ja) 2009-08-27 2009-08-27 プロセッサ

Country Status (2)

Country Link
US (1) US8484520B2 (ja)
JP (1) JP4865016B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013136462A1 (ja) * 2012-03-14 2013-09-19 富士通株式会社 監視装置,情報処理装置,監視方法,および監視プログラム

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9535785B2 (en) * 2014-01-17 2017-01-03 Macronix International Co., Ltd. ECC method for flash memory
CN104810061B (zh) * 2014-01-28 2018-08-24 旺宏电子股份有限公司 存储器及其操作方法
US10176038B2 (en) 2015-09-01 2019-01-08 International Business Machines Corporation Partial ECC mechanism for a byte-write capable register
US9766975B2 (en) 2015-09-01 2017-09-19 International Business Machines Corporation Partial ECC handling for a byte-write capable register
US9985655B2 (en) 2015-09-01 2018-05-29 International Business Machines Corporation Generating ECC values for byte-write capable registers
EP3453022B1 (en) * 2016-05-02 2022-07-06 INTEL Corporation Internal error checking and correction (ecc) with extra system bits

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04369733A (ja) * 1991-06-19 1992-12-22 Nec Corp 情報処理装置
JP2002149501A (ja) * 2001-09-21 2002-05-24 Hitachi Ltd データ記憶制御装置
JP2005352906A (ja) * 2004-06-11 2005-12-22 Canon Inc 機能メモリアクセス制御システム、機能メモリ装置及びその制御方法、プログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4768197A (en) * 1986-09-15 1988-08-30 Amdahl Corporation Cache error code update
US5535226A (en) * 1994-05-31 1996-07-09 International Business Machines Corporation On-chip ECC status
US5533189A (en) * 1994-11-28 1996-07-02 International Business Machines Corporation System and method for error correction code generation
US20020029365A1 (en) * 1998-12-17 2002-03-07 Yoshimichi Sato Information processing apparatus
US6804799B2 (en) * 2001-06-26 2004-10-12 Advanced Micro Devices, Inc. Using type bits to track storage of ECC and predecode bits in a level two cache
US7320100B2 (en) * 2003-05-20 2008-01-15 Cray Inc. Apparatus and method for memory with bit swapping on the fly and testing
US7865769B2 (en) * 2007-06-27 2011-01-04 International Business Machines Corporation In situ register state error recovery and restart mechanism
US8316277B2 (en) * 2007-12-06 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for ensuring data validity in a data storage process
US7814300B2 (en) * 2008-04-30 2010-10-12 Freescale Semiconductor, Inc. Configurable pipeline to process an operation at alternate pipeline stages depending on ECC/parity protection mode of memory access
JP2010009383A (ja) * 2008-06-27 2010-01-14 Fujitsu Ltd メモリ装置、および情報処理システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04369733A (ja) * 1991-06-19 1992-12-22 Nec Corp 情報処理装置
JP2002149501A (ja) * 2001-09-21 2002-05-24 Hitachi Ltd データ記憶制御装置
JP2005352906A (ja) * 2004-06-11 2005-12-22 Canon Inc 機能メモリアクセス制御システム、機能メモリ装置及びその制御方法、プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013136462A1 (ja) * 2012-03-14 2013-09-19 富士通株式会社 監視装置,情報処理装置,監視方法,および監視プログラム

Also Published As

Publication number Publication date
JP4865016B2 (ja) 2012-02-01
US8484520B2 (en) 2013-07-09
US20110055647A1 (en) 2011-03-03

Similar Documents

Publication Publication Date Title
JP4865016B2 (ja) プロセッサ
US10365979B2 (en) Lockstepped CPU selection based on failure status
JP2011517493A (ja) 実行された命令の結果を選択的にコミットするためのシステムおよび方法
US20130152048A1 (en) Test method, processing device, test program generation method and test program generator
US20150019843A1 (en) Method and apparatus for selective renaming in a microprocessor
JP2006018413A (ja) プロセッサおよびパイプライン再構成制御方法
TWI648624B (zh) 管理用於分支預測的歷史資訊的裝置及方法
US8151096B2 (en) Method to improve branch prediction latency
JP5821332B2 (ja) リコンフィグ可能な集積回路装置
EP1770507A2 (en) Pipeline processing based on RISC architecture
JP7048612B2 (ja) ベクトル生成命令
EP1193594A2 (en) Register renaming apparatus and processor
US11372712B2 (en) Processing device and method of controlling processing device
JP2011257966A (ja) キャッシュ装置及び情報処理装置
JP7077862B2 (ja) 演算処理装置及び演算処理装置の制御方法
US8484446B2 (en) Microprocessor saving data stored in register and register saving method
JP5843804B2 (ja) 演算装置およびエラー処理方法
JP6160571B2 (ja) データ処理装置
JP5480793B2 (ja) プログラマブルコントローラ
US9021234B2 (en) Indirect designation of physical configuration number as logical configuration number based on correlation information, within parallel computing
JP6358122B2 (ja) マイクロコンピュータ
JP2824484B2 (ja) パイプライン処理計算機
JP5678687B2 (ja) 処理装置
TW202418068A (zh) 處理器及自處理器偵測軟錯誤的方法
JP2010204913A (ja) ベクトル処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110804

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111109

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141118

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141118

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees