(57)【要約】【課題】高速且つ高効率のコンボリューション演算を行う高帯域幅メモリーシステムにおけるメモリールックアップメカニズムシステム及びそのための方法並びにルックアップテーブルを含むメモリーダイを提供する。【解決手段】本発明による方法は、高帯域幅メモリーシステムにおけるメモリールックアップメカニズムのための方法であって、メモリーダイを使用して、メモリーダイに格納された浮動小数点演算結果を含むルックアップテーブルにアクセスすることにより、ルックアップテーブル方法を用いた乗算演算を遂行するステップと、メモリーダイにより、乗算演算の結果を、プロセッサ及びバッファーを含むロジックダイに伝送するステップと、ロジックダイにより、演算ユニットを用いた行列乗算演算を遂行するステップと、を有する。【選択図】図１Ａ
2019117628.tif 000002
【特許請求の範囲】
【請求項１】
高帯域幅メモリーシステムにおけるメモリールックアップメカニズムのための方法であって、
メモリーダイを使用して、前記メモリーダイに格納された浮動小数点演算結果を含むルックアップテーブル（ＬＵＴ）にアクセスすることにより、ルックアップテーブル方法（ＬＵＴ  ｍｅｔｈｏｄｏｌｏｇｙ）を用いた乗算演算を遂行するステップと、
前記メモリーダイにより、前記乗算演算の結果を、プロセッサ及びバッファーを含むロジックダイに伝送するステップと、
前記ロジックダイにより、演算ユニットを用いた行列乗算演算を遂行するステップと、を有することを特徴とする方法。
【請求項２】
前記ルックアップテーブル方法は、浮動小数点フルプロダクト乗算（ｆｕｌｌ  ｐｒｏｄｕｃｔ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ）方法を含み、
前記浮動小数点フルプロダクト乗算方法は、
前記メモリーダイにより、ホール（ｗｈｏｌｅ）スカラー浮動小数点入力を使用して、ホールプロダクト乗算結果を含む前記ルックアップテーブルからホールスカラー乗算結果を検索（ｒｅｔｒｉｅｖｅ）するステップと、
前記メモリーダイにより、前記ルックアップテーブルから前記バッファーに前記ホールスカラー乗算結果を伝送するステップと、
前記バッファーにより、前記ホールスカラー乗算結果を前記ロジックダイのアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）に伝送するステップと、
前記アキュムレータにより、前記ホールスカラー乗算結果を累積するステップと、を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ルックアップテーブル方法は、浮動小数点部分プロダクト乗算（ｐａｒｔｉａｌ  ｐｒｏｄｕｃｔ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ）方法を含み、
前記浮動小数点部分プロダクト乗算方法は、
前記メモリーダイにより、フラクション（ｆｒａｃｔｉｏｎ）スカラー浮動小数点入力を使用して、部分プロダクト乗算結果を含む前記ルックアップテーブルから前記部分プロダクト乗算結果を検索するステップと、
前記メモリーダイにより、前記部分プロダクト乗算結果を前記バッファーに伝送するステップと、
前記バッファーにより、前記部分プロダクト乗算結果を前記ロジックダイのアジャスター（ａｄｊｕｓｔｏｒ）に伝送するステップと、
前記アジャスターにより、前記部分プロダクト乗算結果を前記ロジックダイのアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）に伝送するステップと、
前記アキュムレータにより、前記部分プロダクト乗算結果を累積するステップと、を含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記ルックアップテーブル方法は、浮動小数点テンソル演算（ｔｅｎｓｏｒ  ｏｐｅｒａｔｉｏｎ）方法を含み、
前記浮動小数点テンソル演算方法は、
前記メモリーダイにより、テンソル浮動小数点入力を使用して、テンソル乗算結果を含む前記ルックアップテーブルから前記テンソル乗算結果を検索するステップと、
前記メモリーダイにより、前記テンソル乗算結果を前記バッファーに伝送するステップと、
前記バッファーにより、前記テンソル乗算結果を前記ロジックダイのテンソルポストプロセッサ（ｔｅｎｓｏｒ−ｐｏｓｔ  ｐｒｏｃｅｓｓｏｒ）に伝送するステップと、を含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記ルックアップテーブル方法は、浮動小数点フューズドレイヤー動作（ｆｕｓｅｄ  ｌａｙｅｒ  ｏｐｅｒａｔｉｏｎ）方法を含み、
前記浮動小数点フューズドレイヤー動作方法は、
前記メモリーダイにより、ホール（ｗｈｏｌｅ）スカラー浮動小数点入力を使用して、ホールプロダクト乗算結果を含む前記ルックアップテーブルからホールスカラー乗算結果を検索するステップと、
前記メモリーダイにより、前記ロジックダイのバッファーから分離された複数のバッファーを含むバッファーダイ（ｂｕｆｆｅｒ  ｄｉｅ）に前記ホールプロダクト乗算結果を伝送するステップと、
前記バッファーダイにより、前記ホールプロダクト乗算結果を前記ロジックダイのバッファーに伝送するステップと、
前記ロジックダイのバッファーにより、前記ホールプロダクト乗算結果を前記ロジックダイのテンソルプロセッサに伝送するステップと、を含むことを特徴とする請求項１に記載の方法。
【請求項６】
第１タイプの動作に関連する前記ルックアップテーブルを前記メモリーダイに格納するステップと、
前記第１タイプの動作とは異なる第２タイプの動作に関連する前記ルックアップテーブルを前記メモリーダイに格納するステップと、をさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
第１階層の入力フィーチャーマップ（ｆｅａｔｕｒｅ  ｍａｐ）内の全ての可能な位置を読み取るステップと、
第１階層のカーネルと、前記第１階層の入力フィーチャーマップとをコンボルービング（ｃｏｎｖｏｌｖｉｎｇ）するステップと、
前記コンボルービングに基づいて第２階層の入力フィーチャーマップの結果を生成するステップと、をさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
高帯域幅メモリールックアップメカニズムシステムであって、
演算ユニットを用いた行列乗算演算を遂行するプロセッサ及びバッファーを含むロジックダイと、
浮動小数点演算結果を含むルックアップテーブル（ＬＵＴ）を含むメモリーダイと、を備えることを特徴とするシステム。
【請求項９】
前記メモリーダイは、
前記ルックアップテーブルにアクセスし、
ルックアップテーブル方法（ＬＵＴ  ｍｅｔｈｏｄｏｌｏｇｙ）を用いた乗算演算を遂行し、
前記乗算演算の結果を前記ロジックダイに伝送することを特徴とする請求項８に記載のシステム。
【請求項１０】
前記メモリーダイは、
ホール（ｗｈｏｌｅ）スカラー浮動小数点入力を使用して、ホールプロダクト乗算結果を含む前記ルックアップテーブルからホールスカラー乗算結果を検索（ｒｅｔｒｉｅｖｅ）し、
前記ルックアップテーブルから前記バッファーに前記ホールスカラー乗算結果を伝送することを特徴とする請求項９に記載のシステム。
【請求項１１】
前記ロジックダイは、アキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）をさらに含み、
前記アキュムレータは、
前記バッファーから前記ホールスカラー乗算結果を受信し、
前記ホールスカラー乗算結果を累積することを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記メモリーダイは、
フラクション（ｆｒａｃｔｉｏｎ）スカラー浮動小数点入力を使用して、部分プロダクト乗算（ｐａｒｔｉａｌ  ｐｒｏｄｕｃｔ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ）結果を含む前記ルックアップテーブルから前記部分プロダクト乗算結果を検索し、
前記部分プロダクト乗算結果を前記バッファーに伝送することを特徴とする請求項９に記載のシステム。
【請求項１３】
前記ロジックダイは、
前記バッファーから前記部分プロダクト乗算結果を受信するアジャスター（ａｄｊｕｓｔｏｒ）と、
前記アジャスターから前記部分プロダクト乗算結果を受信して前記部分プロダクト乗算結果を累算するアキュムレータと、をさらに含むことを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記メモリーダイは、
テンソル浮動小数点入力を使用して、テンソル乗算結果を含む前記ルックアップテーブルから前記テンソル乗算結果を検索し、
前記テンソル乗算結果を前記バッファーに伝送することを特徴とする請求項９に記載のシステム。
【請求項１５】
前記ロジックダイは、前記バッファーから前記テンソル乗算結果を受信するテンソルポストプロセッサ（ｔｅｎｓｏｒ−ｐｏｓｔ  ｐｒｏｃｅｓｓｏｒ）をさらに含むことを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記メモリーダイは、
ホール（ｗｈｏｌｅ）スカラー浮動小数点入力を使用して、ホールプロダクト乗算結果を含む前記ルックアップテーブルからホールスカラー乗算結果を検索し、
前記ホールプロダクト乗算結果をバッファーダイに伝送することを特徴とする請求項９に記載のシステム。
【請求項１７】
前記ロジックダイは、前記バッファーダイから前記ホールプロダクト乗算結果を受信するテンソルプロセッサをさらに含むことを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記ロジックダイは、アクセラレーターダイをさらに含むことを特徴とする請求項８に記載のシステム。
【請求項１９】
前記メモリーダイは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）ダイを含むことを特徴とする請求項８に記載のシステム。
【請求項２０】
格納されたルックアップテーブル（ＬＵＴ）を含むメモリーダイであって、
前記メモリーダイにより、ホール（ｗｈｏｌｅ）スカラー浮動小数点入力を使用して、ホールプロダクト乗算結果を含む前記ルックアップテーブルからホールスカラー乗算結果を検索（ｒｅｔｒｉｅｖｅ）し、前記メモリーダイにより、前記ホールスカラー乗算結果をバッファーに伝送し、前記バッファーにより、前記ホールスカラー乗算結果をアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）に伝送し、前記アキュムレータにより、前記ホールスカラー乗算結果を累積する浮動小数点フルプロダクト乗算方法と、
前記メモリーダイにより、フラクション（ｆｒａｃｔｉｏｎ）スカラー浮動小数点入力を使用して、部分プロダクト乗算結果を含む前記ルックアップテーブルから前記部分プロダクト乗算結果を検索し、前記メモリーダイにより、前記部分プロダクト乗算結果をバッファーに伝送し、前記バッファーにより、前記部分プロダクト乗算結果をアジャスター（ａｄｊｕｓｔｏｒ）に伝送し、前記アジャスターにより、前記部分プロダクト乗算結果をアキュムレータに伝送し、前記アキュムレータにより、前記部分プロダクト乗算結果を累積する浮動小数点部分プロダクト乗算方法と、
前記メモリーダイにより、テンソル浮動小数点入力を使用して、テンソル乗算結果を含む前記ルックアップテーブルから前記テンソル乗算結果を検索し、前記メモリーダイにより、前記テンソル乗算結果をバッファーに伝送し、前記バッファーにより、前記テンソル乗算結果をテンソルポストプロセッサに伝送する浮動小数点テンソル演算方法と、
前記メモリーダイにより、ホールスカラー浮動小数点入力を使用して、ホールプロダクト乗算結果を含む前記ルックアップテーブルからホールスカラー乗算結果を検索し、前記メモリーダイにより、複数のバッファーを含むバッファーダイに前記ホールプロダクト乗算結果を伝送し、前記バッファーダイにより、前記ホールプロダクト乗算結果を前記バッファーに伝送し、前記バッファーにより、前記ホールプロダクト乗算結果をテンソルプロセッサに伝送する浮動小数点フューズドレイヤー（ｆｕｓｅｄ  ｌａｙｅｒ）動作方法と、を遂行するように構成されることを特徴とするメモリーダイ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高帯域幅メモリーシステムにおけるメモリールックアップメカニズムシステム及びそのための方法並びにルックアップテーブルを含むメモリーダイに関する。
【背景技術】
【０００２】
ディープニューラルネットワーク（ｄｅｅｐ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ）などの新興アプリケーション（ｅｍｅｒｇｉｎｇ  ａｐｐｌｉｃａｔｉｏｎ）は、異なるデータセットで訓練し、高い精度で学習するために、大量の計算及びメモリー能力を使用する。加えて、高性能コンピューティング（ＨＰＣ：Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ）グラフィックアルゴリズムのようなアプリケーションが演算集約的に処理されるようになるにつれて、エネルギー効率と短い待ち時間が次第に重要になっている。
【０００３】
その結果、重みと中間結果を格納するためのメモリー、並びに基本線型代数サブプログラム（ＢＬＡＳ：Ｂａｓｉｃ  Ｌｉｎｅａｒ  Ａｌｇｅｂｒａ  Ｓｕｂｐｒｏｇｒａｍ）及び行列間乗算（ＧＥＭＭ：Ｇｅｎｅｒａｌ  Ｍａｔｒｉｘ  ｔｏ  Ｍａｔｒｉｘ  Ｍｕｌｔｉｐｌｉｃａｔｉｏｎ）カーネルのアクセラレーションに主に使用される計算のためのメモリー及び演算リソースに対する需要が大幅に増加する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第７７１０９７２号明細書
【特許文献２】米国特許第８９４３１１９号明細書
【特許文献３】米国特許第９１９５７８４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、高帯域幅メモリーシステムにおけるメモリールックアップメカニズムシステム及びそのための方法並びにルックアップテーブルを含むメモリーダイを提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するためになされた本発明の一態様による方法は、高帯域幅メモリーシステムにおけるメモリールックアップメカニズムのための方法であって、メモリーダイを使用して、前記メモリーダイに格納された浮動小数点演算結果を含むルックアップテーブル（ＬＵＴ）にアクセスすることにより、ルックアップテーブル方法（ＬＵＴ  ｍｅｔｈｏｄｏｌｏｇｙ）を用いた乗算演算を遂行するステップと、前記メモリーダイにより、前記乗算演算の結果を、プロセッサ及びバッファーを含むロジックダイに伝送するステップと、前記ロジックダイにより、演算ユニットを用いた行列乗算演算を遂行するステップと、を有することを特徴とする。
【０００７】
前記ルックアップテーブル方法は、浮動小数点フルプロダクト乗算（ｆｕｌｌ  ｐｒｏｄｕｃｔ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ）方法を含み、前記浮動小数点フルプロダクト乗算方法は、前記メモリーダイにより、ホール（ｗｈｏｌｅ）スカラー浮動小数点入力を使用して、ホールプロダクト乗算結果を含む前記ルックアップテーブルからホールスカラー乗算結果を検索（ｒｅｔｒｉｅｖｅ）するステップと、前記メモリーダイにより、前記ルックアップテーブルから前記バッファーに前記ホールスカラー乗算結果を伝送するステップと、前記バッファーにより、前記ホールスカラー乗算結果を前記ロジックダイのアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）に伝送するステップと、前記アキュムレータにより、前記ホールスカラー乗算結果を累積するステップと、を含み得る。
【０００８】
前記ルックアップテーブル方法は、浮動小数点部分プロダクト乗算（ｐａｒｔｉａｌ  ｐｒｏｄｕｃｔ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ）方法を含み、前記浮動小数点部分プロダクト乗算方法は、前記メモリーダイにより、フラクション（ｆｒａｃｔｉｏｎ）スカラー浮動小数点入力を使用して、部分プロダクト乗算結果を含む前記ルックアップテーブルから前記部分プロダクト乗算結果を検索するステップと、前記メモリーダイにより、前記部分プロダクト乗算結果を前記バッファーに伝送するステップと、前記バッファーにより、前記部分プロダクト乗算結果を前記ロジックダイのアジャスター（ａｄｊｕｓｔｏｒ）に伝送するステップと、前記アジャスターにより、前記部分プロダクト乗算結果を前記ロジックダイのアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）に伝送するステップと、前記アキュムレータにより、前記部分プロダクト乗算結果を累積するステップと、を含み得る。
【０００９】
前記ルックアップテーブル方法は、浮動小数点テンソル演算（ｔｅｎｓｏｒ  ｏｐｅｒａｔｉｏｎ）方法を含み、前記浮動小数点テンソル演算方法は、前記メモリーダイにより、テンソル浮動小数点入力を使用して、テンソル乗算結果を含む前記ルックアップテーブルから前記テンソル乗算結果を検索するステップと、前記メモリーダイにより、前記テンソル乗算結果を前記バッファーに伝送するステップと、前記バッファーにより、前記テンソル乗算結果を前記ロジックダイのテンソルポストプロセッサ（ｔｅｎｓｏｒ−ｐｏｓｔ  ｐｒｏｃｅｓｓｏｒ）に伝送するステップと、を含み得る。
【００１０】
前記ルックアップテーブル方法は、浮動小数点フューズドレイヤー動作（ｆｕｓｅｄ  ｌａｙｅｒ  ｏｐｅｒａｔｉｏｎ）方法を含み、前記浮動小数点フューズドレイヤー動作方法は、前記メモリーダイにより、ホール（ｗｈｏｌｅ）スカラー浮動小数点入力を使用して、ホールプロダクト乗算結果を含む前記ルックアップテーブルからホールスカラー乗算結果を検索するステップと、前記メモリーダイにより、前記ロジックダイのバッファーから分離された複数のバッファーを含むバッファーダイ（ｂｕｆｆｅｒ  ｄｉｅ）に前記ホールプロダクト乗算結果を伝送するステップと、前記バッファーダイにより、前記ホールプロダクト乗算結果を前記ロジックダイのバッファーに伝送するステップと、前記ロジックダイのバッファーにより、前記ホールプロダクト乗算結果を前記ロジックダイのテンソルプロセッサに伝送するステップと、を含み得る。
【００１１】
第１タイプの動作に関連する前記ルックアップテーブルを前記メモリーダイに格納するステップと、前記第１タイプの動作とは異なる第２タイプの動作に関連する前記ルックアップテーブルを前記メモリーダイに格納するステップと、をさらに含み得る。
【００１２】
第１階層の入力フィーチャーマップ（ｆｅａｔｕｒｅ  ｍａｐ）内の全ての可能な位置を読み取るステップと、第１階層のカーネルと、前記第１階層の入力フィーチャーマップとをコンボルービング（ｃｏｎｖｏｌｖｉｎｇ）するステップと、前記コンボルービングに基づいて第２階層の入力フィーチャーマップの結果を生成するステップと、をさらに含み得る。
【００１３】
上記目的を達成するためになされた本発明の一態様によるシステムは、高帯域幅メモリールックアップメカニズムシステムであって、演算ユニットを用いた行列乗算演算を遂行するプロセッサ及びバッファーを含むロジックダイと、浮動小数点演算結果を含むルックアップテーブル（ＬＵＴ）を含むメモリーダイと、を備えることを特徴とする。
【００１４】
前記メモリーダイは、前記ルックアップテーブルにアクセスし、ルックアップテーブル方法（ＬＵＴ  ｍｅｔｈｏｄｏｌｏｇｙ）を用いた乗算演算を遂行し、前記乗算演算の結果を前記ロジックダイに伝送し得る。
【００１５】
前記メモリーダイは、ホール（ｗｈｏｌｅ）スカラー浮動小数点入力を使用して、ホールプロダクト乗算結果を含む前記ルックアップテーブルからホールスカラー乗算結果を検索（ｒｅｔｒｉｅｖｅ）し、前記ルックアップテーブルから前記バッファーに前記ホールスカラー乗算結果を伝送し得る。
【００１６】
前記ロジックダイは、アキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）をさらに含み、前記アキュムレータは、前記バッファーから前記ホールスカラー乗算結果を受信し、前記ホールスカラー乗算結果を累積し得る。
【００１７】
前記メモリーダイは、フラクション（ｆｒａｃｔｉｏｎ）スカラー浮動小数点入力を使用して、部分プロダクト乗算（ｐａｒｔｉａｌ  ｐｒｏｄｕｃｔ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ）結果を含む前記ルックアップテーブルから前記部分プロダクト乗算結果を検索し、前記部分プロダクト乗算結果を前記バッファーに伝送し得る。
【００１８】
前記ロジックダイは、前記バッファーから前記部分プロダクト乗算結果を受信するアジャスター（ａｄｊｕｓｔｏｒ）と、前記アジャスターから前記部分プロダクト乗算結果を受信して前記部分プロダクト乗算結果を累算するアキュムレータと、をさらに含み得る。
【００１９】
前記メモリーダイは、テンソル浮動小数点入力を使用して、テンソル乗算結果を含む前記ルックアップテーブルから前記テンソル乗算結果を検索し、前記テンソル乗算結果を前記バッファーに伝送し得る。
【００２０】
前記ロジックダイは、前記バッファーから前記テンソル乗算結果を受信するテンソルポストプロセッサ（ｔｅｎｓｏｒ−ｐｏｓｔ  ｐｒｏｃｅｓｓｏｒ）をさらに含み得る。
【００２１】
前記メモリーダイは、ホール（ｗｈｏｌｅ）スカラー浮動小数点入力を使用して、ホールプロダクト乗算結果を含む前記ルックアップテーブルからホールスカラー乗算結果を検索し、前記ホールプロダクト乗算結果をバッファーダイに伝送し得る。
【００２２】
前記ロジックダイは、前記バッファーダイから前記ホールプロダクト乗算結果を受信するテンソルプロセッサをさらに含み得る。
【００２３】
前記ロジックダイは、アクセラレーターダイをさらに含み得る。
【００２４】
前記メモリーダイは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）ダイを含み得る。
【００２５】
上記目的を達成するためになされた本発明の一態様によるメモリーダイは、格納されたルックアップテーブル（ＬＵＴ）を含むメモリーダイであって、前記メモリーダイにより、ホール（ｗｈｏｌｅ）スカラー浮動小数点入力を使用して、ホールプロダクト乗算結果を含む前記ルックアップテーブルからホールスカラー乗算結果を検索（ｒｅｔｒｉｅｖｅ）し、前記メモリーダイにより、前記ホールスカラー乗算結果をバッファーに伝送し、前記バッファーにより、前記ホールスカラー乗算結果をアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）に伝送し、前記アキュムレータにより、前記ホールスカラー乗算結果を累積する浮動小数点フルプロダクト乗算方法と、前記メモリーダイにより、フラクション（ｆｒａｃｔｉｏｎ）スカラー浮動小数点入力を使用して、部分プロダクト乗算結果を含む前記ルックアップテーブルから前記部分プロダクト乗算結果を検索し、前記メモリーダイにより、前記部分プロダクト乗算結果を前記バッファーに伝送し、前記バッファーにより、前記部分プロダクト乗算結果をアジャスター（ａｄｊｕｓｔｏｒ）に伝送し、前記アジャスターにより、前記部分プロダクト乗算結果をアキュムレータに伝送し、前記アキュムレータにより、前記部分プロダクト乗算結果を累積する浮動小数点部分プロダクト乗算方法と、前記メモリーダイにより、テンソル浮動小数点入力を使用して、テンソル乗算結果を含む前記ルックアップテーブルから前記テンソル乗算結果を検索し、前記メモリーダイにより、前記テンソル乗算結果を前記バッファーに伝送し、前記バッファーにより、前記テンソル乗算結果をテンソルポストプロセッサに伝送する浮動小数点テンソル演算方法と、前記メモリーダイにより、ホールスカラー浮動小数点入力を使用して、ホールプロダクト乗算結果を含む前記ルックアップテーブルからホールスカラー乗算結果を検索し、前記メモリーダイにより、複数のバッファーを含むバッファーダイに前記ホールプロダクト乗算結果を伝送し、前記バッファーダイにより、前記ホールプロダクト乗算結果を前記バッファーに伝送し、前記バッファーにより、前記ホールプロダクト乗算結果をテンソルプロセッサに伝送する浮動小数点フューズドレイヤー（ｆｕｓｅｄ  ｌａｙｅｒ）動作方法と、を遂行するように構成されることを特徴とする。
【発明の効果】
【００２６】
本発明によれば、高帯域幅メモリーシステムで高速且つ高効率のコンボリューション演算をサポートするためのメモリールックアップメカニズムを提供することができる。
【図面の簡単な説明】
【００２７】
【図１Ａ】本発明の一実施形態による第２世代（ｓｅｃｏｎｄ  ｇｅｎｅｒａｔｉｏｎ）高帯域幅メモリー（ＨＢＭ２）システムの構成を示す平面図である。
【図１Ｂ】本発明の一実施形態による第２世代高帯域幅メモリー（ＨＢＭ２）システムの構成を示す側面図である。
【図２Ａ】本発明の一実施形態による設計オプションを示すブロック図である。
【図２Ｂ】本発明の一実施形態による設計オプションを示すブロック図である。
【図２Ｃ】本発明の一実施形態による設計オプションを示すブロック図である。
【図２Ｄ】本発明の一実施形態による設計オプションを示すブロック図である。
【図３】メモリールックアップテーブル（ＬＵＴ）がスカラーベクトル（ｓｃａｌａｒ−ｖｅｃｔｏｒ）乗算を遂行する方法を示す概略図である。
【図４】浮動小数点の指数（ｅｘｐｏｎｅｎｔ）、フラクション（ｆｒａｃｔｉｏｎ）、又は符号（ｓｉｇｎ）のような浮動小数点の異なる成分を示す概略図である。
【図５】ＬＵＴの冗長（ｒｅｄｕｎｄａｎｔ）セクションを示すブロックと、行インデックス、列インデックス、及び結果サイズによって使用されるビット数を表示するテーブルとを示す図である。
【図６】ＬＵＴを「フォールディング（ｆｏｌｄｉｎｇ）」することによってメモリー空間を節約するアルゴリズムの視覚的表現を示す図である。
【図７】ＬＵＴを示すブロック図と、部分プロダクト乗算結果だけを格納するＬＵＴの行インデックス、列インデックス、及び結果サイズによって使用されるビット数を表示するテーブルとを示す図である。
【図８】フラクション部分プロダクトの結果を含むＬＵＴを示すブロック図である。
【図９】階層間（ｌａｙｅｒ−ｂｙ−ｌａｙｅｒ）コンボリューション演算の視覚的な表現を示す図である。
【発明を実施するための形態】
【００２８】
本発明の特徴及びそれを達成する方法は、本発明の実施形態の詳細な説明及び図面を参照して明確にされる。以下、例示的な実施形態を、同じ参照符号は同じ構成要素を示す図面を参照して詳細に説明する。しかし、本発明は多様な形態で具現可能であり、本明細書に例示した実施形態に限定されるものではない。むしろ、これらの実施形態は、本発明の開示が完全になるための例として提供され、当業者に本発明の特徴及び機能を完全に伝えるためのものである。したがって、本発明の技術分野における通常の知識を有する者が本発明の特徴及び機能を完全に理解するために必要でないプロセス、要素、及び技術は説明しない。特に記載しない限り、同じ参照符号は、図面及び明細書の説明において、同じ構成要素を示し、従ってそれに対する説明は繰り返さない。図面において、構成要素、層、及び領域の相対的な大きさは、明確化のために誇張される。
【００２９】
以下、説明を目的に、多様な特定の実施形態が、多様な実施形態の完全な理解を提供するために記載される。しかし、多様な実施形態が、このような特定の詳細なしに、又は１つ以上の等価な構成なしに実施され得ることは自明である。他の例で、多様な実施形態を不必要に曖昧にすることを避けるために、公知の構造及びデバイスはブロック図の形式で示される。
【００３０】
要素、層、領域、又は成分が、他の要素、層、領域、又は成分「に」、「に連結された」、「に結合された」と記載される場合、それは他の要素、層、領域、又は成分「に直接的に」、「に直接的に連結された」、「に直接的に結合された」であり、１つ又はそれ以上の間の要素、層、領域、または成分が存在する。なお、要素又は層が２つの要素又は層の「間」あると言及される場合、それは単一の要素又は層が２つの要素又は層の間に有るか、１つ又はそれ以上の要素又は層が、間に存在する。
【００３１】
本明細書で使用される用語は、特定の実施形態を説明するためのものであって、本発明を限定するものではない。文脈上明らかに異なる意味でない限り、単数形態の「一つ」は、複数の形態も含む。「構成される〜」、「構成されている〜」、「含む〜」、及び「包含している〜」という用語が、本明細書で使用されるとき、これらの用語は、定められた特徴、整数、ステップ、動作、要素、及び／又は成分の存在を明示するが、一つ又はそれ以上の他の特徴、整数、ステップ、動作、要素、成分、及び／又はそれらのグループの追加又は存在を排除しない。本明細書で使用される「及び／又は」という用語は、一つ又はそれ以上の列挙された項目に関連付けられた任意かつ全ての組み合わせを含む。
【００３２】
本明細書で使用される「実質的に」、「約」、「大略的に」の用語及びこれに類似する用語は、近似の用語として使用され、程度の用語として使用されず、当業者によって認識される測定値又は計算値の固有の変動を含意する。本明細書で使用される「約（ａｂｏｕｔ）」または「大略（ａｐｐｒｏｘｉｍａｔｅｌｙ）」は、記載された値を含んで、当該分野の当業者によって決定された特定値（つまり、測定システムの限界）に対する許容可能な偏差の範囲内であることを意味する。たとえば、「約」は、１つ以上の標準偏差内、又は明示された値の±３０％、±２０％、±１０％、±５％以内を意味する。なお、本発明の実施形態を説明するときの「できる」の記載は、「本発明の一つ以上の実施形態」を参照する。本明細書で、「〜使用する」、「使用する〜」、及び「使用される〜」の用語は、それぞれ「〜活用する」、「活用する〜」、及び「活用される〜」と同義語と見なされる。なお、「例示的な」という用語は、例又は説明を意味する。
【００３３】
特定の実施形態は、異なる方法で具現される場合、特定のプロセスの順序は、説明した順序とは異なる順序で遂行され得る。例えば、説明された２つの連続的なプロセスは、同時に遂行されるか、または説明した順序とは逆の順序で遂行される。
【００３４】
多様な実施形態が、実施形態及び／又は中間構造の概略図である断面図を参照して、本明細書で説明される。このように、例えば、製造技術及び／又は許容誤差の結果として、図面の形状からの変形が予想される。したがって、例示的な実施形態は、本明細書に示す特定の領域の形状に限定されず、例えば、製造からもたらされる形状の偏差を含む。例えば、長方形の注入領域は、典型的に注入領域から注入されない領域への２値変化ではなく、丸い形又は曲線のフィーチャー（ｆｅａｔｕｒｅ）及び／又はエッジでの注入濃度の勾配を示す。同様に、注入によって形成された埋め込み領域は、埋め込み領域と注入が起こる表面との間の領域に若干の注入をもたらす。したがって、図面に示された領域は、本質的に概略的であり、その形状はデバイスの領域の実際の形状を例示するものではなく、本発明の技術範囲を限定するものではない。
【００３５】
本明細書で説明される電子機器又は電気機器及び／又は任意の他の関連装置又は構成要素は、任意の適切なハードウェア、ファームウェア（例えば、特定用途向け集積回路）、ソフトウェア、又はソフトウェア、ファームウェア、及びハードウェアの組み合わせを用いて具現される。例えば、これらのデバイスの多様な構成要素は、１つの集積回路（ＩＣ）チップ上、又は個々のＩＣチップ上に形成される。また、これらのデバイスの様々な構成要素は、可撓性印刷回路フィルム、テープキャリアパッケージ（ＴＣＰ）、印刷回路基板（ＰＣＢ）、又は１つの基板上に実装される。また、これらのデバイスの様々な構成要素は、１つ以上のコンピューティングデバイス中の１つ以上のプロセッサ上で実行されるプロセス又はスレッドであり、コンピュータプログラム命令を実行して、本明細書で説明された様々な機能を遂行するために、他のシステム構成要素と相互作用する。コンピュータプログラム命令は、例えば、ランダムアクセスメモリー（ＲＡＭ）のような標準メモリーデバイスを使用するコンピューティングデバイスに実装されるメモリーに格納される。コンピュータプログラム命令は、また、例えば、ＣＤ−ＲＯＭ、フラッシュドライブなどのような非一時的コンピュータ読み取り可能な記録媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉａ）に格納される。なお、当業者には、多様なコンピューティングデバイスの機能が単一のコンピューティングデバイスに結合又は統合されるか、特定のコンピューティングデバイスの機能が１つ以上の他のコンピューティングデバイスに分散されることが理解される。
【００３６】
特に定義しない限り、本明細書で使用されるすべての用語（技術用語および科学用語を含む）は、本発明が属する技術分野の当業者によって一般的に理解されるものと同じ意味を有する。なお、一般的に使用される辞典に定義されるような用語は、関連技術及び／又は本明細書に関連して、その意味と一致する意味を有するものと解釈され、理想的、または過度に形式的な意味に解釈されない。
【００３７】
大きなデータバッチ（ｂａｔｃｈ）サイズは正確性を失うことなく、全体の学習時間を短縮するのに使用される。このアプローチは、単一の高性能プロセスで計算／メモリーの使用率を高めることで規模を拡大することができる。または、この方法は、モデルの並列性及びデータの並列性を使用して、複数の高性能プロセッサに学習を分散することで拡張することができる。
【００３８】
ディープラーニングアプリケーションは、様々な、「メモリーに対するコンピューティングの割合（ｃｏｍｐｕｔｅ−ｔｏ−ｍｅｍｏｒｙ  ｒａｔｉｏ）」を示す。コンボルーション（ｃｏｎｖｏｌｕｔｉｏｎａｌ）層は、高いメモリーに対するコンピューティングの割合を有する。完全連結層／繰り返し層は、中／低のメモリーに対するコンピューティングの割合」を有する。要素単位／スカラー演算は、低いメモリーに対するコンピューティングの割合を有する。アプリケーションごとのメモリーに対するコンピューティングの割合は、これらの組み合わせによって異なる。
【００３９】
メモリーに対するコンピューティングの割合が低い作業負荷の場合、コンピューティング中心のスループットプロセッサは、大きなメモリー容量及び帯域幅を適切に使用する。オンチップ・メモリーには、大きなバッチサイズのデータや大きな層サイズのデータを含めることができない。グラフィック処理ユニット（ＧＰＵ）、中央処理装置（ＣＰＵ）、及びフィールドプログラマブルゲートアレイ（ＦＧＰＡ）のような最先端のプロセッサは、高帯域幅メモリ（ＨＢＭ）を使用する。メモリーに対するコンピューティングの割合が高い作業負荷の場合、作業負荷が計算限界に達すると、メモリー帯域幅及びメモリー容量は使用率が低くなる。
【００４０】
図１Ａ及び図１Ｂは、本発明の一実施形態による第２世代高帯域幅メモリー（「ＨＢＭ２」）システムの構成を示す概略図である。図１Ａは、本構成を上方から見た形態を示す平面図である。図１Ｂは、本構成の側面図である。
【００４１】
図１Ａを参照すると、本発明の実施形態は、メモリールックアップコンピュータメカニズムのためのシステム、又は第２世代高帯域幅メモリー（ＨＢＭ２）システム１００を提供する。ＨＢＭ２システム１００は、多数の３次元ＨＢＭ２メモリースタック１２０に連結された多重ホストダイ（ｍｕｌｔｉｐｌｅ  ｈｏｓｔ  ｄｉｅ）１１０を備える。本実施形態において、多重ホストダイ（以下、ホストと略記）１１０は、４個までの３次元ＨＢＭ２メモリースタック１２０に連結される。
【００４２】
図１Ｂを参照すると、３次元ＨＢＭ２メモリースタック（以下、メモリースタックと略記）１２０は、複数のＨＢＭ２メモリーダイ（以下、メモリーダイと略記）１３０を含む。図１Ｂに示すように、メモリースタック１２０は、スタック当たり４個〜８個のメモリーダイ１３０を有する。それぞれのメモリースタック１２０は、スタック当たり最大８個のチャンネルを含む。本実施形態において、メモリースタック１２０は、ロジックダイ１５０上に位置する。本実施形態で、演算アクセラレーターダイ１６０は、メモリースタック１２０の上部に配置される。
【００４３】
メモリースタック１２０の一部は、バンクレベルの並列性を利用するためのルックアップテーブル（「ＬＵＴ」）として構成される。ルックアップテーブルは、メモリーダイ１３０に格納される。ＬＵＴは、浮動小数点演算の結果（例えば、事前計算された結果）を含む。その結果は、実数値である。メモリーダイ１３０のＬＵＴに含まれる結果は、ロジックダイ１５０にストリーミングされる。
【００４４】
図２Ａ〜図２Ｄは、本発明の一実施形態による設計オプションを示すブロック図である。
【００４５】
図２Ａは、メモリールックアップメカニズムの第１実施例を示すブロック図である。本実施例によると、ＬＵＴ２２０Ａは、ＤＲＡＭダイ２１０Ａに配置される。ＬＵＴ２２０Ａは、１つ以上の事前計算された浮動小数点演算の実数値の結果Ｃ′を含む。本実施例で、実数値の結果Ｃ′は、ホール（ｗｈｏｌｅ）スカラー浮動小数点値を含む。ＤＲＡＭダイ２１０Ａは、ＬＵＴ２２０Ａから値／結果Ｃ′を検索（ｒｅｔｒｉｅｖｅ）する。ＤＲＡＭダイ２１０Ａは、入力値（Ａ及びＢ）を使用してＬＵＴ２２０Ａから結果Ｃ′を識別する。入力値ＡはＬＵＴ２２０Ａの行アドレスを示し、入力値ＢはＬＵＴ２２０Ａの列アドレスを示す。本実施例では、入力値Ａ及び入力値Ｂは、ホールスカラー浮動小数点値を含む。
【００４６】
ＤＲＡＭダイ２１０Ａは、ロジックダイ２８０Ａ上に位置するバッファー（「ＢＵＦ」）２３０Ａに結果Ｃ′を伝送する。バッファー２３０Ａは、結果Ｃ′を格納する。バッファー２３０Ａは、ＤＲＡＭダイ２１０Ａに関連して、ロジックダイ２８０Ａによって遂行される行列乗算演算に使用するために、結果Ｃ′に対する高速アクセスを許容する。バッファー２３０Ａは、結果Ｃ′をアキュムレータ（「ＡＣＣ」）２４０Ａに伝送する。本実施例で、アキュムレータ２４０Ａは、ロジックダイ２８０Ａ及びＤＲＡＭダイ２１０Ａによって遂行される行列乗算演算の中間結果を計算するのに使用するために、結果Ｃ′を収集する。
【００４７】
図２Ｂは、メモリールックアップメカニズムの第２実施例を示すブロック図である。本実施例によると、ＬＵＴ２２０Ｂは、ＤＲＡＭダイ２１０Ｂに配置される。ＬＵＴ２２０Ｂは、事前計算された浮動小数点演算の部分乗算結果「Ｃ．ｆｒａｃｔｉｏｎ」を格納する。ＤＲＡＭダイ２１０Ｂは、入力値「Ａ．ｆｒａｃｔｉｏｎ」及び入力値「Ｂ．ｆｒａｃｔｉｏｎ」を使用してＬＵＴ２２０Ｂから結果「Ｃ．ｆｒａｃｔｉｏｎ」を識別する。「Ａ．ｆｒａｃｔｉｏｎ」の値は、ＬＵＴの行アドレスを示し、入力値Ａのフラクション（ｆｒａｃｔｉｏｎ）部分である。「Ｂ．ｆｒａｃｔｉｏｎ」は、ＬＵＴの列アドレスを示し、入力値Ｂのフラクション（ｆｒａｃｔｉｏｎ）部分である。本実施例によると、「Ａ．ｆｒａｃｔｉｏｎ」及び「Ｂ．ｆｒａｃｔｉｏｎ」の値には、フラクションスカラー浮動小数点値が含まれる。
【００４８】
本実施例では、符号論理と指数加算及び減算論理とはＬＵＴによって具現されないため、ＬＵＴのサイズを減少させる。入力値の「Ａ．ｆｒａｃｔｉｏｎ」と「Ｂ．ｆｒａｃｔｉｏｎ」とは対称であるため、結果の半分だけをＬＵＴ２２０Ｂに格納するのが適切である。ＬＵＴ２２０Ｂの減少されたサイズは、ＤＲＡＭダイ２１０Ｂ上に、より多くのストレージ空間を許容する。
【００４９】
ＤＲＡＭダイ２１０Ｂは、ロジックダイ２８０Ｂ上に位置するバッファー２３０Ｂに結果「Ｃ．ｆｒａｃｔｉｏｎ」を伝送する。バッファー２３０Ｂは、結果「Ｃ．ｆｒａｃｔｉｏｎ」を格納する。バッファー２３０Ｂは、ロジックダイ２８０Ｂによって遂行される行列乗算演算に使用するために、結果「Ｃ．ｆｒａｃｔｉｏｎ」に対する高速アクセスを許容する。バッファー２３０Ｂは、結果「Ｃ．ｆｒａｃｔｉｏｎ」をアジャスター（「ＡＤＪ」）２５０にストリーミングする。アジャスター２５０は、結果「Ｃ．ｆｒａｃｔｉｏｎ」をアライン（ａｌｉｇｎ）／処理して結果Ｃ′を生成する。アライン（ａｌｉｇｎ）後、アジャスター２５０は、結果Ｃ′をアキュムレータ２４０Ｂに伝送し、アキュムレータ２４０Ｂは、図２Ａのアキュムレータ２４０Ａと同じ操作（ｔａｓｋ）を効果的に達成することができる。アキュムレータ２４０Ｂは、ロジックダイ２８０Ｂによって遂行される行列乗算演算の中間結果を計算するのに使用するために、結果Ｃ′を収集する。
【００５０】
図２Ｃは、メモリールックアップメカニズムの第３実施例を示すブロック図である。本実施例によると、ＬＵＴ２２０Ｃは、ＤＲＡＭダイ２１０Ｃに配置される。ＬＵＴ２２０Ｃは、事前計算された浮動小数点演算のテンソル値の結果「Ｔｅｎｓｏｒ  Ｃ′」を含む。ＤＲＡＭダイ２１０Ｃは、テンソル値の結果「Ｔｅｎｓｏｒ  Ｃ′」をＬＵＴ２２０Ｃから検索（ｒｅｔｒｉｅｖｅ）する。ＤＲＡＭダイ２１０Ｃは、ＬＵＴ２２０Ｃの行アドレス及び列アドレスを使用してテンソル値の結果「Ｔｅｎｓｏｒ  Ｃ′」を識別する。「Ｔｅｎｓｏｒ  Ａ」と「Ｔｅｎｓｏｒ  Ｂ」との乗算の場合、行アドレスは入力値Ａの各行にある全ての要素の連結であり、列アドレスは入力値Ｂの各列にある全ての要素である。入力値Ａ及び入力値Ｂはテンソル浮動小数点値を含む。行アドレスは、要素の数に要素の長さを乗じたものと同じである。行インデックスと列インデックスは符号なしの整数であると仮定する。入力値Ａ及び入力値Ｂが対称であるため、ＬＵＴ２２０Ｃは、テンソル値の結果「Ｔｅｎｓｏｒ  Ｃ′」の半分だけを格納する必要がある。
【００５１】
一部の実施例で、ＬＵＴ２２０Ｃの大きさはさらに減少される。連結する前に、ＤＲＡＭダイ２１０Ｃの制御エンジンは、その絶対値及び事前計算符号ビットロジック（ｐｒｅ−ｃｏｍｐｕｔｅｒ  ｓｉｇｎ  ｂｉｔ  ｌｏｇｉｃ）に基づいて行と列のテンソル値の結果「Ｔｅｎｓｏｒ  Ｃ′」を分類する。行インデックスが列インデックスよりも大きいと、ＤＲＡＭダイ２１０Ｃの制御エンジンは、行インデックスと列インデックスとを切り替える。ＤＲＡＭダイ２１０Ｃ上の制御エンジンは、行インデックス及び列インデックスが符号なしの整数と仮定する。なお、ＤＲＡＭダイ２１０Ｃの制御エンジンは、行及び列のアドレスルックアップの連結のためのＬＵＴ２２０Ｃを選択するために、事前計算符号ビットロジックを使用する。
【００５２】
ＤＲＡＭダイ２１０Ｃは、ロジックダイ２８０Ｃ上に位置するバッファー２３０Ｃにテンソル値の結果「Ｔｅｎｓｏｒ  Ｃ′」を伝送する。バッファー２３０Ｃは、テンソル値の結果「Ｔｅｎｓｏｒ  Ｃ′」を格納する。バッファー２３０Ｃは、ロジックダイ２８０Ｃによって遂行される行列乗算演算で使用するために、テンソル値の結果「Ｔｅｎｓｏｒ  Ｃ′」に対する高速アクセスを許容する。バッファー２３０Ｃは、図２Ａ及び図２Ｂのアキュムレータ（２４０Ａ及び２４０Ｂ）などの１つ以上のアキュムレータを含むテンソルポストプロセッシングユニット（「ＴＰＵ」）２６０にテンソル値の結果「Ｔｅｎｓｏｒ  Ｃ′」を伝送する。ＴＰＵ２６０は、「Ｔｅｎｓｏｒ  Ｃ′」のようなテンソル結果のアキュムレータとして機能する。本実施例で、ＴＰＵ２６０は、ロジックダイ２８０Ｃによって遂行された演算の中間結果を計算するのに使用するために、「Ｔｅｎｓｏｒ  Ｃ′」を収集する。
【００５３】
図２Ｄは、メモリールックアップメカニズムの第４実施例を示すブロック図である。本実施例によると、ＬＵＴ２２０Ｄは、ＤＲＡＭダイ２１０Ｄに配置される。なお、本実施例は、バッファーダイ２７０を含む。ＬＵＴ２２０Ｄは、事前計算された浮動小数点演算の実数値の結果Ｃ″を含む。この実施例で、実数値の結果Ｃ″は、ホール（ｗｈｏｌｅ）スカラー浮動小数点値を含む。ＤＲＡＭダイ２１０Ｄは、ＬＵＴ２２０Ｄから実数値結果Ｃ″を検索（ｒｅｔｒｉｅｖｅ）する。ＤＲＡＭダイ２１０Ｄは、入力値（Ａ′及びＢ′）を使用してＬＵＴ２２０Ｄで実数値の結果Ｃ″を識別する。入力値Ａ′は、ＬＵＴ２２０Ｄの行アドレスを示し、入力値Ｂ′はＬＵＴ２２０Ｄの列アドレスを示す。本実施例によると、入力値Ａ′及び入力値Ｂ′は、ホールスカラー浮動小数点値を含む。
【００５４】
ＤＲＡＭダイ２１０Ｄは、実数値の結果Ｃ″をロジックダイ２８０Ｄ上に位置するバッファー２３０Ｄに伝送する。バッファー２３０Ｄは、実数値の結果Ｃ″を格納する。バッファー２３０Ｄは、ロジックダイ２８０Ｄによって遂行される行列乗算演算で使用するために、実数値の結果Ｃ″に対する高速アクセスを許容する。バッファー２３０Ｄは、実数値の結果Ｃ″をフューズドレイヤー（ｆｕｓｅｄ  ｌａｙｅｒ）ポストプロセッサ（「ＦＰＵ」）２９０に伝送する。実数値の結果Ｃ″がロジックダイ２８０Ｄによって遂行された一連の演算の中間値である状況で、ＦＰＵ２９０は、実数値の結果Ｃ″をバッファーダイ２７０に伝送する。一部の実施例で、バッファーダイ２７０は、ロジックダイ２８０Ｄのバッファー２３０Ｄに類似した多数のバッファーを含む。分離されたバッファーダイ２７０は、より大きく複雑な動作に適した中間結果に対するより広い格納を許容する。
【００５５】
図３は、メモリールックアップテーブル（ＬＵＴ）がスカラーベクトル乗算を遂行する方法を示す概略図である。
【００５６】
図３を参照すると、本実施形態のプロセスにおいて、入力値Ａに無関係なスカラーＡは、ベクトル（Ｂ１〜Ｂｎ）に乗算される。ベクトル−スカラー乗算の結果は、ベクトル積（Ｃ１〜Ｃｎ）として表現される。スカラーＡは、メモリーＬＵＴ３１０から一つの行を活性化するために、行アドレスとして使用される。ベクトル（Ｂ１〜Ｂｎ）は、列アドレスとして使用され、対応するルックアップの結果である（Ｃ１〜Ｃｎ）を行バッファー３２０から読み取る。図２Ａ〜図２Ｄに示すように、結果（Ｃ１〜Ｃｎ）は、累積のためにロジックダイに伝達される。
【００５７】
図４は、浮動小数点の指数（ｅｘｐｏｎｅｎｔ）、フラクション（ｆｒａｃｔｉｏｎ）、又は符号（ｓｉｇｎ）のような浮動小数点の異なる成分を示す概略的フローを含むブロック図４００及びテーブル４１０を示す。
【００５８】
図４に示すように、テーブル４１０は、浮動小数点の各構成要素によって使用されるビット数を示す。たとえば、６４ビットの浮動小数点はフラクションの要素に対して５２ビットを、指数の構成要素に対して１１ビットを有する。
【００５９】
図５は、ＬＵＴの冗長（ｒｅｄｕｎｄａｎｔ）セクションを示すブロック図５００と、行インデックス、列インデックス、及び結果サイズによって使用されるビット数を示すテーブル５１０とを示す。
【００６０】
図５を参照すると、本実施形態の一例で、６４ビットの浮動小数点は６３ビットの行インデックス、６３ビットの列インデックス、及び６３ビットの結果サイズを有する。
【００６１】
図６は、ＬＵＴを「フォールディング（ｆｏｌｄｉｎｇ）」することにより、メモリー空間を節約するアルゴリズムの視覚的表現を示す図である。
【００６２】
図６を参照すると、本実施形態では、入力値は、ＡとＢとで表現される。以前の図に示すように、入力値ＡはＬＵＴの行アドレスを示し、入力値ＢはＬＵＴの列アドレスを示す。入力値Ｂが入力値Ａよりも大きい場合、ＤＲＡＭダイの制御エンジンが、入力値Ａと入力値Ｂとを切り替える。なお、入力値Ｂの最初のビットが１であると、入力値Ａは、入力値Ａの全てのビットの逆の順序に等しく、入力値Ｂは入力値Ｂの全てのビットの逆の順序に等しい。ＤＲＡＭダイの制御エンジンは、行インデックスとしてＡの最終的な値、列のインデックスとしてＢの最終的な値を使用する。このアルゴリズムは、実際のＬＵＴアクセスが、元のテーブルの半分であることを保証する。
【００６３】
図７は、ＬＵＴを示すブロック図７００と、部分プロダクト乗算結果だけを格納するＬＵＴの行インデックス、列インデックス、及び結果サイズによって使用されるビット数を示すテーブル７１０とを示す。
【００６４】
図７に示すように、本実施例で、６４ビットの浮動小数点は５２ビットの行インデックス、５２ビットの列インデックス、及び５４ビットの結果サイズを有する。
【００６５】
図８は、フラクション（ｆｒａｃｔｉｏｎ）部分乗算結果を格納するＬＵＴを示すブロック図８００である。フラクション（ｆｒａｃｔｉｏｎ）部分は、同じサイズ（例えば、ｆｒａｃｔｉｏｎ＿ｌｅｎｇｔｈ＝ｆｒａｃｔｉｏｎ＿ｓｅｇｍｅｎｔ＊ｆｒａｃｔｉｏｎ＿ｐａｒｔ）の複数のセグメントに分割される。ＬＵＴはフラクション（ｆｒａｃｔｉｏｎ）セグメント乗算の乗算テーブルだけを具現するのに適する。中間結果は丸められず、正規化されない。代わりに、中間結果の全体精度が維持されて、最終的な結果をシフト（ｓｈｉｆｔ）又は合算するために加算器に送られる。フラクション（ｆｒａｃｔｉｏｎ）セグメント乗算の例は、下記の数式（１）の通りである。
【００６６】
【数１】
2019117628.tif 000003
正常の表現式は下記の数式（２）のように表される。
【００６７】
【数２】
2019117628.tif 000004
【００６８】
図９は、階層間（ｌａｙｅｒ−ｂｙ−ｌａｙｅｒ）コンボリューション演算の視覚的表現を示す図である。
【００６９】
図９を参照すると、本実施形態の表現は、図２Ｄに示す実施例に一致する。従来のコンボリューション（ｃｏｎｖｏｌｕｔｉｏｎ）演算で、各階層は、一つずつ計算されなければならない。図９に示すように、第１階層のカーネル９００は、第１階層の入力フィーチャーマップ（ｉｎｐｕｔ  ｆｅａｔｕｒｅ  ｍａｐ）９１０内の全ての可能な位置に沿ってスライド（ｓｌｉｄｅ）（例えば、読み取り）し、第１階層の入力フィーチャーマップ９１０とコンボリューションして、第２階層の入力フィーチャーマップ９３０に１つの結果を生成する。その結果、第２階層の入力フィーチャーマップ９３０の全ての要素は、第１階層の入力フィーチャーマップ９１０を有する第１階層のカーネル９００のコンボリューション結果である。次のステップで、第２階層のカーネル９２０は、同様に、第２階層の入力フィーチャーマップ９３０内の全ての可能な位置に沿ってスライドして、第３階層の入力フィーチャーマップ９５０に結果を生成する。このようなコンボリューション演算は、Ｎ個の階層に対して階層ごとに続く。しかし、これらの中間結果のそれぞれ（例えば、第１階層、第２階層、第３階層、…、第Ｎ階層）の格納は、問題となる。全ての中間結果をＤＲＡＭダイに格納するには、相対的に大量のエネルギーとストレージ空間を必要とする。
【００７０】
エネルギー消費と格納の問題を解決するために、本実施形態は、小計算ピラミッド（ｓｍａｌｌ  ｃｏｍｐｕｔａｔｉｏｎ  ｐｙｒａｍｉｄ）に焦点を合わせる。小計算ピラミッドは、入力フィーチャーマップ（９１０、９３０、９５０）の陰影領域で表示される。各階層が進行するのにつれて陰影領域が減少する。中間結果を格納するときに、入力フィーチャーマップの陰影領域のみが格納される。このような中間結果の各々はＤＲＡＭダイの代わりバッファーダイに格納される。バッファーダイは、図２Ｄのバッファーダイ２７０として示される。バッファーダイで中間結果を検索（ｒｅｔｒｉｅｖｅ）することはＤＲＡＭダイで中間結果を検索するよりも少ないエネルギーを使用する。一部の実施例で、バッファーは、メモリーダイ上のバッファー、ロジックダイ上のバッファー、または個別のバッファーダイである。
【００７１】
上述した内容は、例示的な実施形態を説明するためのものであって、本発明を限定するものではない。当業者は、本発明の技術範囲から逸脱しない範囲内で、多様に変形実施することが可能である。
【産業上の利用可能性】
【００７２】
本発明は、高速度及び高効率のコンボリューション演算を支援する高帯域幅メモリーのメモリールックアップメカニズムシステムに有用である。
【符号の説明】
【００７３】
１００    ＨＢＭ２システム
１１０    多重ホストダイ（ホスト）
１２０    （３次元ＨＢＭ２）メモリースタック
１３０    （ＨＢＭ２）メモリーダイ
１５０、２８０Ａ、２８０Ｂ、２８０Ｃ、２８０Ｄ    ロジックダイ
１６０    （演算）アクセラレーターダイ
２１０Ａ、２１０Ｂ、２１０Ｃ、２１０Ｄ    ＤＲＡＭダイ
２２０Ａ、２２０Ｂ、２２０Ｃ、２２０Ｄ    ＬＵＴ
２３０Ａ、２３０Ｂ、２３０Ｃ、２３０Ｄ    バッファー（ＢＵＦ）
２４０Ａ、２４０Ｂ    アキュムレータ
２５０    アジャスター
２６０    テンソルポストプロセッシングユニット（ＴＰＵ）
２７０    バッファーダイ
２９０    ＦＰＵ
３１０    メモリーＬＵＴ
３２０    行バッファー
４００、５００、７００、８００    ブロック図
４１０、５１０、７１０    テーブル
９００、９２０    カーネル
９１０、９３０、９５０    入力フィーチャーマップ
【図１Ａ】
2019117628.tif 000005
【図１Ｂ】
2019117628.tif 000006
【図２Ａ】
2019117628.tif 000007
【図２Ｂ】
2019117628.tif 000008
【図２Ｃ】
2019117628.tif 000009
【図２Ｄ】
2019117628.tif 000010
【図３】
2019117628.tif 000011
【図４】
2019117628.tif 000012
【図５】
2019117628.tif 000013
【図６】
2019117628.tif 000014
【図７】
2019117628.tif 000015
【図８】
2019117628.tif 000016
【図９】
2019117628.tif 000017