各実施例は、一般にハイブリッドメモリを実現するシステム、方法及び装置に関する。
図1は、少なくとも1つのハイブリッドメモリ装置を実現する計算システムの選択された側面を示すハイレベルブロック図である。
コンピュータシステム100が示される。コンピュータシステムは、デスクトップ、サーバ、ワークステーション、ラップトップ、携帯、テレビセットトップ、メディアセンタ、ゲームコンソール、統合システム(車両などにおける)、又は他のタイプのコンピュータシステムであってもよい。複数の実施例では、コンピュータシステム100は、複数のコンポーネントを一緒に接続するためのシステムボード102(すなわち、マザーボード)を有する。例えば、システムボード102は、配線トレース及び特定のインタフェースを介しコンポーネントを接続可能であってもよい。システムボード102は、接続されたコンポーネントに電力を提供する。さらに、システムボードは、複数のコンポーネントが互いに通信することを可能にするため、通信インタフェースを提供してもよい。
1以上のCPU(Central Processing Unit)が、システムボード102に接続されるコンポーネントの中にある。多数の実施例では、潜在的に多数のCPUが存在するが、図1に示される実施例では、簡単化のため、1つのみのCPU104が示される。CPU104は、Intel(登録商標)Corporation CPU又は他のブランドのCPUであってもよい。CPU104は、1以上のコアを有する。図示された実施例では、CPU104は、4つのコア、すなわち、コアA(106)、コアB(108)、コアC(110)及びコアD(112)を含む。他の実施例では、CPU104は、図1に示される4つのコアより多く又は少ない個数のコアを有してもよい。多数の実施例では、各コア(コアA(106)など)は、1以上の、実行ユニット、リタイアメントユニット、汎用及び特定のレジスタセットなどの内部の機能ブロックを有する。図1に示されるコアはマルチスレッド化又はハイパースレッド化されている場合、各ハードウェアスレッドはまたコアとみなされてもよい。
CPU104はまた、キャッシュ114などの1以上のキャッシュを有してもよい。図示されない多数の実施例では、キャッシュ114以外のさらなるキャッシュが実現され、各コアとメモリの実行ユニット間に複数レベルのキャッシュが存在する。異なる実施例では、キャッシュは異なる方法により割り当てられてもよい。キャッシュ114は、異なる実施例では多数の異なるサイズの1つであってもよい。例えば、キャッシュ114は、8メガバイト(MB)キャッシュ、16MBキャッシュなどであってもよい。さらに、異なる実施例では、キャッシュは、ダイレクトマップキャッシュ、フルアソシアティブキャッシュ、マルチウェイセットアソシアティブキャッシュ又は他のタイプのマッピングによるキャッシュであってもよい。各キャッシュは、各CPUのすべてのコアに共有される1つの大きな部分を有してもよいし、又は複数の別々の機能スライス(各コアについて1つのスライスなど)に分割されてもよい。各キャッシュはまた、すべてのコアに共有される1つの部分と、コア毎に別々の機能スライスである他の複数の部分とを有してもよい。
多数の実施例では、CPU104は、116などの1以上のハイブリッドメモリ装置に通信接続される。ハイブリッドメモリは、垂直にスタックされ、基板に付属されたハイブリッドメモリバッファ120を少なくとも部分的に介し基板118に接続される複数のメモリタイルのレイアウトを有する。多数の実施例では、与えられたメモリタイルの基本構成は、DRAM(Dynamic Random Access Memory)のものであってもよい。
ハイブリッドメモリ装置116は、高速(HS)入出力リンク122(インターコネクト、バスなど)を介しCPU104に通信接続される。HSリンク122は、HS入出力(I/O)インタフェース124を介しCPU104に通信接続される。異なる実施例では、CPU104とハイブリッドメモリ116とは、PCI−Expressインタフェース、フルバッファDIMM(Dual−Inline−Memory−Module)インタフェース、SMI(Scalable Memory Interface)、Intel(登録商標)によるQuickPath技術などの専用のポイント・ツー・ポイントインタフェース、又は他の同様の高速インタフェースを利用して通信してもよい。
多数の実施例では、リンク122は、1以上の光配線、金属配線、又はデータ、アドレス、制御及び/又はクロック情報を伝送可能な他の配線(すなわち、ライン)を有してもよい。多数の実施例では、リンクは、各レーンがCPUとハイブリッドメモリ116との間でパケット化されたデータを伝送する複数のレーンを有する高速シリアルインタフェースである。
多数の実施例では、CPU104は、HSリンク122を介し送受信される情報を変換するためのメモリコントローラ126を有する。メモリコントローラ126は、リンク122へのアクセスを取得するため、HS I/Oインタフェース124に接続される。図示されない他の実施例では、メモリコントローラ126は、システムボード102に直接接続されるか、又はシステムボード102に接続される他の装置(メモリコントローラハブなど)内に潜在的に統合される分離した装置であってもよい。
コンピュータシステム100内に一般にある他の装置は、簡単化のため図示しない。これらの装置は、1以上の追加的なCPU、CPU104がグラフィック及び/又は通信サブシステムに接続されることを可能にするハイパフォーマンスハブコンプレックスを有してもよい。さらなるコンポーネントは、I/O装置(マスストレージ装置、USB(Universal Serial Bus)装置など)を有するI/OサブシステムとCPUとの間の通信を変換するためのI/Oアダプタを収容した1以上のI/Oコンプレックスを有してもよい。I/O装置の一部は、DMA処理を介しI/O装置からハイブリッドメモリ116への直接的なアクセスを可能にするためのDMA(Direct Memory Access)機能を有してもよい。
図2は、ハイブリッドメモリ装置の実施例のより詳細な図を示す。
ハイブリッドメモリ装置200の構成は、メモリタイル202などの多数のメモリタイルを有してもよい。メモリタイル202は、各位置がカラム及びローデコーダを介しアドレス指定されるビットストレージ位置のグリッドから構成されるタイル内の少なくとも1つのメモリアレイ(すなわち、各アレイ)を有する。図7において、後述されるように、メモリタイルの詳細なブロック図が示される。
図2に戻って、メモリタイルのグリッドは単一のメモリストレイタム204を構成する。図2において、メモリストレイタム204は、ハイブリッドメモリバッファ206(メモリ基板208に接続される)の上位の1つのレベルにおけるすべてのタイルをハイライとするより薄いラインにより具体的に示される。より詳細には、メモリストレイタムは、3D空間(3D空間座標系の参照が図2の上部に示される)におけるX及びY方向の任意数のメモリタイルのグリッドを構成可能である。例えば、図2に示される実施例では、メモリストレイタム206などのメモリストレイタムは、ストレイタム毎にトータルで48個のタイルについて、X方向の6タイル×Y方向の8タイルである。
多数の実施例では、互いに先頭にスタックされた複数のメモリストレイタムが存在する。図2において、スタックにはトータルで8つのストレイタムがある。スタックのベースに示されるハイブリッドメモリバッファ206は、複数のフォームの1つを構成可能である。図2に示されるフォームは、先頭にスタックされるメモリストレイタムと同じ大きさのX,Y方向の面積を含むストレイタムフットプリントフルハイブリッドメモリバッファである。他の多数の実施例では、ハイブリッドメモリバッファは、ストレイタムフットプリントより有意に小さなX,Y方向のスペースを利用するコンパクトサイズのパーシャルハイブリッドメモリバッファを有する。後述される図4A〜4Cにおいて、パーシャルハイブリッドメモリバッファが示される。
図2に示されるストレイタムフットプリントフルハイブリッドメモリバッファ206に関して、ハイライト化されたカラムX0,Y7(破線により示される)などのタイルの垂直方向の各カラムの下方に、メモリバッファ(MB)タイル212などのMBタイルが存在する。MBタイルは、MBタイルが配置される特定のカラムのメモリタイルについて利用されるバッファ機能を含む。多数の実施例では、メモリタイルカラム(カラム210など)全体にアクセスするため、TSV214などのTSV(Through Silicon Vias)セットが、カラムの各ストレイタムレイヤの各タイルを介し経由される。図8は、以下で詳細に説明される、ハイブリッドメモリバッファ機能ブロックの詳細なブロック図を示す。
異なる多数の実施例では、基板の具体的なレイアウト例は説明の簡単化のため記載されないが、メモリ基板208は、多数のタイプの基板レイアウトの1つから構成される。
図3Aは、ハイブリッドメモリパッケージに含まれるストレイタムフットプリントフルハイブリッドメモリバッファの実施例の側面図を示す。
いくつかの実施例では、フルハイブリッドメモリバッファ300は、S−to−S EC304を介しパッケージ基板302に接続される。さらに、いくつかの実施例では、S−to−S EC304はBGA(Ball Grid Array)を有してもよい。図示されない他の実施例では、他のタイプの接続機構(PGA(Pin Grid Array)など)が利用されてもよい。
メモリストレイタムは、互いに先頭に直接的にスタックされる。図3Aに示される実施例では、スタックには4つのメモリストレイタム306,308,310,312が存在する。多数の実施例では、ボンディング物質が、スタック上で各メモリストレイタムを次のメモリストレイタムに接続するのに利用される。フルハイブリッドメモリバッファは、TSV314,316を利用することによりメモリストレイタムのそれぞれに接続される。TSV314,316は、電力及び情報を伝送するための機能を有する。(すなわち、各TSVは、フルハイブリッドメモリバッファからメモリストレイタム306〜312に、またメモリストレイタム306〜312からフルハイブリッドメモリバッファに、データ、アドレス、クロック及び制御信号を提供してもよい。)
フルハイブリッドメモリバッファ300は、部分的にはフルハイブリッドメモリバッファ300のサイズのため、各メモリストレイタム306〜312への電力提供を完全に制御する。例えば、S−to−S(Silicon−to−Silicon)EC(Electrical Connection)の一部は、電力供給ラインである。いくつかの実施例では、S−to−S EC304はソルダバンプを有し、他の実施例では、他の結合技術を有してもよい。S−to−S EC304を介しパッケージ基板302から経由した各ラインがフルハイブリッドメモリバッファ300に到着するため、メモリバッファは、スイッチオンし、ストレイタムのスタックから構成される装置全体、個別のメモリストレイタム、又は可能性としては所与のメモリストレイタム内の各タイルにさえ電力供給する電力ゲーティングスキームを実装してもよい。
他の実施例では、フルハイブリッドメモリバッファ300は、装置全体又はその一部に供給される電圧を動的に変更可能な一体化された電圧レギュレータ(VR)を有してもよい。パッケージ基板302を介し供給される電圧は、システムボードに配置された電力供給サブシステムから到来し、それは、システムボードの一部にわたる個々の電力プレーンに電力をそれぞれ供給する複数のVRを有してもよい。
図3Bは、ハイブリッドメモリパッケージに含まれるストレイタムフットプリントフルハイブリッドメモリバッファの実施例の平面図を示す。
図3Bに示される実線のグリッドは、メモリバッファタイルセット(318)を有する。MBタイルグリッド318は、メモリタイルのカラムの下部のメモリタイルとの関係において各MBタイルの配置を示すための観点から図示される。MBタイルグリッド318は、フルハイブリッドメモリバッファ300のトップダウンの視点であり、フルハイブリッドメモリバッファ300が有する各MBタイルに区切られる。
図3Bに示される破線のグリッドは、MBタイルグリッド318の直接的な先頭の第1ストレイタム(メモリストレイタム306に対応する)のメモリタイルセットを有する。メモリタイルグリッド320は、互いの先頭の2つの別々のグリッドを示すことが可能となるように、MBタイルグリッド318からの若干のオフセットである(一般に、グリッドはタイル毎に配置される)。
図3Bにおいて、上述されるように、メモリタイルグリッド320とMBタイルグリッド318との間で電力及びデータを提供する手段を設けるTSV(322)が示される。メモリストレイタム308,310,312に対応するさらなるメモリタイルグリッドは、図3Bに通常はあるが、図面の簡単化のため図示しない。
図4Aは、ハイブリッドメモリパッケージに含まれるスモールフットプリントパーシャルハイブリッドメモリバッファの実施例の側面図を示す。
パーシャルハイブリッドメモリバッファ(HMB)400は、パッケージ基板402の内部から切り出された凹部に配置される。この凹部は、HMBソケット404と呼ばれてもよい。多数の実施例では、HMB400は、スタックのメモリタイルカラムのグリッドの幅及び長さの全体にわたるものでないが、メモリストレイタム(すなわち、メモリストレイタム406,408,410,412)のスタックは、HMB400の直接的な上部に配置される。むしろ、HMB400は、メモリストレイタムスタックを有するメモリタイルカラムのグリッドの中心にある。これらの実施例では、HMB400は、再分配レイヤ(RDL)ライン又は他のタイプの結合機構を介しTSV(TSV414,416など)に接続される。
HMB400のチップパッケージには幅及び長さのサイズ要求がないため、HMB400は、図3A,3Bに示されるストレイタムサイズのメモリバッファより稠密でコストが低くなる可能性を有する。さらに、HMB400のチップパッケージはメモリストレイタムの幅及び長さ全体をカバーしないため、メモリストレイタムスタックは、パッケージ基板402から電力を直接受け取る。
いくつかの実施例では、パーシャルHMB400は、メモリスタック全体又はその一部に供給される電圧を動的に変更可能な一体化されたVRを有する。パッケージ基板402を介し供給される電圧は、システムボード上に配置された電力供給サブシステムから到来し、システムボードの一部にわたる個々の電力プレーンに電力をそれぞれ提供する複数のVRを有する。
図4Bは、ハイブリッドメモリパッケージに含まれるハイブリッドサイズのメモリバッファの実施例の斜視図を示す。
図4Bは、図4Aと同じコンポーネントを示す。図4Bの目的は、斜視図の異なるコンポーネントの間の具体的な結合を示すことである。多数の実施例では、HMB400とTSV(TSV414m416など)とを接続するRDLライン418がある。RDLライン418は、HMB400の先頭において到来した各データ、アドレス、クロック及び制御ピンと各TSVとを接続するためのメモリスタックの下面を介し経由されてもよい。他の実施例では、ワイヤボンドがRDLラインでなく機構を接続するために利用される。
多数の実施例では、さらなるRDLラインがHMB基板接続420を生成する。HMB基板接続420は、パッケージ基板402からHMB400に情報及び電力を伝送する潜在的に多数の結合の1つの例示的な具体例にすぎない。多数の実施例では、HMB400は、パケットの形態によりHSリンク(図1の122)を介し情報を送受信する。
入力パケットはHMB基板結合420を介しHMB400に到着し、出力パケットはHMB400からHMB基板結合420を介しコンピュータシステムの他のコンポーネントに送信される。HMB基板結合420を構成するRDLラインがまた、パッケージ基板402からHMB400に電力を供給する。
図示されない他の実施例では、HMB400は、HMB400の下部の結合ポイントのボールグリッドアレイを介しパッケージ基板に接続されてもよい。この実施例では、HMBソケット404は、アレイの結合ボールを有する。しかしながら、この実施例は、パッケージ基板402における非標準的な電気ルーティングを要求するものである。基板は、HMBソケット404のベースと基板の下部との間でより薄くなるためである。
図4Aを参照して上述されるように、HMB400を利用することは、メモリストレイタム基板結合422を介しメモリストレイタムスタックとパッケージ基板とを直接結合することを可能にする。この結合は、バッファを介し経由される電力供給に依拠するのでなく(図3A及び3Bのストレイタムサイズのバッファのケースと同様に)、パッケージ基板からメモリストレイタムスタックへの直接的な電力供給を可能にする。電力供給のメモリストレイタム基板結合422は、メモリストレイタム406、すなわち、スタックの下部のストレイタムと基板とを直接結合する。その後、電力は、TSV414,416によりスタックのメモリストレイタムのすべてを介し供給される。再び、図4Bのメモリストレイタム基板結合422は、単一の結合の例示であり、実際には、メモリストレイタムスタックとの基板上のBGA全体の結合が多数あってもよい。
図4Cは、ハイブリッドメモリパッケージに含まれるパーシャルハイブリッドメモリバッファの実施例の平面図を示す。
図4Cに示されるHMB400は、RDLライン418の要求された長さを最小化するため、メモリストレイタムスタックの下方の中心に配置される。メモリストレイタムスタックの下部のメモリストレイタムは、破線のメモリタイルグリッド424により示される。図示されるメモリタイルグリッド424は、メモリタイル426の4×4のグリッドを含む。
HMB400は、RDLライン418を介しグリッドの各メモリタイルに接続される。これらのワイヤボンド418は、HMBに接続されるTSV426に結合される。さらに、グリッドの各メモリタイルはまた、1以上の基板に結合されたTSV428を有する。多数の実施例では、HMBに結合されたTSV426は、メモリストレイタムスタックに情報(すなわち、データ、アドレス、クロック及び制御信号)を提供する。さらに、多数の実施例では、基板に結合されたTSV428は、メモリストレイタムスタックに電力を供給する。
図5は、ハイブリッドメモリパッケージの他の実施例の側面図を示す。
図5のHMB500は、メモリストレイタム504,506,508,510を含むメモリストレイタムスタックのサイドでパッケージ基板502に結合される。メモリストレイタムスタックの各メモリストレイタムは、ソルダバンプ512のセットを有する。各メモリストレイタムルートの上部のRDLライン514は、ストレイタムのエッジに経由され、ワイヤボンド516は、RDLラインとパッケージ基板502とを結合するのに利用される。
電力と情報(すなわち、データ、アドレス、クロック及び制御信号)との双方が、ワイヤボンド516を用いてRDLと基板との間で伝送される。図示された実施例では、TSVは、電力と情報との供給がワイヤボンド516により処理されるため、メモリストレイタムスタックでは必要とされない。図示されない他の実施例では、TSVは、RDLラインとワイヤボンドとの代わりに、メモリストレイタムスタックにおいて利用されてもよい。
情報伝送ラインは、パッケージ基板502におけるワイヤボンド結合からHMB500に経由される。多数の実施例では、パッケージ基板502のワイヤボンド結合位置は、パッケージ基板トレースを介しHMB500に結合される。図5のメモリ装置パッケージの効果は、HMBソケットを必要とすることなく、各メモリストレイタム内のメモリタイルが効率的に設計されることをおそらく可能にするTSVの欠落がない場合、より直接的なパッケージ基板502を有する。複数のTSVが、メモリタイル内の回路間の不要なスペースを占有するためである。図5のメモリ装置パッケージの不利益は、HMB500がスタックから大きく離れているため、HMB500とメモリストレイタムスタックとの間のより複雑な又は長いタイミング要求を招くことを含む。
いくつかの実施例では、HMB500は、メモリスタック全体又はその一部に供給される電圧を動的に変更可能な一体化されたVRを含むものであってもよい。パッケージ基板502を介し供給される電圧は、システムボードに配置された電力供給サブシステムから提供されてもよく、各VRがシステムボードの一部にわたる各電力プレーンに電力を提供する複数のVRを有する。
図2に戻って、メモリタイルカラム210などの各メモリタイルカラムは、特定のタイル内の特定の格納位置へのアクセスを可能にするアドレッシングスキームを要求する。従って、メモリカラムの所与の格納位置をアドレス指定するためメモリバッファ206により利用されるアドレススキームは、カラムの何れのタイルがアドレス指定されているかを考慮する。例えば、図2では、各メモリタイルカラムに8つのタイルがあり、アドレスの3ビットが、カラムのタイルZ0からタイルZ7を区別することが可能である。
スタックされた構成について、各ストレイタムが独立してアドレス指定される。いくつかの実施例では、メモリバッファ206と各メモリストレイタムとの間のポイント・ツー・ポイント接続が利用される。しかしながら、ポイント・ツー・ポイント接続は、完全なポイント・ツー・ポイントの実現形態を実現するのに求められる多数の追加的なTSVによる大きなエリアオーバヘッドをもたらす。カラムの各メモリタイルを独立にアドレス指定するのに利用可能な他のプロセスは、スタックの各レイヤについて一意的なRDL設計又はトップレベルメタル設計を用いて、各ストレイタムに一意的なセレクションワードを独立にハードコードすることである。しかしながら、ハードコード化は、大きなコストと製造オーバヘッドとをもたらす。
これらの手段の代替は、各ストレイタムにおける独立したアドレス指定を可能にするため、コンピュータシステムの初期化中にスキャンチェーンプロセスを実現することである。
図6は、初期化中に独立したアドレス指定を動的に可能にするため、各メモリストレイタム又はメモリタイルに実現されるスキャンチェーンロジックの実施例を説明する。
図6のスキャンチェーンロジック600は、各メモリストレイタム602のレイヤと、潜在的には各メモリタイルに含まれるロジックの実施例を示す。当該ロジックは、スルーシリコンビアがメタルスタックから独立に処理されるTSVスタック技術を利用する。スキャンデータ入力はストレイタムレイヤの一方のサイドでアクセスされ、スキャンデータ出力はレイヤの他方のサイドでアクセスされる。しかしながら、スキャンデータの入力と出力とは、複数のストレイタムがスタックされるとき、あるストレイタムへの入力が他のストレイタムの出力に結合される等に物理的に配置される。スキャンチェーンは、各ストレイタムが入力アドレス選択との比較参照として利用される一意的なアドレスコードによりプログラムされるように初期化される。動的なアドレス選択は、共通のストローブ信号についてゲーティング信号を生成するため、静的なアドレス選択と比較される。
具体的には、スキャンデータ入力値604は、フリップフロップのチェーンに入る(例えば、FF606,608,610,612など)。フリップフロップのチェーンは、スキャンチェーンクロック614により提供される。入力値604に基づき、フリップフロップのチェーンは、スタックの一意的なストレイタムに対応する一意的な値によりプログラムされる。フリップフロップのチェーンからの出力は、コンパレータ614に提供され、一意的なビット値とページアドレスセレクトライン616の特定のビットとを比較する。
ページアドレスセレクトライン616は、TSVを用いてストレイタムスタック全体を介し送信される。アドレスが参照している特定のストレイタムの決定に関連するページアドレスセレクトラインの特定のビットがまた、コンパレータ614に入力される。これら2つのアドレスが一致する場合、コンパレータ614の出力はハイに駆動され、そうでない場合、出力値はローを維持する。コンパレータ614の出力値は、ANDロジック618に提供される。
ANDロジック618への他方の入力は、ページアドレスストローブ620である。従って、コンパレータ614に提供される2つのアドレスが一致する場合、TSVを用いてメモリストレイタムスタックを介し提供されるページアドレスストローブ620は、ローカルストレイタム(ストローブ622)において利用されてもよい。アドレスが一致しない場合、ページアドレスストローブ620はゲート化され、ローカルストレイタム602により利用可能でない。
さらに、フリップフロップのチェーンは、さらなるフリップフロップ624,626,628,630に続いてもよい。これらのフリップフロップはまた、スキャンチェーンクロック614を使用する一意的なアドレスと、前のフリップフロップチェーンの最後のフリップフロップ612からの出力とによりプログラム可能である。多数の実施例では、これらのフリップフロップは、バンクI/Oセレクトライン632の特定のビットに対応する一意的なバンクI/Oアドレスを格納する。
フリップフロップ624〜630のチェーンからの出力は、一意的なビット値とバンクI/Oセレクトライン632の特定のビットとを比較するコンパレータ634に提供される。バンクI/Oセレクトライン632は、TSVを用いてストレイタムスタック全体を介し送信される。アドレスが参照している特定のストレイタムの決定に関連するバンクI/Oセレクトライン632の特定のビットがまた、コンパレータ634に入力される。これら2つのアドレスが一致する場合、コンパレータ634の出力はハイに駆動され、そうでない場合、出力値はローに維持される。コンパレータ634の出力値は、ANDロジック636に提供される。
ANDロジック636への他方の入力は、バンクI/Oストローブ638である。従って、コンパレータ634に供給される2つのアドレスが一致する場合、TSVを用いてメモリストレイタムスタックを介し供給されるバンクI/Oストローブ638は、ローカルストレイタム(ストローブ640)において利用されてもよい。アドレスが一致しない場合、ページアドレスストローブ640はゲート化され、ローカルストレイタム602により利用可能でない。
チェーンの最後のフリップフロップ630の出力はまた、スタックの次のメモリストレイタムのスキャンデータ入力として利用されるスキャンデータ出力値642に提供される。従って、各ストレイタムレイヤ内の当該スキャンチェーンロジックのプログラミングを通じて、一意的なアドレスが、スタック全体に供給されるページアドレスストローブとバンクI/Oストローブとをゲート化するため、又はゲート化しないため利用可能な各ストレイタムに割当て可能である。これは、アドレスによりポイントされるストレイタムのみがストローブを利用可能にし、メモリリード及びライト処理を実行することを可能にする。
多数の実施例では、このチェンスキャンロジックは、コンピュータシステムの初期化中にメモリバッファによりプログラムされる。各初期化におけるこの動的なプログラミングは、タイル毎のメモリストレイタムアドレスにおけるプログラムに必要なハードコード化なしに、一意的なメモリタイルが実現されることを可能にする。
図7は、ハイブリッドメモリ装置のメモリタイルの実施例のブロック図である。
メモリタイルA700が、メモリバッファ702がメモリタイルAに隣接するため、メモリストレイタムのスタックの下部のストレイタムのタイルとして示される。ストレイタムのスタックのタイルの垂直方向のカラムは、メモリタイルB704などに続く。これらのタイルはすべて、クロック制御TSV706やデータアドレスTSV708などのTSVを利用することによって、メモリバッファ702に接続される。
これらのTSVの実際の実現形態は、多数の個々のTSVが少なくともデータ及びアドレス情報を伝送することを要求するが、単一のTSVラインが、具体的に図面の簡潔さを維持するため示される。さらに、クロック及び制御ラインのルーティングは、clk信号及びctrl信号がTSVトレースからメモリタイルに提供されることを示す以外のため、メモリタイルA700内に具体的には示されない。これは、特に簡潔さを維持するためブロック図を簡単化するためである。
上述されたように、スタックの各ストレイタムの各メモリタイルは、1以上のメモリアレイを含むものであってもよい。図7に示される実施例では、メモリタイルA700は、2つの別々のメモリアレイ710,712を有する。
多数の実施例では、アドレスは、アドレスTSVを構成するアドレスラインによりメモリバッファ702により提供される。アドレスは、アドレスロジック714により受信される。アドレスロジック714は、メモリバッファ702からのアドレスがメモリタイルA700内のローカルメモリアレイの1つのメモリ位置を参照しているか判断する。多数の実施例では、これは、メモリの初期化中に設定されたスキャンチェーンタイルロジック600を利用することを伴う。スキャンチェーンタイルロジック600の実現形態が、図6を参照して説明された。
アドレスがローカルアドレス位置に一致する場合、アドレスロジック714は、各メモリアレイのロー及びカラムデコーダ、すなわち、メモリアレイ710のローデコーダ716とカラムデコーダ718、及びメモリアレイ712のローデコーダ720とカラムデコーダ722を提供する。正しいメモリアレイのアドレス位置が、これらのデコーダを介しアクセスされ、その後、メモリアレイの位置からデータが読み出され、又はメモリアレイの位置にデータが書き込まれる。
例えば、メモリアレイの1つの位置からデータが読み出されるとき、センスアンプ(メモリアレイ710,712についてそれぞれ724,726)が、各ビット位置の電圧レベルを検知するのに利用され、これにより、データがデータラッチ(メモリアレイ710,712についてそれぞれ728,730)からプル及びラッチ可能となる。その後、データは、TSVデータラインに配置され、メモリバッファ702に読み込み可能である。
図8は、ハイブリッドメモリ装置のメモリバッファの実施例のブロック図である。
メモリバッファ800は、コンピュータシステムのシステムボードに統合された電力供給プレーンから電圧を受信するパッケージ基板から電圧供給802を受信する。多数の実施例において、電圧供給は、メモリバッファ800全体の回路を電力供給する。メモリバッファ800は、高速リンク(図1のリンク122など)によりパケット化されたデータを送受信する高速I/Oインタフェース804を有する。高速リンクは、リンクから受信したHSデータ入力806と、リンクに送信されるHSデータ出力808とを有する。
上述されるように、リンクは、PCI−Expressインタフェース、フルバッファされるDIMMインタフェース、SMI、Intel(登録商標)によるQuickPath技術などの専用のポイント・ツー・ポイントインタフェース、又は他の同様の高速インタフェースから構成されてもよい。多数の実施例では、リンクは、各レーンが高速双方向シリアルインタフェースである複数のレーンを有する。多数の実施例では、リンク全体を構成する多数のレーンがある(例えば、32レーン、128レーン、512レーンなど)。
多数の実施例では、メモリはトランザクションベースで実現される。従って、メモリリードリクエストは、当該リクエストが完了する時点に関係なく、CPU(図1の104)から送信されてもよい。これらのトランザクションは、パケット化され、高速リンクを介し送信される。多数の実施例では、トランザクションはリオーダリング処理を介し最適化されてもよい。
例えば、3つのトランザクションは、HSリンクから特定の順序で受信される。これら3つのトランザクションは、トランザクション入力FIFO(First−In−First−Out)バッファ810に入力される。受信した第1及び第3トランザクションがメモリの同一ページからデータを要求しているが、第2トランザクションは異なるページを利用している場合、トランザクションオーダリングロジック812は、第2及び第3トランザクションの順序をフリップすることによって、より少ないメモリページがクローズ及びオープンされることが求められることを認識する。これは、各トランザクションが他のトランザクションに関係なくアトミックに閲覧されるトランザクションメモリシステムにおいて良好に機能する。
トランザクションが受信され、トランザクション入力FIFOバッファ810内で潜在的にリオーダされると、その後、トランザクションはパケット化/パケット解除(P/D)ロジック814により処理される。P/Dロジック814は、パケットから特定のメモリトランザクションを取得し、それらをメモリストレイタムA816などのストレイタムのメモリタイルにより用いられるベーシックアドレス/データフォーマットに移す。図示されない他の実施例では、P/Dロジック814は、トランザクション入力FIFO810のHS I/Oインタフェース814のサイドに配置される。これらの実施例では、トランザクションオーダリングロジック812は、より一般には、パケットでなく、特定のパケット解除されたメモリトランザクションがリオーダされるため、メモリアクセスリオーダリングロジックとみなされる。
D/Pロジック814がHSリンクから受信されるメモリトランザクションをパケット解除するとき、アドレス及びデータがTSVを介しメモリスタックに提供される。特に、アドレスTSV818とデータTSV820である。多数の実施例では、データラインが組み合わされ、メモリバッファ800からメモリストレイタムスタックのメモリ位置にデータを供給することによってライト処理を実行すると共に、メモリストレイタムスタックのメモリ位置からメモリバッファ800にデータを供給することによってリード処理を実行することが可能である。
さらに、メモリバッファ800はまた、バッファに示される機能ブロックの1以上から複数の制御信号822を生成してもよい。これらの制御信号は、制御TSV824を介しメモリストレイタムスタックに出力される。メモリバッファ800はまた、クロックTSV828を介しメモリストレイタムスタックに提供されるクロック信号を生成するクロック生成ロジック826を有する。
メモリバッファ800はまた、図6において説明されたスキャンチェーンタイルロジックにより用いられるスキャンデータ832とスキャンクロック834とを提供するスキャンチェーン初期化ロジック830を有してもよい。スキャンチェーン初期化ロジック830は、コンピュータシステムがブートするとき、スキャンチェーン初期化を実行してもよい。
多数の実施例において、メモリバッファ800は、メモリ装置において出現するエラーに対して動的な回避方法を可能にする複数のコンポーネントを有する。最小の粒度において、エラーは、メモリ位置を読むときの誤った結果から構成される。これらのエラーは、メモリタイルの故障したコンポーネントに関するハードウェアエラー(センスアンプの電気的不具合など)、又はハードウェアの一時的な不具合を生じさせる宇宙線から生じるソフトエラーであってもよい。ハードエラーは、一般にテストされたときに繰り返しの結果を示す一般に永続的なエラーであり、ソフトエラーは、一般に一時のエラーである。
多数の実施例では、メモリのハードウェアコンポーネントの故障は、メモリ装置への電力の供給の変更に部分的によるものである可能性がある。例えば、低電力状態では、メモリストレイタムに供給される電圧は、各メモリセルの充電を維持するのに十分でない可能性がある。充電が維持できない場合、メモリの故障が発生する。あるいは、メモリのリフレッシュレートが所与のメモリセルの充電が十分に低減するポイントを経過した頻度で減少される場合、メモリの故障がまた発生する。メモリのリフレッシュレートとメモリに供給される電力とは関連する。メモリに供給される電力量が大きくなるに従って、メモリセルがリフレッシュされる頻度は低下する。充電は使用するのにより長い時間がかかるためである。他方、メモリに供給される電力量が少なくなるに従って、メモリセルがリフレッシュされる頻度は高くなる。
多数の実施例では、メモリバッファ800は、メモリに出現したエラーの影響を最小限にするための複数の機能を提供する動的エラー回避ロジックを有する。エラーチェック訂正(ECC)ロジック838は、メモリに出現するとエラーをチェックし、これらのエラーをテイする使用とするコードを提供する。いくつかの実施例では、一部のエラーは当該形態の訂正を可能にする。例えば、メモリバッファ800は、潜在的にはシングルビットエラーを訂正し、128ビットブロック境界内のダブルビットエラーを検出する能力を有するBCH(Bose,Ray−Chaudhuri,and Hocquenghem)エラー訂正コードを有してもよい。しかしながらハードエラーが存在する多数の実施例では(メモリタイルの特定のカラムが誤ったデータを提示しているなど)、いくつかのよりロウバストな回避方法が利用されてもよい。
いくつかの実施例では、冗長制御ロジック840は、メモリアレイの一部を永続的にシャットダウンする。例えば、特定のメモリカラムの複数のビットが不良なテスト結果により繰り返し出現する場合、冗長制御は当該カラムを永続的にシャットダウンしてもよい。特に、メモリのローは32ビットしか必要としないが、実際のメモリアレイは33ビットを実装してもよい。従って、冗長ロジックは、すべてのカラムを調べ、何れか最大数の繰り返しのエラーを示すか決定する。この決定されたカラムは永続的に無効にされ、その他の32ビット幅のカラムがメモリローのために利用されてもよい。
冗長ロジックは、アレイ単位で何れのカラム又はローがシャットダウンされてもよいか追跡するマルチプレクサ(MUX)ロジック842を有する。初期化中、冗長制御840は、未使用のカラム及びローをアレイ毎にロックアウトしてもよい。他の実施例では、MUXロジック842は、アレイ単位より詳細な又は粗な粒度によりメモリセルに関する情報を格納してもよい。
冗長制御ロジック840とは別に、動的なエラー回避ロジックはまた、メモリページ又はローを無効にする機能を有するキャッシュライン無効ロジック844を実装してもよい。キャッシュライン無効ロジック844を利用するため、メモリバッファはさらにタグキャッシュ846を実現する。タグキャッシュ846は、具体的には、ハードウェアコントローラ第1レベルメモリ又はラストレベルキャッシュを可能にするのに有用である。例えば、2レベルメモリシステムがコンピュータシステムに実現されるとき、第1レベルメモリは、電力効率性及び帯域幅のために最適化されるが、コスト制約による妥当なキャパシティを有するようにしてもよい。第2レベルメモリは、コスト及びキャパシティについて最適化されるが、帯域幅及び電力効率性については必ずしも最適化されなくてもよい。
2レベルメモリスキームの別々のメモリレベルは、一般にCPUに可視的でない。これは、モジュラリティ及びコンパチビリティを提供し、また遠くのメモリ、近くのメモリ又は2レベルメモリと対話可能な統一されたメモリインタフェースを可能にする。
図9は、ハイブリッドスタックメモリを利用する2レベルメモリシステムの実施例を示す。
図9の2レベルメモリシステムは、メモリコントローラ900を備えたプロセッサを有する。プロセッサ/メモリコントローラ900は、メモリサブシステム902とデータを送受信する。メモリサブシステムは、タグキャッシュ846を有するハイブリッドメモリバッファ800を有する。ハイブリッドメモリバッファ800は、メモリストレイタムスタック904と離れたメモリ906とに接続される。多数の実施例では、ハイブリッドメモリスタックを有するメモリタイルは、DRAMベース装置である。異なる実施例では、離れたメモリは、不揮発性メモリ、相変化メモリ又は他のタイプのメモリ技術であってもよい。
多数の実施例では、データはプロセッサ/メモリコントローラ900とハイブリッドメモリバッファとの間で、ハイブリッドメモリバッファとハイブリッドメモリスタック904との間で通過するデータチャンクと同じサイズである64バイトチャンクにより伝送される。多数の実施例では、64バイトブロックは、データがハイブリッドメモリスタックに格納される最小の粒度であり、離れたメモリによると、データは4キロバイトブロックにより格納され、これは、ハイブリッドメモリバッファ800と離れたメモリ906との間で4キロバイトのデータチャンクを伝送する。
タグキャッシュ846は、離れた各メモリブロック(本例では、4キロバイトのサイズである)のアドレスタグを格納する。各タグはまた、有効ビット、ダーティビット、擬似LRUタグ及びキャッシュライン無効ビットを伴う。タグヒットに続いて、ハイブリッドメモリバッファ800は、ハイブリッドメモリスタック904(第1レベルメモリ)から64バイトブロックをフェッチする。タグミスに応答して、4キロバイトブロックが、離れたメモリ906(第2レベル)からフェッチされ、ハイブリッドメモリスタック904に格納される。
さらに、所望の64バイトブロックは、プロセッサ/メモリコントローラ900に転送され、適切なタグが置換される。置換ポリシーは、ハイブリッドメモリスタック904に無効な方法を優先順位付けし、標準的な擬似LRU(Least Recently Used)アプローチに基づくものであってもよい。キャッシュライン無効ビットをアサートした方法が回避される。従って、ハードエラーを示すキャッシュラインは、2レベルメモリシステムにおいて当該方法によりさらなる利用から無効とされてもよい。
図8に戻って、キャッシュライン無効ロジック844は、上述した方法によりタグキャッシュ846を利用して、キャッシュライン無効ポリシーを実現してもよい。
多数の実施例では、ハイブリッドメモリスタックへの電力供給は適応可能であってもよく、メモリのエラーレートに基づきメモリに供給される電圧レベルを変更することを可能にする。ハイブリッドメモリバッファ800は、適応的電力ロジック848を有する。適応的電力ロジック848は、スタック(852)のストレイタムに供給される供給電圧802をチェーン化するため、統合されたVR850と通信してもよい。多数の実施例では、適応的電力ロジック848は、ステップバイステップに電圧を増加してもよく、又は各ステップがあるデルタ電圧値である同じ方法により電圧を低下させてもよい。図示されない他の実施例では、VRはハイブリッドメモリバッファ800に統合されず、パッケージ基板(図1の118)又はコンピュータシステムのどこかの分離したVRである。
いくつかの実施例では、電圧は、ハイブリッドメモリ装置の各メモリタイル(図2のメモリタイル202など)に別々に供給されてもよい。他の実施例では、電圧は、各メモリストレイタム(図2のメモリストレイタム204など)に供給されてもよい。さらなる他の実施例では、電圧は、メモリストレイタムのスタック全体を含むメモリ装置全体(図2のメモリ装置200など)に一様に供給されてもよい。
ハイブリッドメモリバッファ800はまた、メモリへのリフレッシュレートを変更するよう動作可能な適応的リフレッシュロジック854を有してもよい。適応的リフレッシュロジック854は、各ステップが時間のデルタであるステップにおいてメモリのリフレッシュレートを増加又は減少させることが可能であってもよい。異なる実施例では、リフレッシュレートの変更は、適応的電力ロジック848について上述された異なる粒度の実施例と同様に、メモリタイルベース、メモリストレイタムベース又はメモリ装置全体ベースにより実現されてもよい。
多数の実施例では、LFSR(Linear Feedback Shift Register)856を実現するBIST(Built−In Self Test)ロジックが、ハイブリッドメモリバッファに存在する。BIST−LFSRロジック856は、ランダムなデータパターンがスタック全体のすべてのメモリにわたって書き込まれ、比較のために読み出されることを可能にする。BIST−LFSRロジックは、連続的にランダムなデータパターンを生成するシード値の入力を有し、各データチャンクは、メモリスタックの各キャッシュラインに書き込み可能である。その後、完全性をチェックするためメモリを読むとき、同一のシード値が同一のデータを生成するため再入力される。
従って、ランダムであるが、データは同一のシード値により繰り返し可能である。このため、2回目に生成されるランダムパターンが、メモリに配置されたオリジナルデータとキャッシュライン毎に比較されてもよい。これは、メモリ全体における迅速なエラーチェックを可能にする。異なるシードが配置され、メモリ全体が複数回チェックされる場合、一貫してエラーを示すメモリ内のこれらのビットは、繰り返し可能なハードエラーを有するものとして指定されてもよい。動的エラー回避ロジック836は、エラーを最小限にするのに利用可能な複数の回避の1以上を試行してもよい。
動的エラー回避ロジック836が問題のあるメモリセルの影響を最小限にする必要があるオプションの一部は、ECC838、冗長制御ロジック840、キャッシュライン無効ロジック844などの上述されたロジックコンポーネントと共に、潜在的に適応的電力ロジック848を介しセルに供給される電力を増加し、及び/又は適応的リフレッシュロジック854によりメモリリフレッシュ間の時間を減少させるロジックコンポーネントを含む。
図10は、適応的電力ロジックを用いてハイブリッドメモリ装置に供給される電力を最適化するプロセスの実施例のフロー図である。
当該プロセスは、ハードウェア(回路など)、ソフトウェア(オペレーティングシステムなど)、ファームウェア(マイクロコードなど)、又はこれら3つのタイプの処理ロジックの何れかの組み合わせからなる処理ロジックにより実行されてもよい。
当該プロセスは、処理ロジックが初期的な電力供給レベルを設定することによって開始される(処理ブロック1000)。いくつかの実施例では、初期的な電力供給レベルは、供給可能な最も高い電力レベルであってもよい。他の実施例では、初期的な電力供給レベルは、推奨される供給設定の中心の標準的な供給レベルであってもよい。さらなる他の実施例では、初期的な電力供給レベルは、初期化のためのBIOS(Basic Input/Output System)においてユーザにより設定されてもよい。
その後、処理ロジックは、ステップ又はインクリメントだけ現在の設定から電力供給レベルを減少する(処理ブロック1002)。インクリメント毎に供給される電力のデルタは、VRロジックに基づき予め決定されてもよい。多数のVRが、レジスタ又はVRにより管理される他の格納位置に入力された異なる値を用いて徐々に変更可能な電圧供給レベルのテーブルを有するためである。
電力供給レベルがインクリメントだけ減少されると、処理ロジックは、メモリ位置に書き込むことによってメモリに対してテストを実行する(処理ブロック1004)。処理ロジックは、BIST−LFSR又は他のタイプのテスト処理を利用してもよい。テストされるメモリ位置は、いくつかの実施例では、メモリのすべてを含むものであってもよい。他の実施例では、動的エラー回避ロジック(図8の836)が故障の可能性のあるメモリ位置のグループをすでに決定し、すべてのメモリのサブセットが、故障した位置のエラーのみの回避方法を決定するためテストされてもよい。
その後、処理ロジックは、テストされた各メモリ位置を読む(処理ブロック1006)。その後、処理ロジックは、エラーが検出されたか決定する(処理ブロック1008)。多数の実施例では、ECC又は他の同様のエラー検出コードが、1以上のエラーがあるか決定するのに利用される。エラーがない場合、処理ロジックはブロック1002に戻り、電力供給レベルをさらに低下する。そうでなく、エラーが検出された場合、処理ロジックは、エラーを訂正するか、又はエラーを回避しようと試みる(処理ブロック1010)。
エラーを訂正又は回避するのに利用されるステップセットは、当該技術は、誤り訂正のためのECC、冗長制御及びエラー回避のためのキャッシュライン無効化と共に、メモリリフレッシュ間の時間を減少させることを含むものであってもよいが、実現形態に固有のものである。さらに、他のオプションは、前の電圧レベルがエラーを生じさせなかった場合、前に電圧レベルのインクリメントまで電力を戻すよう増加させることである。
その後、処理ロジックは、エラーが良好に訂正又は回避されたか確認するためチェックする(処理ブロック1012)。エラーが良好に訂正又は回避された場合、処理ロジックは、ブロック1002に戻り、電力供給レベルをさらに低下させる。
図示されない他の実施例では、供給される初期的な電力は低い電力レベルであってもよく、インクリメントは、供給される電力を低下させるのでなく、供給される電力を増加させる。これらの実施例では、初期的なテストのインクリメントは、有意な個数のエラーを示し、エラーがなくなるまで供給が増加される。
いくつかの実施例では、適応的電力ロジック(図8の848)は、初期化中にこれらのインクリメントテストを実行する。他の実施例では、これらのテストは、メモリスタックに供給される電力を変更するため、処理中に動的に実行される。ハイブリッドメモリスタックとハイブリッドメモリバッファとの間の高帯域幅伝送は、リフレッシュ期間中より一般に高い電力を必要とし、メモリに供給される電力は、リフレッシュ段階中に1以上のインクリメントにより動的に低下されてもよい。
リフレッシュ段階が終了し、帯域幅が再び増加されると、適応的電力ロジック848は、電力を1以上のインクリメントで増加してもよい。
図11は、適応的リフレッシュロジックを用いてハイブリッドメモリ装置に供給される電力を最適化するプロセスの実施例のフロー図である。メモリがリフレッシュされる毎に、リフレッシュを実現するため、ある量の電力が要求される。従って、リフレッシュインターバルが増加した場合、メモリにより要求される時間における全体的な電力は減少する。
当該プロセスは、ハードウェア(回路など)、ソフトウェア(オペレーティングシステムなど)、ファームウェア(マイクロコードなど)、又はこれら3つのタイプの処理ロジックの何れかの組み合わせから構成される処理ロジックにより実行されてもよい。
当該プロセスは、処理ロジックが初期的なメモリリフレッシュレートを設定することによって開始される(処理ブロック1100)。いくつかの実施例では、初期的なリフレッシュレートは、初期化中にBIOS設定により予め決定されてもよい。
処理ロジックは、その後に、ステップ又はインクリメントだけ現在の設定からメモリリフレッシュインターバルを増加させる(処理ブロック1102)。リフレッシュインターバル間の時間のデルタは、BIOSのユーザにより設定される値又は所定値であってもよい。
リフレッシュレートがインクリメントだけ増加されると、処理ロジックは、メモリ位置に書き込むことによって、メモリに対してテストを実行する(処理ブロック1104)。
その後、処理ロジックは、テストされた各メモリ位置を読む(処理ブロック1106)。その後、処理ロジックは、エラーが検出されたか判断する(処理ブロック1108)。多数の実施例では、ECC又は他の同様のエラー検出コードが、1以上のエラーが存在するか決定するのに利用される。エラーがない場合、処理ロジックは、ブロック1002に戻り、リフレッシュ間のインターバルをさらに増加させる。そうでなく、エラーが検出された場合、処理ロジックは、エラーを訂正するか、又はエラーを回避しようと試みる(処理ブロック1110)。
再び、エラーを訂正又は回避するのに利用されるステップセットは、実現形態に固有であるが、ECC、冗長制御、リフレッシュレートインターバルの減少又はメモリに供給される電力の増加を無効にするキャッシュラインを含むものであってもよい。
その後、処理ロジックは、エラーが良好に訂正又は回避されたか確認するためチェックする(処理ブロック1112)。エラーが良好に訂正又は回避された場合、処理ロジックは、リフレッシュレートインターバルをさらに増加させるため、ブロック1102に戻る。
図8に戻って、ハイブリッドメモリバッファ800はまた、バーチャルページバッファ858を有してもよい。多数の実施例では、バーチャルページバッファ858は、メモリに現在開かれている各ページの少なくとも一部を格納する。メモリアクセスパターンが時間的及び空間的ロカリティを示すことは普通である。以前には、このロカリティは、必要なページを再オープンする遅延及び電力を低減するため、各バンクにメモリページをオープンに維持することによって利用された。しかしながら、今日のCPUのマルチスレッド化された処理が与えられると、厳しいバンクコンフリクトが生じる可能性がある。この問題が与えられると、バーチャルページバッファ959は、バンクコンフリクトの可能性を低減し、ページがメモリリクエストによりアクセス可能となるように、ハイブリッドメモリバッファにオープンされた各ページの一部を格納してもよい。ハイブリッドメモリバッファ800は、このバーチャルオープンページが電力及び遅延を低減し、装置の帯域幅を増やすことの双方を可能にする。
本発明の実施例の各要素は、マシーン実行可能な命令を格納するためのマシーン可読媒体として提供されてもよい。マシーン可読媒体は、限定することなく、フラッシュメモリ、光ディスク、CD−ROM(Compact Disk−Read Only Memory)、DVD(Digital Versatile/Video Disk)ROM、RAM(Random Access Memory)、EPROM(Erasable Programmable ROM)、EEPROM(Electrically EPROM)、磁気若しくは光カード、伝搬媒体、又は電子命令を格納するのに適した他のタイプのマシーン可読媒体を含むものであってもよい。例えば、本発明の実施例は、搬送波又は通信リンク(モデム又はネットワーク接続など)を介し他の伝搬媒体に実現されるデータ信号によりリモートコンピュータ(サーバなど)から要求元のコンピュータ(クライアントなど)に伝送されるコンピュータプログラムとしてダウンロードされてもよい。
上記説明では、本発明の実施例を説明するため用語が利用されている。例えば、“ロジック”という用語は、1以上の機能を実行するハードウェア、ファームウェア、ソフトウェア(又はこれらの何れかの組み合わせ)を表す。例えば、“ハードウェア”の具体例は、限定することなく、集積回路、有限状態マシーン又は組み合わせのロジックを含む。集積回路は、マイクロプロセッサ、ASIC(Application Specific Integrated Circuit)、デジタル信号プロセッサ、マイクロコントローラなどのプロセッサの形態をとってもよい。
本明細書を通じて“一実施例”又は“実施例”という表現は、実施例に関して説明された特定の特徴、構成又は特性が本発明の少なくとも1つの実施例に含まれることを意味することが理解されるべきである。従って、本明細書の各所における“実施例”、“一実施例”又は“他の実施例”という2以上の表現は、必ずしもすべてが同一の実施例を参照しているとは限らないことが強調及び理解されるべきである。さらに、特定の特徴、構成又は特性は、本発明の1以上の実施例に適したものとなるように組み合わされてもよい。
同様に、本発明の実施例の上記説明では、各種特徴は各種発明の態様の1以上の理解に用いられる本開示の簡素化のため、単一の実施例、図面又は説明にグループ化されることがあることが理解されるべきである。しかしながら、本開示の方法は、請求される主題が各請求項に明示的に記載されるより多くの特徴を必要とする意図を反映するものとして解釈されるべきでない。むしろ、以下の請求項が反映するように、本発明の態様は開示された単一の実施例のすべての特徴より少なくしかない。従って、詳細な説明に続く請求項は、詳細な説明に明示的に含まれる。