(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022127616
(43)【公開日】2022-08-31
(54)【発明の名称】累積システム及び方法
(51)【国際特許分類】
G06F 17/10 20060101AFI20220824BHJP
G06N 3/063 20060101ALI20220824BHJP
【FI】
G06F17/10 A
G06N3/063
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022023344
(22)【出願日】2022-02-18
(31)【優先権主張番号】17/180,229
(32)【優先日】2021-02-19
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】521149035
【氏名又は名称】ベリシリコン マイクロエレクトロニクス(シャンハイ) カンパニー リミテッド
【氏名又は名称原語表記】VeriSilicon Microelectronics(Shanghai) Co., Ltd.
【住所又は居所原語表記】20A 289 Chunxiao Road Zhangjiang Center Shanghai 201203 China
(71)【出願人】
【識別番号】521149057
【氏名又は名称】ベリシリコン ホールディングス カンパニー リミテッド
【氏名又は名称原語表記】VeriSilicon Holdings Co., Ltd.
【住所又は居所原語表記】P.O.Box309 Ugland House Grand Cayman George Town KY1-1104 Cayman Islands
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】マンキット ロー
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB26
5B056BB73
5B056FF01
5B056FF02
5B056FF05
5B056FF07
(57)【要約】 (修正有)
【課題】乗算/累算演算を実施するシステム及び方法を提供する。
【解決手段】共有メモリの系列300において、3つの畳み込みコアは、処理のためにデータを受信する。乗算データを生成するために、受信したデータに対して乗算演算を実施する。結果を生成するために、乗算データに対して加算演算を実施する。結果の最下位ビットの少なくとも一部分は、畳み込みコアの累積バッファの第1の領域内に蓄積される。また、結果の残余ビットの少なくとも一部分は、畳み込みコアから分離された共有メモリ内に蓄積される。
【選択図】
図3
【特許請求の範囲】
【請求項1】
処理のためのデータを受信することと、
乗算データを生成するために、受信した前記データに対して乗算演算を実施することと、
結果を生成するために、前記乗算データに対して加算演算を実施することと、
前記結果の最下位ビットの少なくとも一部分を、第1の畳み込みコアの累積バッファの第1の領域内に蓄積することと、
前記結果の残余ビットの少なくとも一部分を共有メモリ内に蓄積することであって、前記共有メモリは、前記第1の畳み込みコアから分離されること
を含む方法。
【請求項2】
前記累積バッファは複数のエントリを含む、請求項1に記載の方法。
【請求項3】
前記累積バッファの各エントリはニューラルネットワークのチャネルと関連付けられる、請求項2に記載の方法。
【請求項4】
前記累積バッファ内の複数のチャネルから同時にデータをフェッチすることを更に含む、請求項3に記載の方法。
【請求項5】
前記結果の前記残余ビットは、前記結果の最上位ビットの少なくとも一部分を含む、請求項1に記載の方法。
【請求項6】
前記結果の前記残余ビットの少なくとも一部分を共有メモリ内に蓄積することは、第1の畳み込みコアの前記累積バッファがキャリーオーバーコマンドを生成したと判定することに応答して実施される、請求項1に記載の方法。
【請求項7】
前記結果の前記残余ビットの少なくとも一部分を共有メモリ内に蓄積することは、データリクエストを先入れ先出しバッファへ転送することを含む、請求項1に記載の方法。
【請求項8】
前記結果の前記残余のビットの少なくとも一部分を共有メモリ内に蓄積することは、特定の期間を前記第1の畳み込みコアに割り当てることであって、前記第1の畳み込みコアは、前記特定の期間中にデータを転送し得ることを含む、請求項1に記載の方法。
【請求項9】
第1の乗算データを生成するように構成された第1の乗算器と、
前記第1の乗算データに基づいて第1の結果を生成するように構成された第1の加算器と、
前記第1の結果の最下位ビットの少なくとも一部分を蓄積するように構成された第1の累積バッファと
を含む、第1の畳み込みコアと、
前記第1の畳み込みコアに結合され、前記第1の結果の最上位ビットの少なくとも一部分を蓄積するように構成された共有メモリと
を含む、装置。
【請求項10】
第2の乗算データを生成するように構成された第2の乗算器と、
前記第2の乗算データに基づいて第2の結果を生成するように構成された第2の加算器と、
前記第2の結果の最下位ビットの少なくとも一部分を蓄積するように構成された第2の累積バッファと
を含む第2の畳み込みコアを更に含み、
前記共有メモリは、前記第2の畳み込みコアに更に結合され、前記第2の結果の最上位ビットの少なくとも一部分を蓄積するように構成される、
請求項9に記載の装置。
【請求項11】
前記第1の累積バッファは、第1の領域及び第2の領域を含み、前記第2の領域内にデータが蓄積されていない場合、前記第2の領域と関連付けられたクロックは無効にされる、請求項9に記載の装置。
【請求項12】
前記第2の領域と関連付けられた前記クロックは、前記第2の領域内に蓄積するためのデータを受信することに応答して有効にされる、請求項11に記載の装置。
【請求項13】
前記第2の領域と関連付けられた前記クロックは、前記第1の領域からキャリーオーバーコマンドを受信することに応答して有効にされる、請求項11に記載の装置。
【請求項14】
前記共有メモリと、前記第1の畳み込みコア及び前記第2の畳み込みコアの各々との間に結合された先入れ先出しバッファを更に含む、請求項10に記載の装置。
【請求項15】
前記共有メモリは複数のメモリセグメントを含み、各メモリセグメントは、前記第1の畳み込みコア又は前記第2の畳み込みコアと関連付けられる、請求項10に記載の装置。
【請求項16】
計算結果の最下位ビットの少なくとも一部分と関連付けられたデータを蓄積するように構成された第1の領域と、
前記計算結果の最上位ビットの少なくとも一部分と関連付けられたデータを蓄積するように構成された第2の領域と、
前記計算結果の前記最下位ビットと前記最上位ビットとの間の有意性を有するビットの少なくとも一部分と関連付けられたデータを蓄積するように構成された第3の領域と
を含む装置。
【請求項17】
第1のクロック信号は前記第1の領域と関連付けられ、第2のクロック信号は前記第2の領域と関連付けられ、第3のクロック信号は前記第3の領域と関連付けられる、請求項16に記載の装置。
【請求項18】
前記第2の領域及び前記第3の領域がデータを蓄積していない場合に、前記第2のクロック信号及び前記第3のクロック信号は無効にされる、請求項17に記載の装置。
【請求項19】
前記第2のクロックは、前記第1の領域からキャリーオーバーコマンドを受信することに応答して有効にされる、請求項18に記載の装置。
【請求項20】
前記第3のクロックは、前記第2の領域からキャリーオーバーコマンドを受信することに応答して有効にされる、請求項19に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、乗算/累算演算を実施するシステム及び方法に関する。
【背景技術】
【0002】
様々なタイプのシステムは、乗算及び累算演算を実施する。例えば、ニューラルネットワーク及び行列乗算システムは、1つ以上の乗算又は累算演算を実施し得る。これらの乗算及び累算演算は、計算ソリューションにそれ自体が役立つ様々な数学的問題に適用され得る。これらの計算ソリューションの内の幾つかは、複数のグループのデータを相互に結合することをサポートする累積バッファを含み得る。
【0003】
本明細書で論じるシステム及び方法は、乗算/累算演算を実施するための改善されたアプローチを提供する。
【0004】
本開示の非限定的で非網羅的な実施形態は、以下の図を参照して説明され、同様の参照番号は、別段の指定がない限り、様々な図全体に渡って同様の部分を指す。
【図面の簡単な説明】
【0005】
【
図1】乗算/累算演算を実施するためのシステムの実施形態を説明する。
【
図3】畳み込みコア及び関連する共有メモリの系列の実施形態を説明する。
【
図4】乗算/累算演算を実施するための方法の実施形態を説明するフロー図である。
【
図5】コンピューティングデバイスの例示的なブロック図を説明する。
【発明を実施するための形態】
【0006】
以下の開示では、本明細書の一部を形成し、開示が実践され得る具体的な実装を例示として示した添付の図面が参照される。本開示の範囲から逸脱することなく、他の実装が利用され得、構造的変更がなされ得ることは理解される。“一実施形態”、“ある実施形態”、“例示的な実施形態”等の明細書での言及は、説明する実施形態が特定の機構、構造、又は特徴を含み得るが、あらゆる実施形態が該特定の機構、構造、又は特徴を必ずしも含まなくてもよいことを指し示す。更に、そうした句は、必ずしも同じ実施形態を指すとは限らない。更に、ある実施形態に関連して特定の機構、構造、又は特徴が説明される場合、明示的に説明するか否かにかかわらず、他の実施形態に関連するそうした機構、構造、又は特徴に影響を与えることは当業者の知識の範囲内であることが付託される。
【0007】
本明細書に開示するシステム、デバイス、及び方法の実装は、本明細書で論じるように、例えば、1つ以上のプロセッサ及びシステムメモリ等のコンピュータハードウェアを含む専用又は汎用コンピュータを含み得、又は利用し得る。本開示の範囲内にある実装はまた、コンピュータ実行可能命令及び/又はデータ構造を搬送又は蓄積するための物理的及びその他のコンピュータ可読媒体を含み得る。そうしたコンピュータ可読媒体は、汎用又は専用のコンピュータシステムによりアクセスされ得る任意の利用可能な媒体であり得る。コンピュータ実行可能命令を蓄積するコンピュータ可読媒体は、コンピュータストレージ媒体(デバイス)である。コンピュータ実行可能命令を搬送するコンピュータ可読媒体は伝送媒体である。したがって、限定ではなく例として、開示の実装は、少なくとも2つの明確に異なる種類のコンピュータ可読媒体:コンピュータストレージ媒体(デバイス)及び伝送媒体を含み得る。
【0008】
コンピュータストレージ媒体(デバイス)は、コンピュータ実行可能命令又はデータ構造の形式で所望のプログラムコード手段を蓄積するために使用され得、汎用又は専用コンピュータによりアクセスされ得るRAM、ROM、EEPROM、CD-ROM、ソリッドステートドライブ(“SSD”)(例えば、RAMに基づく)、フラッシュメモリ、相変化メモリ(“PCM”)、その他のタイプのメモリ、その他の光ディスクストレージ、磁気ディスクストレージ若しくはその他の磁気ストレージデバイス、又は任意のその他の媒体を含む。
【0009】
本明細書に開示するデバイス、システム、及び方法の実装は、コンピュータネットワークを介して通信し得る。“ネットワーク”は、コンピュータシステム及び/又はモジュール及び/又はその他の電子デバイス間の電子データの移送を可能にする1つ以上のデータリンクとして定義される。情報がネットワーク又は別の通信接続(有線、無線、又は有線若しくは無線の組み合わせ)を介してコンピュータに転送又は提供される場合、コンピュータは該接続を伝送媒体として適切に認識する。伝送媒体は、コンピュータ実行可能命令又はデータ構造の形式で所望のプログラムコード手段を搬送するために使用され得、汎用又は専用コンピュータによりアクセスされ得るネットワーク及び/又はデータリンクを含み得る。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれ得る。
【0010】
コンピュータ実行可能命令は、例えば、プロセッサで実行される場合に、汎用コンピュータ、専用コンピュータ、又は専用処理デバイスにある一定の機能又は機能のグループを実施させる命令及びデータを含む。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語等の中間フォーマット命令、又はソースコードでさえあり得る。主題は、構造的機構及び/又は方法論的作用に固有の言語で説明されているが、添付の特許請求の範囲で定義される主題は、本明細書に説明する機構又は作用に必ずしも限定されないことを理解すべきである。むしろ、説明する機構及び作用は、特許請求の範囲を実装するための例示的な形式として開示されている。
【0011】
開示は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マルチプロセッサベースの又はプログラミング可能な電化製品、ネットワークPC、マイクロコンピュータ、メインフレームコンピュータ、携帯電話、PDA、タブレット、ページャー、ルータ、スイッチ、及び様々なストレージデバイス等を含む、多くのタイプのコンピュータシステム構成を備えたネットワークコンピューティング環境で実践され得ることを当業者は理解するであろう。開示はまた、ネットワークを通じて(有線データリンク、無線データリンク、又は有線及び無線データリンクの組み合わせの何れかによって)リンクされたローカル及びリモートコンピュータシステムが両方ともタスクを実施する分散システム環境で実践され得る。分散システム環境では、プログラムモジュールはローカルメモリストレージデバイス及びリモートメモリストレージデバイスの両方に配置され得る。
【0012】
更に、適切な場合、本明細書に説明する機能は、ハードウェア、ソフトウェア、ファームウェア、デジタルコンポーネント、又はアナログコンポーネントの内の1つ以上で実施され得る。例えば、1つ以上の特定用途向け集積回路(ASIC)は、本明細書に説明するシステム及び手順の内の1つ以上を実行するようにプログラミングされ得る。特定のシステムコンポーネントを指すために、説明及び特許請求の範囲全体を通じて幾つかの用語が使用されている。当業者が理解するように、コンポーネントは異なる名前で称され得る。この文書は、機能ではなく名前が異なるコンポーネントを区別することを意図しない。
【0013】
開示の少なくとも幾つかの実施形態は、任意のコンピュータ使用可能媒体上に蓄積された(例えば、ソフトウェアの形式での)そうしたロジックを含むコンピュータプログラム製品を対象とする。そうしたソフトウェアは、1つ以上のデータ処理デバイスで実行される場合に、デバイスを本明細書に説明するように動作させる。
【0014】
本明細書で論じるシステム及び方法は、機械学習環境、ニューラルネットワーク、及び行列乗算手順等の様々なコンピューティング環境及び手順において有用である。本明細書に説明するように、システム及び方法は、デバイス(処理デバイス又はストレージデバイス等)により使用される電力を削減し得、システムの動作中のメモリストレージスペースを不要にし得る。
【0015】
図1は、乗算/累算演算を実施するためのシステム100の実施形態を説明する。システム100は、本明細書では“畳み込みコア”と称され得る。幾つかの実施形態では、システム100は、長い累積シーケンスを必要とする任意のデバイス、システム、又は環境に実装され得る。幾つかの実施形態では、システム100は、乗算器102を使用して、2つの8ビット数(本明細書では“データ”とも称される)に対して乗算演算を実施する。乗算器102の出力は16ビット数であり、それは、加算器104に通信される。加算器104は、
図1に示すように、累積バッファ106と共に動作する。幾つかの実施形態では、累積バッファ106は、32ビットの累積バッファである。
【0016】
累積バッファ106は、バッファとして動作し得、長期間に渡って複数のデータエントリを蓄積し得る。例えば、累積バッファ106は、32個のエントリ等の特定数のエントリまで着信データを累算し得る。特定の例では、データ1は、累積バッファ106のエントリ4内に蓄積され得、データ2は、累積バッファ106のエントリ17内に蓄積され得る等々。幾つかの実施形態では、累積バッファのエントリに対するデータの特定のマッピングは存在しない。特定の実装では、累算されたデータは、累積バッファ106内でインターリーブされる。幾つかの実施形態では、累積バッファ106内の各エントリは、ニューラルネットワークのチャネルである。ニューラルネットワークの特定の畳み込み層は、任意の数のチャネルを有し得る。
【0017】
幾つかの実装では、単一の累積バッファ106は、任意の数のチャネルと関連付けられたデータをサポートし得る。このことは、複数のチャネルからのデータが(データのより遅い連続的なフェッチの代わりに)累積バッファ106から同時にフェッチされ得るので、データをより速くフェッチすることを可能し得る。例えば、データは一度にフェッチされ得、累積バッファ106内に蓄積され得る。その後、データは、同時に(又はデータを再度フェッチする必要なく異なる時間に)(累積バッファ106から)複数のチャネルにアクセス又は適用され得る。
【0018】
図2は、累積バッファ200の実施形態を説明する。
図2に示すように、累積バッファ200は、“領域”と称される3つの部分を有する。累積バッファ200のこれらの領域は、領域A202、領域B204、及び領域C206を含む。幾つかの実施形態では、各領域は、特定のエントリのビットの一部分を含む。例えば、合計32ビットが累積バッファ200で利用可能である場合、領域A202は最下位16ビットを含み得、領域B204は次の上位8ビットを含み得、領域C206は最上位8ビットを含む。他の実施形態では、任意の数のビットが累積バッファ200で利用可能であり得、任意の数のビットが各領域に提供され得る。更に、代替の実施形態は、累積バッファ200を任意の数の異なる領域に分離し得る。
【0019】
幾つかの実装形態では、215個の加算等、32ビットのバッファを満たすために相当数の加算が必要である。幾つかの実施形態では、ニューラルネットワークは、32ビットのバッファを満たすのに十分なステップ又はアクティビティを有しないことがある(又は、32ビットのバッファを満たすのに長い時間がかかる)。幾つかの例では、バッファは領域A202を満たすことを開始する。領域A202が満たされた場合、データが領域B204内に蓄積され始まるであろうことを指し示すキャリーオーバーコマンド208(又はアクティビティ)が生成される。同様に、領域B204が満たされた場合、データが領域C206内に蓄積され始まるであろうことを指し示すキャリーオーバーコマンド210(又はアクティビティ)が生成される。
【0020】
まず、累積バッファ200は、領域A202が満たされるまで、領域B204又は領域C206にアクセスする必要はない。幾つかの実施形態では、領域B204又は領域C206が利用されない場合、電力消費を削減するために、各未使用領域に対するクロック(例えば、クロック信号)は無効にされる。幾つかの実装では、データアクティビティが存在しないが、クロックが有効なままである場合、不要なクロックを生成するために相当な電力が必要になり得る。したがって、特定の領域が使用されていない場合にクロックを無効にすることは電力を節約する。
【0021】
領域B204又は領域C206が(例えば、キャリーオーバー208又は210に基づいて)データを蓄積するために必要である場合、適切な領域204、206に対するクロックが、該領域でのデータアクティビティを可能にするために有効にされる。例えば、キャリーオーバー208が検出された場合、領域B204内へのデータ蓄積を可能にするために、領域B204に対するクロックは有効にされる。しかしながら、キャリーオーバー210が検出されるまで、領域C206に対するクロックは無効のままである。したがって、本明細書に説明するシステム及び方法は、データをアクティブに処理していない全ての領域に対するクロックを無効にすることによって、電力消費を削減し得る。
【0022】
図3は、畳み込みコア及び関連する共有メモリの系列300の実施形態を説明する。
図3の例では、3つの畳み込みコア:第1の畳み込みコア302、第2の畳み込みコア304、及び第3の畳み込みコア306が示されている。特定の実装では、任意の数の畳み込みコアが本明細書で論じるシステム及び方法で使用され得る。各畳み込みコア302、304、306は、乗算器308、加算器310、及び累積バッファ312を含む。幾つかの実施形態では、各畳み込みコア302、304、306は、共有メモリ314に結合される。
図3に示すように、共有メモリ314は、様々なタイプのデータを蓄積するために、任意の数のメモリセグメント(又はメモリ部分)316、318、320、及び322を含み得る。幾つかの実施形態では、各メモリセグメント316、318、320、及び322は、畳み込みコア302、304、306の内の1つと関連付けられる。
【0023】
幾つかの実施形態では、累積バッファ312は、
図2に関して本明細書で論じたような領域A及びBを含む。したがって、領域A及びBと関連付けられたデータは、該データへの高速アクセスを可能にするために、各畳み込みコア302、304、306内に蓄積される。幾つかの実施形態では、領域Cと関連付けられたデータは、共有メモリ314内に蓄積され、共有メモリ314は、各畳み込みコア302、304、306の外部にあり得る。
図3の例では、最も一般的に使用されるデータは、各畳み込みコア302、304、306内の領域A及びB内に蓄積される可能性が高い。使用頻度が低いことがある領域Cのデータは、別個の共有メモリ314内に蓄積される。幾つかの実施形態では、領域A、B、及びCのこの構成は、各畳み込みコア302、304、306内に必要なメモリの量を削減する。メモリサイズのこの削減は、畳み込みコア302、304、306が実装されるシリコンのサイズを削減する。幾つかの実施形態では、シリコンサイズのこの削減は、本明細書に説明するシステム及び方法の電力消費を削減し得る。
【0024】
図3の例では、共有メモリ314は、(
図2に関して論じたキャリーオーバー210と同様に)累積バッファ312が領域Cへのキャリーオーバーを有する場合に更新される。幾つかの実施形態では、領域Cへのキャリーオーバーは頻繁には起こらず、そのため、共有メモリ314は、高性能メモリコンポーネントでなくてもよい。
【0025】
幾つかの実装形態では、各畳み込みコア302、304、306と共有メモリ314との間にFIFO(先入れ先出し)バッファ(図示せず)が配置され得る。FIFOバッファは、共有メモリ314へ送信されたデータストレージリクエストを受信し、それらのリクエストを順番に処理するためにバッファリングする。
【0026】
他の実施形態では、FIFOバッファの代わりに、システム及び方法は、各畳み込みコア302、304、306の累積バッファ312で実行するシーケンサ(図示せず)を使用し得る。シーケンサは、当該畳み込みコアが共有メモリ314にキャリーオーバー信号を出力し得る特定の期間(例えば、タイムスロット)を各畳み込みコア302、304、306に提供し得る。各畳み込みコア302、304、306は、異なる時間にキャリーオーバー信号を送信するので、FIFOバッファは必要ない。幾つかの実施形態では、データストレージリクエスト及びその他のデータは、シーケンサにより管理されるような畳み込みコアの指定された期間中に、各畳み込みコア302、304、306から共有メモリ314へ送信される。
【0027】
図3は、複数の畳み込みコア302、304、306を使用する例示的な環境を説明するが、同様のシステム及び方法は、他のタイプのハードウェア及びソフトウェアの処理構造及びシステムで使用され得る。幾つかの実施形態では、畳み込みコア302、304、306は、
図1に示した畳み込みコアと同様であり得る。
【0028】
図4は、乗算/累算演算を実施するための方法400の実施形態を説明するフロー図である。まず、方法400は、データ(又はデータ処理リクエスト)を受信する(402)。方法は、乗算データを生成するために、受信したデータに対して乗算演算を実施する(404)。方法400は、結果を生成するために、乗算データに対して加算演算をその後実施する(406)。結果の最下位ビットの少なくとも一部分は、畳み込みコア内に蓄積される(408)。方法はまた、結果の最上位ビットの少なくとも一部分を、畳み込みコアの外側に配置された共有メモリ内に蓄積する(410)。幾つかの実施形態では、畳み込みコアの累積バッファがキャリーオーバーコマンドを生成したと判定することに応答して、結果の最上位ビットの少なくとも一部分を、畳み込みコアの外側に配置された共有メモリ内に蓄積すること(410)が実施される。
【0029】
図4の例は、1つ以上の畳み込みコアに関して論じられている。他の実施形態では、方法400は、任意のタイプのハードウェア、ソフトウェア、処理構造、及びデータ処理システム等で使用され得る。
【0030】
図5は、コンピューティングデバイス500の例示的なブロック図を説明する。コンピューティングデバイス500は、本明細書で論じる手順等の様々な手順を実施するために使用され得る。例えば、コンピューティングデバイス500は、本明細書で論じるコンピューティングデバイス及びシステムの機能又は方法の内の何れかを実施し得る。コンピューティングデバイス500は、本明細書に論じるような様々な機能を実施し得、本明細書に説明するアプリケーションプログラム又は機能等の1つ以上のアプリケーションプログラムを実行し得る。コンピューティングデバイス500は、デスクトップコンピュータ、ノートブックコンピュータ、サーバコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ、及びウェアラブルデバイス等の多種多様なコンピューティングデバイスの内の何れかであり得る。
【0031】
コンピューティングデバイス500は、1つ以上のプロセッサ502、1つ以上のメモリデバイス504、1つ以上のインターフェース506、1つ以上の大容量ストレージデバイス508、1つ以上の入力/出力(I/O)デバイス510、及びディスプレイデバイス530を含み、これらの全てはバス512に結合される。プロセッサ502は、メモリデバイス504内及び/又は大容量ストレージデバイス508内に蓄積された命令を実行する1つ以上のプロセッサ又はコントローラを含む。プロセッサ502はまた、キャッシュメモリ等の様々なタイプのコンピュータ可読媒体を含み得る。
【0032】
メモリデバイス504は、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)514)及び/又は不揮発性メモリ(例えば、リードオンリーメモリ(ROM)516)等の様々なコンピュータ可読媒体を含む。メモリデバイス504はまた、フラッシュメモリ等の書き換え可能ROMを含み得る。
【0033】
大容量ストレージデバイス508は、磁気テープ、磁気ディスク、光ディスク、及びソリッドステートメモリ(例えば、フラッシュメモリ)等の様々なコンピュータ可読媒体を含む。
図5に示すように、特定の大容量ストレージデバイスはハードディスクドライブ524である。様々なコンピュータ可読媒体から読み出すこと、及び/又は様々なコンピュータ可読媒体へ書き込むことを可能にするために、大容量ストレージデバイス508内には様々なドライブも含まれ得る。大容量ストレージデバイス508は、リムーバブル媒体526及び/又は非リムーバブル媒体を含む。
【0034】
I/Oデバイス510は、データ及び/又はその他の情報をコンピューティングデバイス500に入力すること、又はコンピューティングデバイス500から検索することを可能にする様々なデバイスを含む。例示的なI/Oデバイス510は、カーソル制御デバイス、キーボード、キーパッド、マイク、モニタ又はその他のディスプレイデバイス、スピーカー、プリンタ、ネットワークインターフェースカード、及びモデム等を含む。
【0035】
ディスプレイデバイス530は、コンピューティングデバイス500の1人以上のユーザに情報を表示することが可能な任意のタイプのデバイスを含む。ディスプレイデバイス530の例は、モニタ、ディスプレイ端末、及びビデオ投影デバイス等を含む。
【0036】
インターフェース506は、コンピューティングデバイス500が他のシステム、デバイス、又はコンピューティング環境と相互作用することを可能にする様々なインターフェースを含む。例示的なインターフェース506は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、無線ネットワーク、及びインターネットへのインターフェース等、任意の数の異なるネットワークインターフェース520を含み得る。その他のインターフェースは、ユーザインターフェース518及び周辺デバイスインターフェース522を含む。インターフェース506はまた、1つ以上のユーザインターフェース素子518を含み得る。インターフェース506はまた、プリンタ、ポインティングデバイス(マウス、トラックパッド、又はこの分野の当業者に周知の、若しくは後に発見される任意の適切なユーザインターフェース)、及びキーボード等に対するインターフェース等の1つ以上の周辺インターフェースを含み得る。
【0037】
バス512は、プロセッサ502、メモリデバイス504、インターフェース506、大容量ストレージデバイス508、及びI/Oデバイス510が相互に、並びにバス512に結合されたその他のデバイス又はコンポーネントと通信することを可能にする。バス512は、システムバス、PCIバス、IEEEバス、及びUSBバス等の、幾つかのタイプのバス構造の内の1つ以上を表す。
【0038】
説明目的のため、プログラム及びその他の実行可能プログラムコンポーネントが、本明細書では個別のブロックとして示されているが、そうしたプログラム及びコンポーネントは、コンピューティングデバイス500の異なるストレージコンポーネント内に様々な時点で存在し得、プロセッサ502により実施されることが理解される。或いは、本明細書に説明するシステム及び手順は、ハードウェア、又はハードウェア、ソフトウェア、及び/若しくはファームウェアの組み合わせで実装され得る。例えば、本明細書に説明するシステム及び手順の内の1つ以上を実行するように、1つ以上の特定用途向け集積回路(ASIC)がプログラミングされ得る。
【0039】
本開示の様々な実施形態が本明細書に説明されているが、それらは単なる例として提示され、限定ではないことを理解すべきである。本開示の精神及び範囲から逸脱することなく、形式及び詳細の様々な変更がそれらの中でなされ得ることは、当業者には明らかであろう。したがって、本開示の幅及び範囲は、説明した例示的な実施形態の何れによっても限定されるべきではなく、以下の特許請求の範囲及びそれらの均等物に従ってのみ定義されるべきである。本明細書の説明は、例証及び説明の目的で提示されている。網羅的であること、又は正確な形式の開示に開示を限定することを意図しない。開示した教示に照らして、多くの修正及び変形が可能である。更に、本明細書で論じた代替の実装の内の何れか又は全ては、開示の追加の複合的な実装を形成するために望ましい任意の組み合わせで使用され得ることに留意すべきである。
【外国語明細書】