(58)【調査した分野】(Int.Cl.,DB名)
前記複数のコアのうちの前記1つの内部のキャッシュ・ヒューズ・デコンプレッサは、電源投入/リセット中にマイクロコードを実行することによって、前記圧縮されたコンフィギュレーションデータを非圧縮化する請求項1に記載の装置。
前記非圧縮化されたコンフィギュレーションデータ・セットのそれぞれは、通常の動作中に使用されるべきでない前記1つ又は複数のキャッシュ・メモリのうちの何れかの内部の1つ又は複数のサブユニット・ロケーションを示す第1の複数の半導体ヒューズを備える請求項1に記載の装置。
前記非圧縮化されたコンフィギュレーションデータ・セットのそれぞれは、前記1つ又は複数のサブユニット・ロケーションのうちの対応するロケーションの代わりに通常の動作中に使用されるべき前記1つ又は複数のキャッシュ・メモリのうちの何れかの内部の1つ又は複数の置換サブユニット・ロケーションを示す第2の複数の半導体ヒューズを更に備える請求項3に記載の装置。
前記サブユニット・ロケーション及び前記置換サブユニット・ロケーションは、前記1つ又は複数のキャッシュ・メモリの前記何れかの内部に列と冗長な列とをそれぞれ備える請求項4に記載の装置。
前記サブユニット・ロケーション及び前記置換サブユニット・ロケーションは、前記1つ又は複数のキャッシュ・メモリの前記何れかの内部に行と冗長な行とをそれぞれ備える請求項4に記載の装置。
前記非圧縮化されたコンフィギュレーションデータ・セットのそれぞれは、通常の動作中に使用されるべきでない前記1つ又は複数のキャッシュ・メモリのうちの何れかにおける1つ又は複数のサブユニット・ロケーションを示す第1の複数の半導体ヒューズを備える請求項8に記載の装置。
前記非圧縮化されたコンフィギュレーションデータ・セットのそれぞれは、前記1つ又は複数のサブユニット・ロケーションのうちの対応するロケーションの代わりに通常の動作中に使用されるべき前記1つ又は複数のキャッシュ・メモリのうちの何れかにおける1つ又は複数の置換サブユニット・ロケーションを示す第2の複数の半導体ヒューズを更に備える請求項10に記載の装置。
前記サブユニット・ロケーション及び前記置換サブユニット・ロケーションは、前記1つ又は複数のキャッシュ・メモリの何れかの内部に列と冗長な列とをそれぞれ備える請求項11に記載の装置。
前記サブユニット・ロケーション及び前記置換サブユニット・ロケーションは、前記1つ又は複数のキャッシュ・メモリの何れかの内部に行と冗長な行とをそれぞれ備える請求項11に記載の装置。
前記複数のコアのうちの何れかにおけるキャッシュ・ヒューズ・デコンプレッサは、電源投入/リセット中にマイクロコードを実行することによって、前記圧縮されたコンフィギュレーションデータを非圧縮化する請求項15に記載の方法。
前記非圧縮化されたコンフィギュレーションデータ・セットのそれぞれは、通常の動作中に使用されるべきでない前記1つ又は複数のキャッシュ・メモリのうちの何れかにおける1つ又は複数のサブユニット・ロケーションを示す第1の複数の半導体ヒューズを備える請求項15に記載の方法。
前記非圧縮化されたコンフィギュレーションデータ・セットのそれぞれは、前記1つ又は複数のサブユニット・ロケーションのうちの対応するロケーションの代わりに通常の動作中に使用されるべき前記1つ又は複数のキャッシュ・メモリのうちの何れかにおける1つ又は複数の置換サブユニット・ロケーションを示す第2の複数の半導体ヒューズを更に備える請求項17に記載の方法。
前記サブユニット・ロケーション及び前記置換サブユニット・ロケーションは、前記1つ又は複数のキャッシュ・メモリの何れかの内部に列と冗長な列とをそれぞれ備える請求項18に記載の方法。
前記サブユニット・ロケーション及び前記置換サブユニット・ロケーションは、前記1つ又は複数のキャッシュ・メモリの何れかの内部に行と冗長な行とをそれぞれ備える請求項18に記載の方法。
【背景技術】
【0006】
集積デバイス技術は、過去40年にわたって指数関数的に進歩している。より具体的にマイクロプロセッサ分野に関して、4ビット、単一命令、10マイクロメートルのデバイスから始まり、半導体製造技術の進歩は、設計者が、アーキテクチャ及び密度の点でますます複雑なデバイスをもたらすことを可能にしてきた。80年代及び90年代、単一のチップ上に数百万のトランジスタを備える、いわゆるパイプライン・マイクロプロセッサ及びスパースカラー・マイクロプロセッサが開発された。20年後の現在、単一のチップ上に数十億のトランジスタを有し、データの処理のために複数のマイクロプロセッサ・コアを備える64ビット、32ナノメートル・デバイスが製造されている。
【0007】
これらの初期のマイクロプロセッサが製造されて以来、継続されてきた1つの要件が、これらのデバイスに電源が投入された際、又はこれらのデバイスがリセットされた際、これらのデバイスをコンフィギュレーションデータで初期設定する必要性である。たとえば、多くのアーキテクチャは、デバイスが、多くの選択可能な周波数及び/又は電圧のうちの1つで実行されるように構成されることを可能にし得る。他のアーキテクチャは、各デバイスが、命令の実行を介して読み取られ得る通し番号及びその他の情報を有することを要求する。更に他のデバイスは、内部レジスタ及び制御回路のための初期設定データを要求する。更に他のマイクロプロセッサ、特にオンボード・キャッシュ・メモリを有するマイクロプロセッサは、修復データを利用して、これらのメモリ内に冗長な回路を実装して製造誤差を補正する。
【0008】
当業者には理解されるとおり、設計者は、従来、オンダイの半導体ヒューズ・アレイを使用して、初期コンフィギュレーションデータ及び修復データを記憶し、供給してきた。これらのヒューズ・アレイは、一般に、一部分が製造された後にアレイの中の選択されたヒューズをブローすること(blowing)によってプログラミングされ、それらのアレイは、動作のためにデバイスを初期設定して構成するように電源が投入され/リセットされると、対応するデバイスによって読み取られる数千ビットの情報を包含する。
【0009】
デバイスの複雑度が、過去数年にわたって増大するにつれ、通常のデバイスに要求される構成/修復データの量もそれに比例して増大している。それでも、当業者には理解されるとおり、トランジスタ・サイズは、使用される半導体製造工程に比例して小さくなるものの、半導体ヒューズ・サイズは、オンダイのヒューズをプログラミングする独特の要件のため、増大する。この現象は、それ自体で、基板占有面積及び電力の配慮によって全般的に制約されている設計者にとって問題である。即ち、所与のチップ上に巨大なヒューズ・アレイを製造するだけの十分な基板占有面積が単に存在しない。
【0010】
更に、単一のチップ上に複数のデバイス・コアを製造する能力は、それらのコアのそれぞれに関する構成要件が、チップ上に配置されたコアの数に比例する数の、オンダイのヒューズが、単一のアレイ、又は別々のアレイにおいて必要とされることをもたらすため、幾何学的に問題を悪化させてきた。
【0011】
更に、当業者には理解されるとおり、マルチコア・デバイスは、コアのうちの1つ又は複数が、使用されていない際に、いわゆるパワー・ゲーティング事象(又は「スリープ・モード」)において電源を切られることをもたらす複雑な省電力動作モードを利用する。その結果、パワー・ゲーティング事象の後にコアに電源が投入されると、初期設定速度要件が非常に厳しくなることを除いて、初期設定、構成(設定)及び修復について同一の要件が存続する。
【0012】
したがって、必要とされているのは、従来、提供されてきたものと比べて、単一のチップ上で要求する基板占有面積及び電力が大幅により小さい、構成/修復データが記憶され、マルチコア・デバイスに供給されることを可能にする装置及び方法である。
【0013】
更に、必要とされているのは、同一の技法と比べて、大幅により多くの構成/修復データを記憶し、供給することができる一方で、マルチコア・チップ上で同一の、又はより小さい基板占有面積しか要求しないヒューズ・アレイ機構である。
【0014】
更に、必要とされているのは、パワー・ゲーティング事象の後に続くマルチコア・デバイスの迅速な初期設定、構成、及び修復を円滑にする技法である。
【発明を実施するための形態】
【0021】
本発明の例示的で、説明的な実施形態が、以下に説明される。簡明にするため、実際の実施のすべての特徴を、本明細書で説明することはしない。というのは、いずれのそのような実際の実施形態の開発の際にも、実施ごとに異なる、システム関連の制約及びビジネス関連の制約の順守などの特定の目標を実現するように多数の実施特有の決定が行われることが、当業者には理解されるからである。更に、そのような開発の取組みは、複雑で、時間がかかる可能性があるが、それでも、本開示の利益を得る当業者には、定常的な作業であることが理解されよう。好ましい実施形態の様々な変形が、当業者には明白となり、本明細書で定義される一般的な原理は、他の実施形態に適用されることも可能である。したがって、本発明は、本明細書で示され、説明される特定の実施形態に限定されることは意図されず、本明細書で開示される原理及び新規の特徴と合致する最も広い範囲を与えられるべきものとする。
【0022】
次に、本発明を、添付の図面を参照して説明する。様々な構造、システム、及びデバイスが、単に説明の目的で、本発明を、当業者にはよく知られている詳細で不明瞭にしないように図面に概略で示される。それでも、添付の図面は、本発明の説明的な例を表し、説明するように含められる。本明細書で使用される語及び句は、当業者によるそれらの語及び句の理解と合致する意味を有するように理解され、解釈されなければならない。用語又は句の特別な定義(即ち、当業者によって理解される通常の慣習的な意味と異なる定義)が、本明細書の用語又は句の一貫した用法によって暗示されることが意図されることはまったくない。用語又は句が特別な意味(即ち、当業者によって理解される以外の意味)を有することが意図される限りで、そのような特別な定義は、その用語又は句に関する特別な定義を直接に、明瞭に与える定義の様態で本明細書に明記される。
【0023】
初期の電源投入中にコンフィギュレーションデータを供給するために今日の集積回路内で使用されるデバイス・ヒューズ・アレイ及び関連する技法に関する以上の背景の説明に鑑みて、それらの技法の限界及び欠点の説明が、
図1〜
図2を参照して提示される。その後に続いて、本発明の説明が、
図3〜
図10を参照して提示される。本発明は、マルチコア・チップ上で利用する電力及び基板占有面積がより小さく、パワー・ゲーティング事象の後にコンフィギュレーションデータ及び修復データの迅速な復元を可能にし、従来、提供されてきたものよりもより信頼性の高い、マルチコア・チップにおいて圧縮された構成を使用するための装置及び方法を提供することによって、後段で説明される限界及び欠点のすべてを克服する。
【0024】
定義
集積回路(IC):小さい半導体材料上に、通常、シリコン上に製造された電子回路のセット。ICは、チップ、マイクロチップ、又はダイとも呼ばれる。
【0025】
中央処理装置(CPU):コンピュータ・プログラムの命令(「コンピュータ・アプリケーション」、「アプリケーション・プログラム」、「プログラム」、又は「アプリケーション」とも呼ばれる)を、算術演算、論理演算、及び入力/出力動作を含むデータについての動作を実行することによって実行する電子回路(即ち、「ハードウェア」)。
【0026】
マイクロプロセッサ:単一の集積回路上でCPUとして機能する電子デバイス。マイクロプロセッサは、デジタル・データを入力として受け取り、そのデータを、メモリ(オンダイ又はオフダイの)からフェッチされた命令に従って処理し、それらの命令によって規定される動作の結果を出力として生成する。汎用マイクロプロセッサは、デスクトップ・コンピュータ、モバイル・コンピュータ、又はタブレット・コンピュータを含むが、以上には限定されないデバイスにおいて使用されることが可能であり、計算、テキスト編集、マルチメディア表示、及びインターネット・ブラウジングなどの、ただし、以上には限定されないタスクのために利用されることが可能である。また、マイクロプロセッサは、器具、モバイル電話、スマートフォン、及び産業用制御デバイスを含む多種多様なデバイスを制御するように組込み型システムの中に配置されることも可能である。
【0027】
マルチコア・プロセッサ:マルチコア・マイクロプロセッサとしても知られ、マルチコア・プロセッサは、単一の集積回路上に製造された複数のCPU(「コア」としても知られる)を有するマイクロプロセッサである。
【0028】
命令セット・アーキテクチャ(ISA)又は命令セット:データ・タイプ、命令、レジスタ、アドレス指定モード、メモリ・アーキテクチャ、割込み処理及び例外処理、並びに入力/出力を含むプログラミングと関係するコンピュータ・アーキテクチャの一部分。ISAは、オペコード(即ち、機械言語命令)のセットの仕様、及び特定のCPUによって実施されるネイティブ・コマンドを含む。
【0029】
x86互換マイクロプロセッサ:x86ISAに準拠してプログラミングされたコンピュータ・アプリケーションを実行することができるマイクロプロセッサ。
【0030】
マイクロコード:複数のマイクロ命令を指すのに使用される用語。マイクロ命令(「ネイティブ命令」とも呼ばれる)は、マイクロプロセッサ・サブユニットが実行されるレベルにおける命令である。例示的なサブユニットには、整数演算ユニット、浮動小数点演算ユニット、MMXユニット、及びロード/記憶ユニットが含まれる。たとえば、マイクロ命令は、縮小命令セット・コンピュータ(RISC)マイクロプロセッサによって直接に実行される。x86互換マイクロプロセッサなどの複合命令セット・コンピュータ(CISC)マイクロプロセッサの場合、x86命令は、関連するマクロ命令に変換され、関連するマクロ命令は、CISCマイクロプロセッサ内のサブユニット又は複数のサブユニットによって直接に実行される。
【0031】
ヒューズ:フィラメントに電圧を印加すること、及び/又はフィラメントを流れる電流を印加することによって選択された位置で切断され得るフィラメントとして通常、配置された導電性構造。ヒューズは、潜在的なすべてのプログラミング可能な領域においてフィラメントをもたらすようによく知られた製造技法を使用してダイ微細構成にわたる指定された領域に析出させることが可能である。ヒューズ構造は、チップ上に配置された対応するデバイスの所望されるプログラミング可能性をもたらすように製造の後にブローされる(又はブローされない)。
【0032】
図1を参照すると、マイクロプロセッサ・コア101にコンフィギュレーションデータを供給するためのヒューズ・アレイ102を含む今日のマイクロプロセッサ・コア101を示すブロック
図100が提示されている。ヒューズ・アレイ102は、バンクとして知られるグループに通常、構成される複数の半導体ヒューズ(図示せず)を備える。ヒューズ・アレイ102は、リセット回路104とリセット・マイクロコード105とをともに含むリセット・ロジック103に結合される。リセット・ロジック103は、制御回路107、マイクロコード・レジスタ108、マイクロコード・パッチ要素109、及びキャッシュ補正要素110に結合される。外部リセット信号RESETが、マイクロプロセッサ・コア101に結合され、リセット・ロジック103にルーティングされる。
【0033】
当業者には理解されるとおり、ヒューズ(「リンク」又は「ヒューズ構造」とも呼ばれる)は、膨大な数の今日の集積回路デバイスにおいて、デバイスが製造された後にデバイスの構成を可能にするように使用される。たとえば、
図1のマイクロプロセッサ・コア101が、選択的にデスクトップ・デバイス又はモバイル・デバイスとしての機能をもたらすように製造されることを想定されたい。したがって、製造の後、ヒューズ・アレイ102内の規定されたヒューズが、そのデバイスを、たとえば、モバイル・デバイスとして構成するようにブローされる(又は飛ばされる)ことが可能である。したがって、RESETがアサートされると、リセット・ロジック103は、ヒューズ・アレイ102における規定されたヒューズの状態を読み取り、リセット回路104(この例では、リセット・マイクロコード105ではなく)が、もっぱらデスクトップ動作だけに関連付けられたコア101の要素を不活性化し、もっぱらモバイル動作だけに関連付けられたコア101の要素を活性化する、対応する制御回路107をイネーブルにする。その結果、コア101は、電源投入リセットが行われると、モバイル・デバイスとして構成される。更に、リセット・ロジック103が、ヒューズ・アレイ102におけるその他のヒューズの状態を読み取り、リセット回路104(この例では、リセット・マイクロコード105ではなく)が、対応するキャッシュ補正回路107が、コア101に関連付けられた1つ又は複数のキャッシュ・メモリ(図示せず)に関する補正機構をもたらすことを可能にする。その結果、コア101は、電源投入リセットが行われると、モバイル・デバイスとして構成され、そのデバイスのキャッシュ・メモリのための補正機構が整っている。
【0034】
前述の例は、
図1のマイクロプロセッサ・コア101のような集積回路デバイスにおける構成ヒューズに関する異なる多くの用法のうちの1つに過ぎない。構成ヒューズの他の用法には、デバイス特有のデータ(たとえば、通し番号(又はシリアル番号)、一意の暗号化鍵、ユーザによってアクセスされ得るアーキテクチャが義務付けるデータ、速度設定、電圧設定)、初期設定データ、及びパッチ・データの構成が含まれるが、以上には限定されないことが当業者には理解されよう。たとえば、今日の多くのデバイスは、マイクロコードを実行し、しばしば、そのマイクロコードによって読み取られるレジスタ108の初期設定を要求する。そのような初期設定データは、ヒューズ・アレイ102内のマイクロコード・レジスタ・ヒューズ(図示せず)によって供給されることが可能であり、このデータは、リセットが行われると、リセット・ロジック103によって(リセット回路104、リセット・マイクロコード105、又は両方の要素104〜105を使用して)読み取られて、マイクロコード・レジスタ108に供給される。本出願では、リセット回路104は、いくつかのタイプのコンフィギュレーションデータをもたらすハードウェア要素を備え、これらのタイプのコンフィギュレーションデータは、リセット・マイクロコード105の実行を介して供給され得ない。リセット・マイクロコード105は、コア101のリセットが行われると実行されて、コア101の初期設定に対応する機能を実行する内部マイクロコード・メモリ(図示せず)内に配置された複数のマイクロ命令を備え、それらの機能は、ヒューズ・アレイから読み取られたコンフィギュレーションデータを、マイクロコード・レジスタ108及びマイクロコード・パッチ機構109などの要素に供給することを含む。ヒューズを介して供給されるいくつかのタイプのコンフィギュレーションデータが、リセット・マイクロコード105を介してコア101における様々な要素107〜110に分配され得るか否かの基準は、コア101の特定の設計に主に応じる。集積回路デバイスを初期設定するように使用される特定の構成技法に関する包括的な手引きを提供することは、本出願の意図ではない。というのは、今日のマイクロプロセッサ・コア101の場合、構成可能な要素107〜110のタイプは、一般に、
図1に例示されるとおり、4つのカテゴリ、即ち、制御回路、マイクロコード・レジスタ、マイクロコード・パッチ機構、及びキャッシュ補正機構に分類されることが当業者には理解されるからである。更に、コンフィギュレーションデータの特定の値は、データの特定のタイプに基づいて大きく異なることが、当業者には理解されよう。たとえば、64ビット制御回路107は、コア101の通し番号を規定するASCIIデータを含み得る。別の64ビット制御レジスタは、異なる64の速度設定を有することが可能であり、それらの設定のうちの1つだけが、コア101の動作速度を指定するようにアサートされる。マイクロコード・レジスタ108は、通常、すべて0(即ち、論理低状態)に、又はすべて1(即ち、論理高状態)に初期設定され得る。マイクロコード・パッチ機構109は、1及び0の一様な分布を適切に含んで、マイクロコードROM(図示せず)の中でアドレスを示すとともに、それらのアドレスの置換マイクロコード値を示すことが可能である。最後に、キャッシュ補正(即ち、「修復」)機構は、1の非常にまばらな設定を備えて、或るキャッシュ・サブバンク要素(即ち、行又は列)を、1つ又は複数のキャッシュ・メモリの修復を可能にする特定の置換サブバンク要素で置き換える代用制御信号を示すことが可能である。
【0035】
ヒューズ・アレイ102は、マイクロプロセッサ・コア101のようなデバイスを、そのデバイスの製造の後に、構成するための優れた手段をもたらす。ヒューズ・アレイ102の選択されたヒューズをブローすることによって、コア101は、コア101の意図される環境における動作のために構成され得る。それでも、当業者には理解されるとおり、動作環境は、ヒューズ・アレイ102のプログラミングの後に変わる可能性がある。ビジネス要件が、当初は、たとえば、デスクトップ・デバイス101として構成されたデバイス101が、モバイル・デバイス101として再構成されることを要求する可能性がある。したがって、設計者は、ヒューズ・アレイ102内のヒューズの冗長なバンクを利用して、ヒューズ・アレイ102内の選択されたヒューズを「ブローしない」ことを可能にして、これにより、デバイス101が再構成されること、製造誤差が補正されることなどを可能にする技法を提供してきた。次に、これらの冗長アレイ技法が、
図2を参照して説明される。
【0036】
次に、
図2を参照すると、ヒューズ・アレイ201内の第1のヒューズ・バンク202 PFB1〜PFBNをブローした後にブローされ得る冗長なヒューズ・バンク202 RFB1〜RFBNを含む、
図1のマイクロプロセッサ・コア101内のヒューズ・アレイ201を示すブロック
図200が提示される。ヒューズ・バンク202 PFB1〜PFBN、RFB1〜RFBNのそれぞれが、コア101の特定の設計に対応する規定された数の個々のヒューズ203を備える。たとえば、所与のヒューズ・バンク202におけるヒューズ203の数は、コア101において容易に実施されるフォーマットでコンフィギュレーションデータを供給することを円滑にするように64ビット・マイクロプロセッサ・コア101における64個のヒューズ203であることが可能である。
【0037】
ヒューズ・アレイ201は、コア101におけるリセット・ロジック内に通常、配置されるレジスタ210〜211のセットに結合される。一次レジスタPR1が、第1のヒューズ・バンクPFB1〜PFBN(たとえば、
図200に示されるPFB3)のうちの1つを読み取るのに使用され、冗長なレジスタRR1が、冗長なヒューズ・バンクRFB1〜RFBNのうちの対応する1つを読み取るのに使用される。レジスタ210〜211は、出力FB3を生成する排他的論理和ロジック212に結合される。
【0038】
動作の際、コア101の製造の後に、第1のヒューズ・バンクPFB1〜PFBNが、知られている技法によって、コア101のためのコンフィギュレーションデータでプログラミングされる。冗長なヒューズ・バンクRFB1〜RFBNは、ブローされず、冗長なヒューズ・バンクRFB1〜RFBNにおけるすべてのヒューズに関する論理低状態のままである。コア101の電源投入/リセットが行われると、第1のヒューズ・バンクPFB1〜PFBNと冗長なヒューズ・バンクRFB1〜RFBNの両方が、構成のために要求されるとおり一次レジスタ及び冗長なレジスタ210〜211にそれぞれ読み込まれる。排他的論理和ロジック212が、レジスタ210〜211の内容の排他的論理和結果である出力FB3を生成する。冗長なヒューズ・バンクのすべてがブローされないまま(即ち、論理低状態)であるので、出力FB3値は、単に、製造の後に第1のヒューズ・バンクPFB1〜PFBNにプログラミングされていた値である。
【0039】
次に、設計要件又はビジネス要件が、第1のヒューズ・バンクPFB1〜PFBNにプログラミングされた情報の一部が変更される必要があることを要求することを想定されたい。したがって、電源投入時に読み取られた情報を変更するために冗長なヒューズ・バンクRFB1〜RFBN内の対応するヒューズ203をブローするプログラミング動作が実行される。選択された冗長なバンクRFB1〜RFBNにおけるヒューズ203をブローすることによって、一次ヒューズ・バンクPFB1〜PFBNにおける対応するヒューズ203の値が、論理補数として返される。
【0040】
図2の機構は、デバイス101内のヒューズ203の「再ブロー」を可能にするように使用され得るが、当業者には理解されるとおり、所与のヒューズ203は、1セットだけの冗長なヒューズ・バンクRFB1〜RFBNしか存在しないので、1回しか再ブローされ得ない。更なる再ブローを可能にするのに、対応する数の更なるヒューズ・バンク202及びレジスタ210〜211が部品101に追加されなければならない。
【0041】
したがって、
図1〜
図2に関連して前述したヒューズ・アレイ機構は、マイクロプロセッサ・コア及びその他の関連するデバイスを十分に構成する十分な柔軟性をもたらしながら、限られた回数の再ブローも可能にしている。このことは、主に、従来の製造技術、たとえば、65ナノメートル工程及び45ナノメートル工程が、チップ上で、チップ上に配置されたコア101の構成を可能にする十分なヒューズを実装するための豊富な基板占有面積を許すという事実による。しかし、本発明者らは、今日の技術が、2つの重要な要因のために先行きが限られていることに注目している。第1に、当技術分野における傾向は、単一のチップ上に複数のデバイス・コア101を配置して処理パフォーマンスを向上させることである。これらのいわゆるマルチコア・デバイスは、たとえば、2〜16個の個々のコア101を含むことが可能であり、それらのコア101のそれぞれが、電源投入/リセットが行われると、ヒューズ・データで構成されなければならない。したがって、4コア・デバイスの場合、個々のコアに関連付けられたデータの一部が変わる可能性がある(たとえば、キャッシュ補正データ、冗長なヒューズ・データなど)という点で、4つのヒューズ・アレイ201が要求される。第2に、当業者には理解されるとおり、製造工程技術が、たとえば、32ナノメートルまで小さくなる一方で、トランジスタ・サイズがそれに相応して小さくなるにつれ、ヒューズ・サイズは大きくなり、このため、45ナノメートル・チップとの対比で、32ナノメートル・チップ上に同一サイズのヒューズ・アレイを実装するのにより多くのチップ基板占有面積が要求される。
【0042】
前述の限界の両方、及びその他の限界が、デバイス設計者に、より具体的には、マルチコア・デバイス設計者に相当な難題をもたらし、本発明者らは、従来のデバイス構成機構に優る大幅な改良が、本発明により実施され得ることに注目し、本発明は、マルチコア・デバイスにおける個々のコアのプログラミングを可能にするとともに、キャッシュ補正要素及びヒューズ再プログラミング(「再ブロー」)要素の実質的な増加を可能にする。次に、本発明を、
図3〜
図12を参照して説明する。
【0043】
図3を参照すると、マルチコア・デバイスのための構成/修復データの圧縮(compression)及び非圧縮化(decompression)を可能にする本発明によるシステム300を特徴付けるブロック図が提示されている。このマルチコア・デバイスは、チップ330上に配置された複数のコア332を備える。例示のため、4つのコア332、CORE1〜CORE4が、チップ330上に示されるものの、本発明は、チップ330上に配置された様々な数のコア332を企図している。一実施形態において、すべてのコア332は、やはりチップ330上に配置された単一のキャッシュ・メモリ334を共有する。単一のプログラマブル・ヒューズ・アレイ336が、やはりチップ330上に配置され、コア332のそれぞれは、電源投入/リセット中、前述したとおり、ヒューズ・アレイ336にアクセスしてコンフィギュレーションデータを取り出し、非圧縮化(又は伸長)するように構成される。
【0044】
一実施形態において、コア332は、マルチコア・マイクロプロセッサ330として構成されたマイクロプロセッサ・コアを備える。別の実施形態において、マルチコア・マイクロプロセッサ330は、x86互換マルチコア・マイクロプロセッサとして構成される。更に別の実施形態において、キャッシュ334は、マイクロプロセッサ・コア332に関連付けられたレベル2(L2)キャッシュ334を備える。一実施形態において、ヒューズ・アレイ336は、8192(8K)個の個々のヒューズ(図示せず)を備えるものの、他の数のヒューズも企図される。単一コア実施形態において、1つだけのコア332が、チップ330上に配置され、コア332は、キャッシュ334及び物理ヒューズ・アレイ336に結合される。本発明者らは、本発明の特徴及び機能が、以降、マルチコア・デバイス330の脈絡で説明されるものの、これらの特徴及び機能は、単一コア実施形態にも同様に当てはまることを指摘している。
【0045】
システム300は、仮想ヒューズ・アレイ303に結合されたコンプレッサ320を含むデバイス・プログラマ310も含む。一実施形態において、デバイス・プログラマ310は、よく知られたプログラミング技法により、チップ330の製造の後にコンフィギュレーションデータを処理し、ヒューズ・アレイ336をプログラミングするように構成されたCPU(図示せず)を備え得る。CPUは、製造の後にデバイス・チップ330を試験するのに使用されるウェーハ試験装置に組み込まれ得る。一実施形態において、コンプレッサ320は、デバイス・プログラマ310上で実行されるアプリケーション・プログラムを備えることが可能であり、仮想ヒューズ・アレイ303は、コンプレッサ320によってアクセスされるメモリ内のロケーションを備えることが可能である。仮想ヒューズ・アレイ303は、複数の仮想ヒューズ302をそれぞれが備える複数の仮想ヒューズ・バンク301を含む。一実施形態において、仮想ヒューズ・アレイ303は、64個の仮想ヒューズ302をそれぞれが備え、サイズが8Kbである仮想アレイ303をもたらす128個の仮想ヒューズ・バンク301を備える
【0046】
動作の際に、デバイス330のための構成情報は、製造プロセスの一環として、
図1を参照して前述したとおり、仮想ヒューズ・アレイ303に入力される。したがって、その構成情報は、制御回路コンフィギュレーションデータと、マイクロコード・レジスタのための初期設定データと、マイクロコード・パッチ・データと、キャッシュ補正データとを備える。更に、前述したとおり、データ・タイプのそれぞれに関連する値の分布は、タイプごとに実質的に異なる。仮想ヒューズ・アレイ303は、チップ330上のマイクロプロセッサ・コア332のそれぞれのための構成情報と、チップ330上のキャッシュ334のそれぞれのための補正データとを備えるヒューズ・アレイ(図示せず)の論理表現である。
【0047】
その情報が仮想ヒューズ・アレイ303に入力された後、コンプレッサ320は、仮想ヒューズ・バンク301のそれぞれにおける仮想ヒューズ302の状態を読み取り、データ・タイプのそれぞれに対応する別々の圧縮アルゴリズムを使用してその情報を圧縮して、圧縮されたヒューズ・アレイ・データ303をもたらす。一実施形態において、制御回路のためのシステム・データは、圧縮されるのではなく、圧縮されずに転送される。マイクロコード・レジスタ・データを圧縮するのに、マイクロコード・レジスタ・データに対応する状態分布を有するデータを圧縮するために効果的であるマイクロコード・レジスタ・データ圧縮アルゴリズムが使用される。マイクロコード・パッチ・データを圧縮するのに、マイクロコード・パッチ・データに対応する状態分布を有するデータを圧縮するために効果的であるマイクロコード・パッチ・データ圧縮アルゴリズムが使用される。キャッシュ補正データを圧縮するのに、キャッシュ補正データに対応する状態分布を有するデータを圧縮するために効果的であるキャッシュ補正データ圧縮アルゴリズムが使用される。
【0048】
次に、デバイス・プログラマ310が、圧縮されていないヒューズ・アレイ・データ及び圧縮されたヒューズ・アレイ・データを、チップ330上の物理ヒューズ・アレイ336にプログラミングする。
【0049】
電源投入/リセットが行われると、コア332のそれぞれが、物理ヒューズ・アレイ336にアクセスして、圧縮されていないヒューズ・アレイ・データ及び圧縮されたヒューズ・アレイ・データを取り出すことが可能であり、コア332のそれぞれの内部に配置されたリセット回路/マイクロコード(図示せず)が、圧縮されていないヒューズ・アレイ・データを分配し、圧縮されたヒューズ・アレイ・データを、前述したデータ・タイプのそれぞれに対応する別々の伸長アルゴリズムにより伸長して、仮想ヒューズ・アレイ303に最初に入力された値をもたらす。次に、リセット回路/マイクロコードが、その構成情報を制御回路(図示せず)、マイクロコード・レジスタ(図示せず)、パッチ要素(図示せず)、及びキャッシュ補正要素(図示せず)に入力する。
【0050】
有利には、本発明によるヒューズ・アレイ圧縮システム300は、デバイス設計者が、従来、提供されてきたものよりも実質的に少ない数のヒューズを物理ヒューズ・アレイ336において使用すること、及び物理ヒューズ・アレイ336にプログラミングされた、圧縮された情報を利用して、電源投入/リセット中にマルチコア・デバイス330を構成することを可能にする。
【0051】
次に
図4を参照すると、本発明によるヒューズ伸長機構を示すブロック
図400が提示されている。この伸長機構は、
図3のマイクロプロセッサ・コア332のそれぞれの内部に配置され得る。本発明を明確に教示する目的で、1つだけのコア420が、
図4に示され、チップ上に配置されたコア332のそれぞれは、図示されるコア420と実質的に均等の要素を備える。前述したとおりチップ上に配置された物理ヒューズ・アレイ401が、コア420に結合される。物理ヒューズ・アレイ401は、圧縮されたマイクロコード・パッチ・ヒューズ403と、圧縮されたレジスタ・ヒューズ404と、圧縮されたキャッシュ補正ヒューズ405と、圧縮されたヒューズ補正ヒューズ406とを備える。また、物理ヒューズ・アレイ401は、前述したシステムコンフィギュレーションデータのような圧縮されていないコンフィギュレーションデータ(図示せず)、及び/又はブロック誤り検査−訂正(ECC)コード(図示せず)を備えることも可能である。本発明によるECCフィーチャを含めることは、後段で更に詳細に説明される。
【0052】
マイクロプロセッサ・コア420は、コア420に電源が投入された後、及びコア420にリセット・シーケンスのステップを開始させる事象に応答して、アサートされるリセット信号RESETを受け取るリセット・コントローラ417を備える。リセット・コントローラ417は、デコンプレッサ421を含む。デコンプレッサ421は、パッチ・ヒューズ要素408と、レジスタ・ヒューズ要素409と、キャッシュ・ヒューズ要素410とを有する。また、デコンプレッサは、バス412を介してパッチ・ヒューズ要素408、レジスタ・ヒューズ要素409、及びキャッシュ・ヒューズ要素410に結合されたヒューズ補正要素411も備える。パッチ・ヒューズ・デコンプレッサは、コア420におけるマイクロコード・パッチ要素414に結合される。レジスタ・ヒューズ要素409は、コア420におけるマイクロコード・レジスタ415に結合される。キャッシュ・ヒューズ要素410は、コア420におけるキャッシュ補正要素416に結合される。一実施形態において、キャッシュ補正要素416は、
図3のキャッシュ334のような、すべてのコア420によって共有されるチップ上L2キャッシュ(図示せず)内に配置される。別の実施形態は、コア420内のL1キャッシュ(図示せず)内に配置されたキャッシュ補正要素416を企図する。更なる実施形態は、前述したL2キャッシュとL1キャッシュの両方を補正するように配置されたキャッシュ補正要素416を考慮する。他の実施形態は、複数のコア上キャッシュ、及びコア上にない共有されるキャッシュを企図する。
【0053】
動作の際、RESETがアサートされると、リセット・コントローラ416が、物理ヒューズ・アレイ401におけるヒューズ402〜406の状態を読み取り、圧縮されたシステム・ヒューズ402の状態をデコンプレッサ421に分配する。ヒューズ・データが読み取られ、分配された後、デコンプレッサ421のヒューズ補正要素411が、圧縮されたヒューズ補正ヒューズ状態を伸長して、それまでにプログラミングされていた状態から状態が変更されるべき物理ヒューズ・アレイ401における1つ又は複数のヒューズ・アドレスを示すデータをもたらす。そのデータは、1つ又は複数のヒューズ・アドレスの各アドレスの値を含むことも可能である。1つ又は複数のヒューズ・アドレス(及びオプションの値)は、バス412を介して要素408〜410にルーティングされて、それらのアドレスにおいて処理される対応するヒューズの状態が、それらのアドレスに対応する圧縮されたデータの伸長に先立って、変更されるようにする。
【0054】
一実施形態において、パッチ・ヒューズ要素408は、圧縮されたマイクロコード・パッチ・ヒューズ403の状態を、
図3を参照して前述したマイクロコード・パッチ圧縮アルゴリズムに対応するマイクロコード・パッチ伸長アルゴリズムにより伸長するように動作するマイクロコードを備える。一実施形態において、レジスタ・ヒューズ要素409は、圧縮されたレジスタ・ヒューズ404の状態を、
図3を参照して前述したレジスタ・ヒューズ圧縮アルゴリズムに対応するレジスタ・ヒューズ伸長アルゴリズムにより伸長するように動作するマイクロコードを備える。一実施形態において、キャッシュ・ヒューズ要素410は、圧縮キャッシュ補正ヒューズ405の状態を、
図3を参照して前述したキャッシュ補正ヒューズ圧縮アルゴリズムに対応するキャッシュ補正ヒューズ伸長アルゴリズムにより伸長するように動作するマイクロコードを備える。要素408〜410のそれぞれが、バス412を介してヒューズ補正要素411からアドレス(及びオプションの値)が供給されたヒューズの状態を変更した後、要素408〜410のそれぞれのデータが、使用される対応するアルゴリズムにより伸長される。後段で更に詳細に説明されるとおり、本発明は、デコンプレッサ407〜411のいずれによって実行される伸長プロセスの開始にも先立って、物理ヒューズ・アレイ内の任意のヒューズ・アドレスの複数回の「再ブロー」を企図する。一実施形態において、バス412は、それぞれのルーチンの間でデータを転送するのに使用される従来のマイクロコード・プログラミング機構を内部に備えることが可能である。本発明は、コンフィギュレーションデータを、そのコンフィギュレーションデータの特定のタイプに基づいて、認識し、伸長する能力を有する包括的なデコンプレッサ421を更に企図する。したがって、デコンプレッサ421内の記載される要素408〜411は、本発明の関係のある態様を教示するために提示されるが、本発明の企図される実装形態は、必ずしも別々の要素408〜411を含むとは限らず、前述した要素408〜411のそれぞれに対応する機能を提供する包括的なデコンプレッサ421を含む可能性がある。
【0055】
一実施形態において、リセット・コントローラ417が、パッチ・ヒューズ要素408内のマイクロコードの実行を開始して、圧縮されたマイクロコード・パッチ・ヒューズ403の状態を伸長する。また、リセット・コントローラ417は、レジスタ・ヒューズ要素409内のマイクロコードの実行も開始して、圧縮されたレジスタ・ヒューズ404の状態を伸長する。リセット・コントローラ417は、キャッシュ・ヒューズ要素410内のマイクロコードの実行を更に開始して、圧縮されたキャッシュ補正ヒューズ406の状態を伸長する。また、デコンプレッサ421内のマイクロコードは、圧縮されたデータの伸長に先立って、圧縮されたヒューズ補正ヒューズ406によって供給されるヒューズ補正データによってアドレス指定される任意のヒューズの状態を変更するようにも動作する。
【0056】
本発明によるリセット・コントローラ417、デコンプレッサ421、及びデコンプレッサ421内の要素408〜411は、前述した機能及び動作を実行するように構成される。リセット・コントローラ417、デコンプレッサ421、及びデコンプレッサ421内の要素408〜411は、記載される本発明による機能及び動作を実行するように使用される、ロジック、回路、デバイス、若しくはマイクロコード、又はロジック、回路、デバイス、若しくはマイクロコードの組合せ、或いは均等の要素を備えることが可能である。リセット・コントローラ417、デコンプレッサ421、及びデコンプレッサ421内の要素408〜411の内部でこれらの動作及び機能を実現するのに使用される要素は、リセット・コントローラ417、デコンプレッサ421、及びデコンプレッサ421内の要素408〜411の内部で他の機能及び/又は他の動作を実行するのに使用される他の回路、マイクロコードなどと、又はコア420内の他の要素と共有され得る。
【0057】
物理ヒューズ・アレイ401内のヒューズ403〜406の状態が変更され、伸長された後、伸長された「仮想」ヒューズの状態が、次に、適宜、マイクロコード・パッチ要素414、マイクロコード・レジスタ415、及びキャッシュ補正要素416にルーティングされる。したがって、コア420は、リセット・シーケンスの完了の後の動作のために構成される。
【0058】
本発明者らは、前述した伸長機能は、必ずしも、リセット・シーケンス中に特定の順序で実行されなくてもよいことを指摘している。たとえば、マイクロコード・パッチは、マイクロコード・レジスタ初期設定データの伸長の後に伸長されてもよい。同様に、それらの伸長機能が、並行に、又は設計上の制約を満足させるのに適切な順序で実行されてもよい。
【0059】
更に、本発明者らは、要素408〜411の実装形態は、必ずしも、ハードウェア回路と対比されるマイクロコードとして実装されなくてもよいことを指摘している。というのは、通常のマイクロプロセッサ・コア420において、マイクロコードによる直接の書き込みではなく、(キャッシュに関連するスキャン設計などの)ハードウェアを介してより容易に初期設定され得るコア420の要素が存在するからである。そのような実装の詳細は、設計者の判断に任される。しかし、本発明者らは、キャッシュ補正ヒューズは、従来、マイクロコードの実行を開始することに先立って、リセット中にハードウェア回路によって読み取られて、キャッシュ補正スキャン設計に入力されることを従来技術が教示することを提示する。ハードウェア制御回路ではなく、マイクロコードとしてキャッシュ・ヒューズ・デコンプレッサ410を実装することが本発明の特徴であるのは、コアのキャッシュが、一般に、マイクロコードが実行されるまでオンにされないからである。キャッシュ・ヒューズ要素410を実装するのにマイクロコードを利用することによって、スキャン設計にキャッシュ補正データを入力するためのより柔軟性のある有利な機構が提供され、相当なハードウェアが節約される。
【0060】
次に
図5を参照すると、本発明による圧縮されたコンフィギュレーションデータ500に関する例示的なフォーマット500を示すブロック図が提示されている。圧縮されたコンフィギュレーションデータ500は、
図3のコンプレッサ320によって仮想ヒューズ・アレイ303の中に存在するデータから圧縮され、マルチコア・デバイス330の物理ヒューズ・アレイ336にプログラミングされる(即ち、「ブローされている」)。リセット・シーケンス中、前述したとおり、圧縮されたコンフィギュレーションデータ500は、コア332のそれぞれによって物理ヒューズ・アレイ336から取り出され、コア420のそれぞれの内部のデコンプレッサ421の要素408〜411によって伸長され、補正される。伸長され、補正されたコンフィギュレーションデータが、次に、コア420内の様々な要素413〜416に供給されて、コア420が動作のために初期設定される。
【0061】
圧縮されたコンフィギュレーションデータ500は、前述したコンフィギュレーションデータ・タイプのそれぞれに関する1つ又は複数の圧縮されたデータ・フィールド502を備え、タイプ終了フィールド503によって区切られる。プログラミング事象(即ち、「ブロー」)は、ブロー終了フィールド504によって区切られる。データ・タイプのそれぞれに関連付けられた圧縮されたデータ・フィールド502は、データ・タイプのそれぞれに関連付けられた特定のビット・パターンを記憶するのに要求されるビット(即ち、ヒューズ)の数を最小限に抑えるように最適化された圧縮アルゴリズムにより符号化される。圧縮されたデータ・フィールド502のそれぞれを構成する物理ヒューズ・アレイ336におけるヒューズの数は、特定のデータ・タイプのために使用される圧縮アルゴリズムに応じる。たとえば、すべて1に、又はすべて0に初期設定されなければならない64個の64ビット・マイクロコード・レジスタを備えるコアを想定されたい。最適な圧縮アルゴリズムは、そのデータ・タイプに関して64個の圧縮されたデータ・フィールド502をもたらすように使用されることが可能であり、ここで、圧縮されたデータ・フィールド502のそれぞれは、圧縮されたデータ・フィールド502がレジスタ番号順序(即ち、1〜64)で規定される特定のマイクロコード・レジスタのための初期設定データを備える。圧縮されたデータ・フィールド502のそれぞれは、対応するマイクロコード・レジスタがすべて1に初期設定されている場合、ブローされ、対応するマイクロコード・レジスタがすべて0に初期設定されている場合、ブローされない単一のヒューズを備える。
【0062】
コア420におけるデコンプレッサ421の要素408〜410は、タイプ終了フィールド503を利用して、物理ヒューズ・アレイ336内でそれぞれの圧縮されたデータがどこに位置するかを特定するように構成され、ヒューズ補正デコンプレッサ4111は、ブロー終了フィールド504を利用して、初期プログラミング事象の後にプログラミングされている(即ち、ブローされている)圧縮されたヒューズ補正データを位置特定するように構成される。後段でより詳細に説明されるとおり、物理ヒューズ・アレイ336において相当な量の予備のヒューズを提供して、相当な数の後のプログラミング事象を可能にすることが本発明の特徴である。
【0063】
前述した例示的な圧縮されたタイプ・フォーマットは、コンフィギュレーションデータの圧縮及び伸長に関連する本発明の態様を明確に教示するように提示される。しかし、特定のタイプのデータが圧縮され、区切られる様態、並びにヒューズ・アレイ401内で圧縮されるべきデータの数及びタイプは、
図5の例に限定されることは意図されない。本発明を、当技術分野に存在する様々なデバイス及びアーキテクチャに仕立てることを可能にする他の数、タイプ、及びフォーマットも企図される。
【0064】
次に
図6を参照すると、本発明による伸長されたマイクロコード・パッチコンフィギュレーションデータ600のための例示的なフォーマットを示すブロック図が提示されている。リセット・シーケンス中、圧縮されたマイクロコード・パッチコンフィギュレーションデータが、各コア420によって物理ヒューズ・アレイ401から読み取られる。圧縮されたマイクロコード・パッチコンフィギュレーションデータは、次に、バス412を介して供給されるヒューズ補正データにより補正される。次に、その補正された、圧縮されたマイクロコード・パッチコンフィギュレーションデータが、パッチ・ヒューズ・デコンプレッサ408によって伸長される。この伸長プロセスの結果が、伸長されたマイクロコード・パッチコンフィギュレーションデータ600である。データ600は、初期設定データを要求するコア420内のマイクロコード・パッチ要素414の数に対応する複数の伸長されたデータ・ブロック604を備える。それぞれの伸長されたデータ・ブロック604は、コア・アドレス・フィールド601と、マイクロコードROMアドレス・フィールド602と、マイクロコード・パッチ・データ・フィールド603とを備える。フィールド601〜603のサイズは、コア・アーキテクチャに応じる。伸長プロセスの一環として、パッチ・ヒューズ・デコンプレッサ408が、マイクロコード・パッチ要素414を初期設定するのに要求されるターゲット・データの完成イメージを作成する。マイクロコード・パッチコンフィギュレーションデータ600の伸長の後に、従来の分配機構が、マイクロコード・パッチ要素414におけるそれぞれのアドレス指定されたコア及びマイクロコードROM置換回路/レジスタにデータ603を分配するのに使用され得る。
【0065】
次に
図7を参照すると、本発明による伸長されたマイクロコード・レジスタコンフィギュレーションデータ700に関する例示的なフォーマットを示すブロック図が提示されている。リセット・シーケンス中、圧縮されたマイクロコード・レジスタコンフィギュレーションデータが、各コア420によって物理ヒューズ・アレイ401から読み取られる。圧縮されたマイクロコード・レジスタコンフィギュレーションデータは、次に、バス412を介して供給されるヒューズ補正データにより補正される。次に、補正された、圧縮されたマイクロコード・レジスタコンフィギュレーションデータが、レジスタ・ヒューズ・デコンプレッサ407によって伸長される。この伸長プロセスの結果が、伸長されたマイクロコード・レジスタコンフィギュレーションデータ700である。データ700は、初期設定データを要求するコア420内のマイクロコード・レジスタ415の数に対応する複数の伸長されたデータ・ブロック704を備える。それぞれの伸長されたデータ・ブロック704は、コア・アドレス・フィールド701と、マイクロコード・レジスタ・アドレス・フィールド702と、マイクロコード・レジスタ・データ・フィールド703とを備える。フィールド701〜703のサイズは、コア・アーキテクチャに応じる。伸長プロセスの一環として、レジスタ・ヒューズ・デコンプレッサ407が、マイクロコード・レジスタ415を初期設定するのに要求されるターゲット・データの完成イメージを作成する。マイクロコード・レジスタコンフィギュレーションデータ700の伸長の後に、従来の分配機構が、それぞれのアドレス指定されたコア及びマイクロコード・レジスタ415にデータ703を分配するのに使用され得る。
【0066】
次に
図8を参照すると、本発明による伸長されたキャッシュ補正データ800に関する例示的なフォーマットを特徴付けるブロック図が提示されている。リセット・シーケンス中、圧縮されたキャッシュ補正データが、各コア420によって物理ヒューズ・アレイ401から読み取られる。圧縮されたキャッシュ補正データは、次に、バス412を介して供給されるヒューズ補正データにより補正される。次に、その補正された、圧縮されたキャッシュ補正データが、キャッシュ・ヒューズ・デコンプレッサ410によって伸長される。この伸長プロセスの結果が、伸長されたキャッシュ補正データ800である。様々なキャッシュ機構が、マルチコア・プロセッサ330において使用されることが可能であり、伸長されたキャッシュ補正データ800は、共有されるL2キャッシュ334の脈絡で提示され、ここで、コア332のすべてが、共有される領域を利用して、単一のキャッシュ334にアクセスすることが可能である。したがって、記載されるアーキテクチャによる例示的なフォーマットが提供される。データ800は、補正データを要求するコア420内のキャッシュ補正要素416の数に対応する複数の伸長されたデータ・ブロック804を備える。それぞれの伸長されたデータ・ブロック804、サブユニット列アドレス・フィールド802、及び置換列アドレス・フィールド803。当業者には理解されるとおり、メモリ・キャッシュは、キャッシュのサブユニットにおいて冗長な列(又は行)を有して製造されて、特定のサブユニットにおける機能する冗長な列(又は行)が、機能しない列(又は行)の代わりに使用されることを可能にする。したがって、伸長されたキャッシュ補正データ800は、機能しない列の代わりに機能する列(
図8に示される)を使用することを可能にする。更に、当業者には想起されるとおり、キャッシュ補正に関連する従来のヒューズ・アレイ機構は、冗長なサブユニット列が代わりに使用されることが要求される場合にブローされる各サブユニット列に関連するヒューズを含む。したがって、そのような多数のヒューズが要求される(すべてのサブユニット、及びサブユニットにおける列をアドレス指定するのに)ため、サブユニットの一部分だけが、通常、範囲に含められ、すると、もたらされる従来のキャッシュ補正ヒューズは、非常にまばらにしかブローされない。本発明者らは、置換を要求するサブユニット列に関してだけサブユニット列アドレス及び置換列アドレスをアドレス指定し、圧縮して、これにより、キャッシュ補正データを実装するのに要求されるヒューズの数が最小限に抑えられることが本発明の特徴であることを指摘している。その結果、本発明は、物理ヒューズ・アレイ・サイズ、及びその物理ヒューズ・アレイ・サイズにプログラミングされた更なるコンフィギュレーションデータの量によって制限されて、従来、提供されていたものを超えて、補正され得るキャッシュ334におけるサブユニット列(又は行)の数を拡大する可能性をもたらす。
図8に示す実施形態では、関連するコア332は、L2キャッシュ334を共有するコア334の1つだけが修正データ802〜803にアクセスし、修正データ802〜803をそのそれぞれのキャッシュ補正要素416に提供するように構成されることに留意されたい。フィールド802〜803のサイズは、コア・アーキテクチャに応じる。伸長プロセスの一環として、キャッシュ補正ヒューズ・デコンプレッサ410が、キャッシュ補正要素416を初期設定するのに要求されるターゲット・データの完成イメージを作成する。キャッシュ補正データ800の伸長の後に、担当するコア420における従来の分配機構が、それぞれのアドレス指定されたキャッシュ補正要素416にデータ802〜803を分配するのに使用され得る。
【0067】
図9を参照すると、本発明による伸長されたキャッシュ補正データ900に関する代替の例示的なフォーマットを特徴付けるブロック図が提示されている。
図9の実施形態は、
図4のもののようなマルチコア・プロセッサ構成において使用されることが可能であり、この構成では、コア420のそれぞれが、レベル1(L1)データ・キャッシュ及びL1命令キャッシュを含むが、以上には限定されない1つ又は複数のコア上のキャッシュ(図示せず)を備える。リセット・シーケンス中、圧縮されたキャッシュ補正データが、各コア420によって物理ヒューズ・アレイ401から読み取られる。圧縮されたキャッシュ補正データは、次に、バス412を介して提供されたヒューズ補正データにより補正される。次に、その補正された、圧縮されたキャッシュ補正データが、キャッシュ・ヒューズ・デコンプレッサ410によって伸長される。この伸長プロセスの結果が、伸長されたキャッシュ補正データ900である。データ900は、補正データを要求するコア420内のキャッシュ補正要素416の数に対応する複数の伸長されたデータ・ブロック904を備える。それぞれの伸長されたデータ・ブロック904は、コア・アドレス・フィールド901と、キャッシュ・アドレス(CAD)・フィールド905と、サブユニット列アドレス・フィールド902と、置換列アドレス・フィールド903とを有する。したがって、伸長されたキャッシュ補正データ800は、コア・アドレス・フィールド901によって指定されるコア420内で、CADフィールド905によって指定されたキャッシュ内の機能しない列(又は行)の代わりに機能する行(又は列)が使用することを可能にする。コア・アドレス・フィールド901内の事前定義されたコア・アドレス値が、コア上にない、L2キャッシュなどの共有されるキャッシュを指定することを可能にする。フィールド901〜903、905のサイズは、コア・アーキテクチャに応じる。伸長プロセスの一環として、キャッシュ補正ヒューズ・デコンプレッサ410が、キャッシュ補正要素416を初期設定するのに要求されるターゲット・データの完成イメージを作成する。キャッシュ補正データ900の伸長の後に、担当するコア420における従来の分配機構が、それぞれのアドレス指定されたキャッシュ補正要素416にデータ901〜903、905を分配するのに使用され得る。
【0068】
次に
図10を参照すると、本発明による伸長されたヒューズ補正データ1000に関する例示的なフォーマットを示すブロック図が提示されている。前述したとおり、リセット中、ヒューズ補正デコンプレッサ411が、物理ヒューズ・アレイ401内の圧縮されたヒューズ補正データ406にアクセスし、その圧縮されたヒューズ補正データを伸長し、もたらされる伸長されたヒューズ補正データ1000を、コア420内のその他のデコンプレッサ407〜410に供給する。伸長されたヒューズ補正データは、物理ヒューズ・アレイ401における連続するプログラミング事象の終わりを示す1つ又は複数のブロー終了フィールド1001を備える。後のプログラミング事象が生じた場合、再ブロー・フィールド1002が、プログラミングされて、後に続く1つ又は複数のヒューズ補正フィールド1003が再ブローされるべき物理ヒューズ・アレイ401内のヒューズを示すことを示す。ヒューズ補正フィールドのそれぞれは、再ブローされるべき物理ヒューズ・アレイ401内の特定のヒューズのアドレスを、その特定のヒューズの状態(即ち、ブローされている、又はブローされていない)とともに備える。再ブローされるべきヒューズだけが、ヒューズ補正ブロック・フィールド1003内で与えられ、所与の再ブロー事象内のフィールド1003の各グループは、ブロー終了フィールド1001によって区切られる。適切に符号化された再ブロー・フィールド1002が、所与のブロー終了フィールド1001の後に存在する場合、後に続く1つ又は複数のヒューズ・ヒューズが、対応するヒューズ補正フィールドによって示されるとおり、再ブローされて構成され得る。したがって、本発明は、アレイ・サイズ、及びそのアレイ・サイズ内で供給される他のデータによって制限されて、同一のヒューズに関する相当な数の再ブローの能力をもたらす。
【0069】
本発明者らは、圧縮されたコンフィギュレーションデータが記憶された共有される物理ヒューズ・アレイの利用に関連する基板占有面積及び電力の利得が、マルチコア・チップ上に配置される更なるフィーチャのための機会をもたらすという所見も述べた。更に、本発明者らは、当業者には理解されるとおり、今日の半導体ヒューズ構造が、しばしば、いくつかの欠点を抱えていることも指摘しており、それらの欠点のうちの1つが、「グローバック」と呼ばれる。グローバックは、ヒューズが、ブローされた後、いくらかの時間を経て、再接続する、即ち、プログラミングされた(即ち、ブローされた)状態からプログラミングされていない(即ち、ブローされていない)状態に戻るようになるプログラミング工程の逆転である。
【0070】
別の態様において、前述したとおり、本発明者らは、パワー・ゲーティング技法が、
図3のチップ330のようなマルチコア・チップの消費電力を最小限に抑えるのに使用される場合、難題が存在し得ることを指摘している。本出願の範囲を超えるそのような技法は、1つ又は複数のコア332が利用されていないとき、そのことを検出するのに使用され、いくつもの方法で、その1つ又は複数のコア332の電源が切られる(パワー・ゲーティング事象としても知られる)。パワー・ゲーティングされたコア332が実行のために要求される場合、コア332に電力が復元され、コア332が実行を開始する。特に本発明者らの関心対象となるのが、コア332が1つ又は複数のコア上のキャッシュを備える事例であり、
図9を参照して説明されるとおり、パワー・ゲーティング事象の下で、これらのキャッシュから電力が遮断される。当業者には理解されるとおり、パワー・ゲーティング事象の後にその1つ又は複数のキャッシュに電源を投入するために、その1つ又は複数のキャッシュはまず、前述したとおり、ヒューズ補正データを使用して構成されなければならない。しかし、ヒューズ・アレイの過度の読取りは、ヒューズ・アレイにおけるヒューズの寿命を短くすることも当業者には理解されよう。パワー・ゲーティングに関連する別の問題は、各コアが、キャッシュ補正ヒューズを読み取り、圧縮されたヒューズ修復データを伸長し、各コアのそれぞれのコア上のキャッシュのそれぞれに関して補正を構成するのに要求され得る過度の時間である。したがって、本発明の別の実施形態が、1)すべてのコアが、パワー・ゲーティング事象の後にそれらのコアのそれぞれのコア上のキャッシュを伸長し、構成するのに要求される時間を短縮し、2)パワー・ゲーティング条件の下でコアによるアクセスの回数を減らすことによってヒューズ・アレイの全体的な寿命を延ばすように提供される。
【0071】
次に
図11に注目すると、初期、及びパワー・ゲーティング事象の後にマルチコア・デバイス1100にキャッシュ補正データを迅速にロードするための本発明による機構の詳細を示すブロック図が提示されている。デバイス1100は、実質的に
図3〜
図10を参照して前述したとおりに構成された複数のコア1101を含む。更に、コア1101のそれぞれは、1つ又は複数のコア上のキャッシュCACHE1〜CACHEN1102と、キャッシュ修復ストア1103と、コンフィギュレーションデータ・ストア1104と、リセット・ロジック1105と、スリープ・ロジック1106とを含む。コア1102のそれぞれは、
図3〜
図10を参照して前述したとおり構成された物理ヒューズ・アレイ1110、及びコア1101と同一のチップ上に配置されるが、コア1101のいずれの内部にも配置されないストア(たとえば、ランダム・アクセス・メモリ(RAM))1130に結合される。このため、ストア1105は、以降、「非コア」ストア1105と呼ばれる。非コア・ストア1130は、コア1101のそれぞれにそれぞれが対応する指定されたサブストア1131〜1134を含む。マルチコア・デバイス1100は、コア1101のそれぞれに結合された電力制御装置1120を更に含む。同期バスSNYCが、コア1101のそれぞれに結合されて、電源投入中、リセット中、及びパワー・ゲーティング事象中にコア1101の間で同期通信を可能にする。
【0072】
例示の目的で、4つのコア1101、単一の物理ヒューズ・アレイ1110、及び単一の非コア・ストア1130だけが示されるが、本発明者らは、本発明による新規の独創的な概念が、任意の数の複数のコア1101、ヒューズ・アレイ1110、及び非コア・ストア1130に拡張され得ることを指摘している。一実施形態において、非コア・ストア1130は、パワー・ゲーティング事象中に電力を保持するランダム・アクセス・メモリ(RAM)を備える。一実施形態において、非コア・ストア1130は、4KBのRAMを備え、ただし、他のサイズも企図される。
【0073】
動作の際、電力制御装置1120は、コア1101の1つ又は複数に対する電力を遮断するため、及び復元するためにパワー・ゲーティングを実行するように構成される。電源投入/リセット動作中、コア1101のそれぞれの上のリセット・ロジック1105が、動作のなかでもとりわけ、前述したとおり、コア1101の構成を実行するように構成される。更に、リセット・ロジック105は、コンフィギュレーションデータ・レジスタ1104を読み取って、コア1101がマスタ・コアであるか、スレーブ・コアであるかを判定するように構成される。コンフィギュレーションデータが、コア1101がスレーブ・コアであることを示す場合、リセット・プロセスの一環として、スレーブ・コアは、コア1101のそれぞれのための伸長されたキャッシュ修復データがヒューズ・アレイ1110から読み取られ、非コア・ストア1130内の対応するサブストア1131〜1134に書き込まれたことを、マスタ・コアが同期バスSYNCを介して合図するまで待つ。対応するサブストア1131〜1134に書き込みが行われたことがSYNCを介して示されると、スレーブ・コアのそれぞれは、それらのコアのそれぞれの伸長された修復データを、対応するサブストア1131〜1134から読み取り、前述したとおり、それらのコアのそれぞれのコア上のキャッシュを構成することに取り掛かる。コンフィギュレーションデータが、コア1101がマスタ・コアであることを示す場合、電源投入/リセットの一環として、マスタ・コアは、コア1101のすべてのためのキャッシュ補正データをヒューズ・アレイ1110から読み取り、コア1101のすべてのための圧縮された補正データを伸長し、その伸長されたキャッシュ修復データを、コア1101のそれぞれに対応するサブストア1131〜1134に書き込む。次に、マスタ・コアは、その他のコア1101にSYNCを介して、伸長されたキャッシュ修復データの書き込みが完了したことを合図する。
【0074】
パワー・ゲーティング事象中、電力制御装置1120は、コア1101の1つ又は複数から電力を、そのコアのコア上のキャッシュ1102からも電力が遮断される限りで遮断する。しかし、電力は、非コア・ストア1130からは遮断されず、これにより、コア1101のそれぞれのための伸長された修復データが保持される。スリープ・ロジック1106は、パワー・ゲーティング事象の後にそれぞれのコア1101にいつ電力が復元されるかを決定し、そのコア1101のコア上のキャッシュのためのキャッシュ修復データをそのコアの各々のサブストア1131〜1134から直接に読み取り、そのコア1101の各々の修復データ・ストア1103を、そのコア1101のコア上のキャッシュ1102の修復のために構成し、これにより、パワー・ゲーティング事象の後に動作に戻るのに要求される時間を劇的に短縮する一方で、それと同時にヒューズ・アレイ1110の寿命を実質的に延ばす。
【0075】
本発明の部分、及び対応する詳細な説明は、ソフトウェア、即ち、コンピュータ・メモリ内のデータ・ビットに対する操作のアルゴリズム及び記号表現に関連して提示される。これらの説明及び表現は、当業者によって、自らの作業の内容を他の当業者に効果的に伝える説明及び表現である。アルゴリズムは、本明細書でこの用語が使用される際、及びこの用語が一般的に使用される際、所望される結果につながるステップの自己矛盾のないシーケンスであると考えられる。それらのステップは、物理量の物理操作を要求するステップである。通常、必然的にではないものの、これらの量は、記憶されること、転送されること、組み合わされること、比較されること、及びそれ以外で操作されることが可能な光信号、電気信号、又は磁気信号の形態をとる。ときとして、主に一般的な用法の理由で、これらの信号をビット、値、要素、シンボル、文字、項、数などと呼ぶことが好都合であることが分っている。
【0076】
しかし、これら、及び類似した用語のすべては、適切な物理量に関連付けられるべきであり、単に、これらの量に付けられた便利なラベルに過ぎないことに留意されたい。特に明記しない限り、又は説明から明白なとおり、「処理すること」又は「演算すること」又は「計算すること」又は「決定すること」又は「表示すること」などの用語は、コンピュータ・システムのレジスタ及びメモリの内部の物理的な電子量として表されるデータを操作して、コンピュータ・システムのメモリ若しくはレジスタ、又は他のそのような情報記憶デバイス、情報伝送デバイス、若しくは情報表示デバイスの内部の物理量として同様に表される他のデータに変換する、コンピュータ・システム、マイクロプロセッサ、中央処理装置、又は類似した電子コンピューティング・デバイスのアクション及びプロセスを指す。
【0077】
また、本発明のソフトウェア実施態様は、通常、プログラム記憶媒体の何らかの形態の上に符号化される、又は何らかのタイプの伝送媒体を介して実施されることにも留意されたい。プログラム記憶媒体は、電子媒体(たとえば、読取り専用メモリ、フラッシュ読取り専用メモリ、電気的にプログラミング可能な読取り専用メモリ)、ランダム・アクセス・メモリ磁気媒体(たとえば、フロッピー(登録商標)・ディスク若しくはハードディスク)、又は光媒体(たとえば、コンパクト・ディスク読取り専用メモリ若しくは「CD ROM」)であることが可能であり、読取り専用であっても、ランダム・アクセスであってもよい。同様に、伝送媒体は、金属トレース、より対線、同軸ケーブル、光ファイバ、又は当技術分野で知られている他の何らかの適切な伝送媒体であることが可能である。本発明は、いずれの所与の実装形態のこれらの態様によっても限定されない。
【0078】
以上に開示される特定の実施形態は、単に例示的であり、当業者は、開示される概念、及び特定の実施形態を、本発明と同一の目的を実行するために他の構造を設計するため、又は変形するための基礎として直ちに利用することができること、並びに添付の特許請求の範囲に記載される本発明の範囲を逸脱することなく、様々な変更、置換、及び改変が行われ得ることが当業者には理解されよう。