IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特許7682283シストリックアレイ計算のエラーチェック
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-05-15
(45)【発行日】2025-05-23
(54)【発明の名称】シストリックアレイ計算のエラーチェック
(51)【国際特許分類】
   G06F 11/10 20060101AFI20250516BHJP
   G06F 17/16 20060101ALI20250516BHJP
【FI】
G06F11/10 604
G06F17/16 V
【請求項の数】 22
(21)【出願番号】P 2023548914
(86)(22)【出願日】2022-07-13
(65)【公表番号】
(43)【公表日】2024-03-27
(86)【国際出願番号】 US2022036946
(87)【国際公開番号】W WO2023287871
(87)【国際公開日】2023-01-19
【審査請求日】2023-10-17
(31)【優先権主張番号】63/222,549
(32)【優先日】2021-07-16
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/410,558
(32)【優先日】2021-08-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ヨーン,ドゥ・ヒュン
(72)【発明者】
【氏名】ジョピー,ノーマン・ポール
【審査官】田中 幸雄
(56)【参考文献】
【文献】特表2021-508125(JP,A)
【文献】中国特許出願公開第110933728(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
G06F 17/16
(57)【特許請求の範囲】
【請求項1】
計算ユニットであって、
処理要素の2次元シストリックアレイを含み、前記2次元シストリックアレイは、前記2次元シストリックアレイの第1の方向に沿って第1の入力行列から第1の入力要素を受信し、前記2次元シストリックアレイの第2の方向に沿って第2の入力行列から第2の入力要素を受信するように構成され、前記計算ユニットはさらに、
前記2次元シストリックアレイが前記第1の入力要素を受信する間に、前記第1の入力要素から第1のチェックサムの1つまたは複数のグループを生成するように構成された第1のチェックサム回路と、
前記2次元シストリックアレイが前記第2の入力要素を受信している間に、第2のチェックサムの1つまたは複数のグループを生成するように構成された第2のチェックサム回路とを含み、
前記2次元シストリックアレイは、前記第1の入力行列、前記第2の入力行列、前記第1のチェックサムの1つまたは複数のグループ、および前記第2のチェックサムの1つまたは複数のグループから出力行列を生成するようにさらに構成され、前記計算ユニットはさらに、
前記出力行列を受信し、前記出力行列から、前記出力行列の前記生成における1つまたは複数のエラーの発生を決定するように構成された出力チェックサム回路を含む、計算ユニット。
【請求項2】
前記出力行列は、データサブ行列、出力チェックサム行、および出力チェックサム列を含み、前記データサブ行列は、前記第1の入力要素および前記第2の入力要素を使用する前記2次元シストリックアレイによって生成された値を含み、
前記出力行列の前記生成における1つまたは複数のエラーの発生を決定するために、前記出力チェックサム回路は、
前記データサブ行列の少なくとも1つの行から、行チェックサムを生成し、
前記行チェックサムを前記出力チェックサム列のチェックサムと比較し、
前記行チェックサムと前記出力チェックサム列の前記チェックサムとの前記比較から、前記出力行列の前記生成におけるエラーの発生を決定するように構成される、請求項1に記載の計算ユニット。
【請求項3】
前記出力行列の前記生成における1つまたは複数のエラーの発生を決定するために、前記出力チェックサム回路は、
前記データサブ行列の少なくとも1つの列から、列チェックサムを生成し、
前記列チェックサムを前記出力チェックサム行のチェックサムと比較し、
前記列チェックサムと前記出力チェックサム行の前記チェックサムとの前記比較から、前記出力行列の前記生成におけるエラーの発生を決定するようにさらに構成される、請求項2に記載の計算ユニット。
【請求項4】
前記出力行列の前記生成における1つまたは複数のエラーの発生を決定するために、前記出力チェックサム回路は、
前記データサブ行列の少なくとも1つの行から、行チェックサムを生成し、
前記行チェックサムを前記出力チェックサム列のチェックサムと比較し、
前記行チェックサムと前記出力チェックサム列の前記チェックサムとの前記比較から、前記出力行列の前記生成におけるエラーの発生を決定するようにさらに構成される、請求項3に記載の計算ユニット。
【請求項5】
前記行チェックサムを前記出力チェックサム列の前記チェックサムと比較するために、前記出力チェックサム回路は、前記行チェックサムと前記出力チェックサム列の前記チェックサムとの間の絶対差が所定の閾値以内であるかどうかを決定するようにさらに構成される、請求項2に記載の計算ユニット。
【請求項6】
前記計算ユニットは、1つまたは複数のチェックサム処理要素をさらに含み、前記1つまたは複数のチェックサム処理要素は、前記第1および第2のチェックサム回路の一方または両方からチェックサムを受信するように構成される、請求項1に記載の計算ユニット。
【請求項7】
前記第1および第2のチェックサム回路の一方または両方は、制御信号に基づいて、処理のために第1または第2のチェックサムを前記2次元シストリックアレイに送信するように構成される、請求項1に記載の計算ユニット。
【請求項8】
前記第1および第2のチェックサム回路の一方または両方への前記制御信号のタイミングは、前記2次元シストリックアレイにわたって第1または第2の入力値をロードするための時間ステップの数に基づく、請求項7に記載の計算ユニット。
【請求項9】
前記計算ユニットは、前記出力行列の前記生成における1つまたは複数のエラーの発生の前記決定に応答して、前記1つまたは複数のエラーの発生の表示を、前記計算ユニットに接続された1つまたは複数のデバイスに送信するようにさらに構成される、請求項1に記載の計算ユニット。
【請求項10】
前記2次元シストリックアレイはさらに、
前記1つまたは複数のエラーの発生の表示が送信された後、前記1つまたは複数のデバイスから、調整された電圧を受信するように構成され、前記調整された電圧は、前記2次元シストリックアレイ所定の臨界電圧よりも高い、請求項9に記載の計算ユニット。
【請求項11】
前記2次元シストリックアレイは、前記表示の送信に応答して前記調整された電圧を受信するまで、前記計算ユニットの前記所定の臨界電圧よりも低い第1の電圧を受信するようにさらに構成される、請求項10に記載の計算ユニット。
【請求項12】
前記第1および第2のチェックサム回路の一方または両方が、前記所定の臨界電圧よりも高い第2の電圧を受信するように構成される、請求項11に記載の計算ユニット。
【請求項13】
前記第1および第2のチェックサム回路の一方または両方が、2入力2段パイプライン加算回路を含み、前記2入力2段パイプライン加算回路は、前記第1および第2のチェックサムの一方または両方の前記生成を遅らせるように構成される、請求項10に記載の計算ユニット。
【請求項14】
前記第1および第2のチェックサム回路の一方または両方が、
1つまたは複数の2サイクル加算回路と、
複数のレジスタとを含み、前記複数のレジスタは、第1のクロック周波数に従ってデータを送受信するように構成された1つまたは複数の第1のレジスタと、第2のクロック周波数に従ってデータを送受信するように構成された1つまたは複数の第2のレジスタと、第3のクロック周波数に従ってデータを送受信するように構成された1つまたは複数の第3のレジスタとを含み、前記第1、第2、および第3のクロック周波数はすべて異なる周波数である、請求項10に記載の計算ユニット。
【請求項15】
前記2次元シストリックアレイは出力固定シストリックアレイであり、前記第1および前記第2のチェックサム回路は両方とも複数のチェックサム処理要素に接続され、前記チェックサム処理要素は前記第1および第2のチェックサム回路の一方または両方から、生成されたチェックサムを受信するように構成される、請求項1に記載の計算ユニット。
【請求項16】
前記複数のチェックサム処理要素は、前記2次元シストリックアレイの周囲に沿って配置される、請求項15に記載の計算ユニット。
【請求項17】
前記計算ユニットは、前記第1のチェックサム回路からのみチェックサムを生成するか、または前記第2のチェックサム回路からのみチェックサムを生成するように構成される、請求項1に記載の計算ユニット。
【請求項18】
データ処理システムであって、
前記データ処理システムは、1つまたは複数のプロセッサ、1つまたは複数のメモリデバイス、および請求項1~17のいずれか1項に記載の計算ユニットを含む、データ処理システム。
【請求項19】
前記データ処理システムは、
前記2次元シストリックアレイに電圧を印加するように構成され、印加された前記電圧は前記2次元シストリックアレイの所定の臨界電圧を下回り、前記データ処理システムはさらに、
前記計算ユニットから1つまたは複数のエラーの表示を受信し、応答において、印加された前記電圧を増加して前記2次元シストリックアレイの前記所定の臨界電圧よりも高くするように構成される、請求項18に記載のデータ処理システム。
【請求項20】
前記データ処理システムは、前記2次元シストリックアレイの前記所定の臨界電圧より低い電圧を、前記第1のチェックサム回路、前記第2のチェックサム回路、および前記出力チェックサム回路のうちの1つまたは複数に印加し、
前記表示の受信に応答して、前記第1のチェックサム回路、前記第2のチェックサム回路、および前記出力チェックサム回路のうちの1つまたは複数に前記所定の臨界電圧より低い電圧を印加し続けるようにさらに構成される、請求項19に記載のデータ処理システム。
【請求項21】
前記データ処理システムは、前記第1および第2のチェックサム回路のうちの一方または両方に制御信号を送信するように構成され、前記送信のタイミングは、前記2次元シストリックアレイにわたって第1または第2の入力値をロードするための時間ステップの数に基づく、請求項18に記載のデータ処理システム。
【請求項22】
つまたは複数のコンピュータプログラムであって、前記1つまたは複数のコンピュータプログラムは、計算ユニットによって実行される場合、前記計算ユニットに動作を実行させ、前記計算ユニットは、処理要素の2次元シストリックアレイ、第1のチェックサム回路、第2のチェックサム回路、および出力チェックサム回路を含み、
前記動作は、
前記2次元シストリックアレイによって、前記2次元シストリックアレイの第1の方向に沿って第1の入力行列から第1の入力要素を受信することと、
前記2次元シストリックアレイによって、前記2次元シストリックアレイの第2の方向に沿って第2の入力行列から第2の入力要素を受信することと、
前記2次元シストリックアレイが前記第1の入力要素を受信している間に、前記第1のチェックサム回路によって、前記第1の入力要素から第1のチェックサムの1つまたは複数のグループを生成することと、
前記2次元シストリックアレイが前記第2の入力要素を受信している間に、前記第2のチェックサム回路によって第2のチェックサムの1つまたは複数のグループを生成することと、
前記2次元シストリックアレイによって、前記第1の入力行列、前記第2の入力行列、前記第1のチェックサムの1つまたは複数のグループ、および前記第2のチェックサムの1つまたは複数のグループから出力行列を生成することと、
前記出力チェックサム回路によって前記出力行列を受信することと、
前記出力チェックサム回路によって、前記出力行列から、前記出力行列の前記生成における1つまたは複数のエラーの発生を決定することとを含む、1つまたは複数のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2021年8月24日に出願された米国特許出願第17/410,558号の継続出願であり、これは、2021年7月16日に出願された「Error Checking For Systolic Array Computation」という題名の米国仮出願第63/222,549号の出願日の利益を主張するものであり、これらの開示は、参照により本明細書に組み込まれる。
【背景技術】
【0002】
背景
シストリックアレイは、いくつかのデータを処理するように構成されたプロセッサ、マイクロプロセッサ、または専用回路などの処理要素のアレイである。シストリックアレイの隣接する処理要素は、例えばプリント回路基板上のワイヤまたは他の物理的接続などの1つまたは複数の相互接続を介して接続することができる。
【0003】
アルゴリズムベースの耐障害性(ABFT:algorithm-based fault tolerance)は、行列乗算、フーリエ変換などの異なるタイプの算術アルゴリズムまたはロジックアルゴリズムの実行中にエラーを検出および修正するためのスキームまたは技術を指す。行列乗算の場合、例えば、入力行列A、B、出力行列Cに対してA×B=Cの場合、行列乗算のABFTには、Aのチェックサム行と行列Bのチェックサム列の生成が含まれる。Aのチェックサム行の各要素は、行列Aのそれぞれの列の要素に対して実行される線形演算の結果である。例えば、行列Aの列の各要素を加算して行列Aのチェックサム行にチェックサム値を生成する。同様に、列Bの各チェックサム値は、行列Bのそれぞれの行の要素に対して実行された線形演算の結果である。
【発明の概要】
【発明が解決しようとする課題】
【0004】
行列AおよびB(対応するチェックサム行/列を備える)を乗算した後、出力行列は、行列AおよびBを乗算する積を表すサブ行列、ならびにチェックサム行およびチェックサム列を含む。行列乗算のABFTの一部として、行列Cのチェックサム行と列のチェックサム値は、行列AとBに対して同じ線形演算を実行した結果と比較されるが、現在はCのサブ行列で実行される。Cのサブ行列の行または列で線形演算を実行した結果が、Cの対応するチェックサム値と一致しない場合、不一致は、行列乗算中にエラーが発生したことを示す。
【課題を解決するための手段】
【0005】
簡単な概要
本開示の態様は、シストリックアレイを実装し、シストリックアレイ上のデータを処理しながらエラーを検出するように構成された計算ユニットを対象とする。シストリックアレイと通信するチェックサム回路は、シストリックアレイが入力データを処理している間、チェックサムを計算し、エラー検出を実行するように構成される。入力行列でチェックサムを事前生成する代わりに、入力行列を、チェックサム回路を介してシストリックアレイに直接供給することができる。出力側では、一態様によれば、チェックサム回路は、シストリックアレイが出力を生成するための対応する動作を終了するとき、または出力がシストリックアレイからストリーミングされる間に、シストリックアレイへの出力のチェックサムを生成することができる。別の態様によれば、出力側では、チェックサム回路は、シストリックアレイによって生成された出力行列内のチェックサムを生成し、チェックサムと比較することができる。
【0006】
本開示の態様は、多くの技術的利点を提供する。オペランドのチェックサムとシストリックアレイの出力によるエラー検出は、入力のチェックサムを生成する前処理や、チェックサムの正しさを比較する後処理動作を行わずに実行できる。チップ上のシストリックアレイは、さまざまなランダムまたは疑似ランダムテストパターンに従って迅速にテストして、ハードウェア障害がアレイに存在するか、アレイの個々の処理要素に存在するかを決定できる。既知の入力や出力は不要であり、疑似ランダムテストの署名も必要ないため、テストに必要なさまざまなテストパターンを生成して展開できる。さらに、出力行列を生成するための動作のエラーチェックは、シストリックアレイの動作を遅らせることなく、また入力行列を前処理することなく実行することができる。
【0007】
実行時に、本開示の態様に従って実装されたプロセッサは、ソフトエラーまたはハードエラー、例えば、ハードウェア欠陥によって引き起こされないエラー、およびハードウェア欠陥によって引き起こされるエラーを検出することができる。プロセッサがクリティカルで時間に敏感なタスクを実行するアクセラレータの一部である場合、エラーの迅速な識別は特に重要になり得る。例えば、ソフトエラー検出は、プロセッサがバンキング、自律車両ナビゲーション/制御、飛行機または宇宙船ナビゲーションなどに関連するタスクを実行するようにトレーニングされた機械学習モデルの入力を処理している場合に特に重要であり得る。
【0008】
いくつかの例では、本明細書に記載の計算ユニットは、タイミング違反エラーを検出するように構成され得、これは、シストリックアレイにより良いエネルギー効率を提供するために検出および対処され得る。エラー検出を実行するための回路を実装して、タイミングエラーの可能性を低減し、シストリックアレイが所定の臨界電圧未満の供給電圧で動作している場合でも、正確なエラー検出を続行できるようにする。本開示の態様はまた、プロセッサの精度および信頼性を改善するために修正することができる行列乗算を含む、いくつかのタイプの動作におけるエラーの検出を提供する。異なる計算ユニットは、例えば、計算ユニットによって実行される機械学習モデルの推論中に、より良い性能のためにユニットを調整するために、異なる電圧および/または周波数レベルに調整することができる。エラーを検出することで、計算の精度を全体的に向上させることができる。
【0009】
本開示の態様は、最小限のオーバーヘッドで、計算ユニットのシストリックアレイの性能に影響を与えることなく実装することができる。入力の前処理は不要であり、入力が前処理される他のアプローチよりも計算ユニットのエラーチェックの効率をさらに向上させる。さらに、本明細書で説明するように、エラー検出を実行するためのチェックサム回路への入力は、処理のためのシストリックアレイへの入力を遅らせない。
【0010】
「緩和された」耐障害性を適用して、オーバーヘッド、特に計算ユニットとのソフトウェアの相互作用をさらに低減して、エラーが実際に検出された場合にのみ適用することもできる。いくつかの例では、エラーの正確な原因を特定する必要なしにエラーの存在を検出することが主な使用例である場合、緩和された耐障害性が有益である可能性がある。
【0011】
本明細書に記載されるように計算ユニットに適用されるエラー検出により、エラー訂正メカニズム、例えば、行列乗算のためのABFTに基づくエラー訂正プロセスを実装して、計算ユニットの実行中に検出されたハードエラーから回復することができる。
【0012】
本開示の一態様は、以下を含む計算ユニットを対象とし、処理要素の2次元シストリックアレイを含む。シストリックアレイは、シストリックアレイの第1の方向に沿って第1の入力行列から第1の入力要素を受信し、シストリックアレイの第2の方向に沿って第2の入力行列から第2の入力要素を受信するように構成される。計算ユニットはさらに、2次元シストリックアレイと、シストリックアレイが第1の入力要素を受信している間に、第1の入力要素から第1のチェックサムの1つまたは複数のグループを生成するように構成された第1のチェックサム回路と、シストリックアレイが第2の入力要素を受信している間に、第2のチェックサムの1つまたは複数のグループを生成するように構成された第2のチェックサム回路とを含む。シストリックアレイは、第1の入力行列、第2の入力行列、第1のチェックサムの1つまたは複数のグループ、第2のチェックサムの1つまたは複数のグループから出力行列を生成するようにさらに構成される。計算ユニットはさらに、出力行列を受信し、出力行列から、出力行列の生成における1つまたは複数のエラーの発生を決定するように構成された出力チェックサム回路を含む。
【0013】
前述の態様は、単独で、または任意の組み合わせで、以下の特徴の1つまたは複数を含むことができる。いくつかの例では、前述の態様は、以下のすべての特徴を一緒に含む。
【0014】
出力行列には、データサブ行列、出力チェックサム行、および出力チェックサム列が含まれる。データサブ行列は、第1の入力要素および第2の入力要素を使用するシストリックアレイによって生成された値を含む。出力行列の生成時に1つまたは複数のエラーが発生したかどうかを決定するために、出力チェックサム回路は、データサブ行列の少なくとも1つの行から行チェックサムを生成し、行チェックサムを出力チェックサム列のチェックサムと比較し、行チェックサムと出力チェックサム列のチェックサムとの比較から、出力行列の生成におけるエラーの発生を決定するように構成される。
【0015】
出力行列の生成における1つまたは複数のエラーの発生を決定するために、出力チェックサム回路はさらに、データサブ行列の少なくとも1つの列から、列チェックサムを生成し、列チェックサムを出力チェックサム行のチェックサムと比較し、列チェックサムと出力チェックサム行のチェックサムとの比較から、出力行列の生成におけるエラーの発生を決定するように構成される。
【0016】
出力行列の生成における1つまたは複数のエラーの発生を決定するために、出力チェックサム回路はさらに、データサブ行列の少なくとも1つの行から、行チェックサムを生成し、行チェックサムを出力チェックサム列のチェックサムと比較し、行チェックサムと出力チェックサム列のチェックサムとの比較から、出力行列の生成におけるエラーの発生を決定するように構成される。
【0017】
行チェックサムを出力チェックサム列のチェックサムと比較するために、出力チェックサム回路はさらに、行チェックサムと出力チェックサム列のチェックサムとの間の絶対差が所定の閾値内にあるかどうかを決定するように構成される。
【0018】
計算ユニットは、1つまたは複数のチェックサム処理要素をさらに含む。1つまたは複数のチェックサム処理要素は、第1および第2のチェックサム回路の一方または両方からチェックサムを受信するように構成される。
【0019】
第1および第2のチェックサム回路の一方または両方は、制御信号に基づいて、処理のために第1または第2のチェックサムをシストリックアレイに送信するように構成される。
【0020】
第1および第2のチェックサム回路の一方または両方への制御信号のタイミングは、シストリックアレイにわたって第1または第2の入力値をロードするための時間ステップの数に基づく。
【0021】
計算ユニットは、出力行列の生成における1つまたは複数のエラーの発生の決定に応答して、1つまたは複数のエラーの発生の表示を、計算ユニットに接続された1つまたは複数のデバイスに送信するようにさらに構成される。
【0022】
シストリックアレイはさらに、1つまたは複数のエラーの発生の表示が送信された後、1つまたは複数のデバイスから、調整された電圧を受信するように構成される。調整された電圧は、計算ユニットの臨界電圧よりも高い。
【0023】
シストリックアレイは、表示の送信に応答して調整された電圧を受信するまで、計算ユニットの臨界電圧よりも低い第1の電圧を受信するようにさらに構成される。
【0024】
第1および第2のチェックサム回路の一方または両方は、臨界電圧よりも高い第2の電圧を受信するように構成される。
【0025】
第1および第2のチェックサム回路の一方または両方は、2入力2段パイプライン加算回路を含む。2入力2段パイプライン加算回路は、第1および第2のチェックサムの一方または両方の生成を遅らせるように構成される。
【0026】
第1および第2のチェックサム回路の一方または両方は、1つまたは複数の2サイクル加算回路と、複数のレジスタとを含み、前記複数のレジスタは、第1のクロック周波数に従ってデータを送受信するように構成された1つまたは複数の第1のレジスタと、第2のクロック周波数に従ってデータを送受信するように構成された1つまたは複数の第2のレジスタと、第3のクロック周波数に従ってデータを送受信するように構成された1つまたは複数の第3のレジスタとを含み、第1、第2、および第3のクロック周波数はすべて異なる周波数である。
【0027】
いくつかの例では、シストリックアレイは重み固定である。他の例では、シストリックアレイは出力固定シストリックアレイであり、第1および第2のチェックサム回路は両方とも複数のチェックサム処理要素に接続され、チェックサム処理要素は、第1および第2のチェックサム回路の一方または両方から生成されたチェックサムを受信するように構成される。
【0028】
複数のチェックサム処理要素は、シストリックアレイの周囲に沿って配置される。
計算ユニットは、第1のチェックサム回路からのみチェックサムを生成するか、または第2のチェックサム回路からのみチェックサムを生成するように構成される。
【0029】
本開示の一態様は、データ処理システムを対象とし、このデータ処理システムは、1つまたは複数のプロセッサ、1つまたは複数のメモリデバイス、および計算ユニットを含む。計算ユニットは、処理要素の2次元シストリックアレイを含む。シストリックアレイは、シストリックアレイの第1の方向に沿って第1の入力行列から第1の入力要素を受信し、シストリックアレイの第2の方向に沿って第2の入力行列から第2の入力要素を受信するように構成される。計算ユニットはさらに、シストリックアレイが第1の入力要素を受信している間に、第1の入力要素から第1のチェックサムの1つまたは複数のグループを生成するように構成された第1のチェックサム回路と、シストリックアレイが第2の入力要素を受信している間に第2のチェックサムの1つまたは複数のグループを生成するように構成された第2のチェックサム回路とを含む。シストリックアレイは、第1の入力行列、第2の入力行列、第1のチェックサムの1つまたは複数のグループ、および第2のチェックサムの1つまたは複数のグループから出力行列を生成するようにさらに構成される。計算ユニットはさらに、出力行列を受信し、出力行列から、出力行列の生成における1つまたは複数のエラーの発生を決定するように構成された出力チェックサム回路を含む。
【0030】
前述の態様は、単独でまたは組み合わせて、以下の特徴のうちの1つまたは複数を含むことができる。いくつかの例では、前述の態様は、以下の特徴のすべてを一緒に含むことができる。
【0031】
データ処理システムは、シストリックアレイに電圧を印加するように構成され、印加された電圧はシストリックアレイの臨界電圧を下回る。そして、計算ユニットから1つまたは複数のエラーの表示を受信し、応答において、印加された電圧を増加してシストリックアレイの臨界電圧よりも高くするように構成される。
【0032】
データ処理システムはさらに、シストリックアレイの臨界電圧より低い電圧を、第1のチェックサム回路、第2のチェックサム回路、および出力チェックサム回路のうちの1つまたは複数に印加するように構成される。そして、表示の受信に応答して、第1のチェックサム回路、第2のチェックサム回路、および出力チェックサム回路のうちの1つまたは複数に臨界電圧より低い電圧を印加し続けるように構成される。
【0033】
データ処理システムは、第1および第2のチェックサム回路のうちの一方または両方に制御信号を送信するように構成され、送信のタイミングは、シストリックアレイにわたって第1または第2の入力値をロードするための時間ステップの数に基づく。
【0034】
本開示の一態様は、計算ユニットによって実行されるコンピュータ命令でエンコードされた1つまたは複数の非一時的なコンピュータ可読記憶媒体を対象とする。計算ユニットは、処理要素の2次元シストリックアレイ、第1のチェックサム回路、第2のチェックサム回路を含む。出力チェックサム回路により、計算ユニットは動作を実行する。動作は、シストリックアレイによって、シストリックアレイの第1の方向に沿って第1の入力行列から第1の入力要素を受信し、シストリックアレイによって、シストリックアレイの第2の方向に沿って第2の入力行列から第2の入力要素を受信することと、シストリックアレイが第1の入力要素を受信している間に、第1のチェックサム回路によって、第1の入力要素から第1のチェックサムの1つまたは複数のグループを生成することと、シストリックアレイが第2の入力要素を受信している間に、第2のチェックサム回路によって第2のチェックサムの1つまたは複数のグループを生成することと、シストリックアレイによって、第1の入力行列、第2の入力行列、第1のチェックサムの1つまたは複数のグループ、および第2のチェックサムの1つまたは複数のグループから出力行列を生成することと、出力チェックサム回路によって出力行列を受信することと、出力チェックサム回路によって、出力行列から、出力行列の生成における1つまたは複数のエラーの発生を決定することとを含む。
【図面の簡単な説明】
【0035】
図1】本開示の態様による計算ユニットのブロック図である。
図2】本開示の態様による、対応するチェックサムを有するそれぞれの出力行列を生成するために計算ユニットによって処理された例示的な入力行列を示す。
図3】垂直チェックサム回路およびチェックサム処理要素のブロック図である。
図4】水平チェックサム回路のブロック図である。水平チェックサム回路115は、いくつかの加算回路、レジスタ、およびマルチプレクサを含む。
図5】出力チェックサム回路のブロック図である。出力チェックサム回路は、出力行列Cのデータサブ行列の行と列からチェックサムを生成するように構成される。
図6】垂直チェックサム回路および出力チェックサム回路を有するが、水平チェックサム回路はない例示的な計算ユニットである。
図7】出力固定シストリックアレイを有する例示的な計算ユニットである。
図8A】例示的な垂直チェックサム回路である。垂直チェックサム回路は、長さ8の入力行列の行からチェックサムを生成するように構成される。
図8B】2入力2段パイプライン加算回路を有する例示的な垂直チェックサム回路である。
図8C】2サイクルの非パイプライン加算回路を備えた別の例示的な垂直チェックサム回路の回路図である。
図9A】本開示の態様による、計算ユニット上でエラー検出を伴う行列乗算を実行するための例示的なプロセスのフローチャートである。
図9B】本開示の態様による、計算ユニットの処理中にエラーの発生を検出するための例示的なプロセスのフローチャートである。
図10A】例示的な計算ユニットを実装するデータ処理システムのブロック図である。
図10B】本開示の態様による、計算ユニットへの供給電圧を調整するための例示的なプロセスのフローチャートである。
図11】計算ユニット1000を含むデータ処理システムを実装するための環境例のブロック図である。
【発明を実施するための形態】
【0036】
詳細な説明
図1は、本開示の態様による、計算ユニット100のブロック図である。計算ユニット100は、処理要素110A~Pのシストリックアレイ110、水平チェックサム回路115、垂直チェックサム回路120、出力チェックサム回路125、およびチェックサム処理要素130を含む。
【0037】
シストリックアレイ110は、さまざまな異なる方法で実装することができ、一般に、異なる処理要素を隣接する処理要素に接続する1つまたは複数のデータバスまたは相互接続を含むことができる。例えば、シストリックアレイは、シストリックアレイ110の各行および/または列に沿ったデータバスを含むことができ、その処理要素110A~Pは正方形または長方形の配置で構成することができる(ただし、処理要素110A~Pは、いくつかの例では、六角形配置などの他の幾何学的配置で構成することもできる)。いくつかの例では、シストリックアレイ110は、アレイ内の互いに斜め上または下に配置された処理要素に沿って1つまたは複数のデータバスを含むことができる。いくつかの例では、シストリックアレイ110は、時間借用を活用するために、二相の重複しないクロックおよびラッチを実装することができる。
【0038】
データバスは、データが処理要素から処理要素へ、または外部入力から処理要素へ、または処理から外部出力へ流れることを可能にする。外部入出力には、例えば、計算ユニット100に通信可能に結合された他のデバイス、または計算ユニット100の一部であるか、または計算ユニット100の外部に配置されたメモリデバイスが含まれることができる。いくつかの例では、シストリックアレイ110は、シストリックアレイ110の周囲の処理要素を介してのみ、シストリックアレイ110の外部で入力または出力を受信または生成するように構成することができる。他の例では、シストリックアレイ110は、処理要素110A~Pのいずれかから外部入力または出力を受信または生成するように構成することができる。
【0039】
シストリックアレイ110の処理要素は、1つまたは複数の入力を受信し、入力を処理し、および1つまたは複数の出力を生成するように構成されたプロセッサ、マイクロプロセッサ、または任意の専用回路であり得る。処理要素は、例えば、特定のタイプの動作を実行するように構成されたデータ処理ユニット(DPU)であり得る。いくつかの例では、処理要素は、メモリを一時的に、例えばレジスタに、またはラッチまたはフリップ/フロップ回路などの1つまたは複数の回路を使用して記憶するように構成することができる。
【0040】
処理要素110A~Pは、いくつかのトポロジに従って配置することができる。例えば、処理要素110A~Pは、アレイ、メッシュ、または立方体として配置することができる。各処理要素は、隣接する処理要素に接続する1つまたは複数のチャネルを有することができる。1つまたは複数のチャネルは、例えば、シストリックアレイ110が実装されているシリコンウェーハ上のワイヤまたは他の物理的接続であり得る。各処理要素のチャネル数に応じて、シストリックアレイ110は、1つまたは複数の次元を有することができる。説明のために、シストリックアレイ110は2次元メッシュであると仮定されるが、他の実装形態では、シストリックアレイ110は、一般性を失うことなく他のトポロジに従って構成できることが理解される。
【0041】
シストリックアレイ110には16個の処理要素が示されており、4×4メッシュとして配置されているが、さまざまな例において、シストリックアレイ110の処理要素の数は、例えば、256×256メッシュとして配置される65,536個の処理要素、または128×128メッシュとして配置される16,384個の処理要素など、変化し得ることが理解される。
【0042】
データは、互いに独立して、各データバスまたはシストリックアレイ110の相互接続を横切って移動することができる。換言すれば、異なる処理要素は、例えば時間ステップで測定される異なる時点で、異なるデータを受信して隣接する処理要素に送信することができる。時間ステップは、計算ユニット100の1つまたは複数のクロックサイクル、または計算ユニット100に通信可能に結合されたより大きなシステムを参照することができる。この明細書での説明を容易にするために、この明細書の時間ステップは、特に明記されていない限り、単一のクロックサイクルを指す。各時間ステップについて、各処理要素110A~Pは異なる演算を実行してもよい。例えば、単一の時間ステップでは、一部の処理要素が新しい入力の受信、生成された出力の送信、受信された入力の処理、または受信または送信するデータの不足のためにアイドル状態になり得る。
【0043】
処理要素110A~Pの機能は、シストリックアレイ110の機能、例えば、シストリックアレイ110が実行するように構成される演算に依存することができる。例えば、シストリックアレイ110は、2つの入力行列、例えばニューラルネットワーク層の重み行列およびその層への入力行列に対して行列乗算を実行するように構成され得る。他の例では、シストリックアレイ110は、畳み込みニューラルネットワーク(「ConvNet」)の受信入力の一部として畳み込み演算実行するように構成することができる。行列乗算の例では、各処理ユニット110A0Pは、乗算および累積(「MAC」)演算実行するように構成することができる。MAC演算を行うように構成された処理要素は、MACユニットと呼ぶことができる。本開示の態様は、MACユニットのシストリックアレイによって実行される行列乗算中のエラーチェックおよび修正を対象とし、以下の例は、特に明記しない限り、処理要素110A~PがMAC演算用に構成されると仮定する。
【0044】
例として、MACユニットとして構成された処理要素は次のようにデータを処理できる。時間ステップごとに、処理要素は、ユニットにロードされた行列要素と受信入力行列要素を乗算し、乗算の積をMACユニットによって維持される実行部分合計に加算できる。MACユニットは、入力行列要素をデータバスに沿って隣接するMACユニットに第1の方向(例えば、右側)に転送し、更新された部分合計を同じまたは異なるデータバスに沿ってMACユニットに第2の方向(例えば、下)に渡す。
【0045】
シストリックアレイ110は、パイプライン化されたサブ演算、異なるサイズの入力、デバッグなどのさまざまなレベルで演算を実行するように構成することができる。例えば、シストリックアレイ110に対する1つの演算は、処理要素のグループによって個別に実行される演算、例えば、2×2または4×4の処理要素のサブ配列によって実行され得る。他の例では、シストリックアレイ110は、離散フーリエ変換などのより複雑な演算を実行するように構成するか、またはデータがシストリックアレイ110に入出力される方法を管理する異なる制御フローを定義するように構成することができる。シストリックアレイ110はまた、シストリックアレイ110が乗算するように課されるより大きな行列の一部である入力ブロックに対して、行列乗算などの演算を実行することができる。他の例では、シストリックアレイ110の異なる処理ユニットは、異なるタイプの回路または回路の組み合わせ、例えば、加算器、乗算器、アキュムレータ、2つの入力を比較するように構成された回路などを用いて実装することができる。
【0046】
この明細書の例は、シストリックアレイ110での行列乗算に対するアルゴリズムベースの耐障害性に焦点を当てているが、本開示の態様は、例えば、本明細書に記載される動作および条件を含む、さまざまな条件のいずれかの下で他のタイプの動作を実行するように構成されたシストリックアレイ上のエラー検出に適用可能であることが理解される。
【0047】
シストリックアレイ110は、それぞれの要素について異なるデータタイプを有する入力行列に対して行列乗算を実行するように構成される。例えば、シストリックアレイ110は、要素として1および0を有するバイナリ行列に対して行列乗算を実行することができる。要素として正または負の整数を有する整数行列。浮動小数点値を要素などとする浮動小数点行列。要素は、異なるレベルの精度にすることができる。例えば、8ビット整数、または浮動小数点値は、異なる範囲と精度のレベルなどである。
【0048】
本明細書でより詳細に説明するように、垂直チェックサム回路120および水平チェックサム回路115は、入力される入力行列140A、Bのチェックサムを生成するように構成される。「垂直」および「水平」チェックサム回路への言及は、シストリックアレイ110によって受信される入力の方向に限定することを意図したものではない。しかし、これは、図に示されている回路例に対する入力行列の方向と併せて説明を容易にするために提供されているにすぎない。いくつかの例では、本明細書に記載の垂直チェックサム回路120は、列の代わりにアレイの列に沿ってシストリックアレイ110に入力を提供するように配向することができ、水平チェックサム回路115およびアレイの列ではなく行についてはその逆である。チェックサム回路115、120は、シストリックアレイ110に入力を提供するために、互いに対して任意の方向に配置することができる。
【0049】
チェックサム処理要素130は、入力行列A140Aの各列に対して生成されたチェックサムを記憶するための追加の処理要素を含む。各列が垂直チェックサム回路120によって処理されると、結果のチェックサムがチェックサム処理要素130に押し出され、これは、シストリックアレイ110に通信可能に結合することができ、チェックサム回路115、120によってそれぞれのチェックサム列または行で増補される入力行列140A~Bの乗算中に含めることができる。本明細書でより詳細に説明するように、チェックサム処理要素130の方向および位置はまた、垂直チェックサム回路120の方向および位置に対して変化し得る。
【0050】
出力チェックサム回路125は、入力行列A140A(およびそのチェックサム)に入力行列140B(およびそのチェックサム)を乗算するシストリックアレイ110の積である、結果として生じる出力行列のチェックサムを生成するように構成される。出力行列は、入力行列Aと入力行列Bを乗算した積であるサブ行列と、出力チェックサム回路125によって生成されたチェックサム列およびチェックサム行とを含む。出力チェックサム回路125は、チェックサム列および行をサブ行列のそれぞれの列または行の合計と比較し、チェックサム値と比較された計算合計との間の不一致によって示されるエラーを検出するように構成される。
【0051】
図2は、本開示の態様による、対応するチェックサムを有するそれぞれの出力行列140Cを生成するために計算ユニット100によって処理された例示的な入力行列140A、Bを示す。
【0052】
この例では、入力行列A140A(「行列A」)は、入力行列B140B(「行列B」)によって乗算され、これは、A×Bとして表すことができる。図2では、入力行列は4×4であり、シストリックアレイ110の寸法に一致する。他の例では、入力行列の次元が異なり得る。例えば、行列Aはn×4、行列Bは4×mであり、n,mは正の整数である。本明細書で説明されるように、シストリックアレイ110は任意の寸法であり得るので、行列AおよびBの内寸法(この例では4つ)もまた、シストリックアレイ110の寸法に基づいて変化し得る。
【0053】
チェックサム回路115、120の例示的な方向および位置に基づいて、入力行列A140A(「入力行列A」)および入力行列B140B(「入力行列B」)は、行列の要素がシストリックアレイ110によって受信される順序が行列乗算の規則に従って正しい乗算を可能にすることを保証するために最初に操作される。計算ユニット100を実装するデータ処理システムの一部として構成されたシーケンサは、行列A、Bの操作、および入力行列の要素がシストリックアレイ110に提供されるタイミングの調整に関連して現在説明されている動作の一部またはすべてを実行するために実装することができる。例示的なデータ処理システムのシーケンサおよび他の構成要素は、図10Aを参照して本明細書で説明される。
【0054】
入力行列Aは転置され(A)、その列のそれぞれは、1つの時間ステップ、例えば1クロックサイクルによってずらされる。時間ステップは、1つまたは複数のクロックサイクルまたは期間を定義することができ、これは、タイミング回路、例えば、図10Aを参照して本明細書で説明されるタイミング回路によって管理することができる。転置された行列Aの各列は、垂直チェックサム回路120のそれぞれの処理要素を通過する。図3を参照して本明細書で説明したように、垂直チェックサム回路120は、転置行列Aの各列(それぞれが元の入力行列Aの行に対応する)に対してチェックサムを生成する。垂直チェックサム回路120は、転置行列Aの受信要素を処理した後、受信した要素をシストリックアレイ110に渡して行列乗算を行う。生成されたチェックサムは、チェックサム処理要素130にも押し出される。
【0055】
計算ユニット100は、異なるブロックサイズの入力行列を受信するように構成することができる。計算ユニット100は、より大きな入力のサブ行列である複数の行列を受信することができる。例えば、計算ユニット100は、128×128要素であり得、ブロック行列乗算を行うように構成することができ、元の入力行列は大きく、例えば、4,096×4,096要素である。「A」入力行列は128×128要素であり得、計算ユニット100への「B」入力行列は1024×128要素であり得る。
【0056】
入力行列Bもまた、その要素が水平チェックサム回路115によって受信される前に前処理される。入力行列Bは逆(B)であるため、各行の各要素の位置が入れ替わる。例えば、第1の要素は最後の要素、第2の要素が最後から第2の要素などになる。逆行列Bも、各行の1つの時間ステップによってずらされる。図4を参照して本明細書で説明したように、水平チェックサム回路115は、逆行列Bの各行に対してチェックサムを生成する。水平チェックサム回路115は、逆行列Bの受信要素を処理した後、受信した要素をシストリックアレイ110に渡して行列乗算を実行する。
【0057】
いくつかの例では、行列Aの要素または行列Bの要素は、シストリックアレイ110にロードされ、例えば、シストリックアレイ110のそれぞれの処理要素にロードされた1つの要素であり、次に、他の行列の要素は、シストリックアレイ110にストリーミングされる。例えば、入力行列Aは、ニューラルネットワークの層の重みに対応する重み行列であり得、一方、入力行列Bは、ニューラルネットワーク層の重みを乗算するための入力値を含み得る。行列Aの要素は、例えば、ラッチまたは重み負荷によってシストリックアレイ110にロードされてもよく、行列Bの要素は、処理のためにシストリックアレイ110にストリーミングされ得る。入力行列のストリーミング要素または負荷要素の選択は、入力行列の次元に依存し得、例えば、より広いまたはより高い行列をシストリックアレイにストリーミングすることができ、一方、シストリックアレイ110に適合する行列をロードすることができる。出力行列C140C(「行列C」)は、シストリックアレイ110からストリーミングアウトすることができ、またはいくつかの例では、乗算が完了した後にのみシストリックアレイ110から完全に押し出すことができる。
【0058】
多数の時間ステップが経過した後、例えば行列乗算を実行するためのシストリックアレイの処理要素の構成と数に基づいて、出力チェックサム回路125は、行列Cの要素を受信し始める。入力行列AおよびBがずれているため、行列Cの要素もまたずれる。しかし、いくつかの例では、シストリックアレイ110は、出力固定シストリックアレイとして構成することができ、出力行列Cの要素は、乗算が完了するまでシストリックアレイ110に留まり、その後、出力チェックサム回路125を介してのみポップアウトされる。図5を参照してより詳細に説明するように、出力チェックサム回路125は、出力行列チェックサムを生成し、それらの値を出力行列Cからのチェックサムと比較する。生成されたチェックサムが出力行列Cのチェックサムと一致しない場合、出力チェックサム回路125は、エラーが検出されたことを示すフラグまたは他の表示を立てることができる。
【0059】
出力行列Cは、データサブ行列とチェックサム部分の2つの部分を有する。出力行列Cのチェックサム部分は、出力行列Cのチェックサム行202の破線の輪郭と、列チェックサム204の点線の輪郭で示される、出力行列Cの周囲の要素によって示される。チェックサム行列のデータサブ行列140Dは、クロスサッチ要素によって示される。データサブ行列140Dは、チェックサムを追加せずに、入力行列AおよびBの積に対応する。チェックサム行202、列チェックサム204を含む全体的な出力行列C(要素140C)およびデータサブ行列140Dは、行列AおよびBと、水平および垂直チェックサム回路115、120によって生成されるそれぞれのチェックサム行または列との積に対応する。
【0060】
行および列202、204のチェックサムは、出力行列Cの右上隅の要素によって示される共通の要素を共有することに留意されたい。出力行列Cの行および列202、204のチェックサムは、出力チェックサム回路125がチェックサム生成および比較を実行した後に破棄することができる。
【0061】
全体として、水平、垂直、および出力チェックサム回路の導入により、時間ステップの増加に関して追加コストが低くなるか、追加コストがかからなくなり、すなわち、水平/垂直チェックサム回路の場合にシストリックアレイ110に入力を渡すのに、またはシストリックアレイ110からの出力要素を出力チェックサム回路125からのそれぞれの宛先に渡すのに必要な追加の時間ステップである。必要な追加のロジックはまた、例えば、アレイ内の処理要素の数ではなく、アレイの次元の長さのみが増加する、2次元シストリックアレイに対して線形にスケーリングする。
【0062】
図3は、垂直チェックサム回路120およびチェックサム処理要素130のブロック図である。チェックサム処理要素130は、シストリックアレイ110の処理要素と同様に構成することができるチェックサム処理要素130A、B、C、およびDを含む。いくつかの例では、垂直チェックサム回路120によって提供されるエラーチェック機能は、例えば、ユーザ入力に基づいて、無効にすることができる。場合によっては、チェックサム処理要素130は、エラーチェックが無効になっている場合でも、シストリックアレイ110上で行列乗算を実行する一環として使用することができる。
【0063】
垂直チェックサム回路120は、いくつかの加算回路305A、B、およびC(「加算回路305」)を含む。レジスタ310A、B、C、およびD(「レジスタ310」)も同様である。レジスタ310は、例えば、フリップ/フロップ回路のそれぞれのグループとして、回路にデータを記憶するためのさまざまな技術のいずれかに従って実装することができる。加算回路305は、2つの入力を受信し、その結果生じる2つの入力の合計を生成するように構成された回路を構築するためのさまざまな技術のいずれかに従って実装することができる。加算回路305の数は、入力行列の行入力の長さに応じて変化する。本明細書で提供される例は、4×4の入力行列に焦点を合わせており、したがって、垂直チェックサム回路120は、3つの加算回路および4つのレジスタを含む。
【0064】
垂直チェックサム回路120は、図2に記載されているように、入力行列Aを受信し、1つの時間ステップ(A)によって転置およびずらされる。第1の行の入力は、入力行列A図3では入力行列140ATとして示される)によって受信される。入力行列140ATの第1の行は、入力行列Aの第1の列に対応する。入力行列140ATは、要素a1、a2、a3、a4、a5、a6、a7、a8、a9、a10、a11、a12、a13、a14、a15、およびa16を含む。
【0065】
一般に、垂直チェックサム回路120は、チェックサムをチェックサム処理要素130に押し出す前に、チェックサムの部分合計をレジスタ310A~Cに累算し、計算されたチェックサムをレジスタ310Dに記憶する。入力はずらされているため、第1の時間ステップで、垂直チェックサム回路120は入力a1を受信する。入力a1はレジスタ310Aに記憶され、処理のためにシストリックアレイ110にも渡される、すなわち、シストリックアレイ上の行列乗算アルゴリズムによる行列乗算。
【0066】
第2の時間ステップでは、入力a1および入力a2は加算回路305Aによって受信される。a1+a2の部分合計はレジスタ310Bに記憶される。入力a2は、シストリックアレイ110にも渡される。図3には示されていないが、第2の時間ステップにおいても、a1の上の次の入力a5はレジスタ310Aに記憶され、シストリックアレイ110にも渡される。
【0067】
第3の時間ステップで、加算回路305Bは、入力a3を用いて、レジスタ310Bに記憶された部分合計を加算する。加算回路305Bによって生成された更新された部分合計は、レジスタ310Cに記憶される。入力a3は、シストリックアレイ110にも渡される。また、a1と同じ列の次の入力(入力a9)がレジスタ310Aに渡され、レジスタ310Aの以前の内容がa2と同じ列の次の入力a6に加算され、レジスタ310Bに記憶される。
【0068】
第4の時間ステップで、加算回路305Cは、入力a4を用いて、レジスタ310Cに記憶された部分合計を加算する。加算回路305Cは最後の加算器であるため、Aの第1列(すなわち、Aの第1の行)のチェックサムを生成する。チェックサムはレジスタ310Dに記憶される。入力a4もシストリックアレイ110に渡され、入力行列Aの連続する入力(a7)はシストリックアレイ110に渡され、レジスタ310A~Cにわたってそれぞれの部分合計を更新するために加算される。
【0069】
第5の時間ステップで、レジスタ310Dに記憶されたチェックサムは、チェックサム処理要素130の最後の利用可能な処理要素に押し下げられる。例えば、入力行列A(入力a1~a4)の第1の列に対して生成されたチェックサムは、処理要素130Dに押し出される。また、第5の時間ステップで、入力a8が押し出され、入力行列Aの第2の列のチェックサムを計算して、レジスタ310Dに記憶することができる。後続の時間ステップで、第2の列(入力a5~a8)のチェックサムが処理要素130Cに押し出され、次に処理要素130Bの第3の列(入力a9~a12)の第3のチェックサム、および第4の列(入力a13~a16)のチェックサムは、チェックサム処理要素130Aに押し出される。
【0070】
入力行列Aのチェックサムが生成された後、シストリックアレイ110は、例えば、各チェックサムを入力行列Bの対応する行と乗算することによって、チェックサム処理要素130に記憶されたチェックサムを使用して、チェックサムの対応する行および列を有する出力行列Cを生成することができる。
【0071】
前の例では、転置行列Aの各行の要素を合計することによって入力行列Aの列チェックサムを生成することを説明したが、垂直チェックサム回路120は、チェックサムを生成するための任意の線形演算、例えば、定数値または係数を加算して乗算するか、チェックサム行に所定のベクトルを乗算するように構成できることが理解される。
【0072】
図4は、水平チェックサム回路115のブロック図である。水平チェックサム回路115は、多数の加算回路405A~D(「加算回路405」)、レジスタ410A~D(「レジスタ410A~D」)、マルチプレクサ415A~D(「マルチプレクサ415」)を含む。加算回路405およびレジスタ410は、図3に示される加算回路305およびレジスタ310を参照して本明細書で説明されるように実装することができる。マルチプレクサ415は、対応するレジスタの値または対応する入力値のいずれかをシストリックアレイ110に渡すように構成された2対1のマルチプレクサであり得る。マルチプレクサは、意思決定回路の任意のバリアントで置き換えることができ、例えば、複数の入力の間で選択し、選択されていない入力をゲートするように構成された、水平チェックサム回路115の特定の部分を無効および有効するために1つまたは複数の制御信号によって制御されるスイッチ、または1つまたは複数の回路。
【0073】
水平チェックサム回路115は、図3に記載されているように入力行列Bを受信し、逆でずらされている(B)。説明を簡単にするために、入力は昇順で表示される。入力行列Bが受信する第1の列の入力(つまり、入力行列Bの最後の列の入力)は、要素b1、b2、b3、b4、b5、b6、b7、b8、b9、b10、b11、b12、b13、b14、b15、およびb16が含まれる。
【0074】
一般に、水平チェックサム回路115は、チェックサムの部分合計をレジスタ410A~Dに累算し、制御信号に基づいて、レジスタ410A~Dの内容を完了したチェックサムとしてシストリックアレイ110にいつ押し出すかを決定する。例えば、制御信号、例えば、is_checksumフラグは、入力行列Aの内寸法のサイズに基づいて、マルチプレクサ415Aからマルチプレクサ415Dに伝播することができる。本明細書で説明するように、入力行列Bは、入力行列A(例えば、4×m)よりもはるかに長い(例えば、n×4)可能性がある。したがって、チェックサムは、入力行列Bのセグメントにわたって生成され、定期的にシストリックアレイ110に送信される。制御信号により、水平チェックサム回路115は、シストリックアレイ110に渡されるデータが、いつ行列Bからの通常の入力であるか、または生成されたチェックサムであるかを決定することができる。制御信号に基づいて、水平チェックサム回路115はチェックサムを渡し、行列Bからの新しい入力セットに対する部分合計の累積をリセットすることができる。制御信号は、計算ユニット100に通信可能に結合されたシーケンサによって自動的に提供することができ、および/または入力行列Aおよび入力行列Bに対して行列乗算を実行するために計算ユニット100によって実行される命令を含むソフトウェアによってプログラム的に提供することができる。
【0075】
例えば、制御信号を受信するまで、マルチプレクサ415Aは、入力行列Bからシストリックアレイ110に入力を渡すように構成される。制御信号を受信すると、マルチプレクサ415Aは、代わりに、レジスタ410Aの内容をシストリックアレイ110に渡して処理する。マルチプレクサ415Aへの制御信号のタイミングは、入力行列Aの対応する行チェックサムの完了と一致する必要がある。例えば、入力行列Bの行の各入力を受信して累算するための適切な数の時間ステップが経過した後、制御信号をマルチプレクサ415Aに渡すことができる。水平チェックサム回路115について時間ステップごとに実行される動作の内訳の例が次に続く。
【0076】
入力がずらされているため、第1の時間ステップで、水平チェックサム回路115は、入力b13を受信する。レジスタ410Aは、最初は空であるため、入力b4はレジスタ410Aの内容、すなわちゼロに加算される。マルチプレクサ415Aは、制御信号をチェックし、制御信号がない場合、入力b4をシストリックアレイ110に渡す。
【0077】
第2の時間ステップでは、水平チェックサム回路115は、入力b8を受信する。登録された410Bが最初に空であるので、入力b8はレジスタ410Bの内容、すなわちゼロに加えられる。マルチプレクサ415Bは、制御信号をチェックし、制御信号が存在しない場合、入力b8をシストリックアレイ110に渡す。同時に、水平チェックサム回路115は、b4に続く次の入力b3も受信する。
【0078】
第3の時間ステップでは、水平チェックサム回路115は、入力b12を受信する。入力b12は、レジスタ410Cの内容に加算される。水平チェックサム回路115はまた、入力行列Bの上位行から連続する入力を受信し、それぞれの受信入力をレジスタ410A~Cに記憶されたそれぞれの部分合計に加算する。水平チェックサム回路115は、入力b7およびb2も受信する。
【0079】
第4の時間ステップでは、水平チェックサム回路115は、入力b16を受信する。入力b16は、レジスタ410Dの内容に加算され、マルチプレクサ415Dによってシストリックアレイに渡される。水平チェックサム回路115は、入力b11、b6、およびb1も受信する。
【0080】
また、第4の時間ステップ中に、マルチプレクサ415Aは、レジスタ410Aの内容が行列Bの第1の行のチェックサムであることを示す制御信号を受信する。この時間ステップにおいて、レジスタ410Aは、合計b4+b3+b2+b1を含む。マルチプレクサ415Aは、チェックサムをレジスタ410Aからシストリックアレイ110に押し出して、行列乗算演算に含まれる。次に、レジスタ410Aはゼロにリセットされ、次の入力セットのチェックサムの計算を開始する。制御信号は、次のマルチプレクサ、すなわちマルチプレクサ415Bに押し下げられる。
【0081】
第5の時間ステップにおいて、マルチプレクサ415Bは、レジスタ410Bの内容をシストリックアレイ110に押し出す。第5の時間ステップによって、レジスタ410Bは、合計b8+b7+b6+b5を含むことができる。レジスタ410Bがクリアされ、制御信号が次のマルチプレクサであるマルチプレクサ415Cに押し下げられる。
【0082】
第6の時間ステップにおいて、マルチプレクサ415Cは、レジスタ410Cの内容をシストリックアレイ110に押し出す。第6の時間ステップによって、レジスタ410Cは、合計b12+b11+b10+b9を含むことができる。レジスタ410Cがクリアされ、制御信号が次のマルチプレクサであるマルチプレクサ415Dに押し下げられる。
【0083】
第7の時間ステップにおいて、マルチプレクサ415Dは、レジスタ410Dの内容をシストリックアレイ110に押し出す。第7の時間ステップによって、レジスタ410Dは、合計b16+b15+b14+b13を含むことができる。レジスタ410Dはクリアされる。後続の時間ステップにおいて、水平制御回路115は、その行のそれぞれで、行列Bからの入力の新しいグループのための新しいそれぞれのチェックサムを生成することができる。
【0084】
いくつかの例では、垂直チェックサム回路120は、行列Aからの入力または生成されたチェックサムがシストリックアレイ110に渡されるかどうかを管理するマルチプレクサで構成される。例えば、垂直チェックサム回路120は、シストリックアレイ110に収まり得るものよりもはるかに長い入力行列を受信し得、その内容は代わりにシストリックアレイ110にストリーミングされる。これらの例では、チェックサム処理要素130は使用されないか、または代わりに水平チェックサム回路115によって使用され得る。例えば、チェックサム処理要素130は、シストリックアレイ110にストリーミングされないが、代わりに処理要素110A~Pに直接ロードされる入力行列を受信するときに、水平チェックサム回路115によって使用され得る。これらの例では、チェックサム処理要素130は、シストリックアレイ110への追加の行として配置することができる。他の例では、水平および垂直チェックサム回路115、120の両方が、ストリーミング入力を処理するために、本明細書に記載されるようにマルチプレクサで構成することができる。いくつかの実装形態では、チェックサム回路115、120、およびチェックサム処理要素130の特定の方向および位置は、シストリックアレイ110が入力を受信するように構成される方向に基づいて変化し得る。
【0085】
前の例では、各行の要素を合計することによって入力行列Bの行のチェックサムを生成することを説明したが、垂直チェックサム回路120は、チェックサムを生成するための任意の線形演算を実行、例えば、定数値または係数を加算して乗算するか、チェックサム行に所定のベクトルを乗算するように構成できることが理解される。水平チェックサム回路115に対する追加の考慮事項は、シストリックアレイ110の有効な入力であるチェックサムを生成することである。浮動小数点などの一部のデータタイプは、入力行列の個々の要素の非常に大きな合計を表すのに十分な精度を備え得るが、例えばシストリックアレイ110は、例えば、行列乗算の低精度整数値、例えば8ビットの量子化値を有する行列用に構成され得る。水平チェックサム回路115によって計算されたチェックサムは、シストリックアレイ110への入力よりも精度を必要とし得る。
【0086】
シストリックアレイのハードウェアまたは構成を変更せずにこの潜在的な問題に対処するために、いくつかの例では、水平チェックサム回路115は、何らかの値、例えばシストリックアレイ110によってサポートされる最大値を法とするチェックサムを生成するように構成することができる。他の例では、ガロア体演算を適用して、チェックサムを表すのに必要な精度を、シストリックアレイ110で乗算される行列の要素を表す精度と同じにすることができる。これらの例では、水平チェックサム回路115は、ガロア体演算を実行するように構成された追加の回路で構成することができる。
【0087】
水平および垂直チェックサム回路による動作例は、連続する時間ステップにわたって実行されるものとして説明されているが、水平チェックサム回路および垂直チェックサム回路の動作を、シストリックアレイ110の処理要素によって実行される動作と同期させるために、必要に応じて、いくつかの遅延またはアイドル時間ステップが挿入され得ることが理解される。
【0088】
図5は、出力チェックサム回路140Cのブロック図である。出力チェックサム回路140Cは、出力行列Cのデータサブ行列140Dの行および列からチェックサムを生成するように構成される。図2を参照して説明したように、出力行列Cは、チェックサム行202、チェックサム列204、およびデータサブ行列140Dを含む。後者は、水平および垂直チェックサム回路によって生成されたチェックサム行とチェックサム列を除いた行列AとBの積に対応する。データサブ行列140Dは、出力要素d1、d2、d3、d4、d5、d6、d7、d8、d9、d10、d11、d12、d13、d14、d15、およびd16を有する。チェックサム行202は、チェックサムc1、c2、c3、c4、およびc5を有する。チェックサム列204は、チェックサムc5、c6、c7、c8、およびc9を有する。
【0089】
いくつかの例における出力チェックサム回路140Cは、水平および垂直チェックサム回路115、120の組み合わせであり得る。レジスタ500A~Dおよび加算回路502A~Cは、水平チェックサム回路115の加算回路およびレジスタと同様に構成することができる。
【0090】
入力行列AおよびBは、それぞれの要素がシストリックアレイ110に押し出される前にずれるため、出力行列Cの入力要素も、シストリックアレイ110から押し出されるときにずれる。出力チェックサム回路140Cは、出力行列Cの各行に対してチェックサムを生成し、それをチェックサム列204の対応するチェックサムと比較する。例えば、出力d13、d14、d15、およびd16は、図3および入力行列140ATの行入力を参照して本明細書で説明されるように、レジスタ500A~D、および加算回路502A~Dを通過する。500Dが入力、すなわち、出力d13、d14、d15、およびd16から生成されたチェックサムを受信すると、比較回路505は、レジスタ500D内のチェックサムを、チェックサム列204から押し出された第1のチェックサム、すなわち、チェックサムc9と比較する。
【0091】
チェックサムc9がレジスタ500Dの内容と一致する場合、エラーチェックは成功する。チェックサムc9がレジスタ500Dの内容と一致しない場合、出力チェックサム回路125はエラーを発生させる。エラーの発生に応答して、計算ユニット100は、図2を参照して本明細書で説明するように、さまざまなアクションのうちの1つまたは複数を実行することができる。出力チェックサム回路125は、チェックサム列204に対応するチェックサムを用いて、データサブ行列140Dの各行チェックサムを計算し続けることができる。例えば、比較回路505は、合計d9+d10+d11+d12をチェックサムc8、合計d5+d6+d7+d8をチェックサムc7、合計d1+d2+d3+d4をチェックサムc6、合計c1+c2+c3+c4をチェックサムc5と比較する。
【0092】
出力チェックサム回路125の一部として実装された比較回路は、チェックサムを直接比較するか、または比較されたチェックサム間の差の絶対値を計算することができる。次に、比較回路は、チェックサム間の差の絶対値が所定の閾値内にあるかどうかを決定できる。いくつかの例では、閾値は、例えば、エラーに対するより高いまたはより低い許容を有する使用例に基づいて、プログラム的に定義することができる。他の例では、閾値は、計算ユニット100の設計時に指定することができる。一部の用途、例えば、一部の機械学習モデルの実行では、絶対精度は不要であり、計算された浮動小数点値である程度のエラーを許容できる。例えば、所定の閾値内で許容される。
【0093】
出力チェックサム回路125がデータサブ行列140Dの各行のチェックサムを生成するが、出力チェックサム回路125はまた、出力行列Cの列ごとにチェックサムを生成し、生成された各チェックサムをチェックサム行202内のそれぞれのチェックサムと比較することもできる。出力チェックサム回路125は、加算回路504A~E、デマルチプレクサ503A~E、レジスタ507A~E、レジスタ510A~E、および比較回路515A~Eを含むことができる。出力チェックサム回路125は、デマルチプレクサを含むものとして示されているが、デマルチプレクサ503A~Eは、例えば、出力チェックサム回路125の特定の部分を無効にするかまたは有効にするための制御信号、または例えば制御信号に基づいて、複数の出力のうちの1つに入力を送信するように構成されたスイッチなど、さまざまな異なる意思決定回路のいずれかで置き換えることができることが理解される。
【0094】
例えば、第1の時間ステップにおいて、出力d13は、(本明細書に記載されるように、出力行列Cの第1の行チェックサムを計算するために)レジスタ500Aおよびデマルチプレクサ503Aに渡される。デマルチプレクサ503A~Eは、チェックサム行202のチェックサムをそれぞれのレジスタ510A~Eに送信しながら、出力行列Cの列の残りの部分をそれぞれの加算回路504A~Eおよびレジスタ507A~Eに送信するように構成される。
【0095】
第2の時間ステップでは、d13が加算回路504Aに押し出され、加算回路504Aは、出力d13をレジスタ507Aの内容に加算する。これは、最初はゼロである。また、第2の時間ステップ中に、出力d14は加算回路502Aおよびデマルチプレクサ503Bにも押し出される。出力チェックサム回路125は、チェックサム行202のチェックサムに到達するまで、出力行列Cの出力要素を受信し処理し続けることができる。同時に、出力チェックサム回路125は制御信号を受信することができ、例えば、水平チェックサム回路115に使用される制御信号であり、制御信号の存在に基づいて、チェックサム行202のチェックサム値を対応するレジスタ510A~Eに押し出す。
【0096】
レジスタ510Aの両方の内容に対応するチェックサム、例えばレジスタ510Aのチェックサムc1、レジスタ510Bのチェックサムc2、レジスタ510Cのチェックサムc3、レジスタ510Dのチェックサムc4、レジスタ510Eのチェックサムc5がロードされているとき、次に、各比較回路は、記憶されたチェックサムを、生成されレジスタ507A~Eに記憶されたチェックサムと比較する。例えば、比較回路515Aは、合計d1+d5+d9+d13をチェックサムc1と比較する。比較回路515Bは、合計d2+d6+d10+d14をチェックサムc2と比較する。比較回路515Cは、合計d3+d7+d11+d15をチェックサムc3と比較する。比較回路515Dは、合計d4+d8+d12+d16をチェックサムc4と比較する。比較回路515Eは、合計c6+c7+c8+c9をチェックサムc5と比較する。
【0097】
いくつかの例では、出力チェックサム回路125は、検出された異なるエラーの数および重大度に対応する1つまたは複数の測定値またはインジケータを生成するように構成することができる。例えば、出力チェックサム回路125は、比較されたチェックサム間の差の絶対値を計算することができ、これは、立てられたフラグに加えて、結合された外部プロセッサに送信することができる。比較されたチェックサム間の差の絶対値は、出力チェックサム回路125によって検出されたエラーの重大度の尺度であり得る。例えば、値が大きいほど、値が小さい場合よりも重大なエラーを示すことができる。
【0098】
比較回路505によって行われる比較と同様に、比較回路515A~Eのいずれかが何らかの不一致(または所定の閾値を超える不一致)を識別した場合、その後、出力チェックサム回路125は、入力行列AおよびBの行列乗算中にエラーが発生したことを示すフラグを立てることができる。
【0099】
図6は、垂直チェックサム回路620および出力チェックサム回路625を有するが、水平チェックサム回路はない例示的な計算ユニット600である。図6にも示されているのは、入力行列640A、640B、チェックサム列602を備えた出力行列640C、およびチェックサム処理要素630である。出力チェックサム回路625は、出力行列Cの各行チェックサムを生成し、垂直チェックサム回路によって生成されたチェックサムと比較するように構成することができる。
【0100】
水平チェックサム回路を省略しても、依然としてエラー検出が可能であり、複雑さおよび計算ユニット600への入力がさらに軽減され、水平チェックサム回路115を参照して本明細書で説明したように、少なくとも、例えば、計算ユニット600によって実行可能なプログラムを通じて、制御信号のタイミングを管理する必要がないためである。場合によっては、エラーが発生した場所を具体的に示さずにエラーを検出し、これは、チェックサム行とチェックサム列の両方を比較することによって得られ、実行される修正措置がエラーの正確な位置を必要としない場合には、依然として価値があり得る。例えば、デフォルトの修正措置が前の行列乗算を繰り返すか、計算ユニットをコールドリスタートすることである場合、エラーの正確な位置は必要ない。
【0101】
さらに、水平チェックサム回路を省略することにより、チェックサムを生成するためのロジックをシストリックアレイから完全に分離することができる。図4に戻って参照すると、水平チェックサム回路115によって生成されたチェックサムはシストリックアレイ110に押し出された。したがって、シストリックアレイ110が、例えば、ある精度レベルまでの入力のみを受信するように構成される場合には、シストリックアレイ110の入力仕様に従う必要がある。計算ユニット600は、図4のように水平チェックサム回路を省略しているため、残りのチェックサムは、シストリックアレイ610から分離することができるチェックサム処理要素630に記憶される。いくつかの例では、垂直チェックサム回路620によって生成されたチェックサムは、異なる精度の測定値を有することができ、および/または入力行列の要素とは全く別のタイプであり得る。
【0102】
水平チェックサム回路の省略は、実装することができるチェックサム生成のための異なるタイプの線形演算間のより柔軟な性質を可能にすることができる。例えば、浮動小数点のチェックサムは8ビット整数要素に使用できる。16ビット整数は8ビット整数要素に使用できる。ガロア体演算またはモジュロ加算または乗算演算は、一般的にチェックサム計算に使用できる。
【0103】
いくつかの実装形態では、垂直チェックサム回路620は、入力行列Aの行の入力要素からチェックサムを生成するための異なる線形演算に基づいて、複数のチェックサム列を生成するように拡張することができる。有限体上に定義されたすべての線形コードについて、同様のエラー検出および修正機能を備えた対応する線形実数コードが存在する場合、ガロア体演算を使用してチェックサムを生成する場合、N個のチェック記号リードソロモンコードなどの追加のエラー検出プロセスを適用できる。それ以外の場合は、対応する実数コードを使用できる。
【0104】
いくつかの例では、入力行列Aがストリーミングされ、入力行列Bがラッチされるかシストリックアレイにプリロードされる場合、シストリックアレイの計算ユニットは、代わりに、適切に構成された水平チェックサム回路、すなわち、チェックサム処理要素に結合され、図3を参照して本明細書で説明されるようにチェックサム列を生成するように構成された、すなわち、列チェックサムを計算し、水平チェックサム回路によって生成されたチェックサムと比較するように構成される適切に構成された水平チェックサム回路を実装することができる。換言すれば、計算ユニットの異なる実装は、本明細書で説明される全体的なエラー検出機能に影響を与えることなく、シストリックアレイが入力を受信する方法と比較して、チェックサム回路の異なる方向および位置を有することができる。
【0105】
本明細書に記載の計算ユニットは、水平チェックサム回路および垂直チェックサム回路のいずれもなし、一方、または両方を使用して動作するように構成することができる。計算ユニットは、例えば、エラー検出がプログラム的に無効にされているため、水平チェックサム回路も垂直チェックサム回路も使用できない。同じ計算ユニットも、例えば図6を参照して本明細書で説明するように、水平および垂直チェックサム回路の一方のみを使用して動作してエラー検出を実行するように構成することができる。同じ計算ユニットはまた、例えば、図1-5を参照して本明細書で説明されるように、水平および垂直チェックサム回路の両方を使用して動作してエラー検出を実行するように構成することができる。
【0106】
図7は、出力固定シストリックアレイ710を有する例示的な計算ユニット700である。出力固定シストリックアレイでは、各処理要素は、出力行列C740Cのそれぞれの出力要素を保持し、入力行列A、B、740A、Bは、シストリックアレイ710にストリーミングすることができる。行列AおよびBのすべての入力要素が処理されると、出力行列Cは、出力チェックサム回路725を介して押し出される。計算ユニット700はまた、垂直チェックサム回路720および水平チェックサム回路715を含む。両方のチェックサム回路715、720は、チェックサム処理要素の行730A、およびチェックサム処理要素の列730Bを含むチェックサム処理要素730に結合されている。
【0107】
垂直チェックサム回路720は、垂直チェックサム回路120と同様に構成され、入力行列A740A(入力行列Aおよび行列Aを参照して本明細書で説明されているように、これは元の入力行列の転置バージョンであり得る)の行からチェックサムを生成するように構成される。チェックサム処理要素の列730Bは、チェックサム処理要素130に対応することができ、チェックサム処理要素は、出力チェックサム回路725によって後で比較するために使用される生成されたチェックサムを受信および記憶するように構成される。
【0108】
水平チェックサム回路715はまた、垂直チェックサム回路120と同様に実装することができるが、チェックサム処理要素の対応する行730Aを用いて実装することができる。水平チェックサム回路715および行730Aの両方が、処理要素の対応する回路720および列730Bに対して90度回転している。しかし、水平チェックサム回路715は、入力行列B740Bの対応する列(または入力行列B740Bが転置されている場合は対応する行)のチェックサムを生成するように構成することもできる。
【0109】
出力チェックサム回路725は、出力チェックサム回路125および図5を参照して前述したように、チェックサムを生成および比較するように構成することができる。水平および垂直チェックサム回路のこの例示的な配置では、チェックサム行702が、出力行列740Cのデータサブ行列740Dの値の前に、最初に押し出される。出力チェックサム回路725は、出力行列740Cのそれぞれの列の各第1の出力要素を比較回路の対応するレジスタに押し出し、続いてそれぞれの加算回路に結合されたそれぞれのレジスタに残りの列出力要素を累算するように構成することができる。
【0110】
いくつかの例では、出力行列C740Cの受信したチェックサムと比較するために別個の部分合計を加算する代わりに、出力チェックサム回路725は、チェックサム行からチェックサムを受信し、そのチェックサムから、チェックサムを超える出力行列C740Cの各出力要素を減算するように構成することができる。すべての出力要素を減算した後、結果が所定の閾値内でゼロではない、またはゼロに近くない場合、出力チェックサム725は、エラーが検出された表示を送信することができる。チェックサム処理要素の行704のチェックサムの比較によるエラー検出の結果に応じて(例えば、対応する行の出力要素から減算することによって、またはここで説明するように、各チェックサムを対応する累積チェックサムと比較することによって)、出力チェックサム回路740はまた、エラーが発生した場所、例えば、列および行と誤ったチェックサムとの交点で特定することができる。
【0111】
図7を参照して説明した構成では、計算ユニット700は、例えば、入力の受信および行列乗算の実行において、チェックサム回路715、720、および725によって実装されるエラーチェックロジックを用いて、シストリックアレイのデータパスを完全に分離する。これにより、例えば、データタイプと精度の一致を気にすることなく、行列乗算のためのABFTのさまざまな異なる線形演算を増やすことができる(例えば、図6の計算ユニット600の水平チェックサム回路を省略することを参照して説明したように)。
【0112】
これは、図5を参照して説明した出力チェックサム回路125の動作の逆である。ここで、制御信号は、出力チェックサム回路125が出力行列140Cのチェックサムをいつ受信しているかを示すために使用された。いくつかの例における出力チェックサム回路725はまた、例えば、大きな入力行列740A、Bがシストリックアレイ710にストリーミングされるときに、制御信号を使用することもできる。これらの例では、制御信号は、終了ではなく、チェックサムの生成および比較のために、出力要素の各グループの最初に出力チェックサム回路125に送信することができる。
【0113】
シストリックアレイは、異なる電圧レベルに従って動作することができる。臨界供給電圧は、シストリックアレイの正しい動作に十分な電圧を示す値である。例えば、回路の性能に影響を与える可能性のあるさまざまな環境またはプロセス関連の変動に直面する。臨界供給電圧よりも低いレベルでシストリックアレイに供給される電圧は、例えば、シストリックアレイを動作するために必要なエネルギーが少ないため、エネルギー効率が高くなる可能性があるが、エラー、例えば、前述の変動に直面して、タイミングエラーのリスクがある。タイミングエラーは、修正または対処しないとすぐにさらに深刻なエラーに連鎖する可能性があり、特に処理要素間での入出力の適切なタイミングが重要であるシストリックアレイを使用する計算ユニットでは顕著である。本明細書に記載の計算ユニットを実装するデータ処理システムは、計算ユニットに低減された電圧を供給し、計算ユニットからのエラー検出フラグの受信に応答して必要に応じて電圧を上昇させることができる。シストリックアレイを使用した計算ユニットの通常の動作と比較してエラーが比較的まれであるため、特に複数の計算ユニットが並列実行される場合には、通常、臨界供給電圧レベルを下回る供給電圧でシストリックアレイを実行することにより、時折発生するエラーと修正措置を上回ることができる。
【0114】
計算ユニットは、図1~6を参照して本明細書で説明されるのと同じメカニズムに従って、低電圧に関連するエラーを検出することができる。他のアプローチでは、複数の異なるラッチ、シャドウラッチ、またはフリップ/フロップ回路で追加のロジックが必要であるが、水平、垂直、および出力チェックサム回路はシストリックアレイから独立し、アレイに対する行列乗算やその他の演算の実行を遅らせる必要はない。さらに、出力チェックサム回路の比較回路が生成および受信チェックサムを比較するために使用する所定の閾値は、シストリックアレイに供給される電圧の低下によって引き起こされるより小さなエラーを許容するように調整することができる。
【0115】
制御ロジックは、例えば、計算ユニットを実装するデータ処理システムによって実装され、また、計算ユニットのエネルギー効率をさらに向上させるために、観測されたエラー発生率に応じて、供給される電圧や周波数、例えばデータ処理システムが動作するクロック周波数を調整することもできる。
【0116】
タイミングエラーは、シストリックアレイの処理だけでなく、水平チェックサム回路、垂直チェックサム回路、および/または出力チェックサム回路によって提供されるエラー検出ロジックの実行においても起こり得る。これらの回路のタイミングエラーは、さまざまなアプローチで対処できる。いくつかの例では、より高い電圧を、水平チェックサム回路、垂直チェックサム回路、および出力チェックサム回路のうちの1つまたは複数に供給することができる。他の例では、特殊なトランジスタまたは他の構成要素を垂直、水平、および/または出力チェックサム回路に実装して、本明細書で説明するエラーチェック動作、例えばチェックサムの生成およびチェックサムの比較の実行速度を向上させることができる。
【0117】
さらに他の例では、図8A~Cを参照して本明細書に記載されるように、水平チェックサム回路は、時間ステップごとに異なる動作が実行されるので、タイミングのより広いマージンを可能にするように修正することができる。マージンの増加は、エラー検出ロジック自体で発生するタイミングエラーの可能性を軽減できるため、より低い供給電圧で計算ユニットを動作することにより、不正確なエラー検出または検出されないエラーの欠落の可能性を低減できる。
【0118】
図8Aは、例示的な垂直チェックサム回路800Aである。垂直チェックサム回路800Aは、長さ8の入力行列の行からチェックサムを生成するように構成される。垂直チェックサム回路800Aは、入力a0~a7を受信することができ、レジスタ805A~Hおよび加算回路804A~Hを含む。レジスタ805Hに記憶された生成されたチェックサムは、チェックサム処理要素830に押し出すことができる。入力a0~a7は、シストリックアレイの処理要素803A~Hにも押し出される。
【0119】
図8Bは、2入力2段パイプライン加算回路を有する例示的な垂直チェックサム回路800Bである。回路800Bは、回路800Aの変形版であり、加算回路804A~Hを2入力2段パイプライン加算回路820A、B、およびC(「加算回路820」)に置き換えたものである。回路800Bは、チェックサムの生成を遅らせるように構成することができる。加算回路820A、B、Cは、2つの時間ステップ、例えば2クロックサイクルのレイテンシを有し、クロックサイクルごとに1つの合計または加算演算のスループットが実行される。各加算回路820は、中間加算回路AおよびBを含む2対1加算回路と、中間合計を記憶するための2つの中間加算回路間のレジスタとを含むことができる。
【0120】
垂直チェックサム回路800Bは、入力要素a0~a7の処理を2つのパイプラインステージ806Aおよび806Bに分割する。奇数番号の入力要素(例えば、a1、a3、a5、およびa7)は、ステージ806Aの加算回路820Aを横切って累算され、一方、偶数番号の入力要素(例えば、a0、a2、a4、およびa6)は、ステージ806Bの加算回路820Bを横切って累算される。ステージ806A、Bを介して生成された部分合計は、加算回路806Cで一緒に加算され、結果はチェックサム処理要素830に渡される。
【0121】
加算回路820によって提供される追加のレイテンシは、垂直チェックサム回路800Bが臨界電圧レベル未満で動作している場合でも、垂直チェックサム回路800Bが正しく動作するためのタイミングマージンを増加させ、より低いレベルの供給電圧で動作することによって引き起こされるタイミングエラーの結果として生じる可能性または誤計算を低減する。垂直チェックサム回路800Aと比較すると、垂直チェックサム回路800Bは、チェックサムを生成するために3つの追加のクロックサイクルを必要とするが、垂直チェックサム回路800Bにおける追加のレイテンシは、垂直チェックサム回路800Bに接続されたシストリックアレイへの入力要素a0~a7のスループットに影響を及ぼさず、処理レイテンシに影響を与えない。例えば、シストリックアレイが入力行列を処理するためのクロックサイクル数が増加しない。
【0122】
垂直チェックサム回路800Bの他の例では、垂直チェックサム回路800Bは、異なる数のステージ、および/または異なる数の加算回路もしくは異なる数のクロックサイクルにわたって指定された線形演算に従ってチェックサムを生成するように構成された他の処理回路を含むことができる。
【0123】
図8Cは、2サイクルの非パイプライン加算回路850を有する別の例示的な垂直チェックサム回路800Cの回路図である。垂直チェックサム回路800Cは、多数の2サイクル加算回路850、ならびにフリップ/フロップ回路860、865、および870を含む。2サイクル加算回路は、2つの入力を受信し、2クロックサイクルにわたってこれら2つの入力の合計を生成するように構成される。凡例880によって示されるように、フリップ/フロップ回路860は、垂直チェックサム回路800Cの回路図において、色付きで実線であり、フリップ/フロップ回路865は垂直のサッチマークを有し、フリップ/フロップ回路870は対角のサッチマークを有する。いくつかの例では、データを記憶するように構成された他のタイプの回路を、フリップ/フロップ回路860、865、870の代わりに使用することができることが理解される。フリップ/フロップ回路860、865、および870は、異なるクロック周波数で動作する。
【0124】
フリップ/フロップ回路860は、クロック周波数φで動作する。クロック周波数は、図10および図11を参照して本明細書で説明するように、垂直チェックサム回路800Cを実装する計算ユニットに接続されたタイミング回路によって設定することができる。フリップ/フロップ回路865および870は、異なるそれぞれのクロック周波数φおよびφで動作することができる。クロック周波数φとφは、チャート890で示されるように、異なる位相を有することができる。垂直チェックサム回路800Cも、回路800Aと比べてタイミングマージンが増加し、垂直チェックサム回路800Bを参照して本明細書で説明されるように、垂直チェックサム回路800Cを実装する計算ユニットのエラーチェック機能に影響を与えるタイミングエラーの可能性を軽減する。
【0125】
垂直チェックサム回路800Cの他の例では、垂直チェックサム回路800Bは、異なる周波数で動作する異なるフリップ/フロップ回路、および/または加算回路または異なる数のクロックサイクルにわたって指定された線形演算に従ってチェックサムを生成するように構成された異なる数の他の処理回路を含むことができる。
【0126】
図9Aは、本開示の態様による、計算ユニット上でエラー検出を伴う行列乗算を実行するための例示的なプロセスのフローチャートである。
【0127】
ブロック905Aによれば、計算ユニットのシストリックアレイは、シストリックアレイの第1の方向に沿って第1の入力行列から第1の入力要素を受信する。例えば、第1の入力要素は、例えば、図3を参照して本明細書に記載されるように、シストリックアレイの頂部周辺から受信される入力行列Aの入力要素であり得る。シストリックアレイは、本開示の態様と一致して実装された対応するチェックサム回路を用いて、任意の方向から入力を受信するように構成できることが理解される。
【0128】
シストリックアレイは、ブロック910Aに従って、シストリックアレイの第2の方向に沿って第2の入力行列から第2の入力要素を受信する。第2の方向は、水平方向、例えば左から右にすることができ、一方、第1の方向は、シストリックアレイの固定方向に対する垂直方向、例えば上から下にすることができる。第2の入力要素は、例えば、図4を参照して本明細書で説明されるように、入力行列Bからの入力要素であり得る。
【0129】
ブロック915Aによれば、計算ユニットの第1のチェックサム回路は、シストリックアレイが第1の入力要素を受信する間に、第1の入力要素から第1のチェックサムの1つまたは複数のグループを生成する。第1のチェックサム回路は、垂直チェックサム回路、例えば図の垂直チェックサム回路120であり得る。第1のチェックサムの1つまたは複数のグループは、生成され、後でチェックサム処理要素、例えば、図のチェックサム処理要素130に記憶されるチェックサムの列であり得る。いくつかの例では、チェックサムの1つまたは複数のグループは、異なる線形演算に従って生成されたチェックサムの複数の列または行を参照することができる。いくつかの例では、計算ユニットは、第1および第2のチェックサム回路の一方または両方からチェックサムを受信するように構成された1つまたは複数のチェックサム処理要素を含む。
【0130】
ブロック920Aによれば、計算ユニットの第2のチェックサム回路は、シストリックアレイが第2の入力要素を受信する間に、第2の入力要素から第2のチェックサムの1つまたは複数のグループを生成する。第2のチェックサム回路は、水平チェックサム回路、例えば、図1の水平チェックサム回路115であり得る。第2のチェックサム回路は、例えば、水平チェックサム回路115および図4を参照して本明細書で説明されるように、チェックサムを生成することができる。いくつかの例では、第2のチェックサム回路への入力行列がシストリックアレイにストリーミングされる場合、第2のチェックサム回路は、回路を横切って制御信号を押し出して、チェックサムをシストリックアレイに押し出しできるタイミングを示し、新しいチェックサムを生成できる。第1および第2のチェックサム回路の一方または両方への制御信号のタイミングは、シストリックアレイにわたって第1または第2の入力値をロードするための時間ステップの数に基づくことができる。時間ステップは、1つまたは複数のクロックサイクルにすることができる。
【0131】
いくつかの例では、シストリックアレイは出力固定シストリックアレイであり、第1および第2のチェックサム回路は両方とも複数のチェックサム処理要素に接続され、チェックサム処理要素は第1および第2のチェックサム回路の一方または両方から生成されたチェックサムを受信するように構成される。複数のチェックサム処理要素は、例えば、図7を参照して本明細書で説明するように、シストリックアレイの周囲に配置することができる。
【0132】
シストリックアレイは、ブロック925Aに従って、第1の入力行列、第2の入力行列、第1のチェックサムの1つまたは複数のグループ、および第2のチェックサムの1つまたは複数のグループから出力行列を生成する。出力行列は、例えば、図2を参照して本明細書で説明されるように、出力行列Cであり得る。
【0133】
ブロック930Aによれば、出力チェックサム回路は、出力行列を受信する。図5を参照して本明細書で説明されるように、出力チェックサム回路は、出力行列がシストリックアレイから押し出されるときに出力行列を受信することができる。いくつかの例では、計算ユニットは、第1のチェックサムユニットからのみチェックサムを生成するか、または第2のチェックサムユニットからのみチェックサムを生成する。
【0134】
出力チェックサム回路は、ダイヤモンド935Aに従って、出力行列の計算においてエラーが検出されたかどうかを決定する。エラーが検出された場合(「YES」)、出力チェックサム回路は、ブロック940Aに従って、エラーの発生(または該当する場合はエラー以上)の表示を送信する。それ以外の場合(「NO」)、プロセス900Aは、エラー検出を処理および実行するための新しい入力要素を続行できる。
【0135】
エラー検出の表示に対する応答を受信するまで、シストリックアレイは、臨界電圧よりも低い第1の電圧を受信することができ、これは、図8A~Cおよび前述の説明を参照して本明細書に記載されるように事前に決定することができる。表示の送信または1つまたは複数のエラーの識別に応答して、シストリックアレイは、臨界電圧よりも高い第2の電圧を受信し始めることができる。シストリックアレイは、第2の電圧を自動的に受信することも、第2の電圧を別のデバイスによってシストリックアレイに印加することもできる。いくつかの例では、シストリックアレイは、例えば、エラーを検出せずに一定期間が経過した後、自動的に第1の電圧の受信に戻る。
【0136】
第1、第2、および出力チェックサム回路のうちの1つまたは複数は、シストリックアレイの臨界電圧よりも低い電圧を受信し続けることができる。第1、第2、および出力チェックサム回路は、本開示の態様に従って実装して、回路の動作のタイミングマージンを増加させ、電圧の低下に起因するタイミングエラーを軽減することができる。例えば、第1および第2のチェックサム回路の一方または両方は、図800Bを参照して本明細書で説明されるように、2入力2段パイプライン加算回路を含むことができる。別の例として、第1および第2のチェックサム回路の一方または両方は、1つまたは複数の2サイクル加算回路、およびそれぞれが異なるクロック周波数で動作する1つまたは複数のフリップ/フロップ回路を含み得る複数のレジスタを含むことができる。例えば、いくつかのレジスタは第1の周波数で動作し、いくつかは第2の周波数で動作し、そして他のレジスタは第3の周波数で動作し得る。第2と第3の周波数は、異なる位相で、第1の周波数の半分にすることができる。
【0137】
図9Bは、本開示の態様による、計算ユニットの処理中のエラーの発生を検出するための例示的なプロセス900Bのフローチャートである。例えば、図9Aのダイヤモンド935Aによれば、エラーが検出されたかどうかの決定の一部として、プロセス900Bを実行することができる。
【0138】
出力チェックサム回路は、ブロック910Bに従って、データサブ行列の少なくとも1つの行から、列チェックサムを生成する。データサブ行列は、対応するチェックサム、例えば、図2を参照して説明したように、データサブ行列140Dなしで、両方の入力行列を処理することによる出力であり得る。例えば、出力チェックサム回路は、出力行列の受信行に出力要素を累算し、チェックサムをレジスタ、例えば、本明細書に記載され、図5に示されるレジスタ500Dに記憶することができる。また、ブロック910Bによれば、出力チェックサム回路は、データサブ行列の少なくとも1つの列から、列チェックサムを生成する。列チェックサムは、行チェックサムとは独立して生成でき、出力行列の各列に対して並列に生成できる。例えば、出力チェックサム回路は、列チェックサムを生成し、それらを、図5を参照して説明および示されるように、レジスタ510A~Eなどの回路のそれぞれのレジスタに記憶することができる。いくつかの例では、列と行の両方のチェックサムが出力チェックサム回路によって生成される。他の例では、列チェックサムと行チェックサムのみが生成される。
【0139】
出力チェックサム回路は、ブロック920Bに従って、行チェックサムを、出力行列の出力チェックサム列のチェックサムと比較する。出力チェックサム列は、例えば、チェックサム列204に対応することができる。出力チェックサム回路による比較は、1つまたは複数の比較回路、例えば、図5を参照して説明および示されるように、比較回路505によって実行することができる。また、ブロック920Bによれば、出力チェックサム回路は、列チェックサムを、出力行列の出力チェックサム行のチェックサムと比較する。出力チェックサム行は、例えば、図2に示すように、出力行列Cのチェックサム行202とすることができる。1つまたは複数の出力チェックサム行は、例えば、図5に記載され示されるように比較回路515A~Eを使用して、出力チェックサム回路によって並列にチェックすることができる。
【0140】
行/列チェックサムと出力チェックサム列/行のチェックサムとの間の比較は、例として、並列または順番に行うことができる。いくつかの例では、行チェックサムを使用した比較のみが、出力チェックサム列のチェックサムで実行され、列チェックサムと出力チェックサム行ではその逆も同様である。
【0141】
出力チェックサム回路は、ブロック930Bに従って、行チェックサムと出力チェックサム列のチェックサムとの比較から、出力行列の生成におけるエラーの発生を決定する。出力チェックサム回路は、例えば、比較されたチェックサムが一致するかどうか、またはそれらが所定の閾値内で一致するかどうかを決定することができる。そうでない場合、出力チェックサム回路は、例えば、ブロック940Aおよび図9Aを参照して本明細書で説明されるように、エラーが発生した表示を送信することができる。また、ブロック930Bによれば、出力チェックサム回路は、列チェックサムと出力チェックサム行のチェックサムとの比較から、出力行列の生成におけるエラーの発生を決定する。
【0142】
行/列チェックサムと、出力チェックサム列/行における対応するチェックサムとの比較からの決定は、例として、同時に、並行して、または順番に発生することができる。いくつかの例では、出力チェックサム回路は、1つのエラーが検出された後、または閾値数のエラーが検出された後、表示を送信することができる。いくつかの例では、表示は、エラーの重大度の尺度、例えば、比較されたチェックサム間の絶対差を含むことができる。他の例では、表示は、エラーの発生源に関する情報、例えば、チェックサム行のチェックサムとチェックサム列のチェックサムについて検出されたエラーの交差を含むことができる。
【0143】
図10Aは、例示的な計算ユニット1000を実装するデータ処理システム1001のブロック図である。計算ユニット1000は、さまざまな異なる計算ユニット、例えば、図1~5を参照して本明細書で説明される計算ユニット100のいずれかであり得る。計算ユニット1000は、本明細書全体を通して説明されるように、水平、垂直、および出力チェックサム回路のさまざまな組み合わせのいずれかを実装することができる。
【0144】
データ処理システムは、ホストインターフェース1005、シーケンサ回路1010、1つまたは複数のプロセッサ1015、メモリ1020、およびタイミング回路1025を含むことができる。データ処理システム1001は、図11を参照して本明細書で説明されるように、1つまたは複数の物理的場所にわたる1つまたは複数のデバイスに実装することができる。いくつかの例では、説明されるデータ処理システム1001の構成要素は、さまざまなデータバスまたは他の物理的相互接続インターフェースのいずれかに従ってホストデバイスとインターフェースすることができる1つまたは複数のチップ上に実装することができる。いくつかの例では、データ処理システム1001は、ネットワーク上の1つまたは複数のデバイス、例えば、クラウドプラットフォームの1つまたは複数のサーバ上に実装することができる。
【0145】
プロセッサ1015およびメモリ1020は、図11を参照して本明細書に記載されるように、さまざまな異なるタイプのプロセッサおよびメモリのいずれかであり得る。いくつかの例では、プロセッサ1015は、データを処理するために計算ユニット1000によって実行可能な命令を受信する。例えば、命令は、計算ユニット1000を使用して動作を実行するために書き込まれたコンピュータプログラムの一部であり得る。
【0146】
シーケンサ回路1010は、受信した命令を、計算ユニット100によって理解される1つまたは複数の信号に変換することができ、これにより、計算ユニット1000は、さまざまな事前構成された動作のいずれかを実行する。これらの動作は、例えばメモリ1020から計算ユニット1000のシストリックアレイ(図示せず)へデータをロードすることと、シストリックアレイの1つまたは複数の処理要素へデータを移動することと、1つまたは複数の処理要素によってデータを処理することと、シストリックアレイからデータを押し出すことと、を含み得る。シーケンサ回路1010はまた、例えば、水平チェックサム回路115および図4を参照して本明細書で説明するように、チェックサムが計算ユニット1000に押し出されるときに制御するための1つまたは複数の制御信号を生成するように構成することができる。
【0147】
ホストインターフェース1005は、データ処理システムの外部から、例えばプロセッサまたは別のデバイスからデータを受信し、計算ユニット1000によって生成されたデータ、例えば行列乗算の積を1つまたは複数のデバイスまたはプロセッサに送信するように構成することができる。
【0148】
タイミング回路1025は、計算ユニットのタイミング、例えば、そのクロック周波数またはクロックレートを制御するように構成することができる。チェックサム回路の動作に関して本明細書で説明される時間ステップは、タイミング回路1025によって管理されるクロックサイクルの観点から測定することができる。
【0149】
データ処理システム1001はまた、電源1030に接続することができる。電源1030は、データ処理システムを実装するホストデバイス上で利用可能なバッテリまたは他の形態の電力であり得、あるいは、ホストデバイスの外部にあり、何らかの無線接続または物理接続、例えば有線を介してホストデバイスおよびデータ処理システム1001に接続されたソースであってもよい。電源1030は、プロセッサ1015によって、例えば、より高いまたはより低い調整によって管理され得る計算ユニット1000に電圧を供給することができる。
【0150】
図10Bは、本開示の態様による、計算ユニットへの供給電圧を調整するための例示的なプロセスのフローチャートである。
【0151】
ブロック1050によれば、計算ユニットを実装するデータ処理システムは、計算ユニットのシストリックアレイに電圧を印加することができる。供給される電圧は、シストリックアレイの臨界電圧よりも小さくすることができ、これは、計算ユニットの使用例動作、環境要因、および/またはシストリックアレイのアーキテクチャ上の特徴などに基づいて事前に決定することができる。
【0152】
ブロック1060によれば、データ処理システムは、計算ユニットから1つまたは複数のエラーの表示を受信し、それに応じて、印加電圧をシストリックアレイの臨界電圧よりも高くする。計算ユニットは、例えば、図9A~Bに記載されるようなプロセス900A~Bを実行する一環として、検出されたエラーの表示を送信することができる。データ処理システムは、シストリックアレイに供給される電圧を増加させて、タイミング違反の結果としてさらにエラーが発生するリスクを低減することができる。
【0153】
データ処理システムは、表示の受信に応答して、ブロック1070に従って、シストリックアレイの臨界電圧未満の電圧を、計算ユニットの第1のチェックサム回路、第2のチェックサム回路、および出力チェックサム回路のうちの1つまたは複数に印加し続けることができる。前述したように、水平、垂直、出力チェックサム回路は、タイミングエラーのリスクを軽減するために、回路によって実行される動作(例えば、チェックサムの生成、チェックサムの記憶、チェックサムの比較)のタイミングマージンを増やすためのさまざまなアプローチのうちの1つまたは複数に従って構成できる。
【0154】
いくつかの例では、データ処理システムは、ある期間または条件が満たされた後、例えば、計算ユニットからエラーの追加の表示を受信せずに一定期間が経過した後、シストリックアレイへの電圧を低減することができる。いくつかの例では、データ処理システムは、エラーの表示の受信に応じて、計算ユニットによって実行された動作を前のチェックポイントにロールバックしたり、計算に1つまたは複数の動作を再実行させたりするなど、さまざまなアクションを実行できる。
【0155】
図11は、計算ユニット1000を含むデータ処理システム1001を実装するための例示的な環境1100のブロック図である。システム1001は、サーバコンピューティングデバイス1105など、1つまたは複数の場所に1つまたは複数のプロセッサを有する1つまたは複数のデバイスに実装することができる。ユーザコンピューティングデバイス1112およびサーバコンピューティングデバイス1105は、ネットワーク1160を介して1つまたは複数の記憶デバイス1130に通信可能に結合することができる。記憶デバイス1130は、揮発性メモリと不揮発性メモリとの組み合わせであり得、コンピューティングデバイス1112、1105と同じまたは異なる物理的場所にあり得る。例えば、記憶デバイス1130は、ハードドライブ、ソリッドステートドライブ、テープドライブ、光学ストレージ、メモリカード、ROM、RAM、DVD、CD-ROM、書き込み可能、および読み取り専用メモリなどの情報を記憶できる任意のタイプの非一時的なコンピュータ可読媒体を含み得る。
【0156】
サーバコンピューティングデバイス1105は、1つまたは複数のプロセッサ1113およびメモリ1114を含むことができる。メモリ1114は、プロセッサ1113によって実行可能な命令1121を含む、プロセッサ1113によってアクセス可能な情報を記憶することができる。メモリ1114はまた、プロセッサ1113によって検索、操作、または記憶することができるデータ1123を含むことができる。メモリ1114は、揮発性および不揮発性メモリなどのプロセッサ1113によってアクセス可能な情報を記憶することができる一種の非一時的なコンピュータ可読媒体であり得る。プロセッサ1113は、1つまたは複数の中央処理装置(CPU)、グラフィック処理装置(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、および/またはテンソル処理ユニット(TPU)などの特定用途向け集積回路(ASIC)を含むことができる。
【0157】
命令1121は、プロセッサ1113によって実行されると、1つまたは複数のプロセッサに命令によって定義されたアクションを実行させる1つまたは複数の命令を含むことができる。命令1121は、プロセッサ1113による直接処理のためのオブジェクトコードフォーマット、または要求に応じて解釈されるかまたは事前にコンパイルされる解釈可能なスクリプトまたは独立したソースコードモジュールのコレクションを含む他のフォーマットで記憶することができる。命令1121は、本開示の態様と一致するシステム400を実装するための命令を含むことができる。システム400は、プロセッサ1113を使用して、および/またはサーバコンピューティングデバイス1105から遠隔に配置された他のプロセッサを使用して実行することができる。
【0158】
データ1123は、命令1121に従って、プロセッサ1113によって検索、記憶、または修正することができる。データ1123は、コンピュータレジスタ、リレーショナルまたは非リレーショナルデータベースに、複数の異なる場およびレコードを有するテーブルとして、またはJSON、YAML、プロト、またはXML文書として記憶することができる。データ1123はまた、バイナリ値、ASCIIまたはUnicodeなどのコンピュータ可読フォーマットでフォーマットすることができるが、これらに限定されない。さらに、データ1123は、数値、説明テキスト、独自のコード、ポインタ、他のネットワークロケーションを含む他のメモリに記憶されたデータへの参照、または関連するデータを計算するために関数によって使用される情報などの関連情報を識別するのに十分な情報を含むことができる。
【0159】
ユーザコンピューティングデバイス1112はまた、1つまたは複数のプロセッサ1116、メモリ1117、命令1118、およびデータ1119を用いて、サーバコンピューティングデバイス1105と同様に構成することができる。ユーザコンピューティングデバイス1112はまた、ユーザ出力1126、およびユーザ入力1124を含むことができる。ユーザ入力1124は、キーボード、マウス、機械式アクチュエータ、ソフトアクチュエータ、タッチスクリーン、マイクロフォン、およびセンサなどの、ユーザから入力を受信するための任意の適切なメカニズムまたは技術を含むことができる。
【0160】
サーバコンピューティングデバイス1105は、データをユーザコンピューティングデバイス1112に送信するように構成され得、ユーザコンピューティングデバイス1112は、ユーザ出力1126の一部として実装されたディスプレイ上に受信データの少なくとも一部を表示するように構成され得る。ユーザ出力1126はまた、ユーザコンピューティングデバイス1112とサーバコンピューティングデバイス1105との間のインターフェースを表示するために使用することができる。ユーザ出力1126は、代替的または追加的に、1つまたは複数のスピーカー、トランスデューサまたは他のオーディオ出力、触覚インターフェース、またはユーザコンピューティングデバイス1112のプラットフォームユーザに非視覚的および非聴覚的情報を提供する他の触覚フィードバックを含むことができる。
【0161】
図11は、プロセッサ1113、1116およびメモリ1114、1117がコンピューティングデバイス1105、1112内にあるものとして示すが、プロセッサ1113、1116およびメモリ1114、1117を含む、本明細書で説明される構成要素は、同じコンピューティングデバイス内ではなく、異なる物理的場所で動作できる複数のプロセッサおよびメモリを含むことができる。例えば、命令1121、1118およびデータ1123、1119のいくつかは、取り外し可能なSDカードに記憶することができ、他のものは、読み取り専用コンピュータチップ内に記憶することができる。命令およびデータの一部またはすべては、プロセッサ1113、1116から物理的に離れたが、プロセッサ1113、1116によってまだアクセス可能である場所に記憶することができる。同様に、プロセッサ1113、1116は、同時および/または順次動作を実行できるプロセッサのコレクションを含むことができる。コンピューティングデバイス1105、1112はそれぞれ、タイミング情報を提供する1つまたは複数の内部クロックを含むことができ、これは、コンピューティングデバイス1105、1112によって実行される動作およびプログラムの時間測定に使用することができる。
【0162】
サーバコンピューティングデバイス1105は、ユーザコンピューティングデバイス1112からデータを処理する要求を受信するように構成することができる。例えば、環境1100は、プラットフォームサービスを公開するさまざまなユーザインターフェースおよび/またはAPIを介して、ユーザにさまざまなサービスを提供するように構成されたコンピューティングプラットフォームの一部であり得る。1つまたは複数のサービスは、指定されたタスクおよびトレーニングデータに従ってニューラルネットワークまたは他の機械学習モデルを生成するための機械学習フレームワークまたはツールのセットであり得る。ユーザコンピューティングデバイス1112は、計算ユニット1000によって実行される動作を指定するデータを送受信することができる。
【0163】
デバイス1112、1105は、ネットワーク1160を介して直接および間接通信することができる。デバイス1105、1112は、情報を送受信するための開始接続を受け入れることができるリスニングソケットをセットアップすることができる。ネットワーク1160自体は、インターネット、ワールドワイドウェブ、イントラネット、仮想プライベートネットワーク、広域ネットワーク、ローカルネットワーク、および1つまたは複数の企業が所有する通信プロトコルを使用するプライベートネットワークを含むさまざまな構成およびプロトコルを含むことができる。ネットワーク1160は、さまざまな短距離および長距離接続をサポートすることができる。短距離および長距離接続は、2.402GHz~2.480GHz(通常はBluetooth(登録商標)標準に関連付けられている)、2.4GHzおよび11GHz(通常はWi-Fi(登録商標)通信プロトコルに関連付けられている)などのさまざまな帯域幅で行うことができる。または、無線ブロードバンド通信用のLTE(登録商標)標準などのさまざまな通信標準を使用する。ネットワーク1160は、追加的または代替的に、さまざまなタイプのイーサネット(登録商標)接続を含む、デバイス1112、1105間の有線接続もサポートすることができる。
【0164】
図11には、単一のサーバコンピューティングデバイス1105、ユーザコンピューティングデバイス1112、データ処理システム1001が示されているが、本開示の態様は、逐次または並列処理のパラダイム、または複数のデバイスの分散ネットワーク上を含む、コンピューティングデバイスのさまざまな異なる構成および数量に従って実装できることが理解される。いくつかの実装形態では、本開示の態様は、単一のデバイス、およびそれらの任意の組み合わせ上で実行することができる。いくつかの例では、1つまたは複数のデバイスは、1つまたは複数のデータ処理システムを実装し、各データ処理システムは、本開示の態様による1つまたは複数の計算ユニットを含む。いくつかの例では、単一のデバイスは、複数の計算ユニットを実装することができ、複数の計算ユニットのそれぞれは、例えば、順次または並列処理において、分散データ処理タスクを実行するために少なくとも1つの他の計算ユニットと通信するように構成される。
【0165】
本開示の態様は、デジタル回路、コンピュータ可読記憶媒体において、1つまたは複数のコンピュータプログラムとして、または前述の1つまたは複数の組み合わせとして実装することができる。コンピュータ可読記憶媒体は、非一時的であり得、例えば、クラウドコンピューティングプラットフォームによって実行可能であり、有形の記憶デバイスに記憶される1つまたは複数の命令としてである。
【0166】
本明細書では、「構成された」という語句は、コンピュータシステム、ハードウェア、またはコンピュータプログラム、エンジン、またはモジュールの一部に関連する異なる文脈で使用される。システムが1つまたは複数の動作を実行するように構成されると言われる場合、これは、システムが、動作中にシステムに1つまたは複数の動作を実行させる、システム上にインストールされた適切なソフトウェア、ファームウェア、および/またはハードウェアを有することを意味する。あるハードウェアが1つまたは複数の動作を実行するように構成されると言われる場合、これは、動作中に入力を受信し、入力に従って1つまたは複数の動作に対応する出力を生成する1つまたは複数の回路をハードウェアが含むことを意味する。コンピュータプログラム、エンジン、またはモジュールが1つまたは複数の動作を実行するように構成されると言われる場合、これは、コンピュータプログラムが1つまたは複数のプログラム命令を含み、1つまたは複数のコンピュータによって実行されると、1つまたは複数のコンピュータが1つまたは複数の動作を実行することを意味する。
【0167】
図面に示され、特許請求の範囲に記載された動作は特定の順序で示されているが、動作は示されているものとは異なる順序で実行することができ、いくつかの動作は省略され、複数回実行され得るおよび/または他の動作と並行して実行され得ることが理解される。さらに、異なる動作を実行するように構成された異なるシステム構成要素の分離は、構成要素を分離する必要があると理解されるべきではない。記述されている構成要素、モジュール、プログラム、およびエンジンは、単一のシステムとして一緒に統合することも、複数のシステムの一部にすることもできる。
【0168】
特に明記しない限り、前述の代替例は相互に排他的ではないが、固有の利点を達成するためにさまざまな組み合わせで実施され得る。上述した特徴のこれらおよび他の変形および組み合わせは、特許請求の範囲によって定義される主題から逸脱することなく利用することができるので、実施例の前述の説明は、特許請求の範囲によって定義される主題を限定するものではなく、例示として解釈されるべきである。さらに、本明細書に記載の実施例の提供、および「例えば」、「含む」などと表現される節は、特許請求の範囲の主題を特定の実施例に限定すると解釈されるべきではない。むしろ、実施例は、多くの可能な実装のうちの1つだけを説明することを意図している。さらに、異なる図面内の同じ参照番号は、同じまたは類似の要素を識別することができる。
図1
図2
図3
図4
図5
図6
図7
図8A
図8B
図8C
図9A
図9B
図10A
図10B
図11