本開示の解決策では、VLIW命令の実行をサポートするハードウェアアーキテクチャが提供される。該ハードウェアアーキテクチャが計算装置において実現される場合、該計算装置は、少なくとも制御回路と複数の処理回路とを含み、そのうち、複数の処理回路は異なる配置により接続されることによって、VLIW命令の実行をサポートする様々なアレイ構造を形成する。実現形態の不同によって、本開示のVLIW命令は、いくつかのシーンにおいて、個別の配置命令とデータ読み書き命令を組合わせて使用することができ、別のいくつかのシーンにおいては、前述の配置命令とデータ読み書き命令とを合併することによって、拡張されたVLIW命令を形成することができる。本開示のハードウェアアーキテクチャおよびVLIW命令により、計算操作とデータ読み取りを効率的に実行し、計算の応用シーンを拡張し、かつ計算オーバーヘッドを低減する。
本開示の文脈において、上記のVLIW命令、配置命令およびデータ読み書き命令は、ソフトウェアおよびバードウェアのインタラクションインタフェースの命令システムにおける命令であってもよい。それは、計算装置(または処理回路、プロセッサ)などのハードウェアが受信して処理するための、バイナリーまたは他の形式の機械言語であってもよい。VLIW命令、配置命令およびデータ読み書き命令は、プロセッサの操作を指示するための操作コードとオペランドを含んでもよい。異なる応用シーンに応じて、VLIW命令、配置命令およびデータ読み書き命令は、1つまたは複数の操作コードを含むことができる。前述のVLIW命令、配置命令およびデータ読み書き命令には1つの操作コードが含まれる場合、該操作コードは計算装置の複数の操作を指示することができる。
本開示の実施例における技術的解決策は、以下、本開示の実施例における添付図面を参照して、明確、完全に説明される。明らかに、説明される実施例は、本開示の全ての実施形態ではなく、一部の実施例である。本開示の実施例に基づいて、当業者が創造的な労力を払わない前提で得られたすべての他の実施例は、いずれも本開示の保護の範囲に属する。
図1は、本開示の一実施例に係る計算装置100を示すブロック図である。図1に示すように、該計算装置100は、制御回路102と複数の処理回路104とを含む。一実施例において、前記制御回路は、VLIW命令を取得し、解析し、解析後のVLIW命令を複数の処理回路104に送信する。別の一実施例において、複数の処理回路は、一次元または多次元アレイの構造で1つまたは複数の処理回路アレイとして接続され、該1つまたは複数の処理回路アレイは、解析後のVLIW命令に基づいてマルチスレッド操作を実行するように配置される。本開示において、解析後のVLIW命令は、演算命令、前処理命令、後処理命令および移動命令のうちの少なくとも1つを含み、演算命令、前処理命令、後処理命令および移動命令は、計算装置(または処理回路、プロセッサ)の内部で実行されるマイクロ命令または制御信号であってもよい。
異なる応用シーンに応じて、上記の接続は、複数の処理回路間でハードウェアに基づく配置接続(または「ハード接続」と称す)であってもよく、また、特定のハードウェア接続の基に、後述する配置命令により論理配置接続(または「ソフト接続」と称す)を行ってもよい。前述の1つまたは複数の処理回路に対する配置接続を実現するために、本開示の制御回路は、配置命令をさらに取得することができ、かつ複数の処理回路は、受信した配置命令に基づいて接続されることによって、前記1つまたは複数の処理回路アレイを形成する。一実施例において、前記処理回路アレイは、前記配置命令に基づいて、一次元または多次元方向の少なくとも1つの次元方向で閉ループ、即ち、本開示の文脈における「リング構造」を形成することができる。
一実施例において、前記制御回路は、前記配置命令に基づいて定数項とエントリのうちの少なくとも1つを前記処理回路アレイに送信するように配置されることによって、前記マルチスレッド操作を実行する。一応用シーンにおいて、定数項とエントリは、制御回路のレジスタに保存されてもよく、前記制御回路は、前記配置命令に基づいてレジスタから定数項とエントリを読み取ることができる。別の一応用シーンにおいて、定数項とエントリは、オンチップ記憶回路(図2または図3に示されているような記憶回路)またはオフチップ記憶回路に保存されてもよい。このような場合、配置命令には、前記定数項とエントリの記憶アドレスが含まれてもよく、前記処理回路アレイは、記憶アドレスに基づいて対応するオンチップまたはオフチップ記憶回路から、計算に必要な定数項および/またはエントリを取得することができる。
一実施例において、前記制御回路は、前記処理回路アレイに関する配置情報を記憶する、1つまたは複数のレジスタを含んでもよく、前記制御回路は、前記配置命令に基づいて前記レジスタから前記配置情報を読み取り、前記処理回路に送信するように配置されることによって、前記処理回路が前記配置情報に従って接続される。一応用シーンにおいて、前記配置情報は、プリセットされる、前記1つまたは複数の処理回路アレイを構成する処理回路の位置情報を含んでもよく、該位置情報は、例えば、処理回路の座標情報または符号情報を含んでもよい。前記処理回路アレイが閉ループを形成するように配置される場合、前記配置情報は、前記処理回路アレイが閉ループを形成することについてのリング配置情報をさらに含んでもよい。代替的に、一実施例において、上記の配置情報は、前記レジスタから読取れることではなく、配置命令により直接搬送されてもよい。この場合、処理回路は、受信した配置命令における位置情報に基づいて直接配置することによって、他の処理回路と共に閉ループのないアレイを形成するか、さらに閉ループのあるアレイを形成することができる。
配置命令またはレジスタを介して取得した配置情報に基づいて、二次元アレイを形成するように接続を配置する場合、前記二次元アレイに位置する前記処理回路は、その行方向、列方向または対角線方向の少なくとも1つの方向に、所定の二次元間隔パターンで同行、同列または同対角線の残りの1つまたは複数の前記処理回路と接続されるように配置されることによって、1つまたは複数の閉ループを形成する。ここで、前記所定の二次元間隔パターンは、前記接続で間隔を置いて配置された処理回路の数に関連付けられている。
さらに、前述配置命令または配置情報に基づいて、三次元アレイを形成するように接続を配置する場合、前記処理回路アレイは、複数の層からなる三次元アレイのリング方式で接続され、そのうち、各層は行方向、列方向および対角線方向に沿って配列された複数の前記処理回路の二次元アレイを含み、そのうち、前記三次元アレイに位置する前記処理回路は、その行方向、列方向、対角線方向および層方向の少なくとも1つの方向に、所定の三次元間隔パターンで同行、同列、同対角線または異なる層にある残りの1つまたは複数の処理回路と接続するように配置されることによって、1つまたは複数の閉ループを形成する。ここで、所定の三次元間隔パターンは、接続待ちの処理回路間の間隔の数および間隔層の数に関連付けられている。
一実施例において、本開示のVLIW命令は、1つまたは複数の演算命令を含み、前述の1つまたは複数の処理回路アレイは、前記演算命令に基づいてマルチスレッドの演算操作を実行するように配置されることができる。上記1つまたは複数の演算命令は、計算装置(または処理回路、プロセッサ)の内部で実行されるマイクロ命令または制御信号であってよく、それは、計算装置によって実行される必要がある1つまたは複数の操作を含む(または、指示する)ことができる。そのうち、演算操作には、加算操作、乗算操作、畳み込み操作、プーリング操作などの様々な操作が含まれることができ、本開示は、演算操作の具体的なタイプに対して制限しない。
一応用シーンにおいて、前記複数の処理回路アレイは、それぞれ、異なる演算命令を実行するように配置されることができる。他の一応用シーンにおいて、前記複数の処理回路アレイのうちの少なくとも2つの処理回路アレイは、同じ演算命令を実行するように配置されることができる。一実施例において、前記VLIW命令は、さらに移動命令を含んでもよい。処理回路アレイは、該移動命令に基づいて処理回路間でデータの移動操作を実行するように配置されることができる。一応用シーンにおいて、移動命令は、さらにマスク命令を含むことができ、それにより、前記処理回路アレイは、マスク命令に基づいてデータを選択的に移動するように配置され、例えば、マスクされているデータを移動せず、マスクされていないデータを移動することができる。一応用シーンにおいて、移動命令は、処理回路間でデータを移動するためのソースレジスタとターゲットレジスタを示すレジスタ識別子情報をさらに含んでもよく、それにより、処理回路は、前記レジスタ識別子情報に基づいて、前記ソースレジスタから前記ターゲットレジスタにデータを移動するように配置されることができる。
以上、図1を参照して本開示の計算装置について説明した。計算装置における1つまたは複数の処理回路アレイを用いて、該処理回路の操作機能に基づいて、本開示のVLIW命令は、計算装置で効率的に実行されることによって、マルチスレッド操作を完了し、それにより、並列演算の実行効率を向上させ、計算のオーバーヘッドを低減する。
図2は、本開示の別の一実施例に係る計算装置200を示すブロック図である。図により分かるように、図2の計算装置200は、計算装置100と同じ制御回路102と複数の処理回路104に加えて、記憶回路106も含む。一実施例において、制御回路は、データ読み書き命令を取得し、前記データ読み書き命令を記憶回路に送信するように配置されることによって、記憶回路は、データ読み書き命令に基づいて、マルチスレッド操作に関連するデータの読み取り操作と書き込み操作を実行することができる。
一応用シーンにおいて、上記の記憶回路は、複数の処理回路104に接続されるように、複数の方向にデータを伝送するインターフェースが配置され、それにより、処理回路の演算待ちデータ、演算プロセスの実行中に得られた中間結果および演算プロセスの実行後に得られた演算結果を、適宜記憶することができる。前述の状況に鑑みて、一応用シーンにおいて、本開示の記憶回路は、主記憶モジュールおよび/または主キャッシュモジュールを含んでもよく、そのうち、前記主記憶モジュールは、処理回路アレイで演算を実行するデータと演算を実行した後の演算結果を記憶するように配置されており、前記主キャッシュモジュールは、前記処理回路アレイで演算を実行した後の中間演算結果をキャッシュするように配置される。さらに、記憶回路は、オフチップ記憶媒体とデータを伝送するインターフェースをさらに備えており、それにより、オンチップシステムとオフチップシステムとの間でのデータ転送を実現することができる。
図3は、本開示のもう一実施例に係る計算装置300を示すブロック図である。図から分かるように、図3の計算装置300は、計算装置200と同じの制御回路102、複数の処理回路104および記憶回路106に加えて、さらにデータ操作回路108を含む。データ操作回路108は、前操作回路110と後操作回路112とを含む。このようなハードウェアアーキテクチャに基づいて、本開示のVLIW命令は、前処理命令および/または後処理命令を含んでもよく、そのうち、前記前操作回路は、前記前処理命令に基づいて、前記マルチスレッド操作の入力データに対して前処理操作を行うように配置されてもよく、前記後操作回路は、前記後処理命令に基づいて、前記マルチスレッド操作の出力データに対して後処理操作を行うように配置されてもよい。
一応用シーンにおいて、前記前操作回路は、演算データのタイプと各処理回路の論理アドレスに基づいて、前記演算データに対して対応する分割を行い、分割後に取得した複数のサブデータは、演算のためにアレイの対応する各処理回路にそれぞれ送達されることができる。別の一応用シーンにおいて、前記前操作回路は、解析後の命令に基いて、複数のデータ接合モードの中から1つのデータ接合モードを選択することによって、2つの入力データに対して接合操作を実行することができる。1つの応用シーンにおいて、前記後操作回路は、データに対して圧縮操作を実行するように配置されてもよく、前記圧縮操作は、マスクによりたデータを選別すること、または特定の閾値をデータのサイズと比較することで選別することを含み、それにより、データの圧縮を実現する。
図4は、本開示の実施例に係る計算装置400の様々なタイプの処理回路アレイを示す例示的な構造図である。図により分かるように、図4に示される計算装置400は、図3に示される計算装置300と類似するアーキテクチャを備えている。したがって、図3の計算装置300に関する説明は、同様に図4に示されている同じ細部に適用されるため、以下では繰り返さない。
図4から分かるように、複数の処理回路は、例えば、複数の第1のタイプの処理回路104-1と複数の第2のタイプの処理回路104-2(図面では異なる背景色で区別している)とを含むことができる。前記複数の処理回路は、二次元アレイを形成するように、物理的接続を介して配列されることができる。例えば、図に示されるよ前記二次元アレイには、M行N列(M*Nと表わす)個の第1のタイプの処理回路を備えており、そのうち、MとNは0より大きい正整数である。前記第1のタイプの処理回路は、算術演算および論理演算を実行することができ、例えば、加算、減算および乗算などの線形演算、比較演算およびANDまたはNOTなどの非線形演算、または前述の各種演算の任意の様々な組み合わせを含むことができる。さらに、M*N個の第1のタイプの処理回路アレイの外周の左、右という両側には、それぞれ2列の、合計(M*2+M*2)個の第2のタイプの処理回路を備えており、その外周の下側には、2行の、合計(N*2+8)個の第2のタイプの処理回路を備えており、即ち、該処理回路アレイには、合計(M*2+M*2+N*2+8)個の第2のタイプの処理回路が備えている。一実施例において、前記第2のタイプの処理回路は、受信したデータに対して、例えば、比較演算、テーブルルックアップ演算またはシフト操作などの非線形演算を実行することができる。
いくつかの応用シーンにおいて、第1のタイプの処理回路と第2のタイプの処理回路という両者に応用される記憶回路は、異なる記憶スケールと記憶方式を備えることができる。例えば、第1のタイプの処理回路における述語記憶回路は、複数の番号付きのレジスタを用いて述語情報を記憶することができる。さらに、第1のタイプの処理回路は、受信した解析後の命令に指定されたレジスタ番号に基づいて、対応する番号のレジスタにおける述語情報をアクセスすることができる。また、例えば、第2のタイプの処理回路は、スタティックランダムアクセスメモリ(「SRAM」)の方式で述語情報を記憶することができる。具体的には、前記第2のタイプの処理回路は、受信した解析後の命令に指定された該述語情報の所在位置のオフセット量に基づいて、SRAMにおける前記述語情報の記憶アドレスを決定することができ、かつ該記憶アドレスにおける述語情報に対して、所定の読み出し操作または書き込み操作を行うことができる。
本開示の計算装置の基本的な構成と拡張アーキテクチャを、図1乃至4を参照して、詳細に説明した。以下では、上記で言及された、処理回路の接続に対して配置された配置命令、データ読み書き操作を実行するデータ読み書き命令および様々な計算操作を実行するVLIW命令を詳細に説明する。
配置命令
上記のように、本開示の配置命令は、後続のデータ読み書き命令およびVLIW命令を実行するように、処理回路を配置するために用いることができる。例示的な実現において、該配置命令は、処理回路アレイを配置する複数の命令ドメインを含むことができる。例えば、該命令ドメインは、二次元マトリックスの構造で接続された複数の処理回路の属性を指示し、例えば、水平方向または垂直方向にある処理回路のリングモードおよびデータタイプ、水平方向または垂直方向にある処理回路の様々なレジスタ、定数項とエントリの関連情報、メモリアドレス、述語論理、述語操作に用いられる命令ドメインなど各種の配置情報を指示することができる。例えば、リングモードは、4、8または16個の処理回路がリング方式で接続されていること、または16個の第1のタイプの処理回路と4個の第2のタイプの処理回路とがリング方式で接続されていること、またはリングされていないことを含むことができる。異なるリング方式は、処理アレイにおけるデータの流れ方式に影響を及ぼす。以下、制御回路による配置命令の具体的な実行について、例示的に説明する。
配置命令の実行プロセスにおいて、制御回路は、まず、配置命令における述語操作に用いられる命令ドメインの値に基づいて、内部述語レジスタとの検索および比較を行い、それにより、処理回路へ現在の配置を実行するか否かを決定することができる。該配置を実行する必要があると決定された場合、制御回路は、内部レジスタから水平方向の処理回路の座標を記憶したメモリに対して読み取り、それにより、処理回路アレイを配置する水平方向の処理回路座標を取得することができる。さらに、制御回路は、即値ドメインセグメントから水平方向のリング方式情報を直接取得することができる。同様の操作は、垂直方向の処理回路の座標およびリング方式情報にも適用される。
次に、制御回路は、上記の座標情報をリング方式情報とともに処理回路アレイに送信することができ、処理回路アレイは、座標情報に基いて処理回路アレイにおける単一の処理回路アレイの内部の様々なレジスタを配置することができ、例えば、座標情報を書き込んで、水平リング配置レジスタおよび垂直リング配置レジスタの値に変更することができる。ここで、水平または垂直リング配置レジスタの値は、現在の処理回路アレイのデータ流れ方向を決定することに用いられ、したがって、アレイにおける処理回路のリング方式を決定することもできる。
定数項の配置について、関連する命令ドメインが該定数項を配置する必要があることを示している場合、制御回路は定数のソースに基いて、定数値を、レジスタから取得するか直接に即値ドメインセグメントから取得するかを選択することができる。例えば、配置命令における定数命令ドメインにおいて定数項がレジスタからのものであることが示されている場合、制御回路は、指定された番号を備えるレジスタを読み取ることによって、定数値を得ることができる。その後、制御回路は、取得された定数値を処理回路アレイに送信することができる。
エントリの配置について、いくつかのシーンにおいて、エントリのサイズが命令のビット幅を超える可能性があり、且つ、エントリの全部を命令に直接書き込むことは困難であるため、エントリの内容は、事前に記憶回路に記憶される場合が多い。関連する命令ドメインが該エントリを配置する必要があることを示す場合、制御ユニットは、エントリが配置される記憶アドレスを読み取るように、記憶回路に要求することができ、アドレスパラメータは、配置命令において識別されたレジスタ位置から取得できる。記憶回路(例えば、主記憶モジュール)は該要求を受信した後、処理回路アレイにエントリデータを戻すことができる。一応用シーンにおいて、エントリデータを取得した後の処理回路アレイは、配置されたエントリを内部の記憶回路(またはレジスタ)に保存することができる。一実施例において、処理回路アレイ全体が、1部の定数項とエントリデータの記憶を共有することができる。
データ読み書き命令
上記のように、本開示の制御回路は、解析後のデータ読み書き命令(要求リード命令および/または要求ライト命令を含む)を記憶回路に送信することによって、前記記憶回路は前記データ読み書き命令に基いて、処理回路アレイとデータのインタラクションを行うことができる。一応用シーンにおいて、記憶回路は、処理回路アレイにおける1つまたは複数の処理回路と接続するために、複数の方向にある入力(またはライト)と出力(またはリード)ポートを含むことができる。これを基に、前記データ読み書き命令の複数の命令ドメインには、特定の1つまたはいくつかのリードポートの要求リード情報、および特定の1つまたはいくつかのライトポートの要求ライト情報などの情報が含まれる。
一実施例において、上記の要求リード情報は、少なくとも読み取り待ちのデータのアドレス情報とデータ量情報を含み、前記要求ライト情報は、少なくとも書き込み待ちのデータのアドレス情報とデータ量情報を含む。例えば、多次元データにとって、データ量情報は、要求された一番目の次元のデータ量のサイズ、二番目の次元のアドレススパンのサイズ、二番目の次元の反復回数、三番目の次元のアドレススパンのサイズおよび反復回数を含むことができ、このように類推する。
データ読み書き命令を実行するプロセスにおいて、制御回路は、データ読み書き命令を解析した後、複数の要求リード情報および要求ライト情報を取得する。次に、それは、述語論理に基づいて、各要求を実行する必要があるかどうかを判断できる。現在の実行条件を満たすリード要求に対して、制御回路は要求リード情報を記憶回路に送信する。この後、記憶回路は、要求リード情報に基いて、対応する記憶アドレスから、例えば、三次元である多次元データを取得し、処理回路アレイにデータを戻す。一方、ライト要求に対して、制御回路は、要求ライト情報を処理回路アレイに送信することによって、VLIW命令を含むプログラムブロックの実行プロセスにおいて、データが処理回路アレイから出力された後の出力方式を制御することができる。次に、処理回路アレイは、後続の命令実行プロセスにおいて、前述の要求ライト情報に基づいて、データを記憶回路に出力することができる。この後、記憶回路は、受信したデータをローカルストレージ空間に書き戻す。
VLIW命令
本開示のVLIW命令は、1つまたは複数の演算命令を含むことができ、処理回路アレイは、前記演算命令に基づいてマルチスレッドの演算操作を実行するように配置されることができる。一実施例において、複数の処理回路アレイは、それぞれ、異なる演算命令を実行するように配置される。別の一実施例において、前記複数の処理回路アレイのうちの少なくとも2つの処理回路アレイは、同じ演算命令を実行するように配置される。
一応用シーンにおいて、本開示のVLIW命令は、処理回路アレイの複数の入力ポートおよび出力ポートの操作を指示する命令ドメイン、処理回路アレイが水平および/または垂直方向に沿ってデータを移動するように指示する命令ドメインおよび処理回路アレイによって実行される特定の操作を指示する命令ドメインなどを含むことができる。
例えば、処理回路アレイの0番入力ポートの操作は、入力データに対する0番リードポートの事前処理操作を表すことができる。ここでの事前処理操作は、例えば、接合、テーブルルックアップ、データタイプ変換などの操作を含むことができ、それは、図2または図3における前操作回路110によって実行することができる。それ以外、入力データの宛先を指定することによって(例えば、上記のような移動操作)、入力データが処理回路に直接送信されて後続の演算の実行に用いられてもよく、現在の処理回路の内部レジスタの値を変更することに用いられてもよい。一応用シーンにおいて、ここでの内部レジスタは、内部の汎用レジスタと、述語レジスタなどの特別な役割を備えるレジスタを含むことができる。また、入力ポートの操作の命令ドメインは、述語情報を指示するための命令ドメインをさらに含むことができる。これにより、処理回路アレイにおける各処理回路は、述語情報をその内部の述語レジスタと比較することによって、現在の入力ポートの操作を実行するかどうかを決定する。
データを水平方向および/または垂直方向に沿って移動する処理回路アレイの命令ドメインは、処理回路において、水平方向および/または垂直方向に沿ってデータを移動する操作情報を指定する。これは、例えば、データの一部の移動をマスクするためのデータの移動に関するマスク情報、隣接する処理回路に伝送されるソースレジスタの識別子、隣接する処理回路に伝送されるターゲットレジスタの識別子、異なるレジスタを選択してデータの流れを実現するためのリングレジスタ識別子、また、現在の命令ドメインが実行されているか否かを決定するするための制御回路および/または処理回路の内部で述語論理を行う述語情報などの様々な情報を含むことができる。
VLIW命令を実行するプロセスにおいて、処理回路アレイは、上記情報を含む命令ドメインを各処理回路アレイにおける各処理回路に送信することができる。上記情報を受信した後、各処理回路は、現在の述語論理レジスタ情報と命令ドメインにおける述語情報との比較に基づいて、現在の処理回路がデータ移動操作を実行しているか否かを決定することができる。データ移動操作を実行すると、ソース処理回路は、指定されたローカルソースレジスタからデータを読み取り、前述のマスク情報に基づいてマスク処理を行い、かつ指定されたリングレジスタの中の情報に基いて、所定の移動方向にあるターゲット処理回路の位置を得る。次に、ソース処理回路は、マスク処理された後のデータを、ターゲット処理回路における番号が指定されたターゲットレジスタに送信することができる。上記の1回のデータ転送プロセスは、全ての処理回路で発生されれる可能性がある。
命令処理回路の内部で実行される特定操作を指示する命令ドメインは、オペランドのソース情報、オペランドのレジスタ位置情報、演算結果を記憶するターゲットレジスタ情報、演算操作の説明情報、演算プロセスのデータタイプ情報、制御回路および処理回路が述語操作を行うための述語情報などの様々な演算に関連する情報を含むことができる。
実行プロセスにおいて、各処理回路は、上記の述語情報と処理回路の内部の述語レジスタに基いて述語判断を行うことによって、現在の処理回路が演算操作を実行しているかどうかを決定する。実行されると、処理回路はオペランドのレジスタ情報に基づいて、処理回路の内部のレジスタを読み取ることによって、演算のオペランドを取得することができる。次に、上記の演算操作に対する説明情報に基づいて、演算のタイプを決定することができる。演算終了後、処理回路は、演算結果のターゲットレジスタ情報に基づいて、演算後に得られた結果を処理回路内部のレジスタに書き戻すことができる。
上記の配置命令、データ読み書き命令およびVLIW命令に関する説明から、前記VLIW命令、配置命令およびデータ読み書き命令は、それぞれに対応する述語を含み、かつ前記制御回路、処理回路および記憶回路は、対応する述語に基づいてVLIW命令、配置命令および/またはデータ読み書き命令を実行するかどうかを決定するように配置されていることが分かることができる。さらに、異なる応用シーンに応じて、本開示の前記VLIW命令は、前記配置命令とデータ読み書き命令との両者のうち少なくとも1つと組み合わせることによって、拡張されたVLIW命令を形成することができる。これにより、命令をさらに簡素化し、命令の実行率を向上させることができる。
図5a、図5b、図5cおよび図5dは、本開示の実施例に係る複数の処理回路の様々な接続関係を示す模式図である。上記のように、本開示の複数の処理回路は、ハードワイヤ接続の方式、または配置命令の論理接続方式に従って接続され、それにより、接続された一次元または多次元アレイのトポロジーを形成することができる。複数の処理回路間が多次元アレイで接続される場合、前記多次元アレイは二次元アレイであってもよく、前記二次元アレイに位置する前記処理回路は、その行方向、列方向または対角線方向の少なくとも1つの方向に、所定の二次元間隔パターンで同行、同列または同対角線にある残りの1つまたは複数の前記処理回路と接続することができる。そのうち、前記所定の二次元間隔パターンは、前記接続で間隔を置いて配置された処理回路の数に関連付けられることができる。図5a乃至図5cは、複数の処理回路間の様々な形態の二次元アレイのトポロジーを例示的に示している。
図5a示すように、5つの処理回路(それぞれはブロックで表わす)が接続されて、1つの簡単な二次元アレイを形成する。具体的に、1つの処理回路を二次元アレイの中心として、1つの処理回路を、該処理回路に対して水平となる方向及び垂直となる方向の4つの方向にそれぞれ接続させ、それにより、3行と3列のサイズを備える1つの二次元アレイを形成する。さらに、二次元アレイの中心に位置する処理回路は、それぞれ、同行の前列と後列に隣接する処理回路と、同列の上行と下行に隣接する処理回路と直接接続しているため、間隔を置いている処理回路の数(「間隔数」と略称する)は0である。
図5bに示すように、4行4列の処理回路は、接続されて1つの二次元トーラス(Torus)アレイを形成することができ、そのうち、各処理回路は、隣接する前行と後行、前列と後列の処理回路とそれぞれ接続され、即ち、隣接する処理回路が接続される間隔数は、いずれも0である。さらに、該二次元トーラスアレイの各行または各列に位置する1番目の処理回路は、該行または該列の最後の1つの処理回路とも接続し、各行または各列の首尾が互いに接続された処理回路間の間隔数は、いずれも2である。
図5cに示すように、4行4列の処理回路は、接続されて、1つの隣接する処理回路間の間隔数が0で、隣接していない処理回路間の間隔数が1である、二次元アレイを形成することができる。具体的に、該二次元アレイにおいて、同行または同列に隣接する処理回路は直接接続されており、即ち、間隔数は0であり、同行または同列に隣接していない処理回路は、間隔数が1の処理回路に接続される。複数の処理回路が接続されて二次元アレイを形成する場合、図5bおよび図5cに示される同行または同列の処理回路間に、異なる間隔数があり得ることが分かる。同様に、いくつかのシーンにおいて、異なる間隔数で対角線方向にある処理回路に接続されることもできる。
図5dに示すように、図5bに示されるような4つの二次元トーラスアレイを使用して、所定の間隔で4層の二次元トーラスアレイに配列して接続されることによって、1つの三次元トーラスアレイを形成することができる。該三次元トーラスアレイは、二次元トーラスアレイを基に、行間、列間と類似する間隔パターンで層間接続される。例えば、まず、隣接する層の同行同列にある処理回路を直接接続し、即ち、間隔数は0である。次に、第1の層と最後の層の同行同列にある処理回路を接続し、即ち、間隔数は2である。最終的に、4層4行4列の三次元トーラスアレイを形成することができる。
上記のこれらの例示を通じて、当業者は、処理回路の他の多次元アレイの接続関係は、二次元アレイを基に、新しい次元の追加と処理回路の数の追加により形成されることが理解できる。いくつかの応用シーンにおいて、本開示の解決策は、配置命令を使用することによって、処理回路に対して論理接続を配置することができる。言い換えると、処理回路間にハードワイヤ接続が存在する可能性があるが、本開示の解決策は、配置命令によりいくつかの処理回路を選択的に接続するか、またはいくつかの処理回路を選択的にバイパスすることによって、1つまたは複数の論理接続を形成することもできる。いくつかの実施例において、実際の演算の必要(例えば、データタイプの変換)に応じて、前述の論理接続を調整することができる。さらに、異なる計算シーンに対して、本開示の解決策は、処理回路の接続を配置することができて、例えば、マトリックスに配置されること、または1つまたは複数の閉合される計算ループに配置されることを含む。
図6a、図6b、図6cおよび図6dは、本開示の実施例に係る複数の処理回路の別の様々な接続関係を示す模式図である。図により、図6a乃至図6dは、図5a乃至図5dに示されている複数の処理回路に形成された、多次元アレイのもう1つの例示的な接続関係であることが分かる。これを鑑みて、図5a乃至図5dを参照して説明した技術的詳細は、図6a乃至図6dに示される内容にも適用される。
図6aに示すように、二次元アレイの処理回路は、二次元アレイの中心に位置する中心処理回路と、該中心処理回路の同行および同列の4つの方向にそれぞれ接続された3つの処理回路とを含む。したがって、該中心処理回路と残りの処理回路との間に接続される間隔数は、それぞれ0、1および2である。図6bに示すように、二次元アレイの処理回路は、二次元アレイの中心に位置する中心処理回路、該処理回路の同行の2つの対向方向にある3つの処理回路、および該処理回路の同列の2つの対向方向にある1つの処理回路を含む。したがって、中心処理回路と同行の処理回路との間に接続される間隔数は、それぞれ0および2であり、同列の処理回路との間に接続される間隔数は、いずれも0である。
図5dを参照して上記に示されるように、複数の処理回路によって形成された多次元アレイは、複数の層からなる三次元アレイであってよい。そのうち、前記三次元アレイの各層は、その行方向と列方向に沿って配列された複数の前記処理回路の二次元アレイを含むことができる。さらに、前記三次元アレイに位置する前記処理回路は、その行方向、列方向、対角線方向および層方向の少なくとも1つの方向に、所定の三次元間隔パターンで、同行、同列、同対角線または異なる層にある残りの1つまたは複数の処理回路と接続することができる。さらに、前記所定の三次元間隔パターンと前記接続において互いに間隔を置いて配置された処理回路の数は、離間された層数と関連つけられることができる。以下、図6cと図6dを参照して、三次元アレイの接続方式についてさらに説明する。
図6cは、複数の処理回路を接続することによって形成された多層多行多列の三次元アレイを示している。第1層、第r行、第c列((l、r、c)と表す)に位置する処理回路を例にとして、それはアレイの中心位置に位置し、かつ、それぞれ、同層同行の前列(l、r、c-1)での処理回路と後列(l、r、c+1)での処理回路、同層同列の前行(l、r-1、c)での処理回路と後行(l、r+1、c)での処理回路、および同行同列の異層である前層(l-1、r、c)での処理回路と後層(l+1、r、c)での処理回路と接続される。さらに、(l、r、c)での処理回路と他の処理回路とが、行方向、列方向および層方向で接続される間隔数は、いずれも0である。
図6dは、複数の処理回路間で行方向、列方向および層方向に接続される間隔数が、いずれも1である場合の三次元アレイを示している。アレイの中心位置(l、r、c)に位置する処理回路を例にとして、それはそれぞれ、同層同行異列の前後に1列ずつ離間している(l、r、c-2)と(l、r、c+2)での処理回路と、同層同列異行の前後に1行ずつ離間している(l、r-2、c)と(l、r+2、c)での処理回路と接続する。さらに、それは、同行同列異層の前後に1層ずつ離間している(l-2、r、c)と(l+2、r、c)での処理回路と接続する。同様に、残りの同層同行の1列離間している(l、r、c-3)と(l、r、c-1)での処理回路は互いに接続されており、(l、r、c+1)と(l、r、c+3)での処理回路は互いに接続されている。次に、同層同列の1行離間している(l、r-3、c)と(l、r-1、c)での処理回路は互いに接続されており、(l、r+1、c)と(l、r+3、c)での処理回路は互いに接続されている。また、同行同列の1層離間している(l-3、r、c)と(l-1、r、c)での処理回路は互いに接続されており、(l+1、r、c)と(l+3、r、c)での処理回路は互いに接続されている。
複数の処理回路によって形成された多次元アレイの接続関係は、上記で例示的に説明しており、以下、図7乃至図8を参照して、複数の処理回路によって形成された異なるループ構造に対して、さらに例示的に説明する。
図7a、図7b、図7cおよび図7dは、本開示の実施例における処理回路の様々なループ構造をそれぞれ示す模式図である。異なる応用シーンに応じて、複数の処理回路は、物理的な接続関係で接続できるだけでなく、受信した解析後の命令に基づいて論理的な関係で接続するように配置されることもできる。前記複数の処理回路は、閉ループを形成するために、前記論理接続関係を利用して接続するように配置されることができる。
図7a示すように、隣接する4つの処理回路には順番に「0、1、2および3」の番号が付けられている。次に、処理回路0から始まり時計回り方向に、該4つの処理回路を順番に接続し、かつ処理回路3が処理回路0に接続されることによって、4つの処理回路を直列に接続して1つの閉ループ(「リング」と略称する)を形成する。該ループにおいて、処理回路の間隔数は0または2であり、例えば、処理回路0と1との間の間隔数は0であり、処理回路3と0との間の間隔数は2である。さらに、示されるループにおける4つの処理回路の物理アドレス(本開示の文脈では、物理座標と称してもよい)は、0-1-2-3と表してもよく、その論理アドレス(本開示の文脈では、論理座標と称してもよい)は、同様に0-1-2-3と表してもよい。なお、図7aに示されている接続順番は、限定ではなく例示的のみであり、当業者は、実際の計算のニーズに応じて、閉ループを形成するために、4つの処理回路を反時計回り方向に直列に接続することもできる。
いくつかの実際的シーンにおいて、1つの処理回路でサポートするデータビット幅が演算データのビット幅の要件を満たせない場合、複数の処理回路を使用して1つの処理回路グループに組合わせることによって、1つのデータを表すことができる。例えば、1つの処理回路が8ビットのデータを処理できると仮定する。32ビットのデータを処理する必要がある場合、4つの処理回路を1つの処理回路グループに組合わせることによって、4つの8ビットのデータを接続して、それにより、1つの32ビットのデータを形成することができる。さらに、前述の4つの8ビットの処理回路で形成された1つの処理回路グループは、図7bに示されている1つの処理回路104として機能することができ、それにより、より高いビット幅の演算操作をサポートすることができる。
図7bから、これに示されている処理回路のレイアウトは、図7aに示されているものと類似しているが、図7bの処理回路間に接続される間隔数は、図7aと異なっていることが分かる。図7bは、0、1、2および3の順番に番号が付けられた4つの処理回路が、処理回路0から始まり時計回り方向に、処理回路1、処理回路3および処理回路2の順番に接続され、かつ処理回路2は処理回路0に接続され、それにより、直列連結され1つの閉ループを形成する。該ループから分かるように、図7bに示される処理回路の間隔数は0または1であり、例えば、処理回路0と1との間の間隔は0であり、処理回路1と3との間の間隔は1である。さらに、示されている閉ループにおける4つの処理回路の物理アドレスは0-1-2-3であってもよく、論理アドレスは、示されているリング方式に従って0-1-3-2と表すことができる。したがって、異なる処理回路に振り分けるためにビットのビット幅が高いデータを分割する必要がある場合、処理回路の論理アドレスに基づいて、データ順番を再配列して振り分けることができる。
上記の分割および再配列の操作は、図3を参照して説明した前操作回路によって実行することができる。特に、該前操作回路は、データ演算の要件を満たすために、複数の処理回路の物理アドレスと論理アドレスに基づいて、入力データを再配列することができる。4つの順番に配列された処理回路0乃至処理回路3は、図7aに示すように接続されると仮定すると、接続された物理アドレスと論理アドレスは共に0-1-2-3であるため、前操作回路は、入力データ(例えば、画素データ)aa0、aa1、aa2およびaa3を、対応する処理回路に順番に伝送することができる。しかし、前述の4つの処理回路が図7bに示すように接続される場合、その物理アドレスは変わらず0-1-2-3を維持しているが、論理アドレスは0-1-3-2に変えられ、このとき、前操作回路は、入力データaa0、aa1、aa2およびaa3をaa0-aa1-aa3-aa2に再配列する必要があることによって、対応する処理回路に伝送する。上記の入力データの再配列に基づいて、本開示の解決策は、データの演算順番の正確さを保証することができる。同様に、上記で得られた4つの演算出力結果(例えば、画素データ)の順番がbb0-bb1-bb3-bb2である場合、演算出力結果の順番を、図2を参照して説明された後操作回路を使用して、bb0-bb1-bb2-bb3に調整し戻すことによって、入力データと出力結果データとの間の配列の整合性を保証することができる。
図7cおよび図7dは、より多くの処理回路がそれぞれ異なる方式で配列および接続され、閉ループを形成することを示す。図7cに示すように、0、1~15の順番に番号が付けられた16個の処理回路104は、処理回路0から始まり、2つの処理回路ごとに順番に接続および組み合わせられ、1つの処理回路グループ(即ち、本開示の処理回路サブアレイ)を形成する。例えば、図に示すように、処理回路0と処理回路1とを接続して1つの処理回路グループを形成する。このように類推して、処理回路14と処理回路15とを接続して1つの処理回路グループを形成し、最終的に8つの処理回路グループを形成する。さらに、該8つの処理回路グループは、例えば、所定の論理アドレスによる接続を含む、前述の処理回路の接続方式と類似する方式で接続され、1つの処理回路グループの閉ループを形成することができる。
図7dに示すように、複数の処理回路104は、閉ループを備える処理回路マトリックスを形成するために、不規則または不統一の方式で接続される。具体的に、図7dには、処理回路間の間隔数を0または3にすることによって、閉ループを形成できることが示されており、例えば、処理回路0はそれぞれ、処理回路1(間隔数は0)と処理回路4(間隔数は3)に接続されることができる。
図7a、7b、7cおよび7dを参照した上記の説明から分かるように、本開示の処理回路は、閉ループとなるように容易に接続されるために、離間数が異なる処理回路であってもよい。処理回路の総数が変化する場合、任意のその間の間隔数を選択して、動的に配置し、それにより、閉ループとなるように接続されることができる。また、複数の処理回路を処理回路グループに組み合わせて、それらを処理回路グループの閉ループとなるように接続することもできる。また、複数の処理回路の接続は、ハードウェアによって構成されたハード接続方式であってもよく、ソフトウェアによって配置されたソフト接続方式であってよい。
図8a、8bおよび8cは、本開示の実施例に係る処理回路の別の様々なループ構造を示す模式図である。図6を参照して示したように、複数の処理回路は、1つの閉ループを形成することができ、かつ前記閉ループにおける各処理回路には、それぞれの論理アドレスが配置されることができる。さらに、図2を参照して説明した前操作回路は、演算データのタイプ(例えば、32ビットのデータ、16ビットのデータまたは8ビットのデータ)および論理アドレスに基づいて、前記演算データを対応的に分割し、分割後に取得した複数のサブデータを、ループ中の対応する各処理回路にそれぞれ伝送し、後続の演算に使用されるように配置されることができる。
図8aの上部は、4つの処理回路が接続されて1つの閉ループを形成しており、かつ該4つの処理回路の物理アドレスは、右から左の順に0-1-2-3と表示できることを示している。図8aの下部は、前述の前記ループにおける4つの処理回路の論理アドレスは、右から左の順に0-3-1-2と表示できることを示している。例えば、図8aの下部に示される論理アドレスが「3」の処理回路は、図8aの上部に示される物理アドレス「1」を備える。
いくつかの応用シーンにおいて、操作データの粒度は入力データの下位128ビット、例えば、図における元のシーケンス「15、14、……2、1、0」(各数字は8ビットのデータに対応する)であると仮定し、かつ該16個の8ビットのデータの論理アドレスを、低から高への順番に番号0~15と設定する。さらに、図8aの下部に示している論理アドレスに従って、前記前操作回路は、異なるデータタイプに基づいて異なる論理アドレスによりデータを符号化または配列することができる。
処理回路により操作されるデータのビット幅が32ビットである場合、論理アドレスがそれぞれ(3、2、1、0)、(7、6、5、4)、(11、10、9、8)および(15、14、13、12)の4つの数は、それぞれ0番目から3番目の32ビットのデータを表すことができる。前記前操作回路は、0番目の32ビットのデータを論理アドレスが「0」の処理回路(対応する物理アドレスが「0」である)に送信でき、1番目の32ビットのデータを論理アドレスが「1」の処理回路(対応する物理アドレスが「2」である)に送信でき、2番目の32ビットのデータを論理アドレスが「2」の処理回路(対応する物理アドレスが「3」である)に伝送でき、3番目の32ビットのデータを論理アドレスが「3」の処理回路(対応する物理アドレスが「1」である)に伝送できる。データの再配列を通じて、処理回路の後続の演算需要を満たす。したがって、最終データの論理アドレスと物理アドレスとの間のマッピング関係は(15、14、13、12、11、10、9、8、7、6、5、4、3、2、1、0)->(11、10、9、8、7、6、5、4、15、14、13、12、3、2、1、0)である。
処理回路により操作されるデータのビット幅が16ビットである場合、論理アドレスがそれぞれ(1、0)、(3、2)、(5、4)、(7、6)、(9、8)、(11、10)、(13、12)および(15、14)の8つの数は、それぞれ0番目から7番目の16ビットのデータを表示することができる。前記前操作回路は、0番目と4番目の16ビットのデータを論理アドレスが「0」の処理回路(対応する物理アドレスが「0」である)に伝送でき、1番目と5番目の16ビットのデータを論理アドレスが「1」の処理回路(対応する物理アドレスが「2」である)に伝送でき、2番目と6番目の16ビットのデータを論理アドレスが「2」の処理回路(対応する物理アドレスが「3」である)に伝送でき、3番目と7番目の16ビットのデータを論理アドレスが「3」の処理回路(対応する物理アドレスが「1」である)に伝送できる。したがって、最終データの論理アドレスと物理アドレスとの間のマッピング関係は(15、14、13、12、11、10、9、8、7、6、5、4、3、2、1、0)->(13、12、5、4、11、10、3、2、15、14、7、6、9、8、1、0)である。
処理回路により操作されるデータのビット幅が8ビットである場合、論理アドレスが0~15の16個の数は、それぞれ0~15番目の8ビットのデータを表示することができる。図8aに示されている接続に基づいて、前記前操作回路は、0番目、4番目、8番目および12番目の8ビットのデータを論理アドレスが「0」の処理回路(対応する物理アドレスが「0」である)に伝送でき、1番目、5番目、9番目および13番目の8ビットのデータを論理アドレスが「1」の処理回路(対応する物理アドレスが「2」である)に伝送でき、2番目、6番目、10番目および14番目の8ビットのデータを論理アドレスが「2」の処理回路(対応する物理アドレスが「3」である)に伝送でき、3番目、7番目、11番目および15番目の8ビットのデータを論理アドレスが「3」の処理回路(対応する物理アドレスが「1」である)に伝送することができる。したがって、最終データの論理アドレスと物理アドレスとの間のマッピング関係は(15、14、13、12、11、10、9、8、7、6、5、4、3、2、1、0)->(14、19、6、2、13、9、5、1、15、11、7、3、12、8、4、0)である。
図8bの上部は、8つの連続番号の処理回路0乃至処理回路7が接続されて1つの閉ループを形成し、かつ該8つの処理回路の物理アドレスは0-1-2-3-4-5-6-7であることを示している。図8bの下部は、前述の8つの処理回路の論理アドレスが0-7-1-6-2-5-3-4であることを示している。例えば、図8bの上部に示されている物理アドレスが「6」の処理回路は、図8bの下部に示されている論理アドレス「3」に対応する。
図8bに示されている異なるデータタイプに対して、前記前操作回路がデータを再配列した後、対応する処理回路に伝送する操作は、図8aと類似するため、図8aを参照して説明した技術解決策は、図8bにも適用されるので、上述のデータを再配列する操作プロセスについて、ここでは繰り返さない。さらに、図8bに示されている処理回路の接続関係は、図8aに示されているものと類似しているが、図8bに示している8つの処理回路は、図8aに示されている処理回路の個数の2倍である。これにより、異なるデータタイプによる操作を行う応用シーンにおいて、図8bを参照して説明する操作データの粒度は、図8aを参照して説明する操作データの粒度の2倍になってもよい。したがって、前例の入力データの粒度が下位128ビットであることに対して、本例の操作データの粒度は、入力データの下位256ビットであってよく、例えば、図に示している元のデータシーケンス「31、30、……、2、1、0」であり、各数字は8ビット(「bit」)の長さに対応する。
上記元のデータシーケンスに対して、処理回路により操作されるデータのビット幅がそれぞれ32ビット、16ビットおよび8ビットである場合、図にはリングされる処理回路におけるデータの配列結果もそれぞれ示している。例えば、操作されるデータのビット幅が32ビットである場合、論理アドレスが「1」の処理回路における1つの32ビットのデータは(7、6、5、4)であり、該処理回路に対応する物理アドレスは「2」である。操作されるデータのビット幅が16ビットである場合、論理アドレスが「3」の処理回路における2つの16ビットのデータは(23、22、7、6)であり、該処理回路に対応する物理アドレスは「6」である。操作されるデータのビット幅が8ビットである場合、論理アドレスが「6」の処理回路における4つの8ビットのデータは(30、22、14、6)であり、該処理回路に対応する物理アドレスは「3」である。
上記において、図8aおよび図8bに示されている複数の単一タイプの処理回路(図3に示されるような、第1のタイプの処理回路)を接続し閉ループを形成する状況を参照して、異なるデータタイプのデータ操作について説明した。以下は、図8cに示されている複数の異なるタイプの処理回路(図4に示されているような、第1のタイプの処理回路および第2のタイプの処理回路)を接続し閉ループを形成する状況を参照して、異なるデータタイプのデータ操作についてさらに説明する。
図8cの上部は、0、1……19の順番に番号が付けられた20個のマルチタイプの処理回路を接続し、1つの閉ループ(図に示されている番号は、処理回路の物理アドレスである)を形成することを示している。0から15の番号が付けられた16個の処理回路は、第1のタイプの処理回路であり、16から19の番号が付けられた4つの処理回路は、第2のタイプの処理回路である。同様に、該20個の処理回路のそれぞれの物理アドレスは、図8cの下部に示されている対応する処理回路の論理アドレスとマッピング関係を有する。
さらに、異なるデータタイプに対して操作する場合、例えば、図に示されている80個の8ビットの元のシーケンスについて、図8cは、処理回路によってサポートされる異なるデータタイプに関して、前述元のデータを操作した後の結果をさらに示している。例えば、操作されるデータのビット幅が32ビットである場合、論理アドレスが「1」の処理回路における1つの32ビットのデータは(7、6、5、4)であり、該処理回路に対応する物理アドレスは「2」である。操作されるデータのビット幅が16ビットである場合、論理アドレスが「11」の処理回路における2つの16ビットのデータは(63、62、23、22)であり、該処理回路に対応する物理アドレスは「9」である。操作されるデータのビット幅が8ビットである場合、論理アドレスが「17」の処理回路における4つの8ビットのデータは(77、57、37、17)であり、該処理回路に対応する物理アドレスは「18」である。
図9a、9b、9cおよび9dは、本開示の実施例に係る前処理回路によって実行されたデータの接合操作を示す模式図である。上記のように、本開示が図2を参照して説明した前処理回路は、解析後の命令に基づいて、複数のデータ接合モードから一つのデータ接合モードを選択するように配置されることによって、2つの入力データに対して接合操作を実行することができる。様々なデータ接合モードに関して、一実施例において、本開示の解決策は、接合待ちの2つのデータを最小データユニットに従って区分して番号付けし、次に、指定された規則に基づいて、データの異なる整数倍の最小データユニットを抽出することによって、異なるデータ接合モードを形成する。例えば、番号のパリティーまたは番号が指定された数字の整数倍であるかどうかに基づいて、例えば、抽出および設置を交互に行い、それにより、異なるデータ接合モードを形成することができる。異なる計算シーン(例えば、データのビット幅が異なる)に基づいて、ここでの最小データユニットは、簡単な1ビットまたは1bitのデータであってもよく、または2ビット、4ビット、8ビット、16ビットまたは32ビットまたはbitの長さであってよい。さらに、2つのデータの異なる番号付け部分を抽出した場合、本開示の解決策は、最小データユニットで交互に抽出するか、または最小データユニットの倍数で抽出することができ、例えば、1つのグループとして、2つまたは3つの最小データユニットの部分データを2つのデータから交互に1回抽出して、グループごとに接合される。
上記データ接合モードの説明に基づいて、本開示のデータ接合モードは、以下、図9a乃至図9cを参照して具体的な例で例示的に論述される。示されている図において、入力データはIn1とIn2であり、図における各格子が1つの最小データユニットを表す場合、2つの入力データは、いずれも8つの最小データユニットのビット幅の長さを有する。上記のように、ビット幅の長さが異なるデータに対して、該最小データユニットは異なるビット数(またはBit数)を表すことができる。例えば、ビット幅が8ビットのデータの場合、最小データユニットは1ビットのデータを表し、ビット幅が16ビットのデータの場合、最小データユニットは2ビットのデータを表す。また、例えば、ビット幅が32ビットのデータの場合、最小データユニットは4ビットのデータを表す。
図9aに示すように、接合待ちの2つの入力データIn1およびIn2は、それぞれ、右から左に順番番号が1、2、……、8の8つの最小データユニットにより構成される。データの接合は、番号が小から大へ、先にIn1後にIn2、先に奇数番号で後に偶数番号であるパリティインターリーブ原則に従って行われる。具体的に、操作されるデータのビット幅が8ビットである場合、データIn1とIn2は、それぞれ1つの8ビットのデータを表示し、各最小データユニットは1ビットのデータ(即ち、1つの格子が1ビットのデータを表す)を表す。データのビット幅と前述接合原則に基づいて、まず、データIn1の番号が1、3、5および7の最小データユニットを抽出し、下位に順番に設置する。次に、データIn2の4つの奇数番号付けの最小データユニットを順番に設置する。同様に、データIn1の番号が2、4、6および8の最小データユニットと、データIn2の4つの偶数番号付けの最小データユニットを順番に設置する。最終的に、図9aの第2行の格子に示されているように、16個の最小データユニットが接合して、1つの16ビットまたは2つの8ビットの新しいデータを形成する。
図9bに示すように、データのビット幅が16ビットである場合、データIn1とIn2はそれぞれ1つの16ビットのデータを表し、このとき、各最小データユニットは2ビットのデータを表す(即ち、1つの格子は1つの2ビットのデータを表す)。データのビット幅と前述のインターリーブ接合原則に基づいて、まず、データIn1の番号が1、2、5および6の最小データユニットを抽出し、下位に順番に設置することができる。次に、データIn2の番号が1、2、5および6の最小データユニットを順番に設置する。同様に、データIn1の番号が3、4、7および8の最小データユニットと、データIn1と同じである番号のデータIn2の最小データユニットを順番に設置し、図9bの第2行の格子に示されるように、最終の16個の最小データユニットにより構成された1つの32ビット、または2つの16ビットの新しいデータを接合形成する。
図9c示すように、データのビット幅が32ビットである場合、データIn1とIn2は、それぞれ1つの32ビットのデータを表示し、各最小データユニットは4ビットのデータを表す(即ち、1つの格子が1つの4ビットのデータを表す)。データのビット幅と前述のインターリーブ接合原則に基づいて、まず、データIn1の番号が1、2、3および4の最小データユニットと、データIn1と同じである番号のデータIn2の最小データユニットを抽出して、下位に順番に設置する。次に、データIn1の番号が5、6、7および8の最小データユニットと、データIn1と同じである番号のデータIn2の最小データユニットを抽出して、順番に設置し、それにより、最終の16個の最小データユニットで構成された、1つの64ビットまたは2つの32ビットの新しいデータを接合形成する。
本開示の例示的なデータ接合方式は、図9a乃至図9cを参照して上記で説明された。しかし、いくつかの計算シーンにおいて、データ接合は、上記のインターリーブ配列に関せず、例えば、図9dに示すように、2つのデータがそれぞれの既存のデータ位置を変更せず維持される状況で、簡単に配列するだけである。図9dから分かるように、2つのデータIn1とIn2は、図9a乃至図9cに示すようなインターリーブ配列を実行しておらず、データIn1の最後の1つの最小データユニットとIn2の1番目の最小データユニットとを直列に接続させ、それにより、ビット幅が増大(例えば、倍になる)した新しいデータタイプを取得しただけである。いくつかのシーンにおいて、本開示の解決策は、データの属性に基づいてグループになる接合を行うことができる。例えば、同じ特徴マップを有するニューロンデータまたは重みデータを1グループに形成した後、接合後のデータの連続部分を構成するように配列することができる。
図10a、10bおよび10cは、本開示の実施例に係る後処理回路によって実行されたデータ圧縮操作を示す模式図である。前記圧縮操作は、マスクによりデータを選別すること、または特定の閾値をデータのサイズと比較することによって圧縮することを含んでもよい。データ圧縮操作については、上記に記載の最小データユニットに従って区分しおよび番号を付けることができる。図9a乃至図9dを参照して説明したことと同様に、最小データユニットは、例えば、1ビットまたは1bitのデータであってもよい、または2ビット、4ビット、8ビット、16ビットまたは32ビットまたはbitの長さであってよい。以下、図10a乃至図10cを参照して、異なるデータ圧縮モードについて、例示的に説明する。
図10aに示すように、元のデータは、右から左に順番番号が1、2……、8の8つの格子(即ち、8つの最小データユニット)が順次に配列して構成されており、各最小データユニットが1ビットのデータを表示することができると仮定する。マスクによりデータ圧縮操作を行う場合、前記後処理回路は、マスクにより元のデータを選別し、データ圧縮操作を実行することができる。一実施例において、マスクのビット幅は、元のデータの最小データユニットの個数に対応する。例えば、前述の元のデータは、8つの最小データユニットを有する場合、マスクのビット幅は8ビットであり、かつ番号が1の最小データユニットはマスクの最下位ビットに対応し、番号が2の最小データユニットはマスクの2番目に低いビットに対応する。このよう類推すると、番号が8の最小データユニットはマスクの最上位ビットに対応する。一応用シーンにおいて、8ビットのマスクが「10010011」である場合、圧縮原則が、該マスクが「1」のデータビットに対応する元のデータにおける最小データユニットを抽出することができるように設定される。例えば、マスクの数値が「1」の最小データユニットに対応する番号は1、2、5および8である。これにより、図10aの第2行に示すように、番号が1、2、5および8の最小データユニットを抽出し、番号の低いものから高いものへの順に、順次に配列することによって、圧縮後の新しいデータを形成することができる。
図10bは、図10aと類似の元のデータを示しており、図10bの第2行から、後処理回路を経過したデータシーケンスは、データの元の配列順番および内容を維持していることが分かる。このことから、本開示のデータ圧縮は、無効モードまたは非圧縮モードを含むこともでき、よって、データが後処理回路を経過するときに圧縮操作が実行されないことが理解できる。
図10cに示すように、元のデータは8つの格子が順次に配列して構成されており、各格子の上方の数字はその番号を表示し、右から左へ順番に番号は1、2……8であり、かつ各最小データユニットが8ビットのデータであってよいと仮定する。さらに、各格子における数字は、該最小データユニットの十進法の数値を表示する。番号が1の最小データユニットを例として、その十進法の数値は「8」であり、対応する8ビットのデータは「00001111」である。閾値に基づいてデータ圧縮操作を行う場合、閾値は十進法のデータ「8」であると仮定し、圧縮原則は、元のデータの中で該閾値「8」以上の全ての最小データユニットを抽出するように設定されることができる。これにより、番号が1、4、7および8の最小データユニットを抽出できる。次に、図10cにおける第2行に示すように、抽出によって取得した全ての最小データユニットを、番号が低いものから高いものの順に従って配列することによって、最終のデータ結果を取得する。
図11は、本開示の実施例に係る計算装置を使用して演算操作を実行する方法1100を示す簡単なフローチャートである。前述の説明に基づいて、ここでの計算装置は、図1乃至図4を参照して説明した計算装置であってもよく、それは、図5乃至図10に示すような処理回路の接続関係を備え、かつ付加の様々な操作をサポートすることが理解できる。
図11示すように、ステップ1110において、方法1100は、制御回路で超長命令語(VLIW)命令を取得し、解析することによって、解析後のVLIW命令を取得し、解析後のVLIW命令を複数の処理回路に送信する。次に、ステップ1120において、方法1100は、前記複数の処理回路を、一次元または多次元アレイの構造で1つまたは複数の処理回路アレイとして接続し、かつ前記1つまたは複数の処理回路アレイを、解析後のVLIW命令に基づいてマルチスレッド操作を実行するように配置する。
一実施例において、方法1100は、前記処理回路アレイを、前記配置命令に基づいて、一次元または多次元方向の少なくとも1つの次元方向に閉ループを形成するように配置する。別の一実施例において、前記VLIW命令は、1つまたは複数の演算命令を含み、かつ前記方法1100は、1つまたは複数の処理回路アレイを、前記演算命令に基づいてマルチスレッドの演算操作を実行するように配置する。一応用シーンにおいて、前記VLIW命令、配置命令およびデータ読み書き命令は、それぞれの対応する述語を含み、かつ前記方法は、前記制御回路、処理回路および記憶回路を、対応する述語に基づいてVLIW命令、配置命令および/またはデータ読み書き命令を実行するか否かを決定するように配置することを含む。
以上、簡略化するために、図11のみを参照して本開示の方法およびその一部の実施例を説明した。当業者は、本開示の開示内容に基づいて、本方法がより多くのステップを含み、かつこれらのステップの実行が図1乃至図10を参照して説明した本開示の様々な操作を実現できることも想到できるため、ここでは繰り返さない。
図12は、本開示の実施例に係る複合処理装置1200を示す構造図である。図12に示すように、該複合処理装置1200は、計算処理装置1202、インターフェース装置1204、他の処理装置1206および記憶装置1208を含む。異なる応用シーンに応じて、計算処理装置には、1つまたは複数の計算装置1210が含まれることができ、該計算装置は、図1乃至11を参照して本明細書に説明した操作を実行するように配置されることができる。
異なる実施例において、本開示の計算処理装置は、ユーザによって指定された操作を実行するように配置されることができる。例示的な応用において、該計算処理装置は、シングルコア人工知能プロセッサまたはマルチコア人工知能プロセッサとして実現できる。同様に、計算処理装置の内部に含まれる1つまたは複数の計算装置は、人工智能プロセッサコアまたは人工智能プロセッサコアの一部のハードウェア構造として実現できる。複数の計算装置が人工智能プロセッサコアまたは人工智能プロセッサコアの一部のハードウェア構造として実現される場合、本開示の計算処理装置について、シングルコア構造またはホモジニアスマルチコア構造を有するものとみなされることができる。
例示的な操作において、本開示の計算処理装置は、インターフェース装置を介して、他の処理装置とインタラクションして、ユーザによって指定された操作を共同で完了することができる。実現方法の不同によって、本開示の他の処理装置は、中央処理装置(Central Processing Unit、CPU)、グラフィックスプロセッサ(Graphics Processing Unit、GPU)、人工知能処理装置などの汎用処理装置および/または専用処理装置のうちの1つまたは様々なタイプの処理装置を含むことができる。これらの処理装置は、デジタル信号プロセッサ(Digital Signal Processor、DSP)、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)または他のプログラムブル論理デバイス、ディスクリートゲートまたはトランジスタ論理デバイス、ディスクリートハードウェアコンポーネンなどを含むことができるが、これらに限定されず、また、その数は、実際のニーズに応じて決定することができる。上記のように、本開示の計算処理装置についてのみ、シングルコア構造またはホモジニアスマルチコア構造を備えるものとみなされることができる。しかし、計算処理装置と他の処理装置を共通に考慮すると、両者はヘテロジニアスマルチコア構造を形成するものとみなすことができる。
1つまたは複数の実施例において、該他の処理装置は、本開示の計算処理装置(これは、ニューラルネットワーク演算などの人工知能に関連する演算装置として具体化することができる)の外部データおよび制御とのインターフェースとして、データの転送、計算装置のオンおよび/またはオフなどを含むがこれらに限定されない基本的な制御を実行することができる。別の実施例において、他の処理装置は、該計算処理装置と協力して共同に演算タスクを完了することもできる。
1つまたは複数の実施例において、該インターフェース装置は、計算処理装置と他の処理装置との間で、データおよび制御命令を伝送することができる。例えば、該計算処理装置は、前記インターフェース装置を経由して、他の処理装置から入力データを取得し、該計算処理装置のオンチップの記憶装置(またはメモリと称す)に書き込むことができる。さらに、該計算処理装置は、前記インターフェース装置を経由して、他の処理装置から制御命令を取得し、計算処理装置のオンチップの制御キャッシュに書き込むことができる。代替的にまたは選択的に、インターフェース装置は、計算処理装置の記憶装置におけるデータを読み取り、他の処理装置に伝送することもできる。
付加的または選択的に、本開示の複合処理装置は、記憶装置をさらに含むことができる。図に示すように、該記憶装置は、それぞれ、前記計算処理装置および前記他の処理装置に接続される。1つまたは複数の実施例において、記憶装置は、前記計算処理装置および/または前記他の処理装置のデータを保存することができる。例えば、該データは、計算処理装置または他の処理装置の内部またはオンチップの記憶装置に全て保存できないデータであってよい。
いくつかの実施例において、本開示では、チップ(例えば、図13に示されているチップ1302)がさらに開示される。一実施形態において、該チップは、システムオンチップ(System on Chip、SoC)であり、1つまたは複数の、図12に示すような複合処理装置が集積化されている。該チップは、外部インターフェース装置(図13に示されている外部インターフェース装置1306)を介して、他の関連部品に接続されることができる。該関連部品は、例えば、ウェブカメラ、ディスプレー、マウス、キーボード、ネットワークカードまたはwifiインターフェースであってよい。いくつかの応用シーンにおいて、該チップには、他の処理ユニット(例えば、ビデオコーデック)および/またはインターフェースモジュール(例えば、DRAMインターフェース)などが集積化されていてもよい。いくつかの実施例において、本開示は、上記チップを含むチップパッケージ構造をさらに開示する。いくつかの実施例において、本開示は、上記のチップパッケージ構造を含むボードカードをさらに開示する。以下、図13を参照して、該ボードカードを詳細に説明する。
図13は、本開示の実施例に係るボードカード1300の構造を示す模式図である。図13に示すように、該ボードカードは、データを記憶するための記憶素子1304を含み、記憶素子1304は、1つまたは複数の記憶ユニット1310を含む。該記憶素子は、バスなどの方式にて、制御素子1308および上記に記載のチップ1302と接続およびデータの伝送を行うことができる。さらに、該ボードカードは、チップ(または、チップパッケージ構造におけるチップ)と外部装置1312(例えば、サーバーまたはコンピューターなど)との間のデータ中継またはスイッチング機能をするように配置された外部インターフェース装置1306をさらに含む。例えば、処理待ちのデータは、外部装置によって、外部インターフェース装置を介してチップに伝達されることができる。また、例えば、前記チップの計算結果は、前記外部インターフェース装置を経由して外部装置に送り返すことができる。異なる応用シーンによって、前記外部インターフェース装置は、例えば、標準PCIEインターフェースなどを使用した、異なるインターフェース形態を備えることができる。
1つまたは複数の実施例において、本開示のボードカードにおける制御素子は、前記チップの状態を調整制御するように配置されることができる。このために、一応用シーンにおいて、該制御素子は、前記チップの作業状態を調整制御するように、マイクロコントローラーユニット(Micro Controller Unit、MCU)を含むことができる。
図12および図13を参照した上記の説明に基づいて、当業者は、本開示が、1つまたは複数の上記ボードカード、1つまたは複数の上記チップおよび/または1つまたは複数の上記複合処理装置を含む、電子デバイスまたは装置も開示していることが理解できる。
異なる応用シーンによって、本開示の電子デバイスまたは装置は、サーバー、クラウドサーバー、サーバークラスター、データ処理装置、ロボット、コンピューター、プリンター、スキャナー、タブレット、スマート端末、PCデバイス、IoT端末、モバイル端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサー、ウェブカメラ、カメラ、ビデオカメラ、プロジェクター、時計、ヘッドセット、モバイルストレージ、ウェアラブルデバイス、ビジュアル端末、自動運転端末、交通手段、家電製品、および/または医療機器を含むことができいる。前記交通手段には、飛行機、船および/または車両が含まれる。前記家電製品には、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、レンジフードが含まれる。前記医療機器には、核磁気共鳴計、超音波計および/または心電計が含まれる。本開示の電子デバイスまたは装置は、インターネット、IoT、データセンター、エネルギー、交通、公共管理、製造、教育、送電網、電気通信、金融、小売、建設現場、医療などの分野にも応用できる。さらに、本開示の電子デバイスまたは装置は、クラウド、エッジ、端末などの人工知能、ビッグデータおよび/またはクラウドコンピューティングに関連する応用シーンに使用されることができる。1つまたは複数の実施例において、本開示の解決策に基づく高い計算能力の電子デバイスまたは装置は、クラウドデバイス(例えば、クラウドサーバー)に応用することができ、低電力消費の電子デバイスまたは装置は、端末デバイスおよび/またはエッジデバイス(例えば、スマートフォンまたはウェブカメラ)に応用されることができる。1つまたは複数の実施例において、クラウドデバイスのハードウェア情報と端末デバイスおよび/またはエッジデバイスのハードウェア情報は互いに互換性があり、それにより、端末デバイスおよび/またはエッジデバイスのハードウェア情報に基づいて、クラウドデバイスのハードウェア資源から適切なハードウェア資源をマッチングして、端末デバイスおよび/またはエッジデバイスのハードウェア資源をシミュレートし、端末とクラウドとを一体化しまたはクラウドとエッジと端末とを一体化する統一管理、スケジューリングと協同作業を完了することができる。
なお、簡略化するために、本開示は、いくつかの方法およびその実施例を一連の動作およびその組み合わせとして表現するが、当業者は、本開示の解決策が説明されている動作の順番によって限定されないことが理解できることに留意されたい。したがって、本開示の開示または教示に基づいて、当業者は、その中のいくつかのステップが他の順番で実行されるか、または同時に実行され得ることが理解できる。さらに、当業者は、本開示に説明されている実施例は任意の実施例とみなすことができること、即ち、その中で及んでいる動作またはモジュールが、必ずしも本開示の1つまたはいくつかの解決策の実現に必要なものではないことが理解できる。また、異なる解決策に基づいて、本開示におけるいくつかの実施例の説明は、それ自体の焦点も有する。これを鑑みて、当業者は、本開示の特定の実施例において詳細に説明されていない部分が、他の実施例の関連する説明も参照できることが理解できる。
具体的な実施において、本開示の開示および教示に基づいて、当業者は、本開示に開示されているいくつかの実施例は、本明細書に開示されていない他の方法で実施されることが理解できる。例えば、上記に記載の電子デバイスまたは装置の実施例における各ユニットについては、本明細書では論理機能を考慮した上で区分しているが、実際に実現する場合、別の区分方式があり得る。また、例えば、複数のユニットまたはコンポーネントを別の1つのシステムに組合せまたは集積化したり、またはユニットまたはコンポーネントにおける一部の特征または機能を、選択的に無効にしたりすることができる。異なるユニットまたはコンポーネントの間の接続関係については、添付図面を参照して前述した接続は、ユニットまたはコンポーネントの間の直接的または間接的な結合であってよい。いくつかのシーンにおいて、前述の直接的または間接的な結合は、インタフェースを用いた通信接続に関して、その中の通信インタフェースは電気的、光学的、音響学的、磁気的または他の形態の信号伝送をサポートすることができる。
本開示において、分離部品として説明されたユニットは、物理的に分離されているものであってもよいし、物理的に分離されているものでなくてもよい。ユニットとして示される部品は、物理的ユニットであってもよいし、物理的ユニットでなくてもよい。上記部品またはユニットは、同じ位置に位置することができ、複数のネットワークユニットに分散されることもできる。また、実際のニーズに応じて、その一部または全てのユニットを選択して、本開示の実施例に記載の解決策の目的を実現することができる。また、いくつかのシーンにおいて、本開示の実施例における複数のユニットが1つのユニットに集積化するか、または各ユニットが物理的に個別に存在することができる。
いくつかの実現シーンにおいて、上記集積化されたユニットは、ソフトウェアプログラムモジュールの形態として実現されることができる。ソフトウェアプログラムモジュールの形態で実現され、かつ独立した製品として販売または使用される場合、前記集積化されたユニットは、コンピューターの読み取り可能なメモリに格納されることができる。これに基づいて、本開示の解決策がソフトウェア製品(例えば、コンピューターの読み可能な記憶媒体)の形態で具体化される場合、該ソフトウェア製品は、メモリに記憶されることができ、これは、コンピューター装置(例えば、パーソナルコンピューター、サーバーまたはネットワーク装置など)に本開示の実施例に記載されている方法の一部または全てのステップを実行させるためのいくつかの命令を含むことができる。前述のメモリは、Uディスク、フラッシュメモリ、読み取り専用メモリ(Read Only Memory、ROM)、ランダムアクセスメモリ(Random Access Memory、RAM)、モバイルハードディスク、磁気ディスクまたは光ディスクなどの、プログラムコードが記憶できる様々な媒体を含むが、これらに限定されない。
別のいくつかの実現シーンにおいて、上記集積化されたユニットは、ハードウェアの形態で実現されることができ、即ち、デジタル回路および/またはアナログ回路などを含むことができる具体的なハードウェア回路である。回路のハードウェア構造の物理的実現は、物理的素子を含んでよいが、これらに限定されず、物理的素子は、トランジスタまたはメモリスターなどの素子を含んでもよいが、これらに限定されない。これを鑑みて、本明細書に記載されている様々な装置(例えば、計算装置または他の処理装置)は、例えば、CPU、GPU、FPGA、DSPおよびASICなどの適切なハードウェアプロセッサを介して実現されることができる。さらに、前述の前記記憶ユニットまたは記憶装置は、任意の適切な記憶媒体(磁気記憶媒体または光磁気記憶媒体などを含む)であってもよく、これは、例えば、抵抗変化型メモリ(Resistive Random Access Memory、RRAM)、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)、スタティックランダムアクセスメモリ(Static Random Access Memory、SRAM)、強化されたダイナミックランダムアクセスメモリ(Enhanced Dynamic Random Access Memory、EDRAM)、高帯域メモリ(High Bandwidth Memory、HBM)、ハイブリッドメモリキューブ(Hybrid Memory Cube、HMC)、ROMおよびRAMなどであってよい。
上記の内容は、以下の条項によってよりよく理解できる。
条項1、制御回路と複数の処理回路とを含む計算装置であって、
前記制御回路は、超長命令語(VLIW)命令を取得し、解析し、解析後のVLIW命令を前記複数の処理回路に送信するように配置され、および
前記複数の処理回路は、一次元または多次元のアレイ構造で1つまたは複数の処理回路アレイとして接続され、前記1つまたは複数の処理回路アレイは、解析後のVLIW命令に基づいて、マルチスレッド操作を実行するように配置される。
条項2、条項1に記載の計算装置によれば、前記制御回路は、配置命令を取得するようにさらに配置され、前記複数の処理回路は、前記配置命令に基づいて接続するように配置されることによって、前記1つまたは複数の処理回路アレイを形成する。
条項3、条項2に記載の計算装置によれば、前記処理回路アレイは、前記配置命令に基づいて、一次元または多次元方向の少なくとも1つの次元方向に閉ループを形成するように配置される。
条項4、条項2または3に記載の計算装置によれば、前記制御回路は、前記処理回路アレイに関する配置情報を記憶する1つまたは複数のレジスタを含み、前記制御回路は、前記配置命令に基づいて、前記レジスタから前記配置情報を読み取り、前記処理回路に送信するように配置されることによって、前記処理回路が前記配置情報に従って接続され、前記配置情報は、プリセットされる、前記1つまたは複数の処理回路アレイを構成する処理回路の位置情報を含み、前記処理回路アレイが閉ループを形成するように配置される場合、前記配置情報は、前記処理回路アレイが閉ループを形成することに関するリング配置情報をさらに含む。
条項5、条項3に記載の計算装置によれば、前記二次元アレイに位置する前記処理回路は、その行方向、列方向または対角線方向の少なくとも1つの方向に、所定の二次元間隔パターンで同行、同列または同対角線にある残りの1つまたは複数の前記処理回路と接続するように配置されることによって、1つまたは複数の閉ループを形成する。
条項6、条項5に記載の計算装置によれば、前記所定の二次元間隔パターンは、前記接続で間隔を置いて設置された処理回路の数と関連付けられている。
条項7、条項3に記載の計算装置によれば、前記処理回路アレイは、複数の層からなる三次元アレイのリング方式で接続されており、各層は行方向、列方向および対角線方向に沿って配列された複数の前記処理回路の二次元アレイを含み、そのうち、
前記三次元アレイに位置する前記処理回路は、その行方向、列方向、対角線方向および層方向の少なくとも1つの方向に、所定の三次元間隔パターンで同行、同列、同対角線または異なる層にある残りの1つまたは複数の処理回路と接続するように配置されることによって、1つまたは複数の閉ループを形成する。
条項8、条項7に記載の計算装置によれば、前記所定の三次元間隔パターンは、接続待ちの処理回路間の間隔の数および間隔層の数に関連付けられている。
条項9、条項2に記載の計算装置によれば、前記制御回路は、前記配置命令に基づいて、定数項とエントリのうちの少なくとも1つを前記処理回路アレイに送信するように配置されることによって、前記マルチスレッド操作を実行する。
条項10、条項1に記載の計算装置によれば、さらに記憶回路を含んでおり、前記制御回路は、データ読み書き命令を取得し、前記データ読み書き命令を前記記憶回路に送信するようにさらに配置され、前記記憶回路は、前記データ読み書き命令に基づいて前記マルチスレッド操作に関するデータの読み取り操作と書き込み操作を実行するように配置される。
条項11、条項10に記載の計算装置によれば、前記データ読み書き命令には、少なくともデータのアドレス情報とデータ量情報が含まれる。
条項12、条項1に記載の計算装置によれば、前記VLIW命令は、1つまたは複数の演算命令を含み、前記1つまたは複数の処理回路アレイは、前記演算命令に基づいて、マルチスレッドの演算操作を実行するように配置される。
条項13、条項12に記載の計算装置によれば、前記複数の処理回路アレイは、それぞれが異なる演算命令を実行するように配置されるか、または前記複数の処理回路アレイのうちの少なくとも2つの処理回路アレイが、同じ演算命令を実行するように配置される。
条項14、条項1に記載の計算装置によれば、さらにデータ操作回路を含み、前記データ操作回路は、前操作回路および/または後操作回路を含んでおり、前記VLIW命令は、前処理命令および/または後処理命令をさらに含んでおり、前記前操作回路は、前記前処理命令に基づいて前記マルチスレッド操作の入力データに対して前処理操作を行うように配置され、前記後操作回路は、前記後処理命令に基づいて前記マルチスレッド操作の出力データに対して後処理操作を行うように配置される。
条項15、条項1乃至14のいずれか1項に記載の計算装置によれば、前記VLIW命令はさらに移動命令を含み、前記処理回路アレイは、前記移動命令に基づいて処理回路間でデータに対して移動操作を実行するように配置される。
条項16、条項15に記載の計算装置によれば、前記移動命令は、さらにマスク命令を含み、前記処理回路アレイは、前記マスク命令に基づいてデータを選択的に移動するように配置される。
条項17、条項15に記載の計算装置によれば、前記移動命令は、処理回路間でデータを移動するソースレジスタおよびターゲットレジスタを示すために用いられるレジスタ識別子情報をさらに含み、前記処理回路は、前記レジスタ識別子情報に基づいて、前記ソースレジスタから前記ターゲットレジスタにデータを移動するように配置される。
条項18、条項15に記載の計算装置によれば、前記VLIW命令、配置命令およびデータ読み書き命令は、それぞれが対応する述語を含み、前記制御回路、処理回路および記憶回路は、VLIW命令、配置命令および/またはデータ読み書き命令を実行するか否かを対応する述語に基づいて決定するように配置される。
条項19、条項15に記載の計算装置によれば、前記VLIW命令は、前記配置命令とデータ読み書き命令との両者のうちの少なくとも1つと組み合わせて、拡張されたVLIW命令を形成する。
条項20、条項1乃至19のいずれか1項に記載の計算装置を含む集積回路チップである。
条項21、条項20に記載の集積回路チップを含むボードカードである。
条項22、条項20に記載の集積回路チップを含む電子デバイスである。
条項23、計算装置を使用して計算操作を実行する方法であって、
前記計算装置は、制御回路と複数の処理回路とを含み、
前記方法は、
前記制御回路により、超長命令語(VLIW)命令を取得し、解析することによって、解析後のVLIW命令を取得し、解析後のVLIW命令を前記複数の処理回路に送信すること、および
前記複数の処理回路を、一次元または多次元アレイの構造で1つまたは複数の処理回路アレイとして接続し、前記1つまたは複数の処理回路アレイを、解析後のVLIW命令に基づいてマルチスレッド操作を実行するように配置することを含む。
条項24、条項23に記載の方法によれば、前記制御回路により配置命令を取得し、前記複数の処理回路を、前記配置命令に基づいて接続されるように配置することによって、前記1つまたは複数の処理回路アレイを形成する。
条項25、条項24に記載の方法によれば、前記処理回路アレイを、前記配置命令に基づいて一次元または多次元方向の少なくとも1つの次元方向に閉ループを形成するように配置する。
条項26、条項24または25に記載の方法によれば、前記制御回路は、前記処理回路アレイに関する配置情報を記憶する1つまたは複数のレジスタを含み、前記方法は、前記制御回路を、前記配置命令に基づいて前記レジスタから前記配置情報を読取って前記処理回路に送信するように配置することによって、前記処理回路が前記配置情報に従って接続されることをさらに含み、前記配置情報は、プリセットされる、前記1つまたは複数の処理回路アレイを構成する処理回路の位置情報を含み、前記処理回路アレイが閉ループを形成するように配置される場合、前記配置情報は、前記処理回路アレイが閉ループを形成することに関するリング配置情報をさらに含む。
条項27、条項25に記載の方法によれば、前記二次元アレイに位置する前記処理回路を、その行方向、列方向または対角線方向の少なくとも1つの方向に、所定の二次元間隔パターンで同行、同列または同対角線にある残りの1つまたは複数の前記処理回路と接続するように配置することによって、1つまたは複数の閉ループを形成する。
条項28、条項27に記載の方法によれば、前記所定の二次元間隔パターンは、前記接続で間隔を置いて配置された処理回路の数に関連付けられている。
条項29、条項25に記載の方法によれば、前記処理回路アレイを、複数の層からなる三次元アレイのリング方式で接続しており、各層は行方向、列方向および対角線方向に沿って配列された複数の前記処理回路の二次元アレイを含み、そのうち、
前記三次元アレイに位置する前記処理回路は、その行方向、列方向、対角線方向および層方向の少なくとも1つの方向に、所定の三次元間隔パターンで同行、同列、同対角線または異なる層にある残りの1つまたは複数の処理回路と接続するよう配置されることによって、1つまたは複数の閉ループを形成する。
条項30、条項29に記載の方法によれば、前記所定の三次元間隔パターンは、接続待ちの処理回路間の間隔の数および間隔層の数に関連付けられている。
条項31、条項24に記載の方法によれば、前記制御回路を、前記配置命令に基づいて定数項とエントリのうちの少なくとも1つを前記処理回路アレイに送信するように配置することによって、前記マルチスレッド操作を実行する。
条項32、条項23に記載の方法によれば、前記計算装置は、記憶回路をさらに含んでおり、前記方法は、前記制御回路を、データ読み書き命令を取得し前記データ読み書き命令を前記記憶回路に送信するように配置すること、および、前記記憶回路を、前記データ読み書き命令に基づいて前記マルチスレッド操作に関するデータの読み取り操作と書き込み操作を実行するように配置することをさらに含む。
条項33、条項31に記載の方法によれば、前記データ読み書き命令には、少なくともデータのアドレス情報とデータ量情報が含まれている。
条項34、条項23に記載の方法によれば、前記VLIW命令は、1つまたは複数の演算命令を含み、前記1つまたは複数の処理回路アレイは、前記演算命令に基づいて、マルチスレッドの演算操作を実行するように配置される。
条項35、条項34に記載の方法によれば、前記複数の処理回路アレイを、それぞれが異なる演算命令を実行するように配置するか、または前記複数の処理回路アレイのうちの少なくとも2つの処理回路アレイを、同じ演算命令を実行するように配置する。
条項36、条項23に記載の方法によれば、さらにデータ操作回路を含み、前記データ操作回路は、前操作回路および/または後操作回路を含んでおり、前記VLIW命令は、前処理命令および/または後処理命令をさらに含んでおり、前記前操作回路は、前記前処理命令に基づいて前記マルチスレッド操作の入力データに対して前処理操作を行うように配置され、前記後操作回路は、前記後処理命令に基づいて前記マルチスレッド操作の出力データに対して後処理操作を行うように配置される。
条項37、条項23乃至36のいずれか1項に記載の方法によれば、前記VLIW命令は、さらに移動命令を含み、前記方法は、前記処理回路アレイを、前記移動命令に基づいて処理回路間でデータに対して移動操作を実行するように配置することを含む。
条項38、条項37に記載の方法によれば、前記移動命令は、さらにマスク命令を含み、前記方法は、前記処理回路アレイを、前記マスク命令に基づいてデータを選択的に移動するように配置することを含む。
条項39、条項37に記載の方法によれば、前記移動命令は、処理回路間でデータを移動するソースレジスタおよびターゲットレジスタを示すために用いられるレジスタ識別子情報をさらに含み、前記方法は、前記処理回路を、前記レジスタ識別子情報に基づいて前記ソースレジスタから前記ターゲットレジスタにデータを移動するように配置することを含む。
条項40、条項37に記載の方法によれば、前記VLIW命令、配置命令およびデータ読み書き命令は、それぞれが対応する述語を含み、前記方法は、前記制御回路、処理回路および記憶回路を、対応する述語に基づいてVLIW命令、配置命令および/またはデータ読み書き命令を実行するか否かを決定するように配置する。
条項41、条項37に記載の方法によれば、前記VLIW命令を、前記配置命令とデータ読み書き命令との両者のうちの少なくとも1つと組み合わせて、拡張されたVLIW命令を形成する。
本開示の複数の実施例を本明細書において示し、説明しているが、このような実施例は例示的な形態としてのみ提供されることが、当業者にとって明らかである。当業者は、本開示の思想および精神から逸脱することなく、多くの改正、変更および代替の方法を想到できる。本開示を実施する過程において、本明細書に説明された本開示の実施例に対する様々な代替案を採用することができることを理解すべきである。添付の特許請求の範囲は、本開示の保護範囲を限定することを意図しており、したがって、これらの特許請求の範囲内の同等物または代替案をカバーする。