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

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

▶ アーム・リミテッドの特許一覧

<>
  • 特許-方法及びデータ処理システム 図1
  • 特許-方法及びデータ処理システム 図2
  • 特許-方法及びデータ処理システム 図3
  • 特許-方法及びデータ処理システム 図4
  • 特許-方法及びデータ処理システム 図5
  • 特許-方法及びデータ処理システム 図6
  • 特許-方法及びデータ処理システム 図7
  • 特許-方法及びデータ処理システム 図8
  • 特許-方法及びデータ処理システム 図9a
  • 特許-方法及びデータ処理システム 図9b
  • 特許-方法及びデータ処理システム 図10a
  • 特許-方法及びデータ処理システム 図10b
  • 特許-方法及びデータ処理システム 図11
  • 特許-方法及びデータ処理システム 図12
  • 特許-方法及びデータ処理システム 図13
  • 特許-方法及びデータ処理システム 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-05-28
(45)【発行日】2025-06-05
(54)【発明の名称】方法及びデータ処理システム
(51)【国際特許分類】
   H03M 7/40 20060101AFI20250529BHJP
【FI】
H03M7/40
【請求項の数】 15
【外国語出願】
(21)【出願番号】P 2021017501
(22)【出願日】2021-02-05
(65)【公開番号】P2021141576
(43)【公開日】2021-09-16
【審査請求日】2023-12-14
(31)【優先権主張番号】16/809,086
(32)【優先日】2020-03-04
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】100107456
【弁理士】
【氏名又は名称】池田 成人
(74)【代理人】
【識別番号】100162352
【弁理士】
【氏名又は名称】酒巻 順一郎
(74)【代理人】
【識別番号】100123995
【弁理士】
【氏名又は名称】野田 雅一
(72)【発明者】
【氏名】ペルソン, エリック
(72)【発明者】
【氏名】ヒューゴソン, スヴェン オラ ヨハネス
【審査官】原田 聖子
(56)【参考文献】
【文献】米国特許出願公開第2019/0370667(US,A1)
【文献】国際公開第2010/000662(WO,A1)
【文献】特開2017-118547(JP,A)
【文献】A. Chandra , K. Chakrabarty,System-on-a-chip test-data compression and decompression architectures based on Golomb codes,IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,2001年03月,vol. 20, no. 3,pp. 355-368
(58)【調査した分野】(Int.Cl.,DB名)
H03M 7/40
(57)【特許請求の範囲】
【請求項1】
処理要素による使用のための方法であって、
複数の可変長符号を取得することであって、各々の可変長符号は、可変長の単項部分及び固定長の仮数部分を有する、取得することと、
前記可変長符号を前記可変長符号の単項部分及び前記可変長符号の仮数部分に分離することと、
前記可変長符号の前記単項部分からのデータを含むデータストリームの各々のチャンクに対し、前記単項部分からの前記データが、前記データストリームに追加されないで残っている前記可変長符号の前記単項部分の量に基づいて判定されたサイズを有する前記データストリームのチャンク内のサブストリームを形成するように、選択されたチャンク構造を使用して、前記チャンク内の前記データストリームを形成することと、
を備えた、方法。
【請求項2】
前記可変長符号の前記仮数部分は、切り捨てられた二値部分である、請求項に記載の方法。
【請求項3】
各々の可変長符号の前記単項部分は、前記可変長符号によって表される元の値の商を表す、請求項またはに記載の方法。
【請求項4】
各々の可変長符号の前記仮数部分は、前記可変長符号によって表される値の余りを表す固定長の二値符号である、請求項のいずれか1項に記載の方法。
【請求項5】
前記可変長符号は、ゴロムライス符号である、請求項1~のいずれか1項に記載の方法。
【請求項6】
前記データストリームの各々のチャンクは、
前記可変長符号の前記単項部分からのデータ及び前記可変長符号の前記仮数部分からのデータを含むこと、
前記可変長符号の前記単項部分からのデータを含み且つ前記可変長符号の前記仮数部分からのデータを含まないこと、または
前記可変長符号の前記仮数部分からのデータを含み且つ前記可変長符号の前記単項部分からのデータを含まないこと
が可能である、請求項1~のいずれか1項に記載の方法。
【請求項7】
前記データストリームは、予め定められた長さのセルから形成され、
前記データストリームに追加されないで残っている前記可変長符号の前記単項部分の前記量は、前記データストリームに追加されないで残っているセルと関連付けられた前記可変長符号の前記単項部分のビットの数である、請求項に記載の方法。
【請求項8】
前記データストリームは、予め定められた長さのセルから形成され、
前記データストリームの各々のセルは、ヘッダ及び複数のチャンクを有し、
前記ヘッダは、前記セルの長さ及び前記セル内の前記可変長符号の前記単項部分の長さを示す、請求項1~のいずれか1項に記載の方法。
【請求項9】
第2の複数の可変長符号を取得することと、
前記第2の複数の可変長符号を前記可変長符号の単項部分及び前記可変長符号の仮数部分に分離することと、を更に備え、
チャンク内のデータストリームを形成することは、
第1の複数の可変長符号及び第2の複数の可変長符号のうちの少なくとも1つの単項部分からのデータを含む前記データストリームの各々のチャンクに対し、前記第1の複数の可変長符号の単項部分の数及び前記第2の複数の可変長符号の単項部分の数前記チャンクに含めること
を含む、請求項1に記載の方法。
【請求項10】
データストリームを形成することは、チャンクに含まれた前記第1の複数の可変長符号の単項部分の数とチャンクに含まれた前記第2の複数の可変長符号の単項部分の数との間の差を記録するバランス値を維持することを含み、
記バランス値、チャンクに含まれる前記第1の複数の可変長符号の前記単項部分の数及び前記第2の複数の可変長符号の前記単項部分の数を判定するために使用される、請求項に記載の方法。
【請求項11】
前記複数の可変長符号は、ニューラルネットワークにおける使用のための重み値を表す、請求項1~10のいずれか1項に記載の方法。
【請求項12】
前記複数の可変長符号は、ニューラルネットワークの層の出力である活性化ストリーム内の値を表す、請求項1~11のいずれか1項に記載の方法。
【請求項13】
ータストリームを復号する方法であって、
複数の可変長符号に関連するデータを含むデータストリームを取得することであって、各々の可変長符号は、可変長の単項部分及び固定長の仮数部分を有し、前記データストリームは、チャンク内で形成され、前記データストリームの少なくとも1つのチャンクは、前記可変長符号の単項部分から形成されたデータのサブストリームを含む、取得することと、
前記データストリームから抽出されないで残っている前記可変長符号の単項部分の量に基づいて選択されたチャンク構造を使用して、前記データストリームの前記チャンク内の前記サブストリームを識別及び抽出することと、
を備えた、方法。
【請求項14】
前記可変長符号の各々の単項部分は、ストップビットを有する単項データとして符号化され、前記方法は、
記データストリームの複数のチャンクから、複数の識別及び抽出されたサブストリームを取得することと、
各々の抽出されたサブストリームを、前記サブストリーム内のストップビットのビット位置のリストを表す中間形式に変換することと、
複数の前記変換されたサブストリームを組み合わせて、ビット位置の拡大されたリストを形成することと、
ビット位置の前記拡大されたリスト内の前記ストップビットの間の距離を測定して、前記データストリーム内の前記可変長符号の前記単項部分の値を回復することと、
を更に備えた、請求項13に記載の方法。
【請求項15】
処理要素及び記憶装置を備えたデータ処理システムであって、前記記憶装置は、符号部分を記憶し、前記符号部分は、前記処理要素によって実行されるとき、前記データ処理システムに、
複数の可変長符号を取得することであって、各々の可変長符号は、可変長の単項部分及び固定長の仮数部分を有する、取得することと
前記可変長符号を前記可変長符号の単項部分及び前記可変長符号の仮数部分に分離することと
前記可変長符号の前記単項部分からのデータを含むデータストリームの各々のチャンクに対し、前記単項部分からの前記データが、前記データストリームに追加されないで残っている前記可変長符号の前記単項部分の量に基づいて判定されたサイズを有する前記データストリームのチャンク内のサブストリームを形成するように、選択されたチャンク構造を使用して、前記チャンク内の前記データストリームを形成することと、
を実行させる、データ処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
[0001]本発明は、データ処理システムに関し、特に、可変長符号を処理するデータ処理システムに関する。
【背景技術】
【0002】
[0002]当業者に既知である可逆圧縮データ圧縮を実行する1つの方式は、値をゴロムライス符号に変換することである。数値をゴロムライス符号に変換するために、除数として知られるパラメータが選択される。ゴロムライス符号を生成するために、数値が除数によって除算されて2つの部分を生成する。第1の部分は、除数が完全に数値に何回除算したかである商である。第2の部分は、除数を完全に数値に除算した後、存在する場合の残りの数である余りである。
【0003】
[0003]ゴロムライス符号の例が図1に示される。図1に示される例では、0~10の値がゴロムライス符号として示される。ゴロムライス符号の第1の部分、商は、単項フォーマットにおいて表される。このフォーマットでは、商の値に等しい「1」の数と、それに続いて「0」であるストップビットによって数が表される。例えば、数9の単項部分は、3が9に3回除算されることを理由に、3つの「1」とストップビット「0」がそれに続く「1110」である。ゴロムライス符号の第2の部分は、固定長二値部分である。この例における除数が「3」であるので、余りは、0、1、または2のみであることがある。したがって、これは、2ビットの固定長二値によって表されることがある。ゴロムライス符号の各々における最後の2ビットは、二値形式において余りを表す。余りは、ゴロムライス符号の単項部分のストップビットの後に現れることを理由に、ゴロムライス符号の「仮数」と称されることがある。
【0004】
[0004]ゴロムライス符号の単項部分のサイズが変化するので、ゴロムライス符号は、可変長符号のタイプである。各々の符号が復号のために別個に考えられる必要があることを理由に、そのような可変長符号がプロセッサにおいて復号するのに低速であることがある。
【発明の概要】
【0005】
[0005]第1の態様に従って、処理要素による使用のための方法が提供され、方法は、複数の可変長符号を取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有する、取得することと、可変長符号を可変長符号の第1の部分及び可変長符号の第2の部分に分離することと、可変長符号の第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、第1の部分からのデータが、制御ルールに従って判定されたサイズを有する処理済みストリームのチャンク内のサブストリームを形成するように、制御ルールのセットを使用して、チャンク内の処理済みストリームを形成することと、を含む。
【0006】
[0006]第2の態様に従って、処理済みデータストリームを復号する方法が提供され、方法は、複数の可変長符号に関連するデータを含む処理済みデータストリームを取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有し、処理済みストリームは、チャンク内で形成され、処理済みストリームの少なくとも1つのチャンクは、可変長符号の第1の部分から形成されたデータのサブストリームを含む、取得することと、フロー制御ルールのセットを使用して、処理済みデータストリームのチャンク内のサブストリームを識別及び抽出することと、を含む。
【0007】
[0007]第3の態様に従って、処理要素及び記憶装置を含むデータ処理システムが提供され、記憶装置は、符号部分を記憶し、符号部分は、処理要素によって実行されるとき、データ処理システムに、複数の可変長符号を取得させ、各々の可変長符号は、可変長の第1の部分及び第2の部分を有し、可変長符号を可変長符号の第1の部分及び可変長符号の第2の部分に分離させ、可変長符号の第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、第1の部分からのデータが、制御ルールに従って判定されたサイズを有する処理済みストリームのチャンク内のサブストリームを形成するように、制御ルールのセットを使用して、チャンク内の処理済みストリームを形成させる。
【0008】
[0008]添付図面に示されるような実施例を例としてのみ参照して、本技術が更に説明される。
【図面の簡単な説明】
【0009】
図1】[0009]図1は、3の除数を使用して0~10の値のゴロムライス符号を示す表である。
【0010】
図2】[0010]図2は、活性化データを記憶装置に書き込むニューラル処理ユニットの構成要素を示す。
【0011】
図3】[0011]図3は、記憶のためにゴロムライス符号のストリームを処理することを示すフローチャートである。
【0012】
図4】[0012]図4は、ゴロムライス符号の分離の間のデータのストリームの構造を示す。
【0013】
図5】[0013]図5は、エンコーダ及びデコーダによって使用される複数のチャンク構造を示す。
【0014】
図6】[0014]図6は、エンコーダによって実行されるステップを示すフローチャートである。
【0015】
図7】[0015]図7は、エンコーダによって符号化されたストリームの第1のチャンクを復号するときのチャンク構造を決定するステップを示すフローチャートである。
【0016】
図8】[0016]図8は、エンコーダによって符号化されたストリームの後続のチャンクを復号するときのチャンク構造を決定するステップを示すフローチャートである。
【0017】
図9a】[0017]図9aは、単項データを復号するステップを示すフローチャートである。
【0018】
図9b】[0018]図9bは、単項値の集合を復号するときのビット処理を示す。
【0019】
図10a】[0019]図10aは、モバイルデバイスを示す。
【0020】
図10b】[0020]図10bは、モバイルデバイスのハードウェアを示す図である。
【0021】
図11】[0021]図11は、モバイルデバイスにインストールされたシステムアーキテクチャを示す図である。
【0022】
図12】[0022]図12は、ニューラル処理ユニットの構成要素を示す図である。
【0023】
図13】[0023]図13は、重み値に関連する単項データを符号化するためのフロー制御ルールを示す表である。
【0024】
図14】[0024]図14は、重み値に関連する単項データを復号するためのフロー制御ルールを示す表である。
【発明を実施するための形態】
【0025】
[0025]添付図面を参照して実施形態を議論する前に、実施形態及び関連する利点の以下の説明が提供される。
【0026】
[0026]一実施形態に従って、処理要素による使用のための方法が提供され、方法は、複数の可変長符号を取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有する、取得することと、可変長符号を可変長符号の第1の部分及び可変長符号の第2の部分に分離することと、可変長符号の第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、第1の部分からのデータが、制御ルールに従って判定されたサイズを有する処理済みストリームのチャンク内のサブストリームを形成するように、制御ルールのセットを使用して、チャンク内の処理済みストリームを形成することと、を含む。このようにして、処理済みストリームは、制御ルールから予測可能である可変長符号の第1の部分のサブストリームを有することができる。これは、プロセッサによる可変長符号の第1の部分のより効率的な処理を可能にすることができる。
【0027】
[0027]可変長符号の第1の部分は、単項部分であってもよく、可変長符号の第2の部分は、仮数部分であってもよい。いくつかのケースでは、可変長符号の仮数部分は、切り捨てられた二値部分である。各々の可変長符号の単項部分は、可変長符号によって表される元の値の商を表してもよい。更に、いくつかのケースでは、各々の可変長符号の仮数部分は、可変長符号によって表される元の値の余りを表す固定長の二値符号である。いくつかの実装態様では、可変長符号は、ゴロムライス符号である。
【0028】
[0028]処理済みストリームの各々のチャンクは、可変長符号の第1の部分からのデータ及び可変長符号の第2の部分からのデータを含んでもよく、可変長符号の第1の部分からのデータを含んでもよく、及び可変長符号の第2の部分からのデータを含まなくてもよく、または可変長符号の第2の部分からのデータを含んでもよく、及び可変長符号の第1の部分からのデータを含まなくてもよい。
【0029】
[0029]制御ルールは、各々のチャンク内の単項サブストリームのサイズを直列に判定するように構成されてもよい。いくつかのケースでは、制御ルールは、処理済みストリームに追加されないで残っている可変長符号の単項部分の量に基づいて、各々のチャンク内の単項サブストリームのサイズのサイズを判定するように構成されている。いくつかの実装態様に対し、処理済みストリームは、予め定められた長さのセルから形成され、処理済みストリームに追加されないで残っている可変長符号の単項部分の測定は、処理済みストリームに追加されないで残っているセルと関連付けられた可変長符号の単項部分のビットの数である。セル内のデータを処理することによって、フロー制御ルールは、単項サブストリームのサイズがデコーダによって予測されることを可能にすることができる。
【0030】
[0030]制御ルールは、予め定められたチャンク構造のセットの間で選択するルールであってもよい。各々のチャンク構造は、チャンク内の各々の位置にあるべきであるデータのタイプを定義してもよい。チャンク構造のセットは、セル内の第1のチャンクに対する少なくとも1つのチャンク構造を含んでもよい。セル内の第1のチャンクに対する少なくとも1つのチャンク構造は、セルに含まれるデータに関する情報を含むヘッダ部分を含んでもよい。
【0031】
[0031]第1の実施形態に従ったいくつかの方法では、処理済みストリームは、予め定められた長さのセルから形成され、処理済みストリームの各々のセルは、ヘッダ及び複数のチャンクを有し、ヘッダは、セルの長さ及びセル内の可変長符号の単項部分の長さを示す。これは、復号の間にセルに残っている単項データの量をデコーダが追跡することを可能にすることができる。
【0032】
[0032]第1の実施形態は、第2の複数の可変長符号を取得することと、第2の複数の可変長符号を可変長符号の第1の部分及び可変長符号の第2の部分に分離することと、を更に含んでもよく、チャンク内の処理済みストリームを形成するステップは、第1の複数の可変長符号及び第2の複数の可変長符号のうちの少なくとも1つの第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、フロー制御ルールが第1の複数の可変長符号の第1の部分の数及び第2の複数の可変長符号の第1の部分の数がチャンクに含まれると判定するように、制御ルールのセットを使用する。
【0033】
[0033]いくつかの実装態様では、処理済みストリームを形成することは、チャンクに含まれた第1の複数の可変長符号の第1の部分の数とチャンクに含まれた第2の複数の可変長符号の第1の部分の数との間の差を記録するバランス値を維持することを含み、フロー制御ルールは、バランス値に基づいて、チャンクに含まれる第1の複数の可変長符号の第1の部分の数及び第2の複数の可変長の第1の部分の数を判定する。
【0034】
[0034]いくつかの用途では、複数の可変長符号は、ニューラルネットワークにおける使用のための重み値を表す。他の用途では、複数の可変長符号は、ニューラルネットワークの層の出力である活性化ストリーム内の値を表す。
【0035】
[0035]第2の実施形態に従って、処理済みデータストリームを復号する方法が提供され、方法は、複数の可変長符号に関連するデータを含む処理済みデータストリームを取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有し、処理済みストリームは、チャンク内で形成され、処理済みストリームの少なくとも1つのチャンクは、可変長符号の第1の部分から形成されたデータのサブストリームを含む、取得することと、フロー制御ルールのセットを使用して、処理済みデータストリームのチャンク内のサブストリームを識別及び抽出することと、を含む。
【0036】
[0036]いくつかの実装態様では、可変長符号の各々の第1の部分は、ストップビットを有する単項データとして符号化される。方法は、処理済みデータの複数のチャンクから、複数の識別及び抽出されたサブストリームを取得することと、各々の抽出されたサブストリームを、サブストリーム内のストップビットのビット位置のリストを表す中間形式に変換することと、複数の変換されたサブストリームを組み合わせて、ビット位置の拡大されたリストを形成することと、ビット位置の拡大されたリスト内のストップビットの間の距離を測定して、第1のストリーム内の可変長符号の第1の部分の値を回復することと、を更に含んでもよい。
【0037】
[0037]いくつかの実施形態では、フロー制御ルールは、処理済みストリームから復号されないで残っている可変長符号の単項部分の量に基づいて、復号されることになる各々のチャンク内の単項サブストリームのサイズを判定するように構成されている。処理済みストリームは、予め定められた長さのセルから形成されてもよく、処理済みストリームから復号されないで残っている可変長符号の単項部分の量は、処理済みストリームから復号されないで残っているセルと関連付けられた可変長符号の単項部分のビットの数であってもよい。
【0038】
[0038]他の実施形態では、処理済みストリームは加えて、第2の複数の可変長符号に属する可変長符号の第1の部分を含んでもよい。フロー制御ルールは、複数の可変長符号及び第2の複数の可変長符号のうちの少なくとも1つの第1の部分のデータを含む、復号されることになる処理済みストリームの各々のチャンクに対し、フロー制御ルールが、複数の可変長符号の第1の部分の数及び第2の複数の可変長符号の第1の部分の数が復号されることになるチャンクに含まれると判定するように構成されてもよい。
【0039】
[0039]処理済みストリームのチャンク内のサブストリームを識別及び抽出することは、処理済みストリームから抽出された複数の可変長符号の第1の部分の数と処理済みストリームから抽出された第2の複数の可変長符号の第1の部分の数との間の差を記録するバランス値を維持することを含んでもよい。フロー制御ルールは、バランス値に基づいて、チャンクから抽出されるべき複数の可変長符号の第1の部分の数及び第2の複数の可変長符号の第1の部分の数を判定するために使用されてもよい。
【0040】
[0040]第3の実施形態に従って、符号部分を記憶した非一時的コンピュータ可読記憶媒体が提供され、符号部分は、処理要素上で実行されるとき、複数の可変長符号を取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有する、取得すること、可変長符号を可変長符号の第1の部分及び可変長符号の第2の部分に分離すること、並びに可変長符号の第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、第1の部分からのデータが、制御ルールに従って判定されたサイズを有する処理済みストリームのチャンク内のサブストリームを形成するように、制御ルールのセットを使用して、チャンク内の処理済みストリームを形成すること、の方法を処理要素に実行させる。
【0041】
[0041]第4の実施形態に従って、符号部分を記憶した非一時的コンピュータ可読記憶媒体が提供され、符号部分は、処理要素上で実行されるとき、処理済みデータストリームを復号する方法を処理要素に実行させ、方法は、複数の可変長符号に関連するデータを含む処理済みデータストリームを取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有し、処理済みストリームは、チャンク内で形成され、処理済みストリームの少なくとも1つのチャンクは、可変長符号の第1の部分から形成されたデータのサブストリームを含む、取得することと、フロー制御ルールのセットを使用して、処理済みデータストリームのチャンク内のサブストリームを識別及び抽出することと、を含む。
【0042】
[0042]第5の実施形態に従って、処理要素及び記憶装置を含むデータ処理システムが提供され、記憶装置は、符号部分を記憶し、符号部分は、処理要素によって実行されるとき、データ処理システムに、複数の可変長符号を取得させ、各々の可変長符号は、可変長の第1の部分及び第2の部分を有し、可変長符号を可変長符号の第1の部分及び可変長符号の第2の部分に分離させ、可変長符号の第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、第1の部分からのデータが、制御ルールに従って判定されたサイズを有する処理済みストリームのチャンク内のサブストリームを形成するように、制御ルールのセットを使用して、チャンク内の処理済みストリームを形成させる。
【0043】
[0043]第6の実施形態に従って、処理要素及び記憶装置を含むデータ処理システムが提供され、記憶装置は、符号部分を記憶し、符号部分は、処理要素によって実行されるとき、データ処理システムに、複数の可変長符号に関連するデータを含む処理済みデータストリームを取得させ、各々の可変長符号は、可変長の第1の部分及び第2の部分を含み、処理済みストリームは、チャンク内で形成され、処理済みストリームの少なくとも1つのチャンクは、可変長符号の第1の部分から形成されたデータのサブストリームを含み、フロー制御ルールのセットを使用して、処理済みデータストリームのチャンク内のサブストリームを識別及び抽出させる。
【0044】
[0044]ここで、図面を参照して特定の実施形態が説明される。
【0045】
[0045]図2は、全てではないがニューラル処理ユニット(NPU)の構成要素2の一部を示し、構成要素2は、人工知能アプリケーションに関連する計算、特に、ニューラルネットワークに関連する計算を実行する特殊チップである。言い換えると、NPUは、ニューラルネットワークに関連する特定の計算のハードウェア加速化を可能にする。構成要素2は、活性化値をNPUの外部のDRAM(図示せず)に書き込む構成要素である。
【0046】
[0046]ニューラルネットワークに関連する計算を実行するとき、計算は、ニューラルネットワークの各々の層に対して実行されてもよい。それらの計算は、活性化データとして知られる出力を生成し、活性化データは、大容量であることがあり、そのデータを使用して更なる計算を実行することができる前に記憶される必要がある。活性化データをメモリに記憶すること、及び活性化データをメモリから取り出すことは、外部メモリからプロセッサへのデータ転送に対する制約に起因して、相対的に低速の処理であることがある。したがって、プロセッサ性能を改善するために、ゴロムライス符号を使用して活性化層からのデータを圧縮することが望ましい。
【0047】
[0047]構成要素2は、記憶のために活性化データを処理するように構成される。活性化データが受信され、データのタイルにグループ化される。データのタイルは、要素の8×8のグループとして定義され、要素は、8ビットの圧縮されていない活性化データである。エンコーダ20の形式にある処理要素は、活性化データをゴロムライス符号に変換することによって、受信された活性化データを圧縮するように構成される。以下で説明される更なるステップは次いで、活性化データを復号するのをより容易にするために実行される。
【0048】
[0048]ゴロムライス符号などの可変長符号を復号するとき、高レートにおいて構文解析することが困難である。これは、先行するゴロムライス符号の長さが、次のゴロムライス符号を識別及び復号することができる前に既知である必要があるように、ゴロムライス符号の間の直列依存性が存在することを理由とする。したがって、ゴロムライス符号を復号する典型的なハードウェア実装態様は、単一のパーサを使用して直接構文解析するとき、クロックサイクルごとに1つまたは2つのゴロムライス符号のレートを達成することができる。
【0049】
[0049]第1の特定の実施形態において説明される技術は、異なるアプローチを取る。図3は、圧縮されていない活性化データを受信するエンコーダ20によって実行されるステップを示すフローチャートである。ステップS30では、このケースでは、エンコーダ20による変換によって、ゴロムライス符号が取得される。次いで、ステップS31では、エンコーダ20は、ゴロムライス符号を単項値のストリーム及び余り値のストリームに分離し、それらを図2に示されたRAM21に記憶する。
【0050】
[0050]図4は、3つのデータストリームを示す。ソースデータストリーム40は、ゴロムライス符号のストリームである。ソースデータストリーム40は、値GR1~GR5によって示される一連のゴロムライス符号を含む。各々のゴロムライス符号は、関連する技術の説明において説明されるタイプの可変長単項部分及び固定長二値部分を有する。3ビットの固定長二値部分が図3に示されるが、二値部分の長さは重要ではなく、他の長さが使用されてもよい。エンコーダ20は、ゴロムライス符号を2つの部分に分割して、図4に示される2つの更なるストリーム41及び42を生成する。第1のストリーム41は、単項ストリームであり、第2のストリーム42は、余りのストリームであり、各々の二値は、固定長を有する。
【0051】
[0051]ステップS32では、図2に示されたスティッチプロセッサ22は、第1のストリーム及び第2のストリームを共にスティッチして、処理済みストリームを形成する。これは、セルごとに行われ、各々のセルは、2112バイトスロットに記憶された圧縮されていないデータの32個のタイル(2、048個の要素)を表す。何らかのオーバヘッドを許容し、64バイトの全体数に切り上げるために、スロットは、セルよりも大きい。
【0052】
[0052]各々のセルは、スティッチプロセッサ22によって複数のチャンク内で形成される。セルの第1のチャンクは、ヘッダを常に含む。ストリーム4からの単項データは、スティッチプロセッサ22によって、32ビットの部分において処理済みストリームのチャンクに常にスティッチされる。
【0053】
[0053]図5及び6を参照してここで説明されるように、セルは、スティッチプロセッサ22によって、フロー制御ルールのセットを使用して形成される。図5は、スティッチプロセッサ22がセルを形成するために使用することができるチャンクの異なる構造を示し、図6は、セルを形成するときにスティッチプロセッサ22によって実行されることになるステップを示す。
【0054】
[0054]上で言及されたように、セルの第1のチャンクは、ヘッダを含む必要があり、ヘッダは、セルの長さ及びセル内に含まれる単項サブストリームの長さに関する情報を提供する。セル内の余り値の長さは、ヘッダに含まれないが、セルの長さ及び単項サブストリームの長さから導出されることが可能である。
【0055】
[0055]図5は、構文解析の効率性のために、ゴロムライス符号を復号するデコーダの単一のクロックサイクルにおいて各々のチャンクが消費されることを可能にするために設計された、利用可能なチャンクフォーマットを示す。示されるチャンク構造は、2つのカテゴリに分割され、図5に示される最上部の2つのチャンク構造51及び52は、セルに対する第1のチャンク構造であり、セルの第1のチャンクを形成するときの使用のために選択されてもよい。両方のチャンクフォーマット構造は、32ビット長のヘッダ部分を含む。図5における第1のチャンク構造51及び52の下の、次の5つのチャンク構造53~57は、セルに含まれることになる圧縮されていないデータの32個のタイルに対応する第1のストリーム及び第2のストリームからの残りの単項データ及び余りデータを含むために、セル内の第1のチャンクがエンコーダ20によって放出された後に使用される。
【0056】
[0056]使用する適切なチャンク構造を選択するために、エンコーダ20は、フロー制御ルールのセットを使用する。次のチャンクに対するチャンク構造が識別されると、チャンク構造は、適切なデータによりポピュレートされてもよく、放出されてもよい。スティッチプロセッサ22によって使用されるフロー制御ルールは、以下の通りである。セルに対する第1のチャンク構造を選択するとき、図5に示される第1のチャンク構造51は、チャンクに含めるためのスティッチプロセッサ22に対して利用可能なセル内に単項データの32ビットよりも多いビットが存在するときに選択される。そうでなければ、チャンク52がいずれの単項データをも必要としないことを理由に、チャンク構造52は、セルの第1のチャンクを形成するために使用される。単項データの32ビットが利用可能でない状況は、セルに対する圧縮されていない活性化データのいずれもが単項部分を有さない、すなわち、各々の値がゴロムライス符号を生成するために使用される除数未満である場合に起こることがある。このケースでは、エンコーダ20は、ストップビットを単項データとして符号化しない。
【0057】
[0057]第1のチャンクが放出された後にエンコーダ20によって放出されたセル内の後続のチャンクに対し、セルに含めるための残っている単項データの128ビットよりも多くのビットが存在する場合、チャンク構造53が使用される。単項データが32ビット部分内のチャンクに含まれるので、最終的に、セルに対して符号化されないで残っている単項データの128ビットに満たないビットが存在する。セルに対して符号化されないで残っている単項データの96ビットが存在する場合、次いで、チャンク構造54が使用され、セルに対して符号化されないで残っている単項データの64ビットが存在する場合、次いで、チャンク構造55が使用され、セルに対して符号化されないで残っている単項データの32ビットが存在する場合、次いで、チャンク構造56が使用される。セルの全ての単項データが符号化されたケースでは、次いで、余りデータを放出するためにチャンク構造57が使用される。異なるタイル及び/または要素からの単項データを同一のチャンクに含めることができるように、下位にある活性化データの下位にあるタイル及び要素のグループ化に関わらず、上記チャンク構造に含まれる単項データが選択されることに留意されるべきである。
【0058】
[0058]上記方法が図6に示される。ステップS60では、図5に示されたチャンク構造51及び52から第1のチャンク構造が選択される。この選択は、上記説明されたような単項データの32ビットの利用可能性に依存する。チャンク構造を選択した後、スティッチプロセッサ22は、ヘッダ部分を生成する。スティッチプロセッサ22は、圧縮されていないデータの32個のタイルに基づいて、セルに含まれることになる単項サブストリームの長さを評価し、その長さを示す情報をヘッダ部分に追加する。セルに含まれることになる全てのデータの長さも評価され、ヘッダ部分に追加される。必要とされる場合、単項データ41の第1のストリームからのデータ、及び余りデータの第2のストリームからのデータは、スティッチプロセッサ22によって選択された、選択されたチャンク構造に従ってチャンクに追加される。
【0059】
[0059]ステップS61では、上で説明されたフロー制御ルールに従ってチャンク構造53~57から適切なチャンク構造を選択することによって、処理済みデータストリームの次のチャンクが形成される。チャンク構造を選択した後、単項データ41の第1のストリームからのデータ及び余りデータの第2のストリームからのデータにより、チャンク構造の関連部分を埋めることによって、チャンクが形成される。
【0060】
[0060]ステップS62では、スティッチプロセッサ22は、より多くのデータがチャンクに形成されるかどうかを判定する。より多くのデータがチャンクに形成される場合、方法は、次のチャンクを形成するようS61に進む。これ以上データが処理されない場合、方法は、S63に進み、終了する。
【0061】
[0061]上で説明された方法は、セル内の32個のタイルから完全な128ビットのチャンクを形成することができること、及び単項部分を32ビットの部分にスティッチすることができることを想定している。実際には、単項部分の第1のストリーム及び余り部分の第2のストリームが、それらが所望のサイズに到達するまでパディングするためのストップビット「0」を使用してパディングされるケースでは、それらの条件が満たされないことがある。セルに追加されるデータの長さがヘッダに記憶されるにつれて、セル内のデータの長さを識別すること、及び処理済みデータストリームを復号するときにパディングが開始する場所を識別することが可能である。
【0062】
[0062]次に、デコーダによって記憶された活性化データを復号する方法が図7及び8を参照して説明される。このケースでは、デコーダは、更なる計算における使用のために活性化データがDRAMから読み出されることを可能にするNPUの一部である。デコーダは、処理済みストリームをRAMに記憶するためにエンコーダ20によって使用された、図5に示されたチャンク構造の複製を記憶する。図7のステップS70では、デコーダは、復号するための活性化データのセルの第1のチャンクをRAMから受信する。デコーダは、ヘッダを読み出し、セル内の単項データの長さを識別する。ステップS71では、デコーダは、ヘッダにおいて指定された単項データの長さが32ビット以上であるかどうかを識別する。単項の長さが32ビット以上である場合、次いで、セルの第1のチャンクは、チャンク構造51に従って形成され、単項データ及び余りデータは、既知のチャンク構造に従ってチャンクから抽出されてもよい。ヘッダにおいて識別された単項データの長さが32ビット未満である場合(単項データが32ビット部分においてスティッチされることを理由に、ゼロである)、第1のチャンクは、チャンク構造52に従って形成され、それに従って、第1のチャンクが復号される。データを復号するとき、デコーダは、パラメータU_leftを維持し、パラメータU_leftは、セルのヘッダが検査されるときにセル内の単項の長さの値に最初に設定され、セル内の残っている単項データの量を記録するよう、単項データがチャンクから取り出されるたびに更新される。したがって、チャンク構造51が第1のチャンクに対して使用される場合、次いで、第1のチャンクから単項データの32ビットを抽出した後、パラメータU_leftは32ビットだけ減少する。
【0063】
[0063]図8は、各々の後続のチャンクに対してチャンク構造を判定するためにデコーダによって使用される方法を示す。ステップS80では、記憶された活性化データの後続のチャンクが受信される。ステップS81では、パラメータU_leftは、セルに対して抽出されないで残っている単項データの量が128ビット以上であるかどうかを判定するよう検査される。抽出されることになる単項データの量が128ビット以上である場合、デコーダは、チャンク構造53が使用されると判定する。ステップS82では、デコーダは、チャンク構造53に従って、チャンクからデータを抽出し、抽出された単項データの量を構成するよう、パラメータU_leftを更新する。
【0064】
[0064]単項データの128ビット未満のビットが抽出されないで残っている場合、方法は、ステップS83に進む。ステップS83では、パラメータU_leftは、セルに対して抽出されないで残っている単項データの量が96ビットに等しいかどうかを判定するよう検査される。抽出されることになる単項データの量が96ビットに等しい場合、デコーダは、チャンク構造54が使用されると判定する。ステップS84では、デコーダは、チャンク構造54に従って、チャンクからデータを抽出し、抽出された単項データの量を構成するよう、パラメータU_leftを更新する。
【0065】
[0065]単項データの96ビットよりも多いビットが抽出されないで残っている場合、方法は、ステップS85に進む。ステップS85では、パラメータU_leftは、セルに対して抽出されないで残っている単項データの量が64ビットに等しいかどうかを判定するよう検査される。抽出されることになる単項データの量が64ビットに等しい場合、デコーダは、チャンク構造55が使用されると判定する。ステップS86では、デコーダは、チャンク構造55に従って、チャンクからデータを抽出し、抽出された単項データの量を構成するよう、パラメータU_leftを更新する。
【0066】
[0066]単項データの64ビット未満のビットが抽出されないで残っている場合、方法は、ステップS87に進む。ステップS87では、パラメータU_leftは、セルに対して抽出されないで残っている単項データの量が32ビットに等しいかどうかを判定するよう検査される。抽出されることになる単項データの量が32ビットに等しい場合、デコーダは、チャンク構造56が使用されると判定する。ステップS86では、デコーダは、チャンク構造56に従って、チャンクからデータを抽出し、抽出された単項データの量を構成するよう、パラメータU_leftを更新する。抽出されることになる単項データの量が32ビットに等しくない場合(ゼロに等しい)、デコーダは、チャンク構造57が使用されると判定する。ステップS89では、デコーダは、チャンク構造57に従って、チャンクからデータを抽出する。
【0067】
[0067]図7及び8と関連して上で説明された処理に基づいて、デコーダは、エンコーダ20によってRAMに記憶されたデータの処理済みストリームから、単項データ41の第1のストリーム及び余りデータ42の第2のストリームを効率的に再生成することができる。図7及び8に示されるフロー制御ルールを使用することによって、デコーダは、入来する圧縮されたデータストリーム内のデータタイプを示すビットコストなしに、入来するストリーム内のいずれかのポイントにおいて発見されるデータのタイプを決定することができる。
【0068】
[0068]処理済みデータストリームから単項データ及び余りデータを抽出すると、デコーダは、ゴロムライス符号を復号して、圧縮されていない活性化データを再生成する必要がある。余りデータの第2のストリーム42は、固定長二値の配列であり、本分野において既知の技術を使用して復号するのに単純である。したがって、この処理はここでは更には議論されない。
【0069】
[0069]ここで、単項データ41の第1のストリームを復号することが図9aと関連して説明される。ステップS90では、単項データの8ビットブロックは、二値形式に変換され、二値形式は、二値ブロック内のストップビットの位置または位置(複数可)を示す。これは、ルックアップテーブルの使用によって行われる。ステップS91では、単項符号が8ビットブロックにわたって及ぶことがあるので、4個の8ビットブロックは32ビットブロックに組み合わされ、次いで、4個の32ビットブロックは、128ビットブロックに組み合わされる。128ビットブロックは再度、ストップビット位置の位置のリストである。単項値を取り出すために、ステップS92では、単項符号の値を与える、各々の隣接するストップビット位置の値の間の差が取られる。
【0070】
[0070]単項データの8ビットブロックを中間形式に分析するためにルックアップテーブルを使用することによって、図9aの方法を達成することができる。これは、最上部の行94がその下に示される各々のバイト内のビット位置を識別する、図9bに示される。各々のバイトにおける最初のビットが「0」であり、最後のビットが「7」である。第2の行95は、単項データのバイトを示す。単項データにおけるストップビットが「0」であることが想起されよう。第3の行96に示される中間形式では、各々のバイトは、バイト内のストップビットの位置を示す最大で3ビット符号のリストに拡張される。32ビットセグメントへの4個の8ビットセグメントのRadix-4の組み合わせが実行され、図9bの第4の行97及び第5の行98に示される。第4の行97では、識別するビットのペアは、符号への最上位ビット(MSB)として追加される。最初のバイトに対し、値「00」が3ビット符号に追加され、第3のバイトに対し、値「10」が3ビット符号に追加される、などである。第5の行では、5ビット符号が連結されて、32ビットワード内のストップビット位置のリストを形成する。128ビットセグメントへの4個の32ビットセグメントの後続のRadix-4の組み合わせは、同様の処理を使用して、単項ストップビットの位置を示す7ビット符号のリストを生成する。ステップS92にあるように、隣接する値の減算は、単項データの長さ、よって、単項データの値を得る。
【0071】
[0071]上で説明されたように、第1の特定の実施形態は、セル内のゴロムライス符号の単項部分及び余り部分を組み合わせる。各々のセルは、単項部分及び余り部分の両方を含んでもよい。このセル内の活性化データの単項部分及び余り部分を混合することは、DRAMから取り出される処理済みデータストリームにわたって単項部分及び余り部分を拡散する利点を有する。これは、復号の前に単項データを記憶するためのデコーダにおける構文解析バッファのサイズを低減させることを可能にし、それによって、ハードウェア要件を低減させる。
【0072】
[0072]第1の特定の実施形態では、活性化データの圧縮が議論された。第2の特定の実施形態では、重み値の圧縮にその技術が適用される。図10aは、第2の特定の実施形態のモバイルデバイス10を示す。モバイルデバイス10が本明細書で説明されるが、説明される技術は、それらに限定されないが、タブレットコンピュータ、ラップトップコンピュータ、パーソナルコンピュータ(PC)、サーバなどを含む、ニューラルネットワークと関連付けられた重み値を取り出す、いずれかのタイプのコンピューティングデバイスに適用されてもよい。図10bは、モバイルデバイス10のハードウェアを示す。モバイルデバイス10は、CPU100の形式にある処理要素及びニューラル処理ユニット(NPU)の形式にある特殊プロセッサ101を含む。モバイルデバイス10は加えて、ランダムアクセスメモリ(RAM)102の形式にある記憶装置を含む。図10bには示されないが、追加の不揮発性記憶装置も設けられる。モバイルデバイス10は、ユーザに情報を表示するためのディスプレイ103、並びにWi-Fi(商標)及びLTE(商標)などの技術を使用して、様々なデータネットワークを通じてデータを転送及び受信するようモバイルデバイス10を接続することを可能にする通信システム104を含む。
【0073】
[0073]図11は、NPU101と関連付けられたモバイルデバイス10にインストールされたシステムアーキテクチャを示す。システムアーキテクチャは、ニューラルネットワークに関連する計算のハードウェア加速化のために、ソフトウェアアプリケーション110がNPU101にアクセスすることを可能にする。システムアーキテクチャは、携帯電話またはタブレットコンピュータなどの上での使用のための、Android(登録商標)ソフトウェアアーキテクチャである。
【0074】
[0074]ニューラルネットワーク処理に関連して特定の処理のハードウェア加速化のために、機械学習ライブラリ111を利用するソフトウェアアプリケーション110が開発されてきた。アプリケーション110から命令及びデータを受信する、Android(登録商標)ニューラルネットワークランタイムとして知られる、ランタイム環境112がライブラリの下に設けられる。ランタイム環境112は、ソフトウェアアプリケーション110とNPU101との間の通信、及び最も適切なハードウェアに対する実行タスクのスケジューリングに関与する中間層である。ランタイム環境112の直下に、少なくとも1つのプロセッサドライバ及び関連する特殊プロセッサ、このケースではNPU101が設けられる。デジタルシグナルプロセッサ、ニューラルネットワークプロセッサ、及びグラフィックプロセッサ(GPU)など、複数のプロセッサ及び関連するドライバがランタイム環境112の直下に設けられてもよい。しかしながら、冗長な説明を回避するために、第2の特定の実施形態と関連して、NPU101及び関連するプロセッサドライバ113のみが説明される。
【0075】
[0075]図12は、NPU101の部分構成要素を示す。NPU101は、モバイルデバイス10のRAM102への外部インタフェース上でのデータ転送を扱う、直接メモリアクセス構成要素121に接続された重みデコーダ120を含む。重みデコーダ120からの復号された値は、NPU101による後続の処理のために、乗算器アキュムレータユニット122に送信される。
【0076】
[0076]第2の特定の実施形態では、プロセッサドライバ113は、フロー制御ルールのセットによって判定されたチャンク構造に従って、重み値をRAM102に記憶する。続いて、直接メモリアクセス構成要素121は、RAM102から重み値を取り出し、重みデコーダ120は、チャンク構造からデータを抽出する。
【0077】
[0077]プロセッサドライバ113は、ニューラルネットワークに対する圧縮されていない(未処理の)重み値のセットを取得する。圧縮されていない重み値のソースは、ここで議論される技術を目的として考慮されない。しかしながら、一実施例では、圧縮されていない重み値は、アプリケーション110によって、Androidニューラルネットワークランタイムに提供されてもよい。
【0078】
[0078]重み値は、二値データなどの圧縮されていないフォーマットにおいて受信される。プロセッサドライバ113によって実行される第1のステップは、ゼロランコーディングである。ゼロランコーディングは、値0を有する重み値が重みストリームにおいて頻繁にある場合に利点を有する。n個の非ゼロ重み値を含む重み値のシーケンスに対し、重み値(weight_values)の配列は、非ゼロ重み値のシーケンスとしてプロセッサドライバ113によって形成される。プロセッサドライバ113は、非ゼロ重み値の間のゼロラン長(zruns)の配列をも識別する。ゼロランの配列は、n+1の長さを有する。zrunsのシーケンスでは、zruns[0]は、最初のゼロラン長であり、zruns[n]は、最後のゼロランである。
【0079】
[0079]例えば、以下の重みシーケンス、0、5、6、0、0、0、7、0を考える。プロセッサドライバ113は、3つの非ゼロ値が存在することを理由に、n=3をコーディングする。重み値のシーケンスは、weight_values={5,6,7}であり、ゼロランのシーケンスは、zruns={1,0,3,1}である。それらの2つのシーケンスから、元の重みシーケンスが再構築されてもよい。このようにして、プロセッサドライバ113は、重み値の入来するストリームをweight_valuesのシーケンス及びzrunsのシーケンスに分離する。
【0080】
[0080]weight_valuesは、第1の除数を使用してゴロムライス符号に変換され、zrunsは、第2の除数を使用してゴロムライス符号に変換される。第1の特定の実施形態と同一の方式では、ゴロムライス符号は、プロセッサドライバ113によって、単項ストリーム及び余りストリームに分離される。したがって、プロセッサドライバ113は、RAM102に記憶するためのチャンクに含まれることになる4個の異なるデータストリーム、weight_valuesの単項部分(wunary)、weight_valuesの余り部分(wremain)、zrunsの単項部分(zunary)、及びzrunsの余り部分(zremain)を生成する。それらの異なるデータタイプは、以下で説明されるように、フロー制御ルールのセットを使用してチャンク構造に追加される。
【0081】
[0081]プロセッサドライバ113によって受信された重み値は、各々のスライスの始めにあるスライスヘッダを有する、スライスにおいてコーディングされる。スライスヘッダは、weight_valueゴロムライス符号を生成するために使用される除数及びzrunゴロムライス符号を生成するために使用される除数に関する情報を含む。スライスヘッダはまた、スライスの長さに関する情報を含む。スライスヘッダの後、上で言及された異なるデータタイプを符号化するいくつかのチャンクが続く。チャンクは、単項値を含むことと余り値を含むこととの間で交互になり、余り値(wremain及びzremain)は、対応する単項値(wunary及びzunary)を含むチャンクの後にチャンクに含まれる。単項値(wunary及びzunary)を符号化する各々のチャンクは、12個の重みシンボル及び12個のゼロランシンボル(各々のシンボルは、ゴロムライス符号の第1の部分に対応する)の最大値を符号化する。数が変化する理由は、シンボルに対応する単項値が可変長の値であり、シンボルの長さが短いケースよりもシンボルの長さが長い場合、より少ない単項値を符号化することができることである。単項チャンクの長さは、デコーダの特性に基づいて選択される最大の予め定義された値を有する。単項データに続き、余り値を含むチャンクは、上で言及されたように、それらが先行するチャンクに含まれる単項シンボルに対応する余り値を含むことを理由に、可変長のチャンクである。
【0082】
[0082]単項データを含むチャンクに対し、単項値の追加は、それまでにスライス内のチャンクに追加されたwunary値の数から、それまでにスライス内のチャンクに追加されたzunary値の数を差し引いた値であるバランスを記録することによって制御される。バランスが8以上である場合、次いで、zunary値のみが次の単項チャンクに含まれる。バランスが0未満である場合、次いで、wunary値のみが次の単項チャンクに含まれる。
【0083】
[0083]単項データを含む第1のチャンクを形成するために、最大チャンクサイズを超えない限り、wunary値に値する最大で12個のシンボルがチャンクに追加される。チャンクの余りは次いで、zrunシンボルに対応するzunary値により埋められる。第2のチャンクは、第1のチャンクに追加されたシンボルの単項部分と関連付けられた余り値(wremain及びzremain)を含む。第3のチャンクを形成するとき、3つの可能性が存在する。第1に、上で説明されたバランスが0~7である場合、次いで、zrunシンボルに対応するzunary値により埋めることがそれに続く、チャンクに追加されたwunaryデータの最大で12個のシンボルにより、第1のチャンクについての同一の処理が続く。第2に、バランスが8以上である場合、次いで、チャンクがzunary値のみにより埋められる。これは、より多くのwunary値が符号化されている場合、zunary値が追いつくことを可能にする。第3に、バランスが0未満である場合、次いで、チャンクがwunary値のみにより埋められる。これは、より多くのzunary値が符号化されている場合、wunary値が追いつくことを可能にする。第4のチャンクは、第3のチャンクに含まれるシンボルに対応する余り値を含む。上で説明されたフロー制御ルールのロジックが図13に示される。この処理は、スライスの全てのデータが符号化されるまで続く。
【0084】
[0084]後に、重みデータは、直接メモリアクセス構成要素121によって重みデコーダ120における使用のために取り出される。重みデコーダ120は、次の通りに、直接メモリアクセス構成要素121によって取り出された処理済みデータのストリームからの抽出された値を識別する。チャンクを復号するロジックが図14に示される。前に説明された符号化と同様に、バランス値は、重みデコーダ120によって維持される。重みデコーダ120におけるバランス値は、それまでにスライス内のチャンクから抽出されたwunary値の数から、それまでにスライス内のチャンクから抽出されたzunary値の数を差し引いた値である。
【0085】
[0085]復号されることになる第1のチャンクでは、重みデコーダ120は、チャンクからの全てのデータが抽出されるまで、またはwunary値に値する12個のシンボルが抽出されるまでのいずれかで、wunary値を抽出することを開始する。第1のチャンク内の後続の値は、zunary値として抽出される。
【0086】
[0086]符号化することと関連して議論されるように、単項チャンクに続くチャンクは、先行するチャンク内のシンボルに対応する余り値を含む。先行するチャンク内のwunary値に値するシンボルの数は既知である。したがって、先行するチャンク内のwunary値に対応する同一の数のwremain値が抽出され、いずれかの後続の値がzremain値として抽出される。後続の単項チャンクに対し、バランスが検査される。バランスがゼロ未満である場合、重みデコーダ120は、全ての単項値をwunary値として抽出する。バランスが8またはそれよりも大きい場合、重みデコーダは、全ての値をzunary値として抽出する。バランスが0~7である場合、最大で12個のシンボルの第1の単項データがwunary値として抽出され、いずれかの後続の値がzunary値として抽出される。
【0087】
[0087]このようにして、重みデコーダ120は、データのタイプを識別するためのデータのストリーム内のビットコストなしに、zrunデータ及び重みシーケンスデータの両方の単項部分及び余り部分を抽出する。
【0088】
[0088]抽出されたzrunデータ及び重みシーケンスデータはその後、下位の重み値を回復するよう復号される。ゴロムライス符号の単項部分及び余り部分の復号が第1の実施形態と関連して議論されており、その説明は、ここでは繰り返されない。
【0089】
[0089]上記実施形態は、例示的な実施例として理解されることになる。更なる実施形態が想定される。例えば、第1の実施形態では、単項データが32ビット部分内のチャンクに追加される。しかしながら、部分のサイズは重要ではなく、図5に示されるチャンク構造は、チャンクを構文解析することになるプロセッサの特定の要件に応じて適合される。
【0090】
[0090]第2の実施形態は、Androidニューラルネットワークアーキテクチャを利用する。しかしながら、本明細書で説明される技術は、状況に応じて異なるソフトウェアアーキテクチャに適用されてもよい。例えば、サーバに基づく実装態様のコンテキストにおいて異なるソフトウェアアーキテクチャが使用されてもよい。
[項目1]
処理要素による使用のための方法であって、
複数の可変長符号を取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有する、取得することと、
前記可変長符号を前記可変長符号の第1の部分及び前記可変長符号の第2の部分に分離することと、
前記可変長符号の前記第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、前記第1の部分からの前記データが、制御ルールに従って判定されたサイズを有する前記処理済みストリームのチャンク内のサブストリームを形成するように、前記制御ルールのセットを使用して、前記チャンク内の前記処理済みストリームを形成することと、
を備えた、方法。
[項目2]
前記可変長符号の前記第1の部分は、単項部分であり、前記可変長符号の前記第2の部分は、仮数部分である、項目1に記載の方法。
[項目3]
前記可変長符号の前記仮数部分は、切り捨てられた二値部分である、項目2に記載の方法。
[項目4]
各々の可変長符号の前記単項部分は、前記可変長符号によって表される元の値の商を表す、項目2または3に記載の方法。
[項目5]
各々の可変長符号の前記仮数部分は、前記可変長符号によって表される値の余りを表す固定長の二値符号である、項目2~4のいずれか1項に記載の方法。
[項目6]
前記可変長符号は、ゴロムライス符号である、項目1~5のいずれか1項に記載の方法。
[項目7]
前記処理済みストリームの各々のチャンクは、前記可変長符号の前記第1の部分からのデータ及び前記可変長符号の前記第2の部分からのデータを含むことができ、前記可変長符号の前記第1の部分からのデータを含むことができ、及び前記可変長符号の前記第2の部分からのデータを含まず、または前記可変長符号の前記第2の部分からのデータを含むことができ、及び前記可変長符号の前記第1の部分からのデータを含まない、項目1~6のいずれか1項に記載の方法。
[項目8]
前記制御ルールは、各々のチャンク内の前記単項サブストリームのサイズを直列に判定するように構成されている、項目2~5のいずれか1項に記載の方法。
[項目9]
前記制御ルールは、前記処理済みストリームに追加されないで残っている前記可変長符号の前記単項部分の量に基づいて、各々のチャンク内の前記単項サブストリームの前記サイズのサイズを判定するように構成されている、項目8に記載の方法。
[項目10]
前記処理済みストリームは、予め定められた長さのセルから形成され、前記処理済みストリームに追加されないで残っている前記可変長符号の前記単項部分の前記量は、前記処理済みストリームに追加されないで残っているセルと関連付けられた前記可変長符号の前記単項部分のビットの数である、項目9に記載の方法。
[項目11]
前記処理済みストリームは、予め定められた長さのセルから形成され、前記処理済みストリームの各々のセルは、ヘッダ及び複数のチャンクを有し、前記ヘッダは、前記セルの長さ及び前記セル内の前記可変長符号の前記単項部分の長さを示す、項目1~10のいずれか1項に記載の方法。
[項目12]
第2の複数の可変長符号を取得することと、
前記第2の複数の可変長符号を前記可変長符号の第1の部分及び前記可変長符号の第2の部分に分離することと、を更に備え、
チャンク内の処理済みストリームを形成する前記ステップは、第1の複数の可変長符号及び第2の複数の可変長符号のうちの少なくとも1つの第1の部分からのデータを含む前記処理済みストリームの各々のチャンクに対し、フロー制御ルールが前記第1の複数の可変長符号の第1の部分の数及び前記第2の複数の可変長符号の第1の部分の数が前記チャンクに含まれると判定するように、前記制御ルールのセットを使用する、
項目1に記載の方法。
[項目13]
処理済みストリームを形成することは、チャンクに含まれた前記第1の複数の可変長符号の第1の部分の数とチャンクに含まれた前記前記第2の複数の可変長符号の第1の部分の数との間の差を記録するバランス値を維持することを含み、前記フロー制御ルールは、前記バランス値に基づいて、チャンクに含まれる前記第1の複数の可変長符号の前記第1の部分の数及び前記第2の複数の可変長の前記第1の部分の数を判定するために使用される、項目12に記載の方法。
[項目14]
前記複数の可変長符号は、ニューラルネットワークにおける使用のための重み値を表す、項目1~13のいずれか1項に記載の方法。
[項目15]
前記複数の可変長符号は、ニューラルネットワークの層の出力である活性化ストリーム内の値を表す、項目1~14のいずれか1項に記載の方法。
[項目16]
処理済みデータストリームを復号する方法であって、
複数の可変長符号に関連するデータを含む処理済みデータストリームを取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有し、前記処理済みストリームは、チャンク内で形成され、前記処理済みストリームの少なくとも1つのチャンクは、前記可変長符号の第1の部分から形成されたデータのサブストリームを含む、取得することと、
フロー制御ルールのセットを使用して、前記処理済みデータストリームの前記チャンク内の前記サブストリームを識別及び抽出することと、
を備えた、方法。
[項目17]
前記可変長符号の各々の第1の部分は、ストップビットを有する単項データとして符号化され、前記方法は、
前記処理済みデータの複数のチャンクから、複数の識別及び抽出されたサブストリームを取得することと、
各々の抽出されたサブストリームを、前記サブストリーム内のストップビットのビット位置のリストを表す中間形式に変換することと、
複数の前記変換されたサブストリームを組み合わせて、ビット位置の拡大されたリストを形成することと、
ビット位置の前記拡大されたリスト内の前記ストップビットの間の距離を測定して、前記第1のストリーム内の前記可変長符号の前記第1の部分の前記値を回復することと、
を更に備えた、項目16に記載の方法。
[項目18]
処理要素及び記憶装置を備えたデータ処理システムであって、前記記憶装置は、符号部分を記憶し、前記符号部分は、前記処理要素によって実行されるとき、前記データ処理システムに、
複数の可変長符号を取得させ、各々の可変長符号は、可変長の第1の部分及び第2の部分を有し、
前記可変長符号を前記可変長符号の第1の部分及び前記可変長符号の第2の部分に分離させ、
前記可変長符号の前記第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、前記第1の部分からの前記データが、制御ルールに従って判定されたサイズを有する前記処理済みストリームのチャンク内のサブストリームを形成するように、前記制御ルールのセットを使用して、前記チャンク内の前記処理済みストリームを形成させる、
データ処理システム。
図1
図2
図3
図4
図5
図6
図7
図8
図9a
図9b
図10a
図10b
図11
図12
図13
図14