JP2004531837A - レベル2キャッシュへのeccビットおよびプリデコードビットの記憶を追跡するためのタイプビットの使用 - Google Patents
レベル2キャッシュへのeccビットおよびプリデコードビットの記憶を追跡するためのタイプビットの使用 Download PDFInfo
- Publication number
- JP2004531837A JP2004531837A JP2003509326A JP2003509326A JP2004531837A JP 2004531837 A JP2004531837 A JP 2004531837A JP 2003509326 A JP2003509326 A JP 2003509326A JP 2003509326 A JP2003509326 A JP 2003509326A JP 2004531837 A JP2004531837 A JP 2004531837A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- instruction
- predecode
- information
- data
- 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
Links
- 238000012937 correction Methods 0.000 claims abstract description 35
- 238000000034 method Methods 0.000 claims description 36
- 230000004044 response Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000006073 displacement reaction Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012795 verification Methods 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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 codes or arrangements adapted for a specific type of error
-
- 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
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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
- G06F9/3802—Instruction prefetching
-
- 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
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一実施形態においては、このマイクロプロセッサは、プリデコードユニット(12)、命令キャッシュ(16)、データキャッシュ(28)およびレベル2キャッシュ(50)を有する。プリデコードユニットは命令バイトを受け取って、対応するプリデコード情報を生成して、これが命令バイトと共に命令キャッシュにストアされる。データキャッシュはデータバイトを受け取ってこれをストアする。レベル2キャッシュは、パリティ情報およびプリデコード情報と共に犠牲にされた命令バイトを命令キャッシュから、犠牲にされたデータバイトをエラー訂正コードビットと共にデータキャッシュから受け取って、ストアするように構成される。キャッシュラインにストアされているデータの種類を示すために、指示ビットがキャッシュライン毎にストアされ得る。
Description
【0001】
本発明は、マイクロプロセッサに関し、より詳細にはマイクロプロセッサ内での可変長命令のデコードに関する。
【背景技術】
【0002】
x86命令セット向けに記述されたソフトウェアアプリケーションの数はかなり多い。この結果、新しい、より高度な命令セットが登場しているにも関わらず、マイクロプロセッサの設計者は、x86命令セットを実行できるマイクロプロセッサの設計を続けている。
【0003】
x86命令セットは比較的複雑であり、可変長命令が複数存在するという特徴がある。図1に、一般化したx86命令セットのフォーマットを示す。本図に示すように、x86命令は、1〜5個のオプションのプリフィックスバイト102と、この後に置かれるオペレーションコード(オペコード)フィールド104、オプションのアドレス指定モード(Mod R/M)バイト106、オプションのスケール−インデックス−ベース(SIB)バイト108、オプションの変位(displacement)フィールド110およびオプションの即値データフィールド112とからなる。
【0004】
オペコードフィールド104は、特定の命令の基本的な操作を定義している。1つ以上のプリフィックスバイト102により、特定のオペコードの標準の操作を変更することができる。例えば、プリフィックスバイト102のうちの1つを使用して、命令のアドレスまたはオペランドのサイズを変更したり、メモリのアドレス指定に使用される標準のセグメントを無効化したり、文字列操作を何回も繰り返すようにプロセッサに指示することができる。オペコードフィールド104は、プリフィックスバイト102(存在する場合)の後に置かれ、長さは1〜2バイトであり得る。アドレス指定モード(Mod R/M)バイト106は、使用されるレジスタのほか、メモリアドレス指定モードを指定する。スケール−インデックス−ベース(SIB)バイト108は、スケールファクタおよびインデックスファクタ(scale and index factor)を用いる、32ビットベースの相対アドレス指定でのみ使用される。SIBバイト108のベースフィールドは、アドレス計算に用いるベース値を格納しているレジスタを指定し、SIBバイト108のインデックスフィールドは、インデックス値を格納しているレジスタを指定している。SIBバイト108のスケールフィールドは、インデックス値と掛け合わせる2のべき乗数を指定しており、この乗算によって求めた値と変位とが、ベース値に加算される。次の命令フィールドは変位フィールド110で、これはオプションであり、長さは1〜4バイトであり得る。変位フィールド110は、アドレス計算に使用される定数を格納している。オプションの即値フィールド112は、長さが1〜4バイトであり得、命令のオペランドとして使用される定数を格納している。最も短いx86命令はわずか1バイト長で、1つのオペコードバイトのみを有する。80286の命令セットの最大命令長は10バイトであるのに対し、80386および80486は、最長で15バイトの命令を許容している。
【0005】
x86命令セットの複雑さにより、高性能のx86互換マイクロプロセッサの実装において数多くの難題が生じている。特に、可変長のx86命令によって、命令のデコードが困難となる。命令のデコード処理では、通常、先ず命令の境界を決定して、次に命令に含まれる各フィールド(オペコードフィールド、オペランドフィールドなど)を特定することが行われる。デコードは、命令が実行される前に、その命令が命令キャッシュからフェッチされるときに行われることが多い。
【0006】
命令間の境界を決定する方法の1つに、各命令バイトが、メインメモリから読み出されて命令キャッシュにストアされる際に、命令バイトに対して1つ以上のプリデコードビットを生成して、ストアしておく方法がある。このプリデコードビットは、対応する命令バイトに関する情報を提供する。例えば、プリデコードのスタートビットがアサートされている場合は、対応する命令バイトが、命令の先頭バイトであることを示す。特定の命令バイトに対するスタートビットが計算されると、このスタートビットは命令バイトと共に命令キャッシュにストアされる。「フェッチ」が実行される場合、命令の実行に備えて、多数の命令バイトが命令キャッシュから読み出されてデコードされる。このフェッチと共に、対応する全てのスタートビットがスキャンされ、個々の命令に対する有効マスクが生成される。有効マスクとは、一連のビットであり、その各ビットが特定の命令バイトに対応している。命令の先頭バイトに対応する有効マスクビット、命令の最終バイトに対応する有効マスクビット、および命令の先頭バイトと最終バイトとの間に存在する全バイトに対応する有効マスクビットがアサートされる。上記以外の有効マスクビットはアサートされない。ひとたび有効マスクが計算されると、このマスクを使用して、他の命令のバイトをマスクして除去(mask off)することができる。
【0007】
図2を参照すると、有効マスクの一例が示される。本図には、フェッチ120の一部と、これに対応するスタートビット122とが示されている。命令B128に対する有効マスク126を生成しようとしていると仮定すると、スタートビット122A、ならびにスタートビット122Aとスタートビット122Bとの間の全ビットがアサートされ、マスク126が生成される。有効マスク126は、ひとたび生成されると、命令B128には属さないフェッチ120内のビットを全てマスクして除去するために使用される。
【発明の開示】
【発明が解決しようとする課題】
【0008】
上記したように、プリデコード情報は、デコード回数を減らすうえで特に有用であり得る。命令キャッシュにプリデコード情報を命令バイトと共にストアすれば、対応する命令がループ処理などによって何回も実行される場合であっても、プリデコード情報の計算は一度で済む。しかし、命令が命令キャッシュ内で置換されるか、命令キャッシュから破棄されると、対応するプリデコード情報は一切失われる。次にこの命令が命令キャッシュに読み出されるときに、プリデコード情報を再度生成する必要がある。プリデコード情報の計算が完了するまで待機することによって発生する遅延時間は、分岐予測ミスまたはキャッシュミスの結果、命令が命令キャッシュに読み出される場合に、特に性能を低下させる。必要となる前に投機的にプリフェッチされる命令とは対照的に、分岐予測ミスまたはキャッシュミスによって生ずるフェッチは、要求された命令を受け取るまで待機している間、マイクロプロセッサのデコーダおよび機能ユニットをストールさせかねない。このような場合、プリデコード情報の生成に要する時間が、マイクロプロセッサの性能の大きな低下を招く可能性がある。
【0009】
上記の理由やその他の理由によって、プリデコード時間を短縮する方法ならびに装置が所望されている。特に、命令キャッシュから前に破棄されている命令に対するプリデコード情報の生成に要する時間を短縮する方法ならびに装置が求められている。
【0010】
上記の問題に対する可能な解決策が、ルパカ マハリンガイア(Rupaka Mahalingaiah)による米国特許第6,092,182号「プリデコード情報を記憶するためのECC/パリティビットの使用(Using ECC/Parity Bits to Store Predecode Information)」に提唱されている。これは、具体的には、レベル2キャッシュのECC/パリティビットにプリデコード情報をストアするものである。場合によっては、犠牲にされた命令バイトのプリデコードによって生ずる遅延を回避でき、有利である。
【0011】
しかし、上記の解決策では、レベル2キャッシュにストアされているデータが、シングルビットエラーおよびマルチビットエラーから保護されない。現行のマイクロプロセッサの動作周波数と集積度とが共に向上していることを考慮に入れると、キャッシュ特有のエラーとして、キャッシュ内の記憶エラーが潜在的に懸念される。このため、破棄されるプリデコード情報の量を低減すると共に、頻繁に発生するタイプのエラー(シングルビットエラー等)の一部を少なくとも検出可能なシステムならびに方法が所望される。
【課題を解決するための手段】
【0012】
上記の問題は、ここに記載するように、犠牲にされた(victimized)命令のプリデコード情報をストアするためのシステムならびに方法によって少なくとも一部解決される。一実施形態においては、犠牲にされた命令のプリデコード情報をストアするように構成されたマイクロプロセッサは、プリデコードユニットとロード/ストアユニットとを備え得る。プリデコードユニットは、命令バイトを受け取って、対応するプリデコード情報を生成するように構成され得る。プリデコードユニットは、この命令バイトと対応するプリデコード情報とを命令キャッシュにストアするようにも構成され得る。ロード/ストアユニットは、データバイトを受け取って、このデータバイトをデータキャッシュにストアするように構成され得る。命令キャッシュとデータキャッシュとは、共にプロセッサの「レベル1」キャッシュを形成し得る。プロセッサは、犠牲にされた命令バイトを命令キャッシュから、犠牲にされたデータバイトをデータキャッシュから受け取ってストアするように構成されたレベル2キャッシュをも備え得る。レベル2キャッシュは、ストアされている犠牲にされた命令バイトに対するパリティ情報およびプリデコード情報、ならびにストアされている犠牲にされたデータバイトに対するエラー訂正コード(ECC)ビットを受け取ってストアするようにも構成され得る。
【0013】
一実施形態においては、マイクロプロセッサは、レベル2キャッシュにストアされている命令バイトに対するパリティビットを生成するように構成されたパリティ生成および検査ロジックも備え得る。パリティ生成および検査ロジックは、レベル2キャッシュから読み出された命令バイトに対するパリティビットを検査するようにも構成され得る。一部の実施形態においては、命令キャッシュはパリティ情報をストアするようにも構成され得、これにより、命令キャッシュにある命令バイトとレベル2キャッシュとにある命令バイトとの両方のパリティ検査が可能となる。
【0014】
同様に、マイクロプロセッサは、レベル2キャッシュにストアされているデータバイトに対するエラー検査および訂正コードビットを生成するように構成されたエラー検査および訂正ロジックも備え得る。エラー検査および訂正ロジックは、レベル2キャッシュから読み出されたデータバイトに対するECCビットを検査するように構成され得る。一部の実施形態においては、エラー検査および訂正ロジックは、レベル2キャッシュではなくデータキャッシュから読み出されたデータバイトの少なくとも1ビットのエラーを訂正するように構成することができる。
【0015】
一部の実施形態においては、レベル2キャッシュは、複数のキャッシュライン(例えば、論理行および/または論理列)に分割され得、各キャッシュラインは、犠牲にされたデータバイトまたは犠牲にされた命令バイトをストアするように構成される。レベル2キャッシュに、(a)犠牲にされた命令バイト、プリデコード情報およびパリティ情報か、(b)ECC情報およびデータバイトか、のいずれがストアされているかを示すために、レベル2キャッシュの各キャッシュラインにおいて指示ビット(「データ型」ビットとも呼ばれる)が使用され得る。一部の実施形態においては、レベル2キャッシュは、犠牲にされた命令バイトおよび犠牲にされたデータバイトのほか、これらに対応するECCビット、パリティビット、プリデコードビットおよび指示ビットだけをストアするという点で排他的であり得る。別の実施形態においては、レベル2キャッシュは、未だ犠牲にされていない命令バイトおよびデータバイトのコピーもストアするという点で包括的であり得る。
【0016】
犠牲にされたプリデコード情報をストアするためのシステムも考察される。一実施形態においては、このシステムは、命令バイトおよびデータバイトを受け取るように構成されたプロセッサを備え得る。このプロセッサは、この命令バイトによって形成された命令に従って、このデータバイトを操作するように構成され得る。システムは、犠牲にされた命令バイトおよび犠牲にされたデータバイトをプロセッサから受け取ってストアするように構成されたキャッシュも備え得る。キャッシュは、犠牲にされた命令バイトに対するパリティ情報およびプリデコード情報を受け取ってストアするように構成され得る。キャッシュは、ストアされている犠牲にされたデータバイトに対するECCビットを受け取ってストアするようにも構成され得る。キャッシュは、プロセッサが犠牲にされたデータバイトを要求すると、これに応答して犠牲にされたデータバイトおよび対応するECCビットをプロセッサに提供するように構成され得る。同様に、キャッシュは、プロセッサが犠牲にされた命令バイトを要求すると、これに応答してストアされている犠牲にされた命令バイトと対応するパリティ情報およびプリデコード情報とをプロセッサに提供するように構成され得る。プロセッサは、命令バイトに対するプリデコード情報を新たに生成する代わりに、命令キャッシュにあるプリデコード情報を使用することができ、有利である。命令バイト(例えば、自己変更コード)に書き込みが行われる場合には、ストアされているプリデコード情報が(例えば、プリデコード情報に対する無効化定数をストアするなどによって)無効化され得、新しいパリティ情報が計算され得る。
【0017】
一部の実施形態においては、キャッシュは、プロセッサと同じダイに形成されたレベル2キャッシュとして実装され得る。別の実施形態においては、キャッシュは、プロセッサとは別のダイに形成されていてもよい。一部の実施形態においては、キャッシュは、犠牲にされた命令バイト(と対応するプリデコード情報およびパリティ情報と)をストアするように構成された第1部分と、犠牲にされたデータバイトおよび対応するECC情報をストアするように構成された第2部分とに分割され得る。
【0018】
犠牲にされたプリデコード情報をストアするための方法も考察される。一実施形態においては、この方法は、命令バイトを受け取るステップと、この命令バイトに対応するプリデコード情報を生成するステップとを備え得る。次に、命令バイトとプリデコード情報とが、第1メモリにストアされ得る。第1メモリでこの命令バイトが上書きされたことに応答して、命令バイトおよびプリデコード情報の少なくとも一部分が第2メモリに出力され得る。第2メモリにストアされている命令バイトおよびプリデコード情報に対応する少なくとも1つのパリティビットが生成されて、第2メモリにストアされ得る。上記方法は、データバイトを受け取って、このデータバイトを第3メモリにストアするステップも備え得る。第3メモリでこのデータバイトが上書きされたことに応答して、データバイトの少なくとも一部分が第2メモリにストアされ得る。データバイトは、生成され、このデータバイトと共に第2メモリにストアされるECC情報を有し得る。また、第2メモリにある各キャッシュラインに対応する指示ビットが生成され、ここにストアされ得る。この指示ビットは、命令バイトならびにプリデコードビットおよびパリティ情報か、またはデータバイトおよびECC情報のいずれがストアされているかを示す。
【0019】
本発明の他の目的ならびに利点は、添付の図面を参照しつつ下記に記載する本発明の詳細な説明を参照すれば明白となる。
【発明を実施するための最良の形態】
【0020】
本発明は、様々に変形されたり代替形態を取り得るが、その特定の実施形態が、例として図中に図示され、かつ本明細書に詳細に記載される。しかし、図面および詳細な説明は、開示の実施形態に本発明を限定することを意図するものではなく、本発明が添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれる全ての変形例、均等物および代替例を含むことが意図にあることが理解されるべきである。本明細書中に使用されている見出しは、分類のみを意図しており、本詳細説明ならびに特許請求の範囲を限定するものではない。本願全体にわたり、「し得る(may)」との語は、必須(すなわち必要であることを示す)ものではなく、許容(すなわち可能性があることを示す)を示す。同様に、「含む」、「有する」、「備える」(include、including、includes)」との語は、限定ではなく含有を意図するものである。
【0021】
図3を参照すると、マイクロプロセッサ10の一実施形態のブロック図が示される。マイクロプロセッサ10は、プリフェッチ/プリデコードユニット12、分岐予測ユニット14、命令キャッシュ16、命令整列ユニット18、複数個のデコードユニット20A〜20C、複数のリザベーションステーション22A〜22C、複数個の機能ユニット24A〜24C、ロード/ストアユニット26、データキャッシュ28、レジスタファイル30、リオーダーバッファ32、およびMROMユニット34を備える。本明細書において、後に文字が付いた参照符号によって参照される複数の要素は、参照符号のみによって集合的に参照されることがある。例えば、リザベーションステーション22A〜22Cは、リザベーションステーション22として集合的に参照されることがある。
【0022】
プリフェッチ/プリデコードユニット12は、メインメモリサブシステム(図示せず)から命令を受け取るために同システムに結合され、さらに命令キャッシュ16および分岐予測ユニット14にも結合されている。同様に、分岐予測ユニット14は命令キャッシュ16に結合されている。また、分岐予測ユニット14は、命令整列ユニット18および機能ユニット24A〜Cにも結合されている。命令キャッシュ16は、さらにMROMユニット34および命令整列ユニット18に結合されている。命令整列ユニット18は、逆に、ロード/ストアユニット26のほか、デコードユニット20A〜Cの各々に結合されている。デコードユニット20A〜Cの各々はリザベーションステーション22A〜Cに結合され、リザベーションステーション22A〜Cは対応する機能ユニット24A〜Cにそれぞれ結合されている。さらに、命令整列ユニット18とリザベーションステーション22とは、レジスタファイル30およびリオーダーバッファ32に結合されている。機能ユニット24は、ロード/ストアユニット26、レジスタファイル30およびリオーダーバッファ32とも結合されている。データキャッシュ28は、ロード/ストアユニット26とメインメモリサブシステムとに結合されている。最後に、MROMユニット34は、命令整列ユニット18に結合されている。
【0023】
プリフェッチ/プリデコードユニット12によって、命令がメインメモリからプリフェッチされる。プリフェッチ/プリデコードユニット12が可変長命令を固定長命令にプリデコードし、この固定長命令が命令キャッシュ16にストアされる。プリフェッチ方式によって、命令が、実際に要求される前にプリフェッチされてプリデコードされ得る。種々のプリフェッチ方式が、プリフェッチ/プリデコードユニット12によって採用され得る。プリデコードユニット12および命令キャッシュ16に関する詳細な説明に移る前に、本図に示した例示的なマイクロプロセッサ10の実施形態の一般的な態様を記載する。
【0024】
マイクロプロセッサ10は、条件付き分岐命令に後続する命令を投機的にフェッチするために分岐予測を使用し得る。分岐予測処理を実行するために分岐予測ユニット14が設けられる。一実施形態においては、命令キャッシュ16内の各キャッシュラインの16バイト部分毎に、最大2つの分岐ターゲットアドレスがストアされる。プリフェッチ/プリデコードユニット12は、特定のラインがプリデコードされたときに、最初の分岐ターゲットを決定する。その後、キャッシュライン内の命令の実行によって、このキャッシュラインに対応する分岐ターゲットが更新され得る。命令キャッシュ16は、分岐予測ユニット14にフェッチされようとしている命令のアドレスを示す情報を提供する。これによって、分岐予測ユニット14は、分岐予測を立てる際に、選択する分岐ターゲットアドレスを決定できるようになる。命令整列ユニット18および機能ユニット24は、分岐予測ユニット14に更新情報を提供する。分岐予測ユニット14はキャッシュラインの16バイト部分につき2つの分岐ターゲットをストアしているため、このライン内にある一部の分岐命令の予測が、分岐予測ユニット14にストアされていない可能性がある。命令整列ユニット18は、分岐予測ユニット14によって予測されなかった分岐命令を検出するように構成され得る。機能ユニット24は、分岐命令を実行して、予想した分岐方向が予測ミスであるかどうかを判定する。この分岐方向を「辿る」可能性があり、この場合、後続の命令が、分岐命令のターゲットアドレスからフェッチされる。逆に、この分岐方向を「辿らない」可能性もあり、この場合、後続の命令が、分岐命令の後のメモリ場所からフェッチされる。予測誤りの分岐命令が検出されると、この誤って予測された分岐に後続する命令が、マイクロプロセッサ10の種々のユニットから破棄される。分岐予測ユニット14によって、種々の適切な分岐予測アルゴリズムが使用され得る。
【0025】
命令キャッシュ16は高速キャッシュメモリであり、プリフェッチ/プリデコードユニット12から受け取った命令をストアするために設けられる。ストアされた命令は、次に、命令キャッシュ16からフェッチされて、命令整列ユニット18に転送される。一実施形態においては、命令キャッシュ16は、セットアソシエーティブ構造として構成され得る。命令キャッシュ16は、アクセス時間を短縮するために、ウェイ予測方式を付加的に使用してもよい。例えば、命令キャッシュ16は、命令の各行を特定するタグにアクセスし、このタグを比較してアドレスをフェッチしウェイを選択する代わりに、アクセスされるウェイを予測することができる。このように、アレイにアクセスする前に、ウェイが投機的に選択される。ウェイ予測を使用することによって、命令キャッシュ16のアクセス時間が、ダイレクトマップドキャッシュと同程度となり得る。命令バイトが読み出された後に、検証のためにタグが比較される。ウェイ予測が誤りの場合は、正しい命令バイトがフェッチされ、誤った命令バイト(処理パイプラインをさらに下っている)が破棄される。命令キャッシュ16は、フルアソシエーティブ構成、セットアソシエーティブ構成、ダイレクトマップド構成のいずれでも実装可能であるという点が注目される。
【0026】
MROMユニット34は、「ファストパス命令」のシーケンスをストアするように構成されたリードオンリーメモリである。ファストパス命令とは、デコーダ20A〜Cによってデコードされ、機能ユニット24A〜Cによって実行され得る命令である。これに対して、「MROM命令」とは、複雑過ぎるためにデコーダ20A〜Cおよび機能ユニット24A〜Cによって直接デコードまたは実行ができない命令である。命令キャッシュ16がMROM命令を出力すると、MROMユニット34は、これに応答して、ファストパス命令のシーケンスを出力する。より詳細には、MROMユニット34は、MROM命令をパース(parse)し、定義済みのファストパス命令のサブセットに変換して、所望の操作が実行されるようにする。MROMユニット34は、ファストパス命令のサブセットをデコードユニット20A〜Cにディスパッチする。
【0027】
命令バイトは、命令キャッシュ16からフェッチされると、命令整列ユニット18に伝達される。命令整列ユニット18は、デコードユニット20A〜Cのうちの1つに命令を転送する。また、レジスタオペランド情報が検出されて、レジスタファイル30およびリオーダーバッファ32に転送される。さらに、命令が1つ以上のメモリ操作の実行を要求する場合、命令整列ユニット18は、このメモリ操作をロード/ストアユニット26にディスパッチする。デコードされた各命令は、オペランドアドレス情報、ならびに変位データまたは即値データ(命令に含まれていることがある)と共に、リザベーションステーション22にディスパッチされる。
【0028】
マイクロプロセッサ10はアウトオブオーダー実行に対応している。これにより、リオーダーバッファ32を使用して、レジスタリード操作およびレジスタライト操作のためにプログラムの元のシーケンスを記録したり、レジスタリネーミングを実施したり、命令の投機的実行や分岐予測ミスからの復旧を可能にしたり、厳密な例外を促進する。レジスタの更新を伴う命令がデコードされると、リオーダーバッファ32内に一時的な記憶場所が確保される。この一時的な記憶場所は、命令の投機的実行によって生じた、レジスタの投機的な状態をストアする。分岐予測が正しくない場合、誤って予測された経路に沿って投機的に実行された命令による結果が、レジスタファイル30に書き込まれる前に、これをリオーダーバッファ32内で無効化することができる。同様に、特定の命令が例外を発生させる場合、例外を発生させる命令に後続する命令を破棄することができる。このように、例外は「厳密」である(すなわち、例外を発生させる命令に後続する命令が、例外が発生する前に完了することはない)。特定の命令が、プログラムの順序においてこの命令に先行する命令より先に投機的に実行されるという点が注目される。先行する命令は、分岐命令のこともあれば、例外を発生させる命令のこともあり、この場合、投機的な実行の結果がリオーダーバッファ32によって破棄され得る。
【0029】
命令整列ユニット18の出力において提供されるデコード済みの命令と、即値データまたは変位データとは、対応するリザベーションステーション22に直接転送される。一実施形態においては、各リザベーションステーション22は、対応する機能ユニットへの発行を待機している保留中の命令の命令情報(すなわち、デコード済みの命令のほか、オペランド値、オペランドタグおよび/または即値データ)を、最大3つの命令分だけ保持することができる。図中の実施形態については、各リザベーションステーション22は、専用の機能ユニット24に対応しているという点が注目される。したがって、リザベーションステーション22および機能ユニット24によって、3つの専用の「発行位置(issue position)」が形成される。つまり、発行位置0がリザベーション22Aおよび機能ユニット24Aによって形成される。整列されてリザベーションステーション22Aにディスパッチされた命令は、機能ユニット24Aによって実行される。同様に、発行位置1がリザベーションステーション22Bおよび機能ユニット24Bによって形成され、発行位置2がリザベーションステーション22Cおよび機能ユニット24Cによって形成される。
【0030】
特定の命令がデコードされたときに、要求されたオペランドがレジスタ位置である場合は、レジスタのアドレス情報が、リオーダーバッファ32とレジスタファイル30とに同時に転送される。x86レジスタファイルは、32ビットの実レジスタを8つ(すなわち、通常はEAX、EBX、ECX、EDX、EBP、ESI、EDIおよびESP)有するということを当業者は理解するであろう。x86マイクロプロセッサアーキテクチャを採用しているマイクロプロセッサ10の実施形態においては、レジスタファイル30は、32ビットの実レジスタの各々に対応する記憶場所を有する。レジスタファイル30に、MROMユニット34が使用する付加的な記憶場所が設けられてもよい。リオーダーバッファ32は、これらのレジスタの内容を変更し、これによってアウトオブオーダー実行を可能にする結果のために、一時的な記憶場所を有する。リオーダーバッファ32内の一時的な記憶場所が、デコード時に、実レジスタのうちの1つの内容を変更するように判定される各命令のために確保される。このため、特定のプログラムの実行中のさまざまな点において、リオーダーバッファ32は、所定のレジスタの投機的に実行された内容を格納している場所を1つ以上有し得る。
【0031】
所定の命令のデコード後に、リオーダーバッファ32が、この命令においてオペランドとして使用されているレジスタに割り当てられた、先行する場所を1つ以上有することが判定された場合、リオーダーバッファ32は、1)最後に割り当てられた場所にある値か、2)やがて先行する命令を実行する機能ユニットによって値が未だ生成されていない場合には、最後に割り当てられた場所に対するタグかのいずれかを対応するリザベーションステーションに転送する。リオーダーバッファ32が、所定のレジスタ用に確保されている場所を有する場合、オペランド値(またはリオーダーバッファタグ)は、レジスタファイル30ではなくリオーダーバッファ32から提供される。要求されるレジスタのために確保された場所がリオーダーバッファ32に存在しない場合、レジスタファイル30から値が直接取得される。このオペランドがメモリ場所に対応している場合、ロード/ストアユニット26を介して、このオペランドの値がリザベーションステーションに提供される。
【0032】
特定の実施形態においては、リオーダーバッファ32は、並列的にデコードされた複数の命令を1つの単位としてストアおよび操作するように構成される。ここでは、この構成を「ライン指向型(line-oriented)」と呼ぶ。複数の命令をまとめて操作することによって、リオーダーバッファ32内に採用されているハードウェアを簡略化することができる。例えば、本実施形態に使用されているライン指向型のリオーダーバッファは、命令整列ユニット18によって1つ以上の命令がディスパッチされたときは、3つの命令の命令情報を記憶するために十分な大きさの記憶領域を必ず割り当てる。これに対して、従来のリオーダーバッファでは、実際にディスパッチされる命令の数に応じて、割り当てられる記憶領域の大きさが変わる。可変の記憶領域を割り当てるために、比較的多くの論理ゲートが必要となることがある。並列的にデコードされた複数の命令のうちの各々が実行されると、これらの命令の結果が、レジスタファイル30に同時にストアされる。この記憶領域は解放されて、並列的にデコードされる複数の命令の別の組に割り当てられる。さらに、制御論理が、同時にデコードされたいくつかの命令に分散されるため、命令1つにつき使用される制御論理回路の数が減る。特定の命令を識別する並替えバッファタグを、ラインタグとオフセットタグとの2つのフィールドに分けてもよい。ラインタグは、この特定の命令を含む、並列的にデコードされた複数の命令のセットを識別し、オフセットタグは、このセットの中のどの命令が特定の命令に対応しているかを識別する。命令の結果をレジスタファイル30にストアして、対応する記憶領域を解放する操作は、この命令の「リタイヤ」と呼ばれているという点が注目される。さらに、任意のリオーダーバッファ構成を、マイクロプロセッサ10の種々の実施形態において使用することができるという点も注目される。
【0033】
上記したように、リザベーションステーション22は、対応する機能ユニット24によって命令が実行されるまで、その命令をストアする。(i)命令のオペランドが提供され、かつ(ii)同じリザベーションステーション22A〜22C内にあり、プログラムの順序においてこの命令に先行する命令にオペランドが提供されていない場合、命令が実行のために選択される。命令が機能ユニット24のうちの1つによって実行された場合、この命令の結果が、この結果を待機しているリザベーションステーション22のいずれかに直接転送されると同時に、この結果がリオーダーバッファ32を更新するために送られる(この方法は一般に「結果転送」と呼ばれる)という点が注目される。関連する結果が転送されるクロックサイクルの間に、命令が実行のために選択されて、機能ユニット24A〜24Cに送られ得る。この場合、リザベーションステーション22は、転送された結果を機能ユニット24に送信する。
【0034】
一実施形態においては、各機能ユニット24A〜Cは、加算および減算の整数演算操作のほか、シフト操作、ローテート、論理演算および分岐処理を実行するように構成される。浮動小数点演算を処理するために、浮動小数点演算ユニット(図示せず)が使用され得るという点が注目される。浮動小数点演算ユニットは、MROMユニット34から命令を受け取り、次にリオーダーバッファ32と通信を行って命令を遂行するコプロセッサとしても動作し得る。さらに、機能ユニット24は、ロード/ストアユニット26によって実行されるロードメモリ操作およびストアメモリ操作のために、アドレス生成を行うように構成され得る。
【0035】
また、各機能ユニット24は、条件付き分岐命令の実行に関する情報を、分岐予測ユニット14に提供する。分岐予測が正しくない場合、分岐予測ユニット14は、命令処理パイプラインに既に入っている、誤って予測された分岐に後続する命令を破棄して、必要な命令を命令キャッシュ16またはメインメモリからフェッチさせる。このような場合、投機的に実行され、ロード/ストアユニット26とリオーダーバッファ32とに一時的にストアされた命令を含め、元のプログラムシーケンスにおいて、間違って予測された分岐命令に後続する命令の結果が破棄されるという点が注目される。
【0036】
レジスタ値が更新されようとしている場合、機能ユニット24によって生成された結果は、リオーダーバッファ32に送られ、メモリ場所の内容が変更される場合はロード/ストアユニット26に送られる。結果がレジスタにストアされる必要がある場合、リオーダーバッファ32は、命令がデコードされたときにレジスタの値のために確保された場所に、結果をストアする。機能ユニット24およびロード/ストアユニット26から結果を転送するために、複数の結果バス38が設けられる。結果バス38は、生成された結果のほかに、実行されようとしている命令を識別するリオーダーバッファタグを伝達する。
【0037】
ロード/ストアユニット26は、機能ユニット24とデータキャッシュ28との間のインターフェイスを提供する。一実施形態においては、ロード/ストアユニット26は、待機中のロード要求またはストア要求用に、データおよびアドレス情報を記憶するための8つの記憶場所を有するロード/ストアバッファを備えて構成される。このバッファが満杯の場合は、命令整列ユニット18は、待機中のロード要求またはストア要求に関する情報を格納するための空きが、ロード/ストアユニット26に生じるまで待機する。また、ロード/ストアユニット26は、データの一貫性が確実に維持されるように、待機中のストアメモリ操作に対するロードメモリ操作の依存関係を検査する。メモリ操作とは、マイクロプロセッサ10とメインメモリサブシステムとの間で行われるデータ転送である。メモリ操作は、メモリにストアされているオペランドを利用する命令の結果生じることもあれば、データ転送のみを生じさせるが他の操作を生じさせないロード/ストア命令の結果生じることもある。さらに、ロード/ストアユニット26は、セグメントレジスタやx86マイクロプロセッサアーキテクチャによって規定されるアドレス変換メカニズムに関わるその他のレジスタなどの特殊レジスタのための、特別なレジスタ記憶領域を備えていてもよい。
【0038】
一実施形態においては、ロード/ストアユニット26は、ロードメモリ操作を投機的に実行するように構成される。ストアメモリ操作はプログラムの順序どおりに実行されることもあれば、予測されたウェイに投機的にストアされることもある。予測されたウェイが正しくない場合、ストアメモリ操作が行われる前のデータが、その後、予測されたウェイにリストアされて、ストアメモリ操作が正しいウェイに対して実行される。別の実施形態においては、ストア操作も同様に投機的に実行され得る。投機的に実行されたストアは、更新前に、キャッシュラインのコピーと共にストアバッファに格納される。後から、投機的に実行されたストアが分岐予測ミスまたは例外のために破棄される場合、キャッシュラインが、バッファにストアされている値にリストアされ得る。ロード/ストアユニット26は、投機的実行をしない場合も含め、投機的実行を何回でも実行するように構成され得るという点が注目される。
【0039】
データキャッシュ28は、ロード/ストアユニット26とメインメモリサブシステムとの間で転送されるデータを一時的にストアするために設けられる高速キャッシュメモリである。一実施形態においては、データキャッシュ28は、8ウェイセットアソシエーティブ構造において、最大16キロバイトのデータをストアできるだけの容量を有する。データキャッシュ28は、命令キャッシュ16と同様に、ウェイ予測メカニズムを使用することができる。データキャッシュ28は、セットアソシエーティブ構成やダイレクトマップド構成など、各種のメモリ構成に実装できるということが理解される。
【0040】
x86マイクロプロセッサアーキテクチャを使用するマイクロプロセッサ10の一実施形態においては、命令キャッシュ16およびデータキャッシュ28は、リニアアドレス指定される。リニアアドレスは、命令によって指定されるオフセットと、x86のアドレス変換メカニズムのセグメント部分によって指定されるベースアドレスとから生成される。リニアアドレスは、メインメモリにアクセスするために、随意的に物理アドレスに変換されることがある。リニアアドレスから物理アドレスへの変換は、x86のアドレス変換メカニズムのページング部分によって指定される。リニアアドレス指定されたキャッシュは、リニアアドレスタグをストアするという点が注目される。リニアアドレスから物理アドレスへのマッピングを行うため、および変換エイリアス(alias)を検出するために、物理タグのセット(図示せず)が使用され得る。さらに、物理タグブロックが、リニアアドレスから物理アドレスへの変換を実行してもよい。
【0041】
(プリフェッチ/プリデコードユニットおよび命令キャッシュの構成)
上記したように、インテル(Intel)の82491/82492キャッシュSRAMなど、マイクロプロセッサの外部キャッシュとして使用するために設計されている数多くのメモリデバイスは、パリティ情報をストアするように構成され得る。一実施形態においては、8つのデータビット毎に1つのパリティビットがストアされ得る。偶数パリティが望ましいと仮定した場合、011010112というデータバイトは、アサートされたビットの総数が偶数となるように、アサートされたパリティビットを1つ有することになる。このパリティビットは、マイクロプロセッサによって生成されて、データバイトと共に外部キャッシュにストアされ得る。マイクロプロセッサがキャッシュからこのデータをリードバックした場合、マイクロプロセッサは、アサートされているデータとパリティビットとをカウントし得る。得られた値と選択されたパリティとが一致しない場合、パリティエラーが発生し、マイクロプロセッサは、オペレーティングシステムにメモリエラーの発生を知らせるなど、適切な処置を取り得る。その他のメモリデバイス構成が、エラー検査および訂正(ECC)用に、付加的なビットを割り当ててもよい。
【0042】
サーバーなどの高機能システムは通常パリティおよびECCをサポートしているが、データエラーが発生する確率は比較的低く、このため低価格から中級機のシステムの設計者の多くは、これらの機能を採用しない。この種のシステムにおいては、レベル2キャッシュにあるパリティビットおよびECCビットを、プリデコード情報のストアに使用してもよい。これによって、システムレベルで高額なハードウェアの交換を必要とすることなく、性能を有利に向上し得る。
【0043】
図4を参照すると、プリデコードユニット12および命令キャッシュ16の一実施形態の詳細を示す図が示される。この実施形態においては、プリデコードユニット12が、バスインターフェイスロジック52を介してキャッシュ50に結合されている。キャッシュ50は、マイクロプロセッサ10と同じダイ(silicon)か、またはその近く(ドーターカードもしくはマザーボートなど)でマイクロプロセッサ10に結合される別のダイ(silicon)にある、低レイテンシの広帯域幅メモリを備える。キャッシュ50は、スタティックランダムアクセスメモリ(SRAM)、シンクロナスダイナミックアクセスメモリ(SDRAM)、またはその他のタイプの低レイテンシメモリを備えていてもよい。キャッシュ50は、マイクロプロセッサ10と同じダイに存在することもあれば、別のダイに存在することもある。一部の実施形態においては、キャッシュ50は、マイクロプロセッサ10の機能ユニットに2番目に近い、すなわちレベル1の命令キャッシュ16およびデータキャッシュ28の後にくるキャッシュであるため、「レベル2」キャッシュと呼ばれることもある。また、キャッシュ50は、マイクロプロセッサの外部に存在するため、「外部キャッシュ」とも呼ばれることもある。
【0044】
バスインターフェイスロジック52は、マルチプレクサ、バッファ、トランシーバ、ドライバか、あるいはマイクロプロセッサ10とキャッシュ50との間のデータ、アドレスおよび制御信号の伝達を可能にするか伝達を向上させ得る、他のどのようなタイプのバスインターフェイスロジックを有してもよい。一部の実施形態においては、マイクロプロセッサ10とレベル2キャッシュ50との間にバスインターフェイスロジック52を設ける必要のないこともある。例えば、マイクロプロセッサ10およびレベル2キャッシュ50が互いに物理的に十分近く、かつこれらの出力トランジスタの駆動能力が十分高い場合は、バスインターフェイスロジック52を設けることなく、マイクロプロセッサ10とキャッシュ50とを相互に結合することができる。
【0045】
プリデコードロジック12は、プリフェッチされるべき命令のアドレスを分岐予測ユニット14から受け取って、バス68、バスインターフェイスロジック52およびメモリバス56を介してキャッシュ50にこのアドレスを伝達するように構成される。レベル2キャッシュ50が要求されたアドレスに対応する命令バイトをストアしている場合、所定の数の命令バイト(例えば、32バイトのキャッシュライン1つなど)が、バス56、バスインターフェイスロジック52およびバス68を介してプリデコードユニット12に伝達される。要求された命令バイトがレベル2キャッシュ50にストアされていない場合、キャッシュ50は、メインメモリサブシステムから要求された命令バイトを取得するように構成される。要求された命令バイトは、メインメモリサブシステムから送信されると、命令キャッシュ16に伝達される。また、要求された命令バイトは、キャッシュ50にストアされ得る。
【0046】
プリデコードユニット12は、要求された命令バイトを受け取ると、各命令バイトに対するプリデコード情報を生成する。本図に示した実施形態においては、プリデコードユニット12は、各命令バイトにつき1つのスタートビットを生成する。要求されたアドレスの出力に応答して、プリデコードユニット12が32バイト(例えば、1つのキャッシュライン)を受信すると仮定すると、プリデコードユニット12は、各命令バイトにつき1つのスタートビットを生成し、合計32個のスタートビットを生成するように構成され得る。スタートビットが生成されると、このスタートビットは、命令キャッシュ16に伝達されて、対応する命令バイトと共にここにストアされる。命令キャッシュ16は、複数のキャッシュライン記憶場所64および複数のプリデコード情報記憶場所62にローカルに構成され得、このとき、各キャッシュライン記憶場所に1つのプリデコード情報記憶場所が対応している。また、命令バイトとプリデコードビットとが、命令整列ユニット18に直接送信されてもよい。
【0047】
命令キャッシュ16内の全てのキャッシュライン記憶場所62がひとたび満杯になると、さまざまなアルゴリズムを用いて、キャッシュミスの発生時に、どのキャッシュラインを置換すべきかどうかを決定してもよい。例えば、近いうちに必要となる情報が破棄される可能性を減らすために、キャッシュアクセスの順序を記録する最長時間未使用(LRU)置換法を使用してもよい。上書きすべきキャッシュラインが選択されると、対応するプリデコード記憶場所62にストアされている、このキャッシュラインに関連するプリデコード情報が、命令キャッシュ16からプリデコードユニット12およびバスインターフェイスロジック52を介してキャッシュ50に出力される。プリデコードユニット12は、上書きされようとしている命令キャッシュ情報に対応するアドレスも伝達する。
【0048】
キャッシュ50がプリフェッチユニット12および命令キャッシュ16からプリデコードビットと、対応するアドレスとを受け取ると、キャッシュ50は、このプリデコードビットを、対応するアドレスに関連付けられているパリティビット記憶場所60内にストアするように構成される。一部の実施形態においては、命令キャッシュ16内で上書きされるべき実際の命令バイトも、キャッシュ50に出力されて、プリデコードビットと共に記憶され得る。マイクロプロセッサ10の一部の実施形態においては、この構成は自己変更コードをサポートするために有利であろう。例えば、ストア命令によって、命令キャッシュ16内にストアされた命令バイトが上書きされるかどうかを決定するために、ストアアドレスが命令キャッシュ16によって「覗かれる」。上書きされる場合、ストア命令が命令キャッシュ16およびデータキャッシュ28に対して実行され、これによって所望の命令バイトが変更され得る。このような構成においては、プリデコードユニット12は、変更された命令用にプリデコード情報を再計算して、計算したプリデコードビットを命令キャッシュ16にストアするように構成され得る。キャッシュ50がライトバックキャッシュとして構成された場合、命令キャッシュ16内で、変更された命令バイトをストアしているキャッシュライン記憶場所が上書きされたときに、変更された命令バイトが後からキャッシュ50に書き込まれ得る。
【0049】
プリデコード情報(および構成によっては命令バイト)がキャッシュ50に書き込まれた後に、命令キャッシュ16内のキャッシュライン記憶場所およびプリデコード情報記憶場所は、新しい命令バイトと新しいプリデコード情報とによって安全に上書きされ得る。プリデコードユニット12が、キャッシュ50に出力済みの命令バイトに対するプリフェッチ要求またはフェッチ要求を受け取ると、プリデコードユニット12は、要求されたアドレスをキャッシュ50に出力する。キャッシュ50が、対応する命令バイトおよびプリデコード情報を未だストアしている(すなわち、これらが置換されていない)場合、キャッシュ50は、これらをプリデコードユニット12に伝達するように構成され得る。プリデコードユニット12は、命令バイトおよび対応するプリデコード情報を、命令整列ユニット18と命令キャッシュ16とに転送し得る。この実施形態では、要求された命令バイトに対する新しいプリデコード情報を生成する処理を省略することができ有利である。上記したように、マイクロプロセッサ10の一部の実施形態においては、分岐予測ミスおよび/またはキャッシュミスが発生したときに、機能ユニット24A〜Cがストールするおそれがある場合、これが特に有利であろう。
【0050】
これに対して、キャッシュ50が、所望の命令バイトを、別のアドレスに存在する他の命令バイトによって既に置換している場合、キャッシュ50は、要求されたバイトをメインメモリから取得して、プリデコードユニット12に伝達するように構成され得る。キャッシュ50は、この命令バイトをプリデコードユニット12に送信するときに、転送しようとしている命令バイトに対する有効なプリデコード情報を命令キャッシュ50が有していないことを示すために、特定の制御信号をアサートするように構成され得る。
【0051】
別の実施形態においては、制御ユニット80が、キャッシュ50をモニタして、プリデコードビットの特定の無効化シーケンスを、メインメモリから受け取った新しい命令バイトによって置換されようとしている命令記憶場所58に対応するパリティ/ECC記憶場所60にストアしてもよい。このシーケンスは、新しい命令バイトのために、プリデコード情報を効率的に「初期化する」。この構成においては、キャッシュ50は、命令バイトがプリデコードユニット12によって要求されたときに、対応するプリデコードビットの無効化シーケンスを出力するように構成してもよい。この構成では、キャッシュ50は、パリティ/ECCをサポートし、出力するプリデコードビットが有効であるか無効であるかを認識するためにどのような場合でも変更する必要のない標準のキャッシュであってもよく、有利である。別法として、プリデコードユニット12が、キャッシュ50から受け取ったプリデコードビットを検査するように構成してもよい。プリフェッチユニット12は、プリデコードビットが所定の無効化シーケンスと一致する場合に、新しいプリデコード情報を計算するように構成され得る。プリフェッチユニット12は、プリデコードビットが所定の無効化シーケンスと一致しない場合に、レベル2キャッシュ50からのプリデコードビットを、命令キャッシュ16(および必要であれば整列ユニット16/デコードユニット20A〜C)に転送するように構成され得る。
【0052】
バス56,68の幅は、16ビット、32ビット、64ビットまたは128ビットなど、利便性の高い幅であればどのような幅であってもよい点に留意すべきである。データバス、アドレスバスおよび制御バスを多重化して、使用するバス線の本数を減らしてもよい。一部の実施形態においては、プリデコード12およびレベル2キャッシュ50は、送受信されるアドレス用にパリティビットを生成するように構成され得る。しかし、これらのパリティビットは、各アドレスが伝達された後にストアされている必要がなく、破棄されてもよい。
【0053】
さらに別の実施形態においては、スタートビットに加えてプリデコード情報が、プリデコードユニット12によって生成され、命令キャッシュ16にストアされ得る。例えば、対応する命令バイトが命令の最終バイトであるかどうかを示すエンドビットと、関連する命令バイトがオペコードバイトであるかどうかを示すオペコードバイトが、プリデコードユニット12によって生成され、命令キャッシュ16内にストアされてもよい。これらのプリデコードビットの一部または全部は、キャッシュ16内で命令バイトが置換されたときに、キャッシュ50内で利用可能なパリティビットおよび/またはECCビット60の数によっては、キャッシュ50に伝達されてもよい。
【0054】
一部の実施形態においては、デコードユニット20A〜Cは、プリデコードユニット12によって提供されたか、命令キャッシュ16から読み出されたプリデコード情報が誤っていることを検出するように構成され得る。プリデコード情報の誤りは、様々な理由で発生することがあり、この理由はプリデコード情報を生成する方法によって変わり得る。プリデコード情報が正しくない場合、デコードユニット20A〜Cはストールするが、プリデコードユニット12がプリデコード情報を生成するように構成され得る。続いて、誤ったプリデコード情報の上に、新しいプリデコード情報が命令キャッシュ16に書き込まれ得る。別の実施形態においては、デコードユニット20A〜Cは、単に誤ったプリデコード情報を破棄して、デコードユニットが自らデコードを実行するように構成され得る。
【0055】
図5を参照すると、命令キャッシュ16およびキャッシュ50の一実施形態がさらに詳細に示される。上記したように、命令キャッシュ16に、命令記憶場所62とプリデコード情報記憶場所64とが設けられ得る。各プリデコード情報記憶場所は、1つの命令記憶場所に対応している。例えば、記憶場所80にストアされているプリデコード情報は、命令記憶場所82にストアされている命令バイトに対応している。本図の実施形態においては、記憶場所80は、場所82にストアされている各命令バイトに対応するスタートビットをストアしている。
【0056】
本図に示すように、キャッシュ50は、命令キャッシュ16と同じ命令バイトをストアし得る。例えば、コードセグメント72にある命令が初めて要求されたときに、これらは、メインメモリから、レベル2キャッシュ50と命令キャッシュ16とに読み出され得る。しかし、レベル2キャッシュ50は、コードセグメント72に対応するプリデコードデータを有していないことになるという点に留意すべきである。このため、所定の無効化定数(本例においては00000000...)が場所90にストアされる。プリデコードユニット12は、命令バイトを受け取ると、無効化定数を検出して、コードセグメント72に対するプリデコード情報の計算を続行する。次に、このプリデコード情報が、命令キャッシュ16内の記憶場所80にストアされる。
【0057】
同じ処理は、コードセグメント78内の命令が最初に要求される場合にも発生する。しかし、命令キャッシュ16においてコードセグメント78に対応する命令バイトが置換されると、プリデコード情報がレベル2キャッシュ50にライトバックされて、場所94にストアされる。コードセグメント78が、命令キャッシュ16において置換された後であり、かつレベル2キャッシュ50において置換される前にコードセグメント78が再度要求された場合、コードセグメント78に対応する命令バイトとプリデコード情報とが場所94,96から読み出されて、命令キャッシュ16にストアされ得る。この状態が本図に示されている。
【0058】
一部の実施形態では、任意の所定のビットシーケンスを無効化定数として使用できるが、プリデコードユニット12によって生成される可能性のないプリデコードビットシーケンスを選択することが有利であろう。例えば、命令の最大長が16バイトで、キャッシュライン長が32バイトであると仮定した場合、プリデコードユニット12が、少なくとも1つの開始バイトもなしに、32個の連続する命令バイトを有するキャッシュラインを受け取る可能性は低い。このため、32個のゼロを有する無効化定数を選択すれば、無効化の誤りを低減でき、有利となり得る。プリデコードユニット12によって計算されたプリデコードビットが、所定の無効化定数と等しい場合、無効化の誤りが発生し得る。無効化の誤りが発生した場合、たとえ元のプリデコードビットが正しかったとしても、キャッシュ50から読み出された元のプリデコードビットが破棄されて、新しいプリデコードビットが計算され得る。
【0059】
一実施形態においては、上記の諸機能が、マイクロプロセッサ10内のみに実装され得る。例えば、制御ユニット80の機能を、省略してもマイクロプロセッサ10に搭載してもよい。同様に、一部の実施形態においては、バスインターフェイスロジック52を省略してもマイクロプロセッサ10に搭載してもよい。上記の諸機能をマイクロプロセッサ10内に完全に実装すれば、開示のようにプリデコード情報をストアするコンピュータシステムを実装する費用が有利に低減し得る。別の実施形態においては、所望の機能を、マイクロプロセッサ10と、1つ以上のインターフェイスまたはサポートチップとに分散させてもよい。
【0060】
図6を参照すると、レベル2キャッシュ50にプリデコード情報をストアするための方法の一実施形態を示すフローチャートが示される。最初に、命令バイトが命令キャッシュ16から要求される(ステップ140)。要求されたバイトが命令キャッシュ16にストアされている場合、これらが、対応するプリデコード情報と共に、整列ユニット16およびデコードユニット20A〜Cに伝達される(ステップ142,152)。これに対し、要求されたバイトが命令キャッシュ16にストアされていない場合、要求されたアドレスがレベル2キャッシュ50に転送される(ステップ142,144)。要求された命令バイトがレベル2キャッシュ50にストアされていない場合、この命令バイトがメインメモリサブシステムから読み出される(ステップ146,148)。要求された命令バイトがメインメモリサブシステムから受信されると、この命令バイトが無効化定数と共にレベル2キャッシュ50にストアされる(ステップ148,150)。上記したように、無効化定数は、レベル2キャッシュ50内のプリデコード記憶場所を効率的に初期化して、これによってプリデコードユニット12に、新しいプリデコード情報を生成する必要があることを知らせる。プリデコードユニット12が命令バイトおよびプリデコードビットを受け取ると、プリデコードビットが無効化定数と等しいかどうかが検査される(ステップ154,156)。プリデコードビットが無効化定数と等しい場合、プリデコードユニット12は、新しいプリデコード情報を生成するように構成されている(ステップ156,164)。続いて、命令バイトと新しいプリデコード情報とが、命令キャッシュ16にストアされる(ステップ158)。命令バイトおよび新しいプリデコード情報をストアするには、命令キャッシュ16に既にストアされているキャッシュラインを置換する必要がある場合、上書きされようとしているストア済みのキャッシュラインに対応するプリデコード情報が、レベル2キャッシュ50に戻されてストアされる(ステップ160,166)。
【0061】
本図の各ステップは、説明のみを目的として、逐次的に示されているという点に留意すべきである。別の実施形態も可能であり、考慮される。上記のステップのうちの多くは組み合わせて実行しても、並列的に実行してもよい。例えば、ステップ150,154は並列に実行することができる。さらに、上記したように、無効化定数を使用するステップを省略することができる。
【0062】
(パリティ情報および/またはECC情報と犠牲にされた命令バイトおよび犠牲にされたデータバイトとのストア)
上記の実施形態の不具合の1つに、パリティビットおよび/またはECC(エラー検査および訂正)ビットがプリデコード情報のストアに使用されるために、レベル2キャッシュにストアされている命令バイトおよびデータバイトが、シングルビットエラーおよびマルチビットエラーから保護されないという点がある。しかし、一部の実施形態においては、上記の方法ならびにシステムを変更して、レベル2キャッシュにストアされているデータおよび命令バイトを、シングルビットエラーおよび/またはマルチビットエラーから少なくともある程度保護することができる。
【0063】
図7Aを参照すると、レベル2キャッシュにプリデコード情報をストアする一方で、ストアされた命令バイトおよびデータバイトを、シングルビットエラーおよびマルチビットエラーから保護するためのこの種のシステムの実施形態のうちの1つを示す。キャッシュは、キャッシュラインと呼ばれることが多い、論理行および/または論理列に構成される。本図に示すように、命令キャッシュ16内の各キャッシュラインは、ストアされている命令バイト184Aに対応するパリティビット180Aおよびプリデコード情報182Aをストアし得る。上記の実施形態に関して記載したように、プリデコードビット182Aは、命令バイト184Aに関する情報(例えば、開始バイト、終了バイト、オペコードバイトに関する情報)を提供する。上記したように、プリデコードビット182Aは、命令バイト184Aのデコードに要する時間を短縮するために使用され得る。例えば、命令バイト184A内にある開始バイトおよび終了バイトを示しているプリデコードビット182Aは、命令バイト184A内の命令を迅速に整列するために使用され得る。プリデコードビット182Aおよび命令バイト184Aの合計に基づいて、偶数パリティまたは奇数パリティのいずれかを生成するために、パリティビット180Aが計算されてもよい。別の実施形態においては、パリティビット180Aは、命令バイト184Aのみに基づいて計算されてもよい(この場合、命令バイト184Aのみの奇数ビットエラーしか検出できない)。この実施形態においては、命令バイト184Aはより強力に保護される一方で、プリデコードビット182Aは保護されない可能性がある。プリデコードビット182Aが単に予想的な値に過ぎない実施形態においてはこれが許容され得る。例えば、プリデコードビット182Aは、後から無効であると判定される可能性がある。
【0064】
また、データキャッシュ28も、数多くのキャッシュラインを設けて構成され得る。各キャッシュラインが、自身のデータバイトのセット188Aと、対応するECCビット186Aとを有してもよい。上記のように、ECCビット186Aは、データバイト188A内のシングルビットエラーと一部のマルチビットエラーとを検出できるように選択されてもよい。一部の実施形態においては、ECCビット186Aは、シングルビットエラーの検出および訂正が可能となるようなアルゴリズムに従って選択されてもよい。
【0065】
本明細書で使用されるように、ECC情報とはエラー訂正コード情報を指す。デジタル電子システムにおいては、情報はバイナリ形式(すなわち1または0)で表される。バイナリ情報がある点から別の点に渡されたり、メモリにストアされる場合には、エラーが発生する可能性が常に付いて回る。例えば、1が0と解釈されたり、0が1と解釈されることがある。このエラーは、媒体の欠陥、電気的雑音、部品の故障、接続不良のほか、老朽化、放射または他の要因による劣化によって発生し得る。ビットが誤って解釈された場合、「ビットエラー」が発生したといわれる。エラー訂正とは、このようなビットエラーエラーを検出して訂正する処理のことである。エラー訂正はハードウェアでもソフトウェアでも実行することができるが、ソフトウェアによる解決策は処理があまりにも遅いことが多いため、高データレートを得るためには、エラー訂正は好ましくは専用のハードウェアで実行される。メモリ密度と動作周波数とが向上するにつれて、シングルビットエラーまたはマルチビットエラーの発生確率も上がり得る。このため、エラー訂正コードのサポートは、一層重要になると考えられる。例えば、一部の携帯式システムにおいては、エラー訂正コードは、メモリのリフレッシュレートを大幅に低減させることによって、システムのバッテリの長寿命化に利用されている。本明細書に開示のシステムならびに方法は、さまざまなECCアルゴリズムによって実装でき、有利である。アルゴリズムの選択は、メモリ構造と、ECC情報のストアに利用可能なビットの数とから決まり得る。一部の実施形態においては、ECCビット186Aおよびデータバイト188Aを、ECCアルゴリズムの一部に組み入ることができるという点にさらに留意すべきである。
【0066】
本明細書で使用されるように、パリティ検査は、メモリシステムにおけるシングルビットエラーの検出方法としては不十分である。パリティをサポートしているメモリは、通常、メモリに記憶される1バイトにつき、1つの余分なビットを付与するが、他の構成も可能である。この余分なビットは、エラーを検出できるようにする情報のストアに使用される。このシステムメモリにストアされるデータの各バイトは、実データを表す8つのビットを有し、各ビットは1または0の値を取る。このため、バイト中の0または1の個数を数えることができる。例えば、10110011というバイトには0が3個、1が5個含まれる。00100100というバイトには、0が6個、1が2個含まれる。このように、1の個数が偶数であるバイトもあれば、1の個数が奇数であるバイトもある。パリティ検査が有効になっている場合、バイトがメモリに書き込まれる度に、パリティ生成器/検査器と呼ばれる論理回路がこのバイトを検査して、データバイト中の1の個数が偶数か奇数かを判定する。1の個数が偶数の場合は9番目のビット(すなわちパリティビット)が1に設定され、奇数の場合には0に設定される。この結果、元の8つのデータビットに含まれる1の個数を問わず、9個の全ビットを検査したときの1の個数は常に奇数となる。この実装は「奇数パリティ」と呼ばれる。また、パリティ生成器/検査器が、1の合計個数が必ず偶数になるように設定する偶数パリティも可能である。
【0067】
データがメモリからリードバックされる場合には、パリティ回路は今度は検査器として動作する。パリティ回路は、9個の全ビットを読み出し、1の個数が奇数か偶数かを判定する。1の個数が偶数の場合、奇数のビット中にエラーが発生したと考えられる。このように、シングルビットエラーを検出するためにパリティメモリが使用される。上記のECCの例とは異なり、パリティ生成器/検査器回路は、1つのビットが正しくないことを検出できるが、正しくないビットを特定することはできない。パリティ生成とパリティ検査とは、メモリの読出操作または書込操作中に並列的に実行することができるため有利である。このため、パリティ生成とパリティ検査とが、メモリシステムの動作速度の低下を招くことはない。
【0068】
一部の実施形態においては、エラー検査および訂正コードも並列的に実行してもよい。別の実施形態においては、エラー検査および訂正コードは逐次処理として実行され得る。この場合、検出された任意のエラーを、エラー検査および訂正回路に訂正させる時間のため、システムの動作がわずかに遅くなる。しかし、この遅延は、メモリアーキテクチャの実装によって決まり、比較的小さい(例えば、2〜3%)と考えられる。
【0069】
図7Aに戻ると、一実施形態においては、命令およびデータキャッシュ28は、セットアソシエーティブ方式で構成することができる。したがって、各セットは、列に対応する多数の「ウェイ」を有する。ECCビット186Aは、特定のキャッシュライン内のデータ(すなわち、1つの列と1つの行との交点または単一のウェイ)に対応し得る。命令キャッシュ16も同様に構成され得る。このため、命令キャッシュ16内の各キャッシュラインは、それぞれパリティビット180Aとプリデコードビット182Aとの組を有し得る。一部の実施形態においては、レベル2キャッシュ50は、プロセッサ10のダイに実装され得る。これによって、レベル2キャッシュ50がプロセッサ10と同一周波数で動作できるようになり、有利である。
【0070】
一実施形態においては、レベル2キャッシュ50は、競合ミスの結果、メモリサブシステムにライトバックされるべき犠牲にされた、すなわちコピーバックのキャッシュブロックのみを格納する「排他的」キャッシュとして構成され得る。犠牲にされた、すなわちコピーバックという用語は、以前にレベル1キャッシュ(すなわち命令キャッシュ16およびデータキャッシュ28)に格納されていたが、より新しいデータを格納する余地を作るために上書きされた(犠牲にされたまたは追い出された)キャッシュブロックを指す。一実施形態においては、レベル2キャッシュ50は256キロバイトで、命令キャッシュ16およびデータキャッシュ28は各々64キロバイトであり、このためプロセッサ10が占有できる記憶領域が384キロバイトとなり得る。上記のキャッシュ容量は一例であり、プロセッサ10の正確な実装に応じて、キャッシュ容量の変更が可能であり得るという点に留意すべきである。同様に、レベル2キャッシュ50を、プロセッサ10に対してオフチップに実装してもよい。別の実施形態においては、レベル2キャッシュ50は、命令キャッシュ16およびデータキャッシュ28にある全データのコピーを格納している「包括的」キャッシュとして実装されてもよい。さらに、別の実施形態では、命令キャッシュ16とデータキャッシュ28との記憶容量を変えてもよい。一部の実施形態においては、レベル2キャッシュ50をセットアソシエーティブキャッシュとして実装してもよい。
【0071】
本図に示すように、命令キャッシュ16内の特定のキャッシュラインが、新しい命令バイトをストアするために必要となる場合、前にプリデコードされていた命令バイト(182A,184A)が「犠牲にされる」。レベル2キャッシュ50は、(a)プリデコード情報およびパリティ情報を伴う命令バイト、または(b)ECC情報を伴うデータバイトのいずれもストアできるため、レベル2キャッシュ50にストアされている情報の種類を示す指示ビット(例えばコード指示ビット190)がストアされ得る。この指示ビット190は、デマルチプレクサ316によって使用され、出力320が、パリティ検査ユニット314からの出力であるか、エラー検査および訂正ユニット312からの出力であるかが選択され得る。デマルチプレクサ316は、パリティ検査ユニット314またはエラー検査および訂正ユニット312から、エラーの発生を示す情報を受け取ると、エラー割込信号318をアサートすなわち出力するようにも構成され得る。例えば、デマルチプレクサ316は、パリティ検査ユニット314がパリティエラーが発生したと判断した場合に、割込信号318をアサートするように構成され得る。同様に、デマルチプレクサ316は、エラー検査および訂正ユニット312から対応するエラー信号を受け取ると、これに応答してエラー信号318をアサートするように構成され得る。本図に示すように、エラー検査および訂正ユニット312は、ECCビット186Bとデータバイト188Bとを受け取るように構成され得る。
【0072】
パリティ検査ユニット314は、パリティビット180B、プリデコードビット182Bおよび命令バイト184Bを受け取るように構成され得る。上記したように、パリティビット180Bは、プリデコードビット182Bおよび命令バイト184Bに含まれる、アサートされたビットの数を判定することによって生成され得る。本図に示すように、指示ビット190,192は、レベル2キャッシュ50の対応するキャッシュラインに、命令コードとデータバイトとのいずれがストアされているかを示し得る。デマルチプレクサ316は、パリティ検査ユニット314からの出力とECCユニット312からの出力とを選択するための、指示ビットまたはデータ型ビット170(例えば、ビット190,192)を受け取るように構成され得る。
【0073】
本図に示すように、命令キャッシュ16内の各キャッシュライン毎に1つのパリティビット180Aがストアされ得る。例えば、パリティビット180Aは、キャッシュライン300に対するパリティを示すために使用され得る。同様に、ECCビット186Aは、データキャッシュ28にあるキャッシュライン302内のデータバイト188Aのエラー検出および訂正のために使用され得る。本図ではレベル2キャッシュ50がダイレクトマップドキャッシュとして示されているが、レベル2キャッシュ50は、複数の列またはウェイを有するセットアソシエーティブキャッシュまたはフルアソシエーティブキャッシュとして実装されてもよい。本図に示すように、新しいデータが命令キャッシュ16およびデータキャッシュ28に書き込まれ、データが上書きされる(すなわち犠牲となる)ことに応答して、レベル1のキャッシュライン300,302がレベル2キャッシュ50に書き込まれ得る。
【0074】
本図には記載されていないが、パリティユニット314を使用して、命令キャッシュ16からの読み出し(プロセッサの整列ユニット、デコードユニットおよび実行ユニットに転送する命令の読み出しや、レベル2キャッシュ50に送られる犠牲にされた命令の読み出しを含む)に対してパリティ検査を実行してもよい。別の実施形態においては、パリティユニット314の別例が実装され、この機能が提供される。同様に、エラー検査および訂正ユニット312(またはその別例)を使用して、データキャッシュ28からの読み出しに対してデータのエラー検査および訂正を実施してもよい。
【0075】
一実施形態においては、レベル2キャッシュ50は、2つの部分として実装され、各部分が別の種類の情報をストアしてもよい。例えば、レベル2キャッシュ50の第1部分は、命令バイトと、対応するプリデコードビットおよびパリティビットのみをストアするように構成され得る。レベル2キャッシュ50の第2部分は、データバイトおよびECCビットのみをストアするように構成され得る。レベル2キャッシュのこの実施形態によって、データ型ビット170(例えば、コードビット190およびデータビット192)をストアする必要性を低減させる可能性があり、有利である。しかし、この種の構成は、命令バイトとデータバイトとの比率が異なる別のプログラムが複数実行されたときに、レベル2キャッシュ50の効率の低下を招く可能性がある。データ型ビット170は、情報が、レベル1キャッシュのいずれの部分(すなわち、命令キャッシュ16またはデータキャッシュ28)から送られたかを識別することによって生成され得るという点に留意すべきである。例えば、命令キャッシュ15からの情報には、この情報が命令コード情報であることを示すデータ型ビットが自動的に提供され得る。同様に、レベル2キャッシュ50にストアされようとしているデータキャッシュ28からの情報には、この情報がデータであることを示すデータ型指示ビット(例えば、データビット192)が自動的に提供され得る。
【0076】
図7Bを参照すると、犠牲にされた命令バイトおよびプリデコード情報をストアするためのシステムの別の実施形態が示される。この実施形態においては、パリティ情報が命令キャッシュ16にストアされず、ECC情報がデータキャッシュ28にストアされない。これは、命令キャッシュ16およびデータキャッシュ28の実装に要するダイのスペースを有利に低減させ得る。これに代わり、命令バイト184Aが命令キャッシュ16から読み出されて、レベル2キャッシュ50に書き込まれるときに、パリティユニット402が、命令バイト184Aに対するパリティビットを生成し得る。同様に、データバイト188Aがデータキャッシュ28から読み出されて、レベル2キャッシュ50にストアされるときに、レベル2キャッシュが、データバイト188Aに対するECCビットを生成するように構成され得る。このシステムの他の部分の動作は、図7Aの実施例と同じである。
【0077】
図8Aを参照すると、プリデコード情報をストアするための方法の一実施形態が示される。本実施形態においては、所望の命令バイトのセットをロードするためにフェッチが開始される(ステップ240)。このフェッチを受けて、命令キャッシュがサーチされ、命令キャッシュが所望の命令バイトをストアしているかどうかが判定される(ステップ242)。命令キャッシュが所望の命令バイトをストアしている場合、命令バイトと対応するプリデコード情報とが命令キャッシュから読み出される(ステップ252)。これは「命令キャッシュヒット」と呼ばれ、通常は命令キャッシュはメモリシステムの残りの部分よりも低レイテンシであるため好ましいことが多い。しかし、所望の命令バイトが命令キャッシュにストアされていない場合は、レベル2キャッシュからこの命令バイトが要求され得る(ステップ244)。上記したように、一部の実施形態においては、レベル2キャッシュは、プロセッサおよびレベル1キャッシュと同じチップ(すなわちダイ)に実装されてもよい。所望の情報がレベル2キャッシュにストアされていない場合(ステップ246)、この命令バイトと対応するパリティ情報とがメインメモリから読み出され得る(ステップ248)。当業者が理解しているように、メインメモリサブシステムとして、レベル2キャッシュより下位のキャッシュがさらに存在してもよい。一部の実施形態においては、メインメモリサブシステムは、パリティ情報またはECCをサポートするように構成され得る。例えば、メインメモリサブシステムは、メインメモリに書き込まれるデータおよびメインメモリから読み出されるデータに対するパリティビットまたはECCビットをストアするように構成され得る。しかし、別の実施形態においては、メインメモリサブシステムが、パリティ情報および/またはECC情報をストアまたはサポートしなくてもよい。
【0078】
一部の実施形態においては、レベル2キャッシュは、レベル1キャッシュにある全情報のコピーをストアするように構成され得る。このような実施形態においては、メインメモリから読み出された命令バイトは、パリティビットおよび指示ビット(例えば、データ型ビット)のほか、この命令バイトのプリデコードビット(未だ生成されていない)に対する無効化定数と共にレベル2キャッシュにストアされ得る。プリデコードビットが既に生成されている場合や、ひとたびプリデコードビットが生成されると、プリデコードビットが、無効化定数を上書きして、レベル2キャッシュにストアされ得る(ステップ250)。しかし、上記したように、レベル2キャッシュは「排他的」であり、このため別の実施形態では、レベル1キャッシュからの犠牲にされた情報のみがストアされてもよい。このような実施形態においては、メインメモリサブシステムから読み出された命令バイトは、処理のこの段階ではレベル2キャッシュにストアされなくてもよい。1つ以上のプリデコードユニットは、命令バイトがメインメモリサブシステムから受信されると、この命令バイトに対するプリデコードビットを生成するように構成され得る(ステップ252)。
【0079】
メインメモリから読み出された情報に対するパリティ検査をサポートする実施形態においては、プリデコードユニット(またはパリティユニット)は、メインメモリから正しいデータが受信されたことを保障するため、パリティを検査するように構成され得る(ステップ254)。一部の実施形態においては、パリティの検出は、プリデコードユニットが、対応するプリデコードビットを生成する処理と並列的に実行されても、この前に実行されてもよいという点に留意すべきである。エラーが存在する場合、プリデコードユニットは、プロセッサに対してエラー信号または割込みをアサートするように構成され得る(ステップ256)。パリティ検査がエラーを通知しなかった場合は、メインメモリサブシステムから読み出されたプリデコードビットが無効化定数と等しいかどうかが検査され得る(ステップ258)。
【0080】
プリデコードビットが無効化定数と等しい場合、プリデコードユニットは新しいプリデコード情報を生成するように構成され得る(ステップ260)。プリデコードビットが無効化定数と等しくない場合、プリデコードユニットは、命令バイトと以前に生成済みのプリデコードビットとを命令キャッシュにストアするように構成され得る(ステップ262)。一部の実施形態においては、命令キャッシュは、命令バイトに対するパリティビットもストアするように構成され得るという点に留意すべきである。別の実施形態においては、命令バイトが命令キャッシュから読み出されて、レベル2キャッシュにストアされる(すなわち犠牲にされる)と、この命令バイトに対するパリティビットが生成されてもよい。このため、一部の実施形態においては、パリティ検査がレベル2キャッシュに対してのみ実施され得る。別の実施形態においては、命令キャッシュ(すなわちレベル1キャッシュ)と、レベル2キャッシュとの両方に対してパリティ検査が実行されてもよい。さらに、一部の実装においては、メインメモリサブシステムに対してパリティ検査が実行されてもよい。
【0081】
プリデコードビットが無効化定数と等しい場合、プリデコードユニットは、命令バイト、プリデコードビットおよびパリティ情報を命令キャッシュにストアするように構成され得る(ステップ262)。このデータがすぐに必要とされる場合、命令バイトが、デコードユニットにも提供されて処理され得る。しばらく経った後に、命令バイトとプリデコード情報とをストアしている、命令キャッシュにある対応するキャッシュラインが、上書きすなわち犠牲にされ得る(ステップ264)。この場合、命令キャッシュからのプリデコード情報と命令バイトとは、対応するパリティビットおよびデータ型ビットと共にレベル2キャッシュにストアされ得る(ステップ266)。
【0082】
図8Bを参照すると、犠牲にされたデータバイトを処理するための方法の一実施形態が示される。まず、ロード/ストアユニットによって、データバイトが要求またはフェッチされ得る(ステップ370)。このフェッチ処理の一環として、所望のデータバイトがストアされているかを判定するために、レベル1キャッシュすなわちデータキャッシュが検査され得る(ステップ372)。データバイトがデータキャッシュにストアされている場合、このデータバイトが、対応するECC情報と共にデータキャッシュから読み出され得る(ステップ374)。しかし、所望のデータバイトがデータキャッシュにストアされていない場合、このデータがレベル2キャッシュから要求され得る(ステップ376)。データがレベル2キャッシュにストアされていない場合(ステップ378)、所望のデータバイトがメインメモリから読み出され得る(ステップ380)。
【0083】
上記したように、図8Aに関して記載したパリティ情報と同様に、ECC情報は、(a)レベル2キャッシュのみ、(b)レベル1キャッシュとレベル2キャッシュとの両方、あるいは(c)レベル1キャッシュ、レベル2キャッシュおよびメインメモリサブシステム、のいずれかに対してサポートされ得る。また、他の組み合わせ(例えば、メインメモリサブシステムおよびレベル2キャッシュのみ)も可能である。メインメモリ由来のECC情報をサポートする実施形態については、メインメモリサブシステムからデータバイトが受信されたときに、対応するECC情報が検査され得る(ステップ282)。ECC情報が正しくない場合、エラー検査および訂正ユニットは、このエラーを訂正しようと試行し得る。エラーが訂正不可能な場合は、エラーが通知され得る(ステップ384)。ECC情報が正しい(またはエラーが訂正された)場合、ECC情報が、データバイトと共にレベル2キャッシュにストアされ得る(ステップ386)。図8Aに関して上記したように、本例では包括的なレベル2キャッシュを想定している。一部の実施形態においては、レベル2キャッシュは排他的であり得、メインメモリから直接読み出されたデータは、レベル1キャッシュで犠牲にされるまでレベル2キャッシュにストアされないこともある。
【0084】
しばらく経った後に、データバイトおよびECC情報をストアしているレベル1キャッシュラインが犠牲にされ得る、すなわち上書きされ得る(ステップ392)。この場合、データキャッシュからのデータバイトは、対応するECCビットおよびデータ型ビットと共にレベル2キャッシュにストアされ得る(ステップ366)。このデータ型ビットは、ストアされている情報がデータおよびECC情報であって、パリティ情報およびプリデコード情報を有する命令バイトではないことを示すために使用され得る。
【0085】
図9を参照すると、犠牲にされた命令バイトに対するプリデコード情報をストアする一方で、犠牲にされたデータバイトに対するパリティ保護および/またはECC保護を提供するように構成されたコンピュータシステムの一実施形態が示される。本実施形態においては、プロセッサ10は、レベル1命令キャッシュ16とレベル1データキャッシュ28とを有する。また、プロセッサ10は、プリデコード/プリフェッチユニット12とロード/ストアユニット26とを有する。本図に示すように、プリフェッチ/プリデコードユニットはパリティ生成および検査ユニット402を、ロード/ストアユニット26はエラー検査および訂正ユニット404をそれぞれ備える。
【0086】
本実施形態においては、レベル2キャッシュ50は、メインのレベル2キャッシュ50にストアされたバイトに対応するパリティ情報および/またはECC情報をストアするように構成された数多くの記憶場所406を備えて構成される。この実施形態においては、コンピュータシステムは、メモリコントローラ410も有する。メモリコントローラ410は、メインメモリ420から送られたバイトに対して、パリティを生成すると共にパリティ検査を実行するように構成されたパリティユニット414を有してもよい。パリティがサポートされている実施形態については、メインメモリサブシステム420は、パリティ情報をストアするための付加的なメモリ記憶場所430を備えていてもよい。
【0087】
別の実施形態においては、メモリコントローラ410は、メインメモリサブシステム420にストアされている情報に対して、エラー訂正コードを生成および検査するように構成されたエラー検査および訂正ユニット416を有し得る。メモリ420、メモリコントローラ410およびプロセッサ10の間で情報を転送するためのバスに対して、さらに別のエラー検査および訂正情報が生成されることがあるという点に留意すべきである。この情報が、ここに記載したECC情報および/またはパリティ情報に追加され得る。上記したように、一部の実施形態においては、メモリサブシステム420とメモリコントローラ410とは、パリティ情報および/またはECC情報をサポートしないように構成されてもよい。本図にも記載されているように、一部の実施形態においては、レベル2キャッシュ50は、各キャッシュラインに対してデータ型ビット408をストアするように構成され得る。
【0088】
レベル1命令キャッシュ16において、パリティビットの使用により検出されたシングルビットエラーは、このキャッシュラインを破棄して、メモリ420から対応する命令バイトを読み出すことによって訂正することができる(メモリ自体は、ECC情報によって保護され得る)。逆に、メモリ420に存在するデータの元のコピー(すなわち古いコピーが)がエラー訂正に使用されないように、レベル1データキャッシュ28にストアされているデータが変更され得る。このように、データキャッシュ28にECC情報を有することは、一部の実施形態においては、メモリ420からデータバイトをコピーするエラー訂正方法に代わる、代替の機構を提供するために特に有用であり得る。
【0089】
(コンピュータシステムの例)
図10を参照すると、マイクロプロセッサ10を利用したコンピュータシステム500の一実施形態のブロック図が示される。図中のシステムにおいて、メインメモリ504は、メモリバス506を介してバスブリッジ502(メモリコントローラとしても動作し得る)に結合され、グラフィックコントローラ508は、AGPバス510を介してバスブリッジ502に結合されている。最後に、複数のPCIデバイス512A〜512Bが、PCIバス514を介してバスブリッジ502に結合されている。さらに、EISA/ISAバス520を介して1つ以上のEISAデバイスまたはISAデバイス518を電気的に接続できるように、セカンダリバスブリッジ516を設けてもよい。マイクロプロセッサ10はCPUバス524を介してバスブリッジ502に結合されている。
【0090】
バスブリッジ502は、マイクロプロセッサ10、メインメモリ504、グラフィックコントローラ508およびPCIバス214に接続されたデバイスの間のインターフェイスを提供している。バスブリッジ502に接続されたデバイスのうちの1つから操作(operation)が受信されると、バスブリッジ502は、この操作のターゲット(例えば、特定のデバイスか、ターゲットがPCIバス514に接続している場合はPCIバス514)を識別する。バスブリッジ502は、この操作をターゲットデバイスに転送する。バスブリッジ502は一般に、この操作を、ソースのデバイスまたはバスが使用しているプロトコルから、ターゲットのデバイスまたはバスが使用しているプロトコルに変換する。
【0091】
セカンダリバスブリッジ516は、PCIバス514に対するインターフェイスをISA/EISAバスに提供すると共に、必要に応じて追加の機能も有している。例えば、一実施形態においては、セカンダリバスブリッジ516は、PCIバス514の所有権を調停(arbitrating)するためのマスタPCIアービタ(図示せず)を有する。また、必要に応じて、セカンダリバスブリッジ516の外側に設けたか、ブリッジ516に搭載した入出力コントローラ(図示せず)をコンピュータシステム500に設けて、キーボードおよびマウス522、ならびに様々なシリアルポートおよびパラレルポートをサポートしてもよい。さらに、別の実施形態においては、マイクロプロセッサ10とバスブリッジ502との間にあるCPUバス524に、外部キャッシュユニット(図示せず)を結合してもよい。別法として、外部キャッシュをバスブリッジ502に結合してもよく、この外部キャッシュのためのキャッシュ制御ロジックをバスブリッジ502に搭載してもよい。
【0092】
メインメモリ504は、アプリケーションプログラムのストア先であると共に、マイクロプロセッサ10の主な実行元のメモリである。適切なメインメモリ504は、DRAM(ダイナミックランダムアクセスメモリ)を有し、好ましくはSDRAM(シンクロナスDRAM)の複数のバンクを有する。
【0093】
PCIデバイス512A〜512Bの例には、ネットワークインターフェイスカード、ビデオアクセラレータ、オーディオカード、ハードディスクドライブ、フロッピーディスクドライブもしくはドライブコントローラ、SCSI(小型コンピュータシステムインターフェイス)アダプタおよびテレフォニカードなどの様々な周辺デバイスがある。同様に、ISAデバイス518の例には、モデム、サウンドカード等の様々なタイプの周辺デバイスのほか、種々のデータ取得カード(GPIBインターフェイスカードまたはフィールドバスインターフェイスカード等)などがある。
【0094】
グラフィックコントローラ508は、ディスプレイ526の文字および画像の表示を制御するために設けられる。グラフィックコントローラ508は、メインメモリ504との間で効率的に移動可能な3次元データ構造を表示するために、当業界において一般に公知となっているグラフィックアクセラレータを具体化し得る。このため、グラフィックコントローラ508は、バスブリッジ502内でターゲットインターフェイスに対するアクセスを要求および受け取って、これによってメインメモリ504へのアクセスを取得できるという点で、AGPバス510のマスタであり得る。専用のグラフィックバスによって、メインメモリ504から高速にデータを取得することが可能となる。グラフィックコントローラ508は、特定の操作のために、AGPバス510でPCIプロトコルトランザクションを生成するようにさらに構成され得る。このため、バスブリッジ502のAGPインターフェイスは、AGPプロトコルのトランザクションと、PCIプロトコルのターゲットトランザクションおよびイニシエータトランザクションとの両方をサポートする機能を有し得る。ディスプレイ526は、画像または文字を表現可能な任意の電子ディスプレイである。適切なディスプレイ526には、陰極線管(「CRT」)ディスプレイや液晶ディスプレイ(「LCD」)などがある。
【0095】
上記の説明においてAGPバス、PCIバス、およびISAバスまたはEISAバスを例として採り上げたが、必要に応じて任意のバスアーキテクチャを代用してもよいという点が注目される。さらに、コンピュータシステム500は、追加のマイクロプロセッサを備えたマルチプロセッシングコンピュータシステムであってもよいという点が注目される。
【0096】
さらに、本議論は、種々の信号のアサートに言及し得るという点が注目される。本明細書で使用されるように、ある信号が特定の条件を示す値を伝達する場合、その信号は「アサートされている」という。これに対して、ある信号が特定の条件がないことを示す値を伝達する場合、その信号は「ディアサートされている」か「アサートされていない」という。信号が論理0値を伝達する場合、または逆に論理1値を伝達する場合、この信号はアサートされていると定義することができる。さらに、上記の説明において種々の値が破棄されていると記載した。値は、さまざまな方法によって破棄され得るが、一般には、この値を受け取る論理回路によって無視されるように値を変更することが行われる。例えば、値が1つのビットを有する場合、この値の論理状態を反転して値を破棄してもよい。値がnビット値である場合、nビットコードのうちの1つのビットが、値が無効であることを示す値であり得る。このビットを、コードを無効にする値に設定すると、値が破棄される。さらに、nビット値が、設定されるとそのnビット値が有効であることを示す有効ビットを有していてもよい。この有効ビットをリセットすることによって、値を破棄することができる。また、値を破棄する別の方法が使用されてもよい。
【0097】
プリデコード情報および犠牲にされた命令バイトおよび/またはデータバイトをストアするためのシステムならびに方法を開示した。ここに記載し図に示した実施形態をかなり詳細に記載したが、他の実施形態も可能であり、考慮される。図面および詳細な説明は、開示の実施形態に本発明を限定することを意図するものではなく、本発明が添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれる全ての変形例、均等物および代替例を含むことが意図にあることが理解されるべきである。
【産業上の利用可能性】
【0098】
本発明は、産業上、マイクロプロセッサに利用可能である。
【図面の簡単な説明】
【0099】
【図1】x86命令の一般化したフォーマットを示すブロック図である。
【図2】有効マスクの一実施形態を示すブロック図である。
【図3】マイクロプロセッサの一実施形態を示すブロック図である。
【図4】図3の命令キャッシュとレベル2キャッシュとの間のインターフェイスの一実施形態の詳細を示す図である。
【図5】図4の命令キャッシュの一実施形態と、図4のレベル2キャッシュの一実施形態との間の関係を詳細に示す図である。
【図6】レベル2キャッシュにプリデコード情報をストアするための方法の一実施形態を示すフローチャートである。
【図7A】犠牲にされたプリデコード情報をストアするためのシステムの別の実施形態を示す図である。
【図7B】犠牲にされたプリデコード情報をストアするためのシステムの別の実施形態を示す図である。
【図8A】犠牲にされたプリデコード情報をストアするための方法の別の実施形態を示すフローチャートである。
【図8B】犠牲にされたプリデコード情報をストアするための方法の別の実施形態を示すフローチャートである。
【図9】犠牲にされたプリデコード情報をストアするためのシステムの別の実施形態を示す図である。
【図10】図3のマイクロプロセッサを利用したコンピュータシステムの一実施形態を示す図である。
Claims (10)
- マイクロプロセッサであって、
命令バイトを受け取って、対応するプリデコード情報を生成するように構成されたプリデコードユニット(12)と、
前記プリデコードユニットに結合され、前記命令バイトと該命令バイトに対応する前記プリデコード情報とをストアするように構成された命令キャッシュ(16)と、
データバイトを受け取るように構成されたロード/ストアユニット(26)と、
前記ロード/ストアユニットから前記データバイトを受け取ってストアするように構成されたデータキャッシュ(28)と、
前記命令キャッシュから犠牲にされた命令バイトと、前記データキャッシュから犠牲にされたデータバイトとを受け取ってストアするように構成されたレベル2キャッシュ(50)とを備え、前記レベル2キャッシュは、前記ストアされている犠牲にされた命令バイトに対するパリティ情報およびプリデコード情報を受け取ってストアするように構成され、かつ前記レベル2キャッシュは、前記ストアされている犠牲にされたデータバイトに対するエラー訂正コードビットを受け取ってストアするように構成されるマイクロプロセッサ。 - 前記レベル2キャッシュに転送される前記命令バイトに対する前記パリティビットを生成し、かつ
前記レベル2キャッシュから転送される前記命令バイトに対する前記パリティビットを検査するように構成されたパリティ生成および検査ロジック(402)をさらに備える、請求項1に記載のマイクロプロセッサ。 - 前記レベル2キャッシュに転送される前記データバイトに対する前記エラー訂正コードビットを生成し、かつ
前記レベル2キャッシュから転送される前記データバイトに対する前記エラー訂正コードビットを検査するように構成されたエラー検査および訂正ロジック(404)をさらに備える、請求項1に記載のマイクロプロセッサ。 - 前記エラー検査および訂正ロジック(404)は、前記レベル2キャッシュから転送される前記データバイトにおける少なくとも1ビットのエラーを訂正するために、前記エラー訂正コードビットを使用するように構成される、請求項3に記載のマイクロプロセッサ。
- 前記レベル2キャッシュはキャッシュラインに分割され、前記キャッシュラインは第1記憶領域と第2記憶領域とを有し、各キャッシュラインは、(a)命令バイトが前記キャッシュラインの第1記憶領域に記憶されており、かつプリデコードビットおよびパリティビットが前記キャッシュラインの第2領域にストアされているか、あるいは(b)データバイトが前記キャッシュラインの第1記憶領域にストアされており、かつエラー訂正コードビットが前記キャッシュラインの第2記憶領域にストアされているか、を示す1つ以上の指示ビットをストアするように構成される、請求項1に記載のマイクロプロセッサ。
- 命令バイトを受け取るステップと、
前記命令バイトに対するプリデコード情報を生成するステップと、
前記命令バイトと前記プリデコード情報とを第1メモリ(16)にストアするステップと、
前記第1メモリにおいて前記命令バイトが上書きされようとしていることに応答して、前記命令バイトの少なくとも一部分および前記プリデコード情報をパリティ情報と共に第2メモリ(50)に出力するステップと、
データバイトを受け取るステップと、
前記データバイトを第3メモリ(28)にストアするステップと、
前記第3メモリにおいて前記データバイトが上書きされようとしていることに応答して、前記データバイトの少なくとも一部分を対応するエラー訂正コード情報と共に前記第2メモリに出力するステップとを備える方法。 - 前記第2メモリはキャッシュラインに分割されており、前記方法は前記第2メモリにある各キャッシュラインに指示ビットをストアするステップをさらに備え、前記指示ビットは前記プリデコードビットと前記エラー訂正コードビットとのいずれが前記第2メモリにストアされているかを示す、請求項6に記載の方法。
- 前記第2メモリにある各論理ブロックに対する指示ビットをストアするステップをさらに備え、前記指示ビットはプリデコードビットと、エラー検査および訂正ビットとのいずれが前記第2メモリにストアされているかを示す、請求項7に記載の方法。
- 少なくとも1つの前記ストアされているパリティビットと、対応する前記命令バイトの前記ストアされている部分および前記プリデコード情報とを、前記プロセッサに送り返すステップをさらに備え、前記プロセッサは、前記パリティビットが正しい場合に、新しいプリデコード情報を生成する代わりに前記送られたプリデコード情報を使用するように構成される、請求項7に記載の方法。
- メインシステムメモリ(420)と、
前記メインシステムメモリに結合されたメモリコントローラ(410)と、
前記メモリコントローラに結合された請求項1乃至請求項5のいずれか1項に記載のマイクロプロセッサ(10)とを備えたコンピュータシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/892,328 US6804799B2 (en) | 2001-06-26 | 2001-06-26 | Using type bits to track storage of ECC and predecode bits in a level two cache |
PCT/US2002/012768 WO2003003218A1 (en) | 2001-06-26 | 2002-04-02 | Using type bits to track storage of ecc and predecode bits in a level two cache |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004531837A true JP2004531837A (ja) | 2004-10-14 |
JP2004531837A5 JP2004531837A5 (ja) | 2006-01-05 |
JP4170216B2 JP4170216B2 (ja) | 2008-10-22 |
Family
ID=25399796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003509326A Expired - Fee Related JP4170216B2 (ja) | 2001-06-26 | 2002-04-02 | レベル2キャッシュへのeccビットおよびプリデコードビットの記憶を追跡するためのタイプビットの使用 |
Country Status (8)
Country | Link |
---|---|
US (1) | US6804799B2 (ja) |
EP (1) | EP1399824B1 (ja) |
JP (1) | JP4170216B2 (ja) |
KR (1) | KR100884351B1 (ja) |
CN (1) | CN1287292C (ja) |
DE (1) | DE60223023T2 (ja) |
TW (1) | TW583541B (ja) |
WO (1) | WO2003003218A1 (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006040175A (ja) * | 2004-07-29 | 2006-02-09 | Fujitsu Ltd | キャッシュメモリ装置およびキャッシュメモリ制御方法 |
JP2008521141A (ja) * | 2004-11-22 | 2008-06-19 | クゥアルコム・インコーポレイテッド | 分岐訂正によるプリデコードのエラー処理 |
JP2008532187A (ja) * | 2005-03-04 | 2008-08-14 | クゥアルコム・インコーポレイテッド | 既知プロセッサ状態に基づいてキャッシュビットを選択的にイネーブルにするパワーセービング方法および装置 |
JP2009535743A (ja) * | 2006-05-01 | 2009-10-01 | クゥアルコム・インコーポレイテッド | 可変長命令をキャッシングするための方法及び装置 |
JP4862100B1 (ja) * | 2011-03-25 | 2012-01-25 | 好一 北岸 | 中央演算処理装置及びマイクロコンピュータ |
KR101178293B1 (ko) | 2011-03-25 | 2012-08-29 | 마사미 후쿠시마 | 중앙 처리 장치 및 마이크로컨트롤러 |
US8516225B2 (en) | 2011-03-25 | 2013-08-20 | Koichi Kitagishi | Central processing unit and microcontroller |
JP2017058953A (ja) * | 2015-09-16 | 2017-03-23 | 株式会社東芝 | キャッシュメモリシステム |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6751707B2 (en) * | 2002-05-06 | 2004-06-15 | Sony Computer Entertainment Inc. | Methods and apparatus for controlling a cache memory |
US7437593B2 (en) * | 2003-07-14 | 2008-10-14 | International Business Machines Corporation | Apparatus, system, and method for managing errors in prefetched data |
US7386756B2 (en) * | 2004-06-17 | 2008-06-10 | Intel Corporation | Reducing false error detection in a microprocessor by tracking instructions neutral to errors |
US7555703B2 (en) * | 2004-06-17 | 2009-06-30 | Intel Corporation | Method and apparatus for reducing false error detection in a microprocessor |
US8020047B2 (en) * | 2006-01-17 | 2011-09-13 | Xyratex Technology Limited | Method and apparatus for managing storage of data |
US8065555B2 (en) * | 2006-02-28 | 2011-11-22 | Intel Corporation | System and method for error correction in cache units |
US7962725B2 (en) | 2006-05-04 | 2011-06-14 | Qualcomm Incorporated | Pre-decoding variable length instructions |
US7644233B2 (en) * | 2006-10-04 | 2010-01-05 | International Business Machines Corporation | Apparatus and method for supporting simultaneous storage of trace and standard cache lines |
US7945763B2 (en) * | 2006-12-13 | 2011-05-17 | International Business Machines Corporation | Single shared instruction predecoder for supporting multiple processors |
US8001361B2 (en) * | 2006-12-13 | 2011-08-16 | International Business Machines Corporation | Structure for a single shared instruction predecoder for supporting multiple processors |
US20080148020A1 (en) * | 2006-12-13 | 2008-06-19 | Luick David A | Low Cost Persistent Instruction Predecoded Issue and Dispatcher |
US20080256419A1 (en) * | 2007-04-13 | 2008-10-16 | Microchip Technology Incorporated | Configurable Split Storage of Error Detecting and Correcting Codes |
US8055975B2 (en) * | 2007-06-05 | 2011-11-08 | Apple Inc. | Combined single error correction/device kill detection code |
FR2924836B1 (fr) * | 2007-12-11 | 2010-12-24 | Commissariat Energie Atomique | Dispositif de service de fiabilite, systeme et procede electroniques mettant en oeuvre au moins un tel dispositif et produit de programme informatique permettant de mettre en oeuvre un tel procede. |
US20090276587A1 (en) * | 2008-04-30 | 2009-11-05 | Moyer William C | Selectively performing a single cycle write operation with ecc in a data processing system |
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 |
JP5202130B2 (ja) | 2008-06-24 | 2013-06-05 | 株式会社東芝 | キャッシュメモリ、コンピュータシステム、及びメモリアクセス方法 |
US8181005B2 (en) * | 2008-09-05 | 2012-05-15 | Advanced Micro Devices, Inc. | Hybrid branch prediction device with sparse and dense prediction caches |
US8291305B2 (en) * | 2008-09-05 | 2012-10-16 | Freescale Semiconductor, Inc. | Error detection schemes for a cache in a data processing system |
US8356239B2 (en) * | 2008-09-05 | 2013-01-15 | Freescale Semiconductor, Inc. | Selective cache way mirroring |
US8145985B2 (en) | 2008-09-05 | 2012-03-27 | Freescale Semiconductor, Inc. | Error detection schemes for a unified cache in a data processing system |
US8364896B2 (en) * | 2008-09-20 | 2013-01-29 | Freescale Semiconductor, Inc. | Method and apparatus for configuring a unified cache based on an associated error rate |
US8316186B2 (en) * | 2008-09-20 | 2012-11-20 | Freescale Semiconductor, Inc. | Method and apparatus for managing cache reliability based on an associated error rate |
US8117497B1 (en) * | 2008-11-17 | 2012-02-14 | Xilinx, Inc. | Method and apparatus for error upset detection and correction |
KR101042197B1 (ko) * | 2008-12-30 | 2011-06-20 | (주)인디링스 | 메모리 컨트롤러 및 메모리 관리 방법 |
US8266498B2 (en) * | 2009-03-31 | 2012-09-11 | Freescale Semiconductor, Inc. | Implementation of multiple error detection schemes for a cache |
JP4865016B2 (ja) * | 2009-08-27 | 2012-02-01 | 株式会社東芝 | プロセッサ |
JP5325159B2 (ja) | 2010-05-12 | 2013-10-23 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ファイルリストを抽出してクライアントにて表示するファイルサーバ、クライアントにて表示する方法及びファイルサーバで実行することが可能なコンピュータプログラム |
CN102346715B (zh) * | 2010-07-30 | 2014-05-28 | 国际商业机器公司 | 保护内存中应用程序的方法、内存控制器和处理器 |
CN102012872B (zh) * | 2010-11-24 | 2012-05-02 | 烽火通信科技股份有限公司 | 一种用于嵌入式系统的二级缓存控制方法及装置 |
KR101788737B1 (ko) | 2011-05-12 | 2017-10-24 | 에스케이하이닉스 주식회사 | 반도체 시스템 |
US8572441B2 (en) * | 2011-08-05 | 2013-10-29 | Oracle International Corporation | Maximizing encodings of version control bits for memory corruption detection |
US9317429B2 (en) | 2011-09-30 | 2016-04-19 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy over common memory channels |
CN107608910B (zh) | 2011-09-30 | 2021-07-02 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
WO2013048493A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Memory channel that supports near memory and far memory access |
CN103946812B (zh) | 2011-09-30 | 2017-06-09 | 英特尔公司 | 用于实现多级别存储器分级体系的设备和方法 |
WO2013095525A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Content-aware caches for reliability |
US9043559B2 (en) | 2012-10-23 | 2015-05-26 | Oracle International Corporation | Block memory engine with memory corruption detection |
CN102968355A (zh) * | 2012-11-13 | 2013-03-13 | 浪潮电子信息产业股份有限公司 | 一种基于Intel-Brickland-EX平台的内存纠错方法 |
US20140244932A1 (en) * | 2013-02-27 | 2014-08-28 | Advanced Micro Devices, Inc. | Method and apparatus for caching and indexing victim pre-decode information |
US9348598B2 (en) | 2013-04-23 | 2016-05-24 | Arm Limited | Data processing apparatus and method for pre-decoding instructions to be executed by processing circuitry |
US9021334B2 (en) * | 2013-05-01 | 2015-04-28 | Apple Inc. | Calculation of analog memory cell readout parameters using code words stored over multiple memory dies |
JP6140093B2 (ja) * | 2014-03-18 | 2017-05-31 | 株式会社東芝 | キャッシュメモリ、誤り訂正回路およびプロセッサシステム |
US9672298B2 (en) | 2014-05-01 | 2017-06-06 | Oracle International Corporation | Precise excecution of versioned store instructions |
US9195593B1 (en) | 2014-09-27 | 2015-11-24 | Oracle International Corporation | Hardware assisted object memory migration |
US10210107B2 (en) * | 2014-10-29 | 2019-02-19 | Hewlett Packard Enterprise Development Lp | Trans-fabric instruction set for a communication fabric |
US10795681B2 (en) * | 2014-12-23 | 2020-10-06 | Intel Corporation | Instruction length decoding |
CN105938447B (zh) * | 2015-03-06 | 2018-12-14 | 华为技术有限公司 | 数据备份装置及方法 |
TWI569279B (zh) | 2015-10-15 | 2017-02-01 | 財團法人工業技術研究院 | 記憶體保護裝置與方法 |
CN106445720A (zh) * | 2016-10-11 | 2017-02-22 | 郑州云海信息技术有限公司 | 一种内存错误恢复方法和装置 |
US10268581B2 (en) * | 2017-04-05 | 2019-04-23 | Arm Limited | Cache hierarchy management |
US10291258B2 (en) | 2017-05-25 | 2019-05-14 | Advanced Micro Devices, Inc. | Error correcting code for correcting single symbol errors and detecting double bit errors |
KR102490104B1 (ko) | 2017-10-30 | 2023-01-19 | 삼성전자주식회사 | 데이터 보호를 사용하는 인-밴드 메모리에 액세스하기 위한 장치 및 방법 |
US20190265976A1 (en) * | 2018-02-23 | 2019-08-29 | Yuly Goryavskiy | Additional Channel for Exchanging Useful Information |
US11119909B2 (en) | 2018-12-11 | 2021-09-14 | Texas Instmments Incorporated | Method and system for in-line ECC protection |
EP3683679A1 (en) * | 2019-01-15 | 2020-07-22 | ARM Limited | Checksum generation |
CN110311772A (zh) * | 2019-06-15 | 2019-10-08 | 上海来远电子科技有限公司 | 一种可编程加解密方法及其系统 |
KR20230095437A (ko) | 2021-12-22 | 2023-06-29 | 삼성전자주식회사 | 메모리 시스템 및 이의 동작 방법 |
KR102664239B1 (ko) | 2023-10-06 | 2024-05-08 | 위더맥스(주) | Ecc 가변 적용 장치 및 방법 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4747043A (en) * | 1984-02-10 | 1988-05-24 | Prime Computer, Inc. | Multiprocessor cache coherence system |
JPS62151971A (ja) * | 1985-12-25 | 1987-07-06 | Nec Corp | マイクロ・プロセツサ装置 |
US5214769A (en) * | 1987-12-24 | 1993-05-25 | Fujitsu Limited | Multiprocessor control system |
US5265004A (en) * | 1991-10-15 | 1993-11-23 | Allen-Bradley Company, Inc. | Sequence controller with combinatorial Boolean logic |
US5689672A (en) * | 1993-10-29 | 1997-11-18 | Advanced Micro Devices, Inc. | Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions |
DE69429061T2 (de) * | 1993-10-29 | 2002-07-18 | Advanced Micro Devices, Inc. | Superskalarmikroprozessoren |
US5721854A (en) * | 1993-11-02 | 1998-02-24 | International Business Machines Corporation | Method and apparatus for dynamic conversion of computer instructions |
US5604753A (en) * | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for performing error correction on data from an external memory |
US6161208A (en) * | 1994-05-06 | 2000-12-12 | International Business Machines Corporation | Storage subsystem including an error correcting cache and means for performing memory to memory transfers |
US5752264A (en) * | 1995-03-31 | 1998-05-12 | International Business Machines Corporation | Computer architecture incorporating processor clusters and hierarchical cache memories |
US5828895A (en) * | 1995-09-20 | 1998-10-27 | International Business Machines Corporation | Methods and system for predecoding instructions in a superscalar data processing system |
US5819067A (en) * | 1996-02-23 | 1998-10-06 | Advanced Micro Devices, Inc. | Computer system configured to translate a computer program into a second computer program prior to executing the computer program |
US5748978A (en) * | 1996-05-17 | 1998-05-05 | Advanced Micro Devices, Inc. | Byte queue divided into multiple subqueues for optimizing instruction selection logic |
US6115795A (en) * | 1997-08-06 | 2000-09-05 | International Business Machines Corporation | Method and apparatus for configurable multiple level cache with coherency in a multiprocessor system |
US5951671A (en) * | 1997-12-18 | 1999-09-14 | Advanced Micro Devices, Inc. | Sharing instruction predecode information in a multiprocessor system |
US6108753A (en) * | 1998-03-31 | 2000-08-22 | International Business Machines Corporation | Cache error retry technique |
US6092182A (en) * | 1998-06-24 | 2000-07-18 | Advanced Micro Devices, Inc. | Using ECC/parity bits to store predecode information |
-
2001
- 2001-06-26 US US09/892,328 patent/US6804799B2/en not_active Expired - Lifetime
-
2002
- 2002-04-02 JP JP2003509326A patent/JP4170216B2/ja not_active Expired - Fee Related
- 2002-04-02 EP EP02780938A patent/EP1399824B1/en not_active Expired - Lifetime
- 2002-04-02 DE DE60223023T patent/DE60223023T2/de not_active Expired - Lifetime
- 2002-04-02 KR KR1020037016529A patent/KR100884351B1/ko not_active IP Right Cessation
- 2002-04-02 CN CNB028130103A patent/CN1287292C/zh not_active Expired - Lifetime
- 2002-04-02 WO PCT/US2002/012768 patent/WO2003003218A1/en active IP Right Grant
- 2002-05-17 TW TW091110329A patent/TW583541B/zh not_active IP Right Cessation
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006040175A (ja) * | 2004-07-29 | 2006-02-09 | Fujitsu Ltd | キャッシュメモリ装置およびキャッシュメモリ制御方法 |
JP4673584B2 (ja) * | 2004-07-29 | 2011-04-20 | 富士通株式会社 | キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法 |
JP2008521141A (ja) * | 2004-11-22 | 2008-06-19 | クゥアルコム・インコーポレイテッド | 分岐訂正によるプリデコードのエラー処理 |
JP2008532187A (ja) * | 2005-03-04 | 2008-08-14 | クゥアルコム・インコーポレイテッド | 既知プロセッサ状態に基づいてキャッシュビットを選択的にイネーブルにするパワーセービング方法および装置 |
JP2009535743A (ja) * | 2006-05-01 | 2009-10-01 | クゥアルコム・インコーポレイテッド | 可変長命令をキャッシングするための方法及び装置 |
JP4755281B2 (ja) * | 2006-05-01 | 2011-08-24 | クゥアルコム・インコーポレイテッド | 可変長命令をキャッシングするための方法及び装置 |
JP4862100B1 (ja) * | 2011-03-25 | 2012-01-25 | 好一 北岸 | 中央演算処理装置及びマイクロコンピュータ |
KR101178293B1 (ko) | 2011-03-25 | 2012-08-29 | 마사미 후쿠시마 | 중앙 처리 장치 및 마이크로컨트롤러 |
WO2012132104A1 (ja) * | 2011-03-25 | 2012-10-04 | Kitagishi Koichi | 中央演算処理装置及びマイクロコンピュータ |
US8516225B2 (en) | 2011-03-25 | 2013-08-20 | Koichi Kitagishi | Central processing unit and microcontroller |
JP2017058953A (ja) * | 2015-09-16 | 2017-03-23 | 株式会社東芝 | キャッシュメモリシステム |
US10360100B2 (en) | 2015-09-16 | 2019-07-23 | Kabushiki Kaisha Toshiba | Cache memory system and processor system |
Also Published As
Publication number | Publication date |
---|---|
EP1399824A1 (en) | 2004-03-24 |
KR100884351B1 (ko) | 2009-02-18 |
CN1522410A (zh) | 2004-08-18 |
JP4170216B2 (ja) | 2008-10-22 |
KR20040041550A (ko) | 2004-05-17 |
DE60223023T2 (de) | 2008-07-31 |
WO2003003218A1 (en) | 2003-01-09 |
DE60223023D1 (de) | 2007-11-29 |
US6804799B2 (en) | 2004-10-12 |
TW583541B (en) | 2004-04-11 |
CN1287292C (zh) | 2006-11-29 |
EP1399824B1 (en) | 2007-10-17 |
US20020199151A1 (en) | 2002-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4170216B2 (ja) | レベル2キャッシュへのeccビットおよびプリデコードビットの記憶を追跡するためのタイプビットの使用 | |
JP3836322B2 (ja) | プリデコード情報を記憶するためのecc/パリティビットの使用 | |
JP3871883B2 (ja) | 間接分岐ターゲットを計算するための方法 | |
US6151662A (en) | Data transaction typing for improved caching and prefetching characteristics | |
US7117290B2 (en) | MicroTLB and micro tag for reducing power in a processor | |
US6041405A (en) | Instruction length prediction using an instruction length pattern detector | |
US6125441A (en) | Predicting a sequence of variable instruction lengths from previously identified length pattern indexed by an instruction fetch address | |
US6240484B1 (en) | Linearly addressable microprocessor cache | |
US6349365B1 (en) | User-prioritized cache replacement | |
US20050050278A1 (en) | Low power way-predicted cache | |
US6088789A (en) | Prefetch instruction specifying destination functional unit and read/write access mode | |
EP0795828A2 (en) | Dynamic set prediction method and apparatus for a multi-level cache system | |
US6427192B1 (en) | Method and apparatus for caching victimized branch predictions | |
JP2004503870A (ja) | 変換索引バッファのフラッシュフィルタ | |
US5909566A (en) | Microprocessor circuits, systems, and methods for speculatively executing an instruction using its most recently used data while concurrently prefetching data for the instruction | |
US6212621B1 (en) | Method and system using tagged instructions to allow out-of-program-order instruction decoding | |
US6460116B1 (en) | Using separate caches for variable and generated fixed-length instructions | |
US5951671A (en) | Sharing instruction predecode information in a multiprocessor system | |
JPH1055276A (ja) | 多重レベル分岐予測方法および装置 | |
CN115380273A (zh) | 处理器流水线中的间接跳转的提取级处置 | |
CN111475010B (zh) | 管线式处理器及节电方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050330 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051019 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071023 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071106 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080205 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080213 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080303 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080310 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080407 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080422 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080722 |
|
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: 20080805 |
|
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: 20080806 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110815 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110815 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120815 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |