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

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

▶ 寒武紀(西安)集成電路有限公司の特許一覧

特許7483764計算装置、集積回路チップ、ボードカード、電子デバイスおよび計算方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-07
(45)【発行日】2024-05-15
(54)【発明の名称】計算装置、集積回路チップ、ボードカード、電子デバイスおよび計算方法
(51)【国際特許分類】
   G06F 15/80 20060101AFI20240508BHJP
   G06F 9/38 20180101ALI20240508BHJP
   G06F 9/30 20180101ALI20240508BHJP
   G06F 15/177 20060101ALI20240508BHJP
【FI】
G06F15/80
G06F9/38 310J
G06F9/30 350F
G06F15/177 A
【請求項の数】 11
(21)【出願番号】P 2021576573
(86)(22)【出願日】2021-05-19
(65)【公表番号】
(43)【公表日】2022-09-29
(86)【国際出願番号】 CN2021094724
(87)【国際公開番号】W WO2022001456
(87)【国際公開日】2022-01-06
【審査請求日】2021-12-23
(31)【優先権主張番号】202010618109.7
(32)【優先日】2020-06-30
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】522393114
【氏名又は名称】寒武紀(西安)集成電路有限公司
(74)【代理人】
【識別番号】100146374
【弁理士】
【氏名又は名称】有馬 百子
(72)【発明者】
【氏名】喩 ▲しん▼
(72)【発明者】
【氏名】劉 少礼
(72)【発明者】
【氏名】陶 勁樺
【審査官】坂東 博司
(56)【参考文献】
【文献】米国特許出願公開第2020/0201612(US,A1)
【文献】米国特許出願公開第2019/0304054(US,A1)
【文献】特開平06-223209(JP,A)
【文献】特開平01-187666(JP,A)
【文献】特開2018-097716(JP,A)
【文献】特表2016-517562(JP,A)
【文献】特開2014-002728(JP,A)
【文献】特開2003-099249(JP,A)
【文献】特開2014-203456(JP,A)
【文献】特開2007-226793(JP,A)
【文献】中国特許出願公開第1261966(CN,A)
【文献】特表2002-507300(JP,A)
【文献】特開2000-181566(JP,A)
【文献】特開平8-250685(JP,A)
【文献】特開平8-46509(JP,A)
【文献】特開2005-128709(JP,A)
【文献】特開2005-4343(JP,A)
【文献】特開2006-155176(JP,A)
【文献】国際公開第2005/001689(WO,A1)
【文献】米国特許出願公開第2004/0193842(US,A1)
【文献】米国特許出願公開第2004/0221135(US,A1)
【文献】特開平11-167543(JP,A)
【文献】特開2005-140656(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/80
G06F 9/38
G06F 9/30
G06F 15/177
(57)【特許請求の範囲】
【請求項1】
複数の処理回路を一次元または多次元アレイの構造で接続することによって形成される処理回路アレイと制御回路とを含んでおり、前記処理回路アレイは、複数の処理回路サブアレイとして配置され、複数の演算命令の受信に応答してマルチスレッド演算を実行し、前記処理回路サブアレイのそれぞれは、前記複数の演算命令のうちの少なくとも1つの演算命令を実行するように配置されており、
前記複数の演算命令は、計算装置が受信した計算命令を解析して得られ、
前記計算命令の操作コードは、前記処理回路アレイにより実行される複数の操作を表し、前記計算装置は前記計算命令を取得し前記計算命令を解析することによって、前記操作コードで表される複数の操作に対応する前記複数の演算命令を得るように構成され、
前記制御回路は、前記複数の演算命令に基づいて前記処理回路アレイを配置することによって、前記複数の処理回路サブアレイを得
前記制御回路は、前記処理回路アレイに関する配置情報を記憶するレジスタをさらに含み、
前記制御回路は、前記複数の処理回路が前記配置情報に基づいて論理的に配置されて前記処理回路アレイを形成するように、配置命令により前記配置情報を前記複数の処理回路に搬送するか、または前記レジスタから読み取った前記配置情報を前記複数の処理回路に送信する、
計算装置。
【請求項2】
前記複数の演算命令は、少なくとも1つの多段パイプライン演算を含み、前記1つの多段パイプライン演算は少なくとも2つの演算命令を含む
請求項1に記載の計算装置。
【請求項3】
前記処理回路アレイは一次元アレイであり、前記処理回路アレイにおける1つまたは複数の処理回路は、1つの前記処理回路サブアレイとして配置される
請求項1に記載の計算装置。
【請求項4】
前記処理回路アレイは二次元アレイであり、そのうち
前記処理回路アレイにおける1つまたは複数行の処理回路は、1つの前記処理回路サブアレイとして配置されるか、または
前記処理回路アレイにおける1つまたは複数列の処理回路は、1つの前記処理回路サブアレイとして配置されるか、または
前記処理回路アレイにおいて、対角線方向に沿った1つまたは複数ラインの処理回路は、1つの前記処理回路サブアレイとして配置される
請求項1に記載の計算装置。
【請求項5】
前記処理回路アレイは三次元アレイであり、前記処理回路アレイにおける三次元サブアレイまたは複数の三次元サブアレイは、1つの前記処理回路サブアレイとして配置される
請求項1に記載の計算装置。
【請求項6】
請求項1乃至5のいずれか1項に記載の計算装置を含む
集積回路チップ。
【請求項7】
計算装置を使用して計算を実行する方法であって、前記計算装置は、複数の処理回路を一次元または多次元アレイの構造で接続することによって形成された処理回路アレイを含み、前記処理回路アレイは、複数の処理回路サブアレイとして配置されており、
前記方法は、
前記計算装置で計算命令を受信し、解析して複数の演算命令を取得すること、
前記複数の演算命令の受信に応答して、前記複数の処理回路サブアレイによりマルチスレッド演算を実行し、前記複数の処理回路サブアレイにおける各処理回路サブアレイは、複数の演算命令のうちの少なくとも1つの演算命令を実行するように配置されることを含み、
前記計算命令の操作コードは、前記処理回路アレイによって実行される複数の操作を表し、前記計算装置はさらに制御回路を含み、
前記方法は、前記制御回路を使用して前記計算命令を取得し、前記計算命令を解析することによって、前記操作コードで表す複数の操作に対応する前記複数の演算命令を得ることを含み、
前記制御回路により、前記複数の演算命令に基づいて前記処理回路アレイを配置することによって、前記複数の処理回路サブアレイを得
前記制御回路は、前記処理回路アレイに関する配置情報を記憶するレジスタをさらに備え、
前記方法は、前記複数の処理回路が前記配置情報に基づいて論理的に配置されて前記処理回路アレイを形成するように、前記制御回路が配置命令により配置情報を前記複数の処理回路に搬送するか、または前記レジスタから読み取った前記配置情報を前記複数の処理回路に送信すること、を更に含む、
方法。
【請求項8】
計算装置を使用して計算を実行する方法であって、前記計算装置は、複数の処理回路を一次元または多次元アレイの構造で接続することによって形成された処理回路アレイを含み、前記処理回路アレイは、複数の処理回路サブアレイとして配置されており、
前記方法は、
前記計算装置で計算命令を受信し、解析して複数の演算命令を取得すること、
前記複数の演算命令の受信に応答して、前記複数の処理回路サブアレイによりマルチスレッド演算を実行し、前記複数の処理回路サブアレイにおける各処理回路サブアレイは、複数の演算命令のうちの少なくとも1つの演算命令を実行するように配置されることを含み、
前記計算命令の操作コードは、前記処理回路アレイによって実行される複数の操作を表し、前記計算装置はさらに制御回路を含み、
前記方法は、前記制御回路を使用して前記計算命令を取得し、前記計算命令を解析することによって、前記操作コードで表す複数の操作に対応する前記複数の演算命令を得ることを含み、
前記制御回路により、前記複数の演算命令に基づいて前記処理回路アレイを配置することによって、前記複数の処理回路サブアレイを得、
前記複数の演算命令は、少なくとも1つの多段パイプライン演算を含み、前記1つの多段パイプライン演算は少なくとも2つの演算命令を含む方法。
【請求項9】
前記処理回路アレイは一次元アレイであり、
前記方法は、前記処理回路アレイにおける1つまたは複数の処理回路を1つの前記処理回路サブアレイとして配置することを含む
請求項7に記載の方法。
【請求項10】
前記処理回路アレイは二次元アレイであり、
前記方法は、
前記処理回路アレイにおける1つまたは複数行の処理回路を1つの前記処理回路サブアレイとして配置すること、または
前記処理回路アレイにおける1つまたは複数列の処理回路を1つの前記処理回路サブアレイとして配置すること、または
前記処理回路アレイにおいて、対角線方向に沿った1つまたは複数ラインの処理回路を1つの前記処理回路サブアレイとして配置することをさらに含む
請求項7に記載の方法。
【請求項11】
前記処理回路アレイは三次元アレイであり、
前記方法は、前記処理回路アレイにおける三次元サブアレイまたは複数の三次元サブアレイを1つの前記処理回路サブアレイとして配置することを含む
請求項7に記載の方法。
【発明の詳細な説明】
【技術技術】
【0001】
<関連出願>
本出願は、2020年06月30日に出願され、出願番号が第2020106181097で、名称が「計算装置、集積回路チップ、ボードカード、電子デバイスおよび計算方法」である中国特許出願の優先権を主張しており、同出願の内容の全ては、ここに参照として取り込まれる。
【0002】
本開示は、通常、計算分野に関する。より具体的に、本開示は、計算装置、集積回路チップ、ボードカード、電子デバイスおよび計算方法に関する。
【背景技術】
【0003】
計算システムにおいて、命令セットは、計算の実行と計算システムへの制御に用いられる一連の命令のセットであり、かつ計算システムにおける計算チップ(例えば、プロセッサ)の性能を向上させる方面でキーポイントとなる役割を果たしている。現在の様々な計算チップ(特に、人工知能分野のチップ)は、関連付けられている命令セットを使用して、様々な汎用または特定の制御操作とデータ処理操作を完了することができる。しかし、現在の命令セットには多くの欠陥が存在する。例えば、既存の命令セットは、ハードウェアアーキテクチャによって制限されており、柔軟性の方面で比較的に劣っている。さらに、多くの命令は単一の操作しか完了できず、通常、複数の操作を実行するには複数の命令が必要であり、それは、オンチップI/Oのデータのスループットの増大を潜在的に齎す。また、現在の命令は、実行速度、実行効率およびチップによって引き起こされる消費電力の点で、改善される余地がある。
【発明の概要】
【0004】
上記の先行技術に存在する問題を少なくとも解決するために、本開示は、処理回路アレイを備えるハードウェアアーキテクチャを提供する。該ハードウェアアーキテクチャを使用して計算命令を実行することによって、本開示の解決策は、ハードウェアの処理性能の補強、電力消費の低減、計算操作の実行効率の向上、および計算オーバヘッドの回避などを含む複数の方面で技術的利点を得ることができる。
【0005】
第1の態様において、本開示は計算装置を提供する。前記計算装置は、複数の処理回路を一次元または多次元アレイの構造で接続することによって形成される処理回路アレイを含んでおり、前記処理回路アレイは、複数の処理回路サブアレイとして配置され、複数の演算命令の受信に応答してマルチスレッド演算を実行し、前記処理回路サブアレイのそれぞれは、前記複数の演算命令のうちの少なくとも1つの演算命令を実行するように配置されており、前記複数の演算命令は、前記計算装置が受信した計算命令を解析して得られる。
【0006】
第2の態様において、本開示は、上記のような内容、かつ以下の複数の実施例で説明される計算装置を含む、集積回路チップを提供する。
【0007】
第3の態様において、本開示は、上記のような内容、かつ以下の複数の実施例で説明される集積回路チップを含む、ボードカードを提供する。
【0008】
第4の態様において、本開示は、上記のような内容、かつ以下の複数の実施例で説明される集積回路チップを含む、電子デバイスを提供する。
【0009】
第5の態様において、本開示は、前述計算装置を使用して計算を実行する方法を提供する。前記計算装置は、複数の処理回路を一次元または多次元アレイの構造で接続することによって形成された処理回路アレイを含み、前記処理回路アレイは、複数の処理回路サブアレイとして配置されており、前記方法は、前記計算装置で計算命令を受信し、解析して複数の演算命令を取得すること、前記複数の演算命令の受信に応答して、前記複数の処理回路サブアレイによりマルチスレッド演算を実行し、前記複数の処理回路サブアレイにおける各処理回路サブアレイは、複数の演算命令のうちの少なくとも1つの演算命令を実行するように配置されることを含む。
【0010】
本開示の上述の計算装置、集積回路チップ、ボードカード、電子デバイスおよび方法を使用することによって、計算要件に基づいて適切な処理回路アレイを構築し、それにより、計算命令を効率的に実行し、計算オーバーヘッドを低減し、I/Oのデータのスループットを減少することができる。また、本開示の処理回路は、演算要件に基づいて、対応する演算をサポートするように配置されることができる。したがって、本開示の計算命令のオペランドの数は、演算要件に基づいて増加または減少し、かつ操作コードのタイプは、処理回路マトリックスによりサポートされている操作タイプから任意に選択および組合せることができるため、ハードウェアアーキテクチャの応用シーンおよび適応性が拡張される。
【図面の簡単な説明】
【0011】
本開示の例示的な実施形態の上記内容および他の目的、特徴と利点は、添付図面を参照して、以下の詳細な説明を読むことによって容易に理解される。添付図面において、本開示のいくつかの実施形態は、限定的ではなく例示的なもので示され、同じまたは対応する符号は、同じまたは対応する部分を示している。
【0012】
図1】本開示の一実施例に係る計算装置を示すブロック図である。
図2a】本開示の別の一実施例に係る計算装置を示すブロック図である。
図2b】本開示のもう一実施例に係る計算装置を示すブロック図である。
図3】本開示のもう一実施例に係る計算装置を示すブロック図である。
図4】本開示の実施例に係る計算装置の様々なタイプの処理回路アレイを示す例示的な構造図である。
図5a】本開示の実施例に係る複数の処理回路の様々な接続関係を示す模式図である。
図5b】本開示の実施例に係る複数の処理回路の様々な接続関係を示す模式図である。
図5c】本開示の実施例に係る複数の処理回路の様々な接続関係を示す模式図である。
図5d】本開示の実施例に係る複数の処理回路の様々な接続関係を示す模式図である。
図6a】本開示の実施例に係る複数の処理回路の別の様々な接続関係を示す模式図である。
図6b】本開示の実施例に係る複数の処理回路の別の様々な接続関係を示す模式図である。
図6c】本開示の実施例に係る複数の処理回路の別の様々な接続関係を示す模式図である。
図6d】本開示の実施例に係る複数の処理回路の別の様々な接続関係を示す模式図である。
図7a】本開示の実施例に係る処理回路の様々なリング構造を示す模式図である。
図7b】本開示の実施例に係る処理回路の様々なリング構造を示す模式図である。
図7c】本開示の実施例に係る処理回路の様々なリング構造を示す模式図である。
図7d】本開示の実施例に係る処理回路の様々なリング構造を示す模式図である。
図8a】本開示の実施例に係る処理回路の別の様々なリング構造を示す模式図である。
図8b】本開示の実施例に係る処理回路の別の様々なリング構造を示す模式図である。
図8c】本開示の実施例に係る処理回路の別の様々なリング構造を示す模式図である。
図9a】本開示の実施例に係る前操作回路によって実行されるデータ接合操作を示す模式図である。
図9b】本開示の実施例に係る前操作回路によって実行されるデータ接合操作を示す模式図である。
図9c】本開示の実施例に係る前操作回路によって実行されるデータ接合操作を示す模式図である。
図9d】本開示の実施例に係る前操作回路によって実行されるデータ接合操作を示す模式図である。
図10a】本開示の実施例に係る後操作回路によって実行されるデータ圧縮操作を示す模式図である。
図10b】本開示の実施例に係る後操作回路によって実行されるデータ圧縮操作を示す模式図である。
図10c】本開示の実施例に係る後操作回路によって実行されるデータ圧縮操作を示す模式図である。
図11】本開示の実施例に係る計算装置を使用して演算操作を実行する方法を示す簡単なフローチャートである。
図12】本開示の実施例に係る複合処理装置を示す構造図である。
図13】本開示の実施例に係るボードカードの構造を示す模式図である。
【発明を実施するための形態】
【0013】
本開示の解決策では、マルチスレッド演算をサポートするハードウェアアーキテクチャが提供される。該ハードウェアアーキテクチャが計算装置において実現される場合、該計算装置は、少なくとも複数の処理回路を含み、そのうち、複数の処理回路は異なる配置に基づいて接続されることによって、一次元または多次元アレイの構造を形成する。実現形態の不同によって、処理回路アレイは、複数の処理回路サブアレイに配置されることができ、かつ各処理回路サブアレイは、複数の演算命令のうちの少なくとも1つの演算命令を実行するように配置されることができる。本開示のハードウェアアーキテクチャおよび演算命令により、計算操作を効率的に実行し、計算の応用シーンを拡張し、かつ計算オーバーヘッドを低減することができる。
【0014】
本開示の実施例における技術的解決策は、以下、本開示の実施例における添付図面を参照して、明確、完全に説明される。明らかに、説明される実施例は、本開示の全ての実施形態ではなく、一部の実施例である。本開示の実施例に基づいて、当業者が創造的な労力を払わない前提で得られたすべての他の実施例は、いずれも本開示の保護の範囲に属する。
【0015】
図1は、本開示の一実施例に係る計算装置80を示すブロック図である。図1に示すように、該計算装置80は、複数の処理回路104によって形成された処理回路アレイを含む。具体的に、該複数の処理回路は、 二次元アレイの構造で接続されて処理回路アレイを形成しており、例えば、図に示すような複数の一次元処理回路サブアレイM1、M2、……Mnなどの複数の処理回路サブアレイを含む。本明細書の二次元構造の処理回路アレイ、およびこれに含まれる複数の一次元処理回路サブアレイは、限定的ではなく、例示的だけであることが理解されたい。本開示の処理回路アレイは、異なる演算シーンに基づいて、異なる次元を備えるアレイ構造に配置されることができる。また、後述の図5乃至図8に示している例示的な接続のように、処理回路サブアレイの内部または複数の処理回路サブアレイの間には、1つまたは複数の閉ループが形成されることができる。
【0016】
一実施例において、複数の演算命令の受信に応答して、本開示の処理回路アレイは、単一の命令マルチスレッド(「SIMT」)命令などのマルチスレッド演算を実行するように配置されることができる。さらに、各処理回路サブアレイは、前述複数の演算命令のうちの少なくとも1つの演算命令を実行するように配置されることができる。本開示の文脈において、前述の複数の演算命令は、計算装置(または処理回路、プロセッサ)の内部で動作するマイクロ命令または制御信号であってもよく、それは、計算装置によって実行する必要がある1つまたは複数の演算操作を含む(または、指示する)ことができる。異なる演算シーンに応じて、演算操作は加算操作、乗算操作、畳み込み演算操作、プーリング操作など様々な操作を含むことができるが、これらに限定されない。
【0017】
一実施例において、上記の複数の演算命令は、少なくとも1つの多段パイプライン演算を含むことができる。1つのシーンにおいて、前述の1つの多段パイプライン演算は、少なくとも2つの演算命令を含むことができる。異なる実行要件に基づいて、本開示の演算命令は述語を含むことができ、かつ各前記処理回路は、述語に基づいてそれに関連する演算命令を実行するか否かを判断する。本開示の処理回路は、配置に応じて、様々な演算操作を柔軟に実行することができる。その様々な演算操作は算術演算、論理演算、比較演算およびテーブルルックアップ演算を含むが、これらに限定されない。
【0018】
図1示す処理回路マトリックスおよび付属のM1~Mn個の処理回路サブマトリックスにより1つのn段パイプライン演算を実行することを例として、うち、処理回路サブマトリックスM1は、該パイプライン演算における第1段パイプライン演算ユニットとして機能することができ、処理回路サブマトリックスM2は、該パイプライン演算における第2段パイプライン演算ユニットとして機能することができる。このように類推し、処理回路サブマトリックスMnは、該パイプライン演算における第n段パイプライン演算ユニットとして機能することができる。n段パイプライン演算を実行するプロセスにおいて、第1段パイプライン演算ユニットから始め、該n段パイプライン演算を完了するまで、上から下への各段の演算を実行することができる。
【0019】
上記の処理回路サブアレイへの例示的な説明を通じて、本開示の前記処理回路アレイは、いくつかのシーンにおいて、一次元アレイであってもよく、かつ前記処理回路アレイにおける1つまたは複数の処理回路は、1つの前記処理回路サブアレイとして配置されることが理解できる。別のいくつかのシーンにおいて、本開示の前記処理回路アレイは二次元アレイであり、そのうち、前記処理回路アレイにおける1つまたは複数行の処理回路は、1つの前記処理回路サブアレイとして配置されるか、または、前記処理回路アレイにおける1つまたは複数列の処理回路は、1つの前記処理回路サブアレイとして配置されるか、または、前記処理回路アレイにおける対角線方向に沿った1つまたは複数ラインの処理回路は、1つの前記処理回路サブアレイとして配置される。
【0020】
多段のパイプライン演算を実現するために、本開示は、対応する計算命令をさらに提供し、該計算命令に基づいて処理回路アレイを配置および構築することによって、多段パイプライン演算を実現するすることができる。異なる演算シーンに応じて、本開示の計算命令は、複数の操作コードを含むことができ、該操作コードは、処理回路アレイによって実行される複数の操作を表すことができる。例えば、図1のn=4(即ち、4段パイプライン演算を実行する場合)の場合、本開示の解決策に基づく計算命令は、以下の式(1)で表す。
【0021】
Result=convert((((scr0 op0 scr1)op1 src2)op2 src3)op3 src4) (1)
【0022】
ただし、scr0~scr4はソースオペランドであり、op0~op3は操作コードであり、convertは、操作コードop4の実行後に取得したデータに対してデータ変換操作を実行することを表す。異なる実施形態に応じて、前述データ変換操作は、処理回路アレイにおける処理回路によって完了してもよく、または別の操作回路、例えば、図3を参照して後で詳細に説明される後操作回路にょって実行することもできる。本開示の解決策に基づいて、処理回路は、演算要件に応じて、対応する演算をサポートするように配置できるので、本開示の計算命令のオペランドの数は、演算要件に応じて増加または減少することができ、かつ操作コードのタイプは、処理回路マトリックスによってサポートされている操作タイプから任意に選択および組合わせることもできる。
【0023】
異なる応用シーンに応じて、本開示の複数の処理回路間の接続は、ハードウェアに基づく配置接続(または「ハード接続」と称す)であってもよく、また、特定のハードウェア接続の基に、ソフトウェア配置(例えば、配置命令を介して)を介して論理配置接続(または「ソフト接続」と称す)を行ってもよい。一実施例において、前記処理回路アレイは、一次元または多次元方向の少なくとも1つの次元方向で閉ループ、即ち、本開示の文脈における「リング構造」を形成することができる。
【0024】
図2aは、本開示の別の一実施例に係る計算装置100を示すブロック図である。図により分かるように、計算装置100は、計算装置80と同じの処理回路104に加えて、さらに制御回路102を含む。一実施例において、制御回路102は、上記に記載された計算命令を取得して計算命令を解析し、例えば、式(1)に表すような、前記操作コードで表される複数の操作に対応する前記複数の演算命令を取得するように配置されることができる。別の一実施例において、前記制御回路は、前記複数の演算命令に基づいて前記処理回路アレイを配置することによって、例えば、図1に示すような処理回路サブアレイM1、M2……Mnなどの前記複数の処理回路サブアレイを取得する。
【0025】
一応用シーンにおいて、前記制御回路は、配置情報を記憶するレジスタを含むことができて、制御回路は、前記複数の演算命令に基づいて対応する配置情報を抽出し、かつ前記は位置情報に基づいて前記処理回路アレイを配置することによって、前記複数の処理回路サブアレイを得る。
【0026】
一実施例において、前記制御回路は、前記処理回路アレイに関する配置情報を記憶する、1つまたは複数のレジスタを含んでもよく、前記制御回路は、前記配置命令に基づいて前記レジスタから前記配置情報を読み取り、前記処理回路に送信するように配置されることによって、前記処理回路が前記配置情報に従って接続される。
【0027】
一応用シーンにおいて、前記配置情報は、プリセットされる、前記1つまたは複数の処理回路アレイを構成する処理回路の位置情報を含んでもよく、該位置情報は、例えば、処理回路の座標情報または符号情報を含んでもよい。
【0028】
前記処理回路アレイが閉ループを形成するように配置される場合、前記配置情報は、閉ループを形成する前記処理回路アレイのリング配置情報をさらに含んでもよい。代替的に、一実施例において、上記の配置情報は、前記レジスタから読取れることではなく、配置命令により直接搬送されてもよい。この場合、処理回路は、受信した配置命令における位置情報に基づいて直接配置することによって、他の処理回路とともに閉ループのないアレイを形成するか、さらに閉ループを有するアレイを形成することができる。
【0029】
配置命令またはレジスタを介して取得した配置情報に基づいて、二次元アレイを形成するように接続を配置する場合、前記二次元アレイに位置する前記処理回路は、その行方向、列方向または対角線方向の少なくとも1つの方向に、所定の二次元間隔パターンで同行、同列または同対角線の残りの1つまたは複数の前記処理回路と接続されるように配置されることによって、1つまたは複数の閉ループを形成する。ここで、前記所定の二次元間隔パターンは、前記接続で間隔を置いて配置された処理回路の数に関連付けられている。
【0030】
さらに、前述配置命令または配置情報に基づいて、三次元アレイを形成するように接続を配置する場合、前記処理回路アレイは、複数の層からなる三次元アレイのリング方式で接続され、そのうち、各層は行方向、列方向および対角線方向に沿って配列された複数の前記処理回路の二次元アレイを含み、そのうち、前記三次元アレイに位置する前記処理回路は、その行方向、列方向、対角線方向および層方向の少なくとも1つの方向に、所定の三次元間隔パターンで同行、同列、同対角線または異なる層にある残りの1つまたは複数の処理回路と接続するように配置されることによって、1つまたは複数の閉ループを形成する。ここで、所定の三次元間隔パターンは、接続待ちの処理回路間の間隔の数および間隔層の数に関連付けられている。
【0031】
図2bは、本開示の別の一実施例に係る計算装置200を示すブロック図である。図により分かるように、図2の計算装置200は、計算装置100と同じ制御回路102と複数の処理回路104に加えて、記憶回路106をさらに含む。
【0032】
一応用シーンにおいて、上記の記憶回路は、複数の処理回路104に接続されるように、複数の方向にデータを伝送するインターフェースを配置し、それにより、処理回路の演算待ちのデータ、演算プロセスの実行中に得られた中間結果および演算プロセスの実行後に得られた演算結果を、適宜に記憶することができる。前述の状況に鑑みて、一応用シーンにおいて、本開示の記憶回路は、主記憶モジュールおよび/または主キャッシュモジュールを含んでもよく、そのうち、前記主記憶モジュールは、処理回路アレイにおいて演算を実行するデータと演算を実行した後の演算結果を記憶するように配置されており、前記主キャッシュモジュールは、前記処理回路アレイにおいて演算を実行した後の中間演算結果をキャッシュするように配置される。さらに、記憶回路は、オフチップ記憶媒体とデータの伝送を行うインターフェースをさらに備えており、それにより、オンチップシステムとオフチップシステムとの間でのデータの転送を実現することができる。
【0033】
図3は、本開示のもう一実施例に係る計算装置300を示すブロック図である。図から分かるように、図3の計算装置300は、計算装置200と同じの制御回路102、複数の処理回路104および記憶回路106に加えて、さらにデータ操作回路108を含む。データ操作回路108は、前操作回路110と後操作回路112とを含む。このようなハードウェアアーキテクチャに基づいて、前記前操作回路110は、少なくとも1つの前記演算命令の入力データの予備処理を実行するように配置され、前記後操作回路112は、少なくとも1つの演算命令の出力データの後処理を実行するように配置される。一実施例において、前操作回路によって実行される予備処理は、データ設置および/またはテーブルルックアップ操作を含むことができ、後操作回路によって実行される後処理は、データタイプ変換および/または圧縮操作を含むことができる。
【0034】
一応用シーンにおいて、テーブルルックアップ操作を実行する際に、前記前操作回路は、インデックス値により1つまたは複数の表を検索し、前記1つのまたは複数の表から前記オペランドに関連する1つまたは複数の定数項を取得するように配置される。付加的または代替的に、前記前操作回路は、前記オペランドにより、関連するインデックス値を決定し、かつ前記インデックス値により1つまたは複数の表を検索して、前記1つまたは複数の表から前記オペランドに関連する1つまたは複数の定数項を取得するように配置される。
【0035】
一応用シーンにおいて、前記前操作回路は、演算データのタイプと各処理回路の論理アドレスに基づいて、前記演算データに対して対応する分割を行い、分割後に取得した複数のサブデータは、演算のためにアレイの対応する各処理回路にそれぞれ伝達されることができる。別の一応用シーンにおいて、前記前操作回路は、解析後の命令に基づいて、複数のデータ接合モードの中から1つのデータ接合モードを選択して、2つの入力データに対して接合操作を実行することができる。1つの応用シーンにおいて、前記後操作回路は、データに対して圧縮操作を実行するように配置されてもよく、前記圧縮操作は、マスクによりデータを選別すること、または所定の閾値をデータのサイズと比較することで選別することを含み、それにより、データの圧縮を実現する。
【0036】
上述の図3のハードウェアアーキテクチャに基づいて、本開示の計算装置は、前述予備処理および後処理を含む計算命令を実行することができる。これより、前式(1)に表された計算命令のデータ変換操作は、上述の後操作回路によって実行することができる。以下、本開示の解決策に基づく計算命令の2つの例示的な例を示す。
【0037】
例1:TMUADCO=MULT+ADD+RELU(N)+CONVERTFP2FIX (2)
【0038】
上記(2)に表された命令は、1つの三項オペランドを入力して、1つの単項オペランドを出力する計算命令であり、それは、本開示の3段パイプライン演算(即ち、乗算+加/減算+活性化演算)を含む1つの処理回路マトリックスによって完了することができる。具体的には、三項操作はA*B+Cであり、そのうち、MULTのマイクロ命令は、オペランドAとB間の乗算操作を完了することによって積値を取得することであり、即ち、第1段パイプライン演算である。次に、ADDのマイクロ命令を実行して前述積値とCの加算操作を完了することによって和の結果「N」を取得することであり、即ち、第2段パイプライン演算である。その後、該結果に対してアクティブ化操作RELUを実行することであり、即ち、第3段パイプライン演算である。該3段パイプライン演算の後、最後に、上記の後操作回路によりマイクロ命令CONVERTFP2FIXを実行し、それにより、アクティベーション操作後の結果データのタイプを、浮動小数点数から固定小数点数に変換し、最終の結果として出力したり、または中間結果として固定小数点演算器に入力して、さらなる計算操作を行うことができる。
【0039】
例2:TSEADMUAD=SEARCHADD+MULT+ADD (3)
【0040】
上式(3)に表された命令は、1つの三項オペランドを入力し、1つの単項オペランドを出力する計算命令であり、それは、本開示に基づく2段パイプライン演算(即ち、乗算+加算)を含む1つの処理回路マトリックスによって完了できるマイクロ命令を含む。具体的には、三項操作はA*B+Cであり、そのうち、SEARCHADDのマイクロ命令は前操作回路によって完了することによって、テーブルルックアップ結果Aを得ることができる。次に、第1段パイプライン演算によってオペランドAとオペランドBとの乗算操作を完了することによって、積値を取得する。その後、ADDのマイクロ命令を実行し前述積値とCの加算操作を完了することによって、和の結果である「N」を取得することであり、即ち、第2段パイプライン演算である。
【0041】
上記のように、本開示の計算命令は、計算の要件に基づいて柔軟に設計および決定することができ、それにより、本開示の複数の処理回路サブマトリックスを含むハードウェアアーキテクチャは、計算命令およびそれによって具体的に完了された操作に基づいて、設計および接続され、それにより、命令の実行効率を向上させ、計算オーバーヘッドを低減することができる。
【0042】
図4は、本開示の実施例に係る計算装置400の様々なタイプの処理回路アレイを示す例示的な構造図である。図により分かるように、図4に示される計算装置400は、図3に示される計算装置300と類似するアーキテクチャを備えており、したがって、図3の計算装置300に関する説明は、同様に図4に示される同じ細部に適用されるため、以下では繰り返さない。
【0043】
図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つのまたは複数の実施例において、第1のタイプの処理回路は、本開示の第1の処理回路サブアレイを形成することができ、第2のタイプの処理回路は、本開示の第2の処理回路サブアレイを形成することによって、マルチスレッド演算を実行することができる。1つのシーンにおいて、マルチスレッド演算が複数の演算命令に関し、かつ複数の演算命令が1つの多段パイプライン演算を構成する場合、該第1の処理回路サブアレイは、多段パイプライン演算における若干段のパイプライン演算を実行することができ、第2の処理サブアレイは、別の若干段のパイプライン演算を実行することができる。別のシーンにおいて、マルチスレッド演算が複数の演算命令に関し、かつ複数の演算命令が2つの多段パイプライン演算を構成する場合、該第1の処理回路サブアレイは、第1の多段パイプライン演算を実行することができ、第2の処理回路サブアレイは、第2の多段パイプライン演算を実行することができる。
【0044】
いくつかの応用シーンにおいて、第1のタイプの処理回路と第2のタイプの処理回路という両者に応用される記憶回路は、異なる記憶スケールと記憶方式を備えることができる。例えば、第1のタイプの処理回路における述語記憶回路は、複数の番号付きのレジスタを用いて述語情報を記憶することができる。さらに、第1のタイプの処理回路は、受信した解析後の命令に指定されたレジスタ番号に基づいて、対応する番号のレジスタにおける述語情報をアクセスすることができる。また、例えば、第2のタイプの処理回路は、スタティックランダムアクセスメモリ(「SRAM」)の方式で述語情報を記憶することができる。具体的には、前記第2のタイプの処理回路は、受信した解析後の命令に指定された該述語情報の所在位置のオフセット量に基づいて、SRAMにおける前記述語情報の記憶アドレスを決定することができ、かつ該記憶アドレスにおける述語情報に対して、所定の読み出し操作または書き込み操作を行うことができる。
【0045】
図5a、図5b、図5cおよび図5dは、本開示の実施例に係る複数の処理回路の様々な接続関係を示す模式図である。上記のように、本開示の複数の処理回路は、ハードワイヤ接続の方式、または配置命令の論理接続方式に従って接続され、それにより、接続された一次元または多次元アレイのトポロジーを形成することができる。複数の処理回路間が多次元アレイで接続される場合、前記多次元アレイは二次元アレイであってもよく、前記二次元アレイに位置する前記処理回路は、その行方向、列方向または対角線方向の少なくとも1つの方向に、所定の二次元間隔パターンで同行、同列または同対角線にある残りの1つまたは複数の前記処理回路と接続することができる。そのうち、前記所定の二次元間隔パターンは、前記接続で間隔を置いて配置された処理回路の数に関連付けられることができる。図5a乃至図5cは、複数の処理回路間の様々な形態の二次元アレイのトポロジーを例示的に示している。
【0046】
図5a示すように、5つの処理回路(それぞれはブロックで表わす)が接続されて、1つの簡単な二次元アレイを形成する。具体的に、1つの処理回路を二次元アレイの中心として、1つの処理回路を、該処理回路に対して水平となる方向及び垂直となる方向の4つの方向にそれぞれ接続させ、それにより、3行と3列のサイズを備える1つの二次元アレイを形成する。さらに、二次元アレイの中心に位置する処理回路は、それぞれ、同行の前列と後列に隣接する処理回路と、同列の上行と下行に隣接する処理回路と直接接続しているため、間隔を置いている処理回路の数(「間隔数」と略称する)は0である。
【0047】
図5bに示すように、4行4列の処理回路は、接続されて1つの二次元トーラス(Torus)アレイを形成することができ、そのうち、各処理回路は、隣接する前行と後行、前列と後列の処理回路とそれぞれ接続され、即ち、隣接する処理回路が接続される間隔数は、いずれも0である。さらに、該二次元トーラスアレイの各行または各列に位置する1番目の処理回路は、該行または該列の最後の1つの処理回路とも接続し、各行または各列の首尾が互いに接続された処理回路間の間隔数は、いずれも2である。
【0048】
図5cに示すように、4行4列の処理回路は、接続されて、1つの隣接する処理回路間の間隔数が0で、隣接していない処理回路間の間隔数が1である、二次元アレイを形成することができる。具体的に、該二次元アレイにおいて、同行または同列に隣接する処理回路は直接接続されており、即ち、間隔数は0であり、同行または同列に隣接していない処理回路は、間隔数が1の処理回路に接続される。複数の処理回路が接続されて二次元アレイを形成する場合、図5bおよび図5cに示される同行または同列の処理回路間に、異なる間隔数があり得ることが分かる。同様に、いくつかのシーンにおいて、異なる間隔数で対角線方向にある処理回路に接続されることもできる。
【0049】
図5dに示すように、図5bに示されるような4つの二次元トーラスアレイを使用して、所定の間隔で4層の二次元トーラスアレイに配列して接続されることによって、1つの三次元トーラスアレイを形成することができる。該三次元トーラスアレイは、二次元トーラスアレイを基に、行間、列間と類似する間隔パターンで層間接続される。例えば、まず、隣接する層の同行同列にある処理回路を直接接続し、即ち、間隔数は0である。次に、第1の層と最後の層の同行同列にある処理回路を接続し、即ち、間隔数は2である。最終的に、4層4行4列の三次元トーラスアレイを形成することができる。
【0050】
上記のこれらの例示を通じて、当業者は、処理回路の他の多次元アレイの接続関係は、二次元アレイを基に、新しい次元の追加と処理回路の数の追加により形成されることが理解できる。いくつかの応用シーンにおいて、本開示の解決策は、配置命令を使用することによって、処理回路に対して論理接続を配置することができる。言い換えると、処理回路間にハードワイヤ接続が存在する可能性があるが、本開示の解決策は、配置命令によりいくつかの処理回路を選択的に接続するか、またはいくつかの処理回路を選択的にバイパスすることによって、1つまたは複数の論理接続を形成することもできる。いくつかの実施例において、実際の演算の必要(例えば、データタイプの変換)に応じて、前述の論理接続を調整することができる。さらに、異なる計算シーンに対して、本開示の解決策は、処理回路の接続を配置することができて、例えば、マトリックスに配置されること、または1つまたは複数の閉合される計算ループに配置されることを含む。
【0051】
図6a、図6b、図6cおよび図6dは、本開示の実施例に係る複数の処理回路の別の様々な接続関係を示す模式図である。図により、図6a乃至図6dは、図5a乃至図5dに示されている複数の処理回路に形成された、多次元アレイのもう1つの例示的な接続関係であることが分かる。これを鑑みて、図5a乃至図5dを参照して説明した技術的詳細は、図6a乃至図6dに示される内容にも適用される。
【0052】
図6aに示すように、二次元アレイの処理回路は、二次元アレイの中心に位置する中心処理回路と、該中心処理回路の同行および同列の4つの方向にそれぞれ接続された3つの処理回路とを含む。したがって、該中心処理回路と残りの処理回路との間に接続される間隔数は、それぞれ0、1および2である。図6bに示すように、二次元アレイの処理回路は、二次元アレイの中心に位置する中心処理回路、該処理回路の同行の2つの対向方向にある3つの処理回路、および該処理回路の同列の2つの対向方向にある1つの処理回路を含む。したがって、中心処理回路と同行の処理回路との間に接続される間隔数は、それぞれ0および2であり、同列の処理回路との間に接続される間隔数は、いずれも0である。
【0053】
図5dを参照して上記に示されるように、複数の処理回路によって形成された多次元アレイは、複数の層からなる三次元アレイであってよい。そのうち、前記三次元アレイの各層は、その行方向と列方向に沿って配列された複数の前記処理回路の二次元アレイを含むことができる。さらに、前記三次元アレイに位置する前記処理回路は、その行方向、列方向、対角線方向および層方向の少なくとも1つの方向に、所定の三次元間隔パターンで、同行、同列、同対角線または異なる層にある残りの1つまたは複数の処理回路と接続することができる。さらに、前記所定の三次元間隔パターンと前記接続において互いに間隔を置いて配置された処理回路の数は、離間された層数と関連つけられることができる。以下、図6cと図6dを参照して、三次元アレイの接続方式についてさらに説明する。
【0054】
図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である。
【0055】
図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)での処理回路は互いに接続されている。
【0056】
複数の処理回路によって形成された多次元アレイの接続関係は、上記で例示的に説明しており、以下、図7乃至図8を参照して、複数の処理回路によって形成された異なるループ構造に対して、さらに例示的に説明する。
【0057】
図7a、図7b、図7cおよび図7dは、本開示の実施例における処理回路の様々なループ構造をそれぞれ示す模式図である。異なる応用シーンに応じて、複数の処理回路は、物理的な接続関係で接続できるだけでなく、受信した解析後の命令に基づいて論理的な関係で接続するように配置されることもできる。前記複数の処理回路は、閉ループを形成するために、前記論理接続関係を利用して接続するように配置されることができる。
【0058】
図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つの処理回路を反時計回り方向に直列に接続することもできる。
【0059】
いくつかの実際的シーンにおいて、1つの処理回路でサポートするデータビット幅が演算データのビット幅の要件を満たせない場合、複数の処理回路を使用して1つの処理回路グループに組合わせることによって、1つのデータを表すことができる。例えば、1つの処理回路が8ビットのデータを処理できると仮定する。32ビットのデータを処理する必要がある場合、4つの処理回路を1つの処理回路グループに組合わせることによって、4つの8ビットのデータを接続して、1つの32ビットのデータを形成することができる。さらに、前述の4つの8ビットの処理回路で形成された1つの処理回路グループは、図7bに示されている1つの処理回路104として機能することができ、それにより、より高いビット幅の演算操作をサポートすることができる。
【0060】
図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と表すことができる。したがって、ビットのビット幅が高いデータを分割して、異なる処理回路に振り分ける必要がある場合、処理回路の論理アドレスに基づいて、データ順番を再配列して振り分けることができる。
【0061】
上記の分割および再配列の操作は、図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に調整し戻すすることによって、入力データと出力結果データとの間の配列の整合性を保証することができる。
【0062】
図7cおよび図7dは、より多くの処理回路がそれぞれ異なる方式で配列および接続され、閉ループを形成することを示す。図7cに示すように、0、1~15の順番に番号が付けられた16個の処理回路104は、処理回路0から始まり、2つの処理回路ごとに順番に接続および組み合わせられ、1つの処理回路グループ(即ち、本開示の処理回路サブアレイ)を形成する。例えば、図に示すように、処理回路0と処理回路1とを接続して1つの処理回路グループを形成する。このように類推して、処理回路14と処理回路15とを接続して1つの処理回路グループを形成し、最終的に8つの処理回路グループを形成する。さらに、該8つの処理回路グループは、例えば、所定の論理アドレスによる接続を含む、前述の処理回路の接続方式と類似する方式で接続され、1つの処理回路グループの閉ループを形成することができる。
【0063】
図7dに示すように、複数の処理回路104は、閉ループを備える処理回路マトリックスを形成するために、不規則または不統一の方式で接続される。具体的に、図7dには、処理回路間の間隔数を0または3にすることによって、閉ループを形成できることが示されており、例えば、処理回路0はそれぞれ、処理回路1(間隔数は0)と処理回路4(間隔数は3)に接続されることができる。
【0064】
図7a、7b、7cおよび7dを参照した上記の説明から分かるように、本開示の処理回路は、閉ループとなるように容易に接続されるために、離間数が異なる処理回路であってもよい。処理回路の総数が変化する場合、任意のその間の間隔数を選択して、動的に配置し、それにより、閉ループとなるように接続されることができる。また、複数の処理回路を処理回路グループに組み合わせて、それらを処理回路グループの閉ループとなるように接続することもできる。また、複数の処理回路の接続は、ハードウェアによって構成されたハード接続方式であってもよく、ソフトウェアによって配置されたソフト接続方式であってよい。
【0065】
図8a、8bおよび8cは、本開示の実施例に係る処理回路の別の様々なループ構造を示す模式図である。図6を参照して示したように、複数の処理回路は、1つの閉ループを形成することができ、かつ前記閉ループにおける各処理回路には、それぞれの論理アドレスが配置されることができる。さらに、図2を参照して説明した前操作回路は、演算データのタイプ(例えば、32ビットのデータ、16ビットのデータまたは8ビットのデータ)および論理アドレスに基づいて、前記演算データに対して対応する分割を行い、分割後に取得した複数のサブデータを、ループ中の対応する各処理回路にそれぞれ伝送し、後続の演算に使用されるように配置されることができる。
【0066】
図8aの上部は、4つの処理回路が接続されて1つの閉ループを形成しており、かつ該4つの処理回路の物理アドレスは、右から左の順に0-1-2-3と表示できることを示している。図8aの下部は、前述の前記ループにおける4つの処理回路の論理アドレスは、右から左の順に0-3-1-2と表示できることを示している。例えば、図8aの下部に示される論理アドレスが「3」の処理回路は、図8aの上部に示される物理アドレス「1」を備える。
【0067】
いくつかの応用シーンにおいて、操作データの粒度は入力データの下位128ビット、例えば、図における元のシーケンス「15、14、……2、1、0」(各数字は8ビットのデータに対応する)であると仮定し、かつ該16個の8ビットのデータの論理アドレスを、低から高への順番に番号0~15と設定する。さらに、図8aの下部に示している論理アドレスに従って、前記前操作回路は、異なるデータタイプに基づいて異なる論理アドレスによりデータを符号化または配列することができる。
【0068】
処理回路により操作されるデータのビット幅が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)である。
【0069】
処理回路により操作されるデータのビット幅が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)である。
【0070】
処理回路により操作されるデータのビット幅が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)である。
【0071】
図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」に対応する。
【0072】
図8bに示されている異なるデータタイプに対して、前記前操作回路がデータを再配列した後、対応する処理回路に伝送する操作は、図8aと類似するため、図8aを参照して説明した技術解決策は、図8bにも適用されるので、上述のデータを再配列する操作プロセスについて、ここでは繰り返さない。さらに、図8bに示されている処理回路の接続関係は、図8aに示されているものと類似しているが、図8bに示している8つの処理回路は、図8aに示されている処理回路の個数の2倍である。これにより、異なるデータタイプによる操作を行う応用シーンにおいて、図8bを参照して説明する操作データの粒度は、図8aを参照して説明する操作データの粒度の2倍になってもよい。したがって、前例の入力データの粒度が下位128ビットであることに対して、本例の操作データの粒度は、入力データの下位256ビットであってよく、例えば、図に示している元のデータシーケンス「31、30、……、2、1、0」であり、各数字は8ビット(「bit」)の長さに対応する。
【0073】
上記元のデータシーケンスに対して、処理回路により操作されるデータのビット幅がそれぞれ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」である。
【0074】
上記において、図8aおよび図8bに示されている複数の単一タイプの処理回路(図3に示されるような、第1のタイプの処理回路)を接続し閉ループを形成する状況を参照して、異なるデータタイプのデータ操作について説明した。以下は、図8cに示されている複数の異なるタイプの処理回路(図4に示されているような、第1のタイプの処理回路および第2のタイプの処理回路)を接続し閉ループを形成する状況を参照して、異なるデータタイプのデータ操作についてさらに説明する。
【0075】
図8cの上部は、0、1……19の順番に番号が付けられた20個のマルチタイプの処理回路を接続し、1つの閉ループ(図に示されている番号は、処理回路の物理アドレスである)を形成することを示している。0から15の番号が付けられた16個の処理回路は、第1のタイプの処理回路であり(即ち、本開示の処理回路サブアレイでもあり)、16から19の番号が付けられた4つの処理回路は、第2のタイプの処理回路である(即ち、本開示の処理回路サブアレイでもある)。同様に、該20個の処理回路のそれぞれの物理アドレスは、図8cの下部に示されている対応する処理回路の論理アドレスとマッピング関係を有する。
【0076】
さらに、異なるデータタイプに対して操作する場合、例えば、図に示されている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」である。
【0077】
図9a、9b、9cおよび9dは、本開示の実施例に係る前処理回路によって実行されたデータの接合操作を示す模式図である。上記のように、本開示が図2を参照して説明した前処理回路は、解析後の命令に基づいて、複数のデータ接合モードから一つのデータ接合モードを選択するように配置されることによって、2つの入力データに対して接合操作を実行することができる。様々なデータ接合モードに関して、一実施例において、本開示の解決策は、接合待ちの2つのデータを最小データユニットに従って区分して番号付けし、次に、指定された規則に基づいて、データの異なる整数倍の最小データユニットを抽出することによって、異なるデータ接合モードを形成する。例えば、番号のパリティーまたは番号が指定された数字の整数倍であるかどうかに基づいて、例えば、抽出および設置を交互に行い、それにより、異なるデータ接合モードを形成することができる。異なる計算シーン(例えば、データのビット幅が異なる)に基づいて、ここでの最小データユニットは、簡単な1ビットまたは1bitのデータであってもよく、または2ビット、4ビット、8ビット、16ビットまたは32ビットまたはbitの長さであってよい。さらに、2つのデータの異なる番号付け部分を抽出した場合、本開示の解決策は、最小データユニットで交互に抽出するか、または最小データユニットの倍数で抽出することができ、例えば、1つのグループとして、2つまたは3つの最小データユニットの部分データを2つのデータから交互に1回抽出して、グループごとに接合される。
【0078】
上記データ接合モードの説明に基づいて、本開示のデータ接合モードは、以下、図9a乃至図9cを参照して具体的な例で例示的に論述される。示されている図において、入力データはIn1とIn2であり、図における各格子が1つの最小データユニットを表す場合、2つの入力データは、いずれも8つの最小データユニットのビット幅の長さを有する。上記のように、ビット幅の長さが異なるデータに対して、該最小データユニットは異なるビット数(またはBit数)を表すことができる。例えば、ビット幅が8ビットのデータの場合、最小データユニットは1ビットのデータを表し、ビット幅が16ビットのデータの場合、最小データユニットは2ビットのデータを表す。また、例えば、ビット幅が32ビットのデータの場合、最小データユニットは4ビットのデータを表す。
【0079】
図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ビットの新しいデータを形成する。
【0080】
図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ビットの新しいデータを接合形成する。
【0081】
図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ビットの新しいデータを接合形成する。
【0082】
本開示の例示的なデータ接合方式は、図9a乃至図9cを参照して上記で説明された。しかし、いくつかの計算シーンにおいて、データ接合は、上記のインターリーブ配列に関せず、例えば、図9dに示すように、2つのデータがそれぞれの既存のデータ位置を変更せず維持される状況で、簡単に配列するだけである。図9dから分かるように、2つのデータIn1とIn2は、図9a乃至図9cに示すようなインターリーブ配列を実行しておらず、データIn1の最後の1つの最小データユニットとIn2の1番目の最小データユニットとを直列に接続させ、それにより、ビット幅が増大(例えば、倍になる)した新しいデータタイプを取得しただけである。いくつかのシーンにおいて、本開示の解決策は、データの属性に基づいてグループになる接合を行うことができる。例えば、同じ特徴マップを有するニューロンデータまたは重みデータを1グループに形成した後、接合後のデータの連続部分を構成するように配列することができる。
【0083】
図10a、10bおよび10cは、本開示の実施例に係る後処理回路によって実行されたデータ圧縮操作を示す模式図である。前記圧縮操作は、マスクによりデータを選別すること、または特定の閾値をデータのサイズと比較することによって圧縮することを含んでもよい。データ圧縮操作については、上記に記載の最小データユニットに従って区分しおよび番号を付けることができる。図9a乃至図9dを参照して説明したことと同様に、最小データユニットは、例えば、1ビットまたは1bitのデータであってもよい、または2ビット、4ビット、8ビット、16ビットまたは32ビットまたはbitの長さであってよい。以下、図10a乃至図10cを参照して、異なるデータ圧縮モードについて、例示的に説明する。
【0084】
図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の最小データユニットを抽出し、番号の低いものから高いものへの順に、順次に配列することによって、圧縮後の新しいデータを形成することができる。
【0085】
図10bは、図10aと類似の元のデータを示しており、図10bの第2行から、後処理回路を経過したデータシーケンスは、データの元の配列順番および内容を維持していることがわかる。このことから、本開示のデータ圧縮は、無効モードまたは非圧縮モードを含むこともでき、よって、データが後処理回路を経過するときに圧縮操作が実行されないことが理解できる。
【0086】
図10cに示すように、元のデータは8つの格子が順次に配列して構成されており、各格子の上方の数字はその番号を表示し、右から左へ順番に番号は1、2……8であり、かつ各最小データユニットが8ビットのデータであってよいと仮定する。さらに、各格子における数字は、該最小データユニットの十進法の数値を表示する。番号が1の最小データユニットを例として、その十進法の数値は「8」であり、対応する8ビットのデータは「00001111」である。閾値に基づいてデータ圧縮操作を行う場合、閾値は十進法のデータ「8」であると仮定し、圧縮原則は、元のデータの中で該閾値「8」以上の全ての最小データユニットを抽出するように設定されることができる。これにより、番号が1、4、7および8の最小データユニットを抽出できる。次に、図10cにおける第2行に示すように、抽出によって取得した全ての最小データユニットを、番号が低いものから高いものの順に従って配列することによって、最終のデータ結果を取得する。
【0087】
図11は、本開示の実施例に係る計算装置を使用して演算操作を実行する方法1100を示す簡単なフローチャートである。前述の説明に基づいて、ここでの計算装置は、図1乃至図4を参照して説明した計算装置であってもよく、それは、図5乃至図10に示すような処理回路の接続関係を備え、かつ付加の様々な操作をサポートすることが理解できる。
【0088】
図11示すように、ステップ1110において、方法1100は、計算装置で計算命令を受信し、かつ解析を行い、複数の演算命令を取得する。次に、ステップ1120において、方法1100は、前記複数の演算命令の受信に応答して、前記複数の処理回路サブアレイにより、マルチスレッド操作演算を実行し、そのうち、前記複数の処理回路サブアレイにおける各処理回路サブアレイは、複数の演算命令のうち少なくとも1つの演算命令を実行するように配置される。
【0089】
以上、簡略化するために、図11のみを参照して本開示の計算方法を説明した。当業者は、本開示の開示内容に基づいて、本方法がより多くのステップを含み、かつこれらのステップの実行が図1乃至図10を参照して説明した本開示の様々な操作を実現できることも想到できるため、ここでは繰り返さない。
【0090】
図12は、本開示の実施例に係る複合処理装置1200を示す構造図である。図12に示すように、該複合処理装置1200は、計算処理装置1202、インターフェース装置1204、他の処理装置1206および記憶装置1208を含む。異なる応用シーンに応じて、計算処理装置には、1つまたは複数の計算装置1210が含まれることができ、該計算装置は、図1乃至11を参照して本明細書に説明した操作を実行するように配置されることができる。
【0091】
異なる実施例において、本開示の計算処理装置は、ユーザによって指定された操作を実行するように配置されることができる。例示的な応用において、該計算処理装置は、シングルコア人工知能プロセッサまたはマルチコア人工知能プロセッサとして実現できる。同様に、計算処理装置の内部に含まれる1つまたは複数の計算装置は、人工智能プロセッサコアまたは人工智能プロセッサコアの一部のハードウェア構造として実現できる。複数の計算装置が人工智能プロセッサコアまたは人工智能プロセッサコアの一部のハードウェア構造として実現される場合、本開示の計算処理装置について、シングルコア構造またはホモジニアスマルチコア構造を有するものとみなされることができる。
【0092】
例示的な操作において、本開示の計算処理装置は、インターフェース装置を介して、他の処理装置とインタラクションして、ユーザによって指定された操作を共同で完了することができる。実現方法の不同によって、本開示の他の処理装置は、中央処理装置(Central Processing Unit、CPU)、グラフィックスプロセッサ(Graphics Processing Unit、GPU)、人工知能処理装置などの汎用処理装置および/または専用処理装置のうちの1つまたは様々なタイプの処理装置を含むことができる。これらの処理装置は、デジタル信号プロセッサ(Digital Signal Processor、DSP)、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)または他のプログラムブル論理デバイス、ディスクリートゲートまたはトランジスタ論理デバイス、ディスクリートハードウェアコンポーネンなどを含むことができるが、これらに限定されず、また、その数は、実際のニーズに応じて決定することができる。上記のように、本開示の計算処理装置についてのみ、シングルコア構造またはホモジニアスマルチコア構造を備えるものとみなされることができる。しかし、計算処理装置と他の処理装置を共通に考慮すると、両者はヘテロジニアスマルチコア構造を形成するものとみなすことができる。
【0093】
1つまたは複数の実施例において、該他の処理装置は、本開示の計算処理装置(これは、ニューラルネットワーク演算などの人工知能に関連する演算装置として具体化することができる)の外部データおよび制御とのインターフェースとして、データの転送、計算装置のオンおよび/またはオフなどを含むがこれらに限定されない基本的な制御を実行することができる。別の実施例において、他の処理装置は、該計算処理装置と協力して共同に演算タスクを完了することもできる。
【0094】
1つまたは複数の実施例において、該インターフェース装置は、計算処理装置と他の処理装置との間で、データおよび制御命令を伝送することができる。例えば、該計算処理装置は、前記インターフェース装置を経由して、他の処理装置から入力データを取得し、該計算処理装置のオンチップの記憶装置(またはメモリと称す)に書き込むことができる。さらに、該計算処理装置は、前記インターフェース装置を経由して、他の処理装置から制御命令を取得し、計算処理装置のオンチップの制御キャッシュに書き込むことができる。代替的にまたは選択的に、インターフェース装置は、計算処理装置の記憶装置におけるデータを読み取り、他の処理装置に伝送することもできる。
【0095】
付加的または選択的に、本開示の複合処理装置は、記憶装置をさらに含むことができる。図に示すように、該記憶装置は、それぞれ、前記計算処理装置および前記他の処理装置に接続される。1つまたは複数の実施例において、記憶装置は、前記計算処理装置および/または前記他の処理装置のデータを保存することができる。例えば、該データは、計算処理装置または他の処理装置の内部またはオンチップの記憶装置に全て保存できないデータであってよい。
【0096】
いくつかの実施例において、本開示では、チップ(例えば、図13に示されているチップ1302)がさらに開示される。一実施形態において、該チップは、システムオンチップ(System on Chip、SoC)であり、1つまたは複数の、図12に示すような複合処理装置が集積化されている。該チップは、外部インターフェース装置(図13に示されている外部インターフェース装置1306)を介して、他の関連部品に接続されることができる。該関連部品は、例えば、ウェブカメラ、ディスプレー、マウス、キーボード、ネットワークカードまたはwifiインターフェースであってよい。いくつかの応用シーンにおいて、該チップには、他の処理ユニット(例えば、ビデオコーデック)および/またはインターフェースモジュール(例えば、DRAMインターフェース)などが集積化されていてもよい。いくつかの実施例において、本開示は、上記チップを含むチップパッケージ構造をさらに開示する。いくつかの実施例において、本開示は、上記のチップパッケージ構造を含むボードカードをさらに開示する。以下、図13を参照して、該ボードカードを詳細に説明する。
【0097】
図13は、本開示の実施例に係るボードカード1300の構造を示す模式図である。図13に示すように、該ボードカードは、データを記憶するための記憶素子1304を含み、記憶素子1304は、1つまたは複数の記憶ユニット1310を含む。該記憶素子は、バスなどの方式にて、制御素子1308および上記に記載のチップ1302と接続およびデータの伝送を行うことができる。さらに、該ボードカードは、チップ(または、チップパッケージ構造におけるチップ)と外部装置1312(例えば、サーバーまたはコンピューターなど)との間のデータ中継またはスイッチング機能をするように配置された外部インターフェース装置1306をさらに含む。例えば、処理待ちのデータは、外部装置によって、外部インターフェース装置を介してチップに伝達されることができる。また、例えば、前記チップの計算結果は、前記外部インターフェース装置を経由して外部装置に送り返すことができる。異なる応用シーンによって、前記外部インターフェース装置は、例えば、標準PCIEインターフェースなどを使用した、異なるインターフェース形態を備えることができる。
【0098】
1つまたは複数の実施例において、本開示のボードカードにおける制御素子は、前記チップの状態を調整制御するように配置されることができる。このために、一応用シーンにおいて、該制御素子は、前記チップの作業状態を調整制御するように、マイクロコントローラーユニット(Micro Controller Unit、MCU)を含むことができる。
【0099】
図12および図13を参照した上記の説明に基づいて、当業者は、本開示が、1つまたは複数の上記ボードカード、1つまたは複数の上記チップおよび/または1つまたは複数の上記複合処理装置を含む、電子デバイスまたは装置も開示していることが理解できる。
【0100】
異なる応用シーンによって、本開示の電子デバイスまたは装置は、サーバー、クラウドサーバー、サーバークラスター、データ処理装置、ロボット、コンピューター、プリンター、スキャナー、タブレット、スマート端末、PCデバイス、IoT端末、モバイル端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサー、ウェブカメラ、カメラ、ビデオカメラ、プロジェクター、時計、ヘッドセット、モバイルストレージ、ウェアラブルデバイス、ビジュアル端末、自動運転端末、交通手段、家電製品、および/または医療機器を含むことができいる。前記交通手段には、飛行機、船および/または車両が含まれる。前記家電製品には、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、レンジフードが含まれる。前記医療機器には、核磁気共鳴計、超音波計および/または心電計が含まれる。本開示の電子デバイスまたは装置は、インターネット、IoT、データセンター、エネルギー、交通、公共管理、製造、教育、送電網、電気通信、金融、小売、建設現場、医療などの分野にも応用できる。さらに、本開示の電子デバイスまたは装置は、クラウド、エッジ、端末などの人工知能、ビッグデータおよび/またはクラウドコンピューティングに関連する応用シーンに使用されることができる。1つまたは複数の実施例において、本開示の解決策に基づく高い計算能力の電子デバイスまたは装置は、クラウドデバイス(例えば、クラウドサーバー)に応用することができ、低電力消費の電子デバイスまたは装置は、端末デバイスおよび/またはエッジデバイス(例えば、スマートフォンまたはウェブカメラ)に応用されることができる。1つまたは複数の実施例において、クラウドデバイスのハードウェア情報と端末デバイスおよび/またはエッジデバイスのハードウェア情報は互いに互換性があり、それにより、端末デバイスおよび/またはエッジデバイスのハードウェア情報に基づいて、クラウドデバイスのハードウェア資源から適切なハードウェア資源をマッチングして、端末デバイスおよび/またはエッジデバイスのハードウェア資源をシミュレートし、端末とクラウドとを一体化しまたはクラウドとエッジと端末とを一体化する統一管理、スケジューリングと協同作業を完了することができる。
【0101】
なお、簡略化するために、本開示は、いくつかの方法およびその実施例を一連の動作およびその組み合わせとして表現するが、当業者は、本開示の解決策が説明されている動作の順番によって限定されないことが理解できることに留意されたい。したがって、本開示の開示または教示に基づいて、当業者は、その中のいくつかのステップが他の順番で実行されるか、または同時に実行され得ることが理解できる。さらに、当業者は、本開示に説明されている実施例は任意の実施例とみなすことができること、即ち、その中で及んでいる動作またはモジュールが、必ずしも本開示の1つまたはいくつかの解決策の実現に必要なものではないことが理解できる。また、異なる解決策に基づいて、本開示におけるいくつかの実施例の説明は、それ自体の焦点も有する。これを鑑みて、当業者は、本開示の特定の実施例において詳細に説明されていない部分が、他の実施例の関連する説明も参照できることが理解できる。
【0102】
具体的な実施において、本開示の開示および教示に基づいて、当業者は、本開示に開示されているいくつかの実施例は、本明細書に開示されていない他の方法で実施されることが理解できる。例えば、上記に記載の電子デバイスまたは装置の実施例における各ユニットについては、本明細書では論理機能を考慮した上で区分しているが、実際に実現する場合、別の区分方式があり得る。また、例えば、複数のユニットまたはコンポーネントを別の1つのシステムに組合せまたは集積化したり、またはユニットまたはコンポーネントにおける一部の特征または機能を、選択的に無効にしたりすることができる。異なるユニットまたはコンポーネントの間の接続関係については、添付図面を参照して前述した接続は、ユニットまたはコンポーネントの間の直接的または間接的な結合であってよい。いくつかのシーンにおいて、前述の直接的または間接的な結合は、インタフェースを用いた通信接続に関して、その中の通信インタフェースは電気的、光学的、音響学的、磁気的または他の形態の信号伝送をサポートすることができる。
【0103】
本開示において、分離部品として説明されたユニットは、物理的に分離されているものであってもよいし、物理的に分離されているものでなくてもよい。ユニットとして示される部品は、物理的ユニットであってもよいし、物理的ユニットでなくてもよい。上記部品またはユニットは、同じ位置に位置することができ、複数のネットワークユニットに分散されることもできる。また、実際のニーズに応じて、その一部または全てのユニットを選択して、本開示の実施例に記載の解決策の目的を実現することができる。また、いくつかのシーンにおいて、本開示の実施例における複数のユニットが1つのユニットに集積化するか、または各ユニットが物理的に個別に存在することができる。
【0104】
いくつかの実現シーンにおいて、上記集積化されたユニットは、ソフトウェアプログラムモジュールの形態として実現されることができる。ソフトウェアプログラムモジュールの形態で実現され、かつ独立した製品として販売または使用される場合、前記集積化されたユニットは、コンピューターの読み取り可能なメモリに格納されることができる。これに基づいて、本開示の解決策がソフトウェア製品(例えば、コンピューターの読み可能な記憶媒体)の形態で具体化される場合、該ソフトウェア製品は、メモリに記憶されることができ、これは、コンピューター装置(例えば、パーソナルコンピューター、サーバーまたはネットワーク装置など)に本開示の実施例に記載されている方法の一部または全てのステップを実行させるためのいくつかの命令を含むことができる。前述のメモリは、Uディスク、フラッシュメモリ、読み取り専用メモリ(Read Only Memory、ROM)、ランダムアクセスメモリ(Random Access Memory、RAM)、モバイルハードディスク、磁気ディスクまたは光ディスクなどの、プログラムコードが記憶できる様々な媒体を含むが、これらに限定されない。
【0105】
別のいくつかの実現シーンにおいて、上記集積化されたユニットは、ハードウェアの形態で実現されることができ、即ち、デジタル回路および/またはアナログ回路などを含むことができる具体的なハードウェア回路である。回路のハードウェア構造の物理的実現は、物理的素子を含んでよいが、これらに限定されず、物理的素子は、トランジスタまたはメモリスターなどの素子を含んでもよいが、これらに限定されない。これを鑑みて、本明細書に記載されている様々な装置(例えば、計算装置または他の処理装置)は、例えば、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などであってよい。
【0106】
上記の内容は、以下の条項によってよりよく理解できる。
【0107】
条項1、計算装置は、
複数の処理回路を一次元または多次元アレイの構造で接続することによって形成される処理回路アレイを含んでおり、前記処理回路アレイは、複数の処理回路サブアレイとして配置され、複数の演算命令の受信に応答してマルチスレッド演算を実行し、前記処理回路サブアレイのそれぞれは、前記複数の演算命令のうちの少なくとも1つの演算命令を実行するように配置されており、
前記複数の演算命令は、前記計算装置が受信した計算命令を解析して得られる。
【0108】
条項2、条項1に記載の計算装置によれば、前記計算命令の操作コードは、前記処理回路アレイにより実行される複数の操作を表し、前記計算装置は前記計算命令を取得し前記計算命令を解析することによって、前記操作コードで表される複数の操作に対応する前記複数の演算命令を得るように配置される制御回路をさらに含む。
【0109】
条項3、条項2に記載の計算装置によれば、前記制御回路は、前記複数の演算命令に基づいて前記処理回路アレイを配置することによって、前記複数の処理回路サブアレイを得る。
【0110】
条項4、条項3に記載の計算装置によれば、前記制御回路は、配置情報を記憶するレジスタを含み、前記制御回路は、前記複数の演算命令に基づいて対応する配置情報を抽出し、前記配置情報に基づいて前記処理回路アレイを配置することによって、前記複数の処理回路サブアレイを得る。
【0111】
条項5、条項1に記載の計算装置によれば、前記複数の演算命令は、少なくとも1つの多段パイプライン演算を含み、前記1つの多段パイプライン演算は少なくとも2つの演算命令を含む。
【0112】
条項6、条項1に記載の計算装置によれば、前記演算命令は述語を含み、各前記処理回路は、前記述語に基づいて、関連される前記演算命令を実行するか否かを判断する。
【0113】
条項7、条項1に記載の計算装置によれば、前記処理回路アレイは一次元アレイであり、前記処理回路アレイにおける1つまたは複数の処理回路は、1つの前記処理回路サブアレイとして配置される。
【0114】
条項8、条項1に記載の計算装置によれば、前記処理回路アレイは二次元アレイであり、そのうち
前記処理回路アレイにおける1つまたは複数行の処理回路は、1つの前記処理回路サブアレイとして配置されるか、または
前記処理回路アレイにおける1つまたは複数列の処理回路は、1つの前記処理回路サブアレイとして配置されるか、または
前記処理回路アレイにおいて、対角線方向に沿った1つまたは複数ラインの処理回路は、1つの前記処理回路サブアレイとして配置される。
【0115】
条項9、条項8に記載の計算装置によれば、前記二次元アレイに位置する前記複数の処理回路は、その行方向、列方向または対角線方向の少なくとも1つの方向に、所定の二次元間隔パターンで同行、同列または同対角線にある残りの1つまたは複数の前記処理回路と接続するように配置される。
【0116】
条項10、条項9に記載の計算装置によれば、前記所定の二次元間隔パターンは、前記接続で間隔を置いて設置された処理回路の数に関連付けられている。
【0117】
条項11、条項1に記載の計算装置によれば、前記処理回路アレイは三次元アレイであり、前記処理回路アレイにおける三次元サブアレイまたは複数の三次元サブアレイは、1つの前記処理回路サブアレイとして配置される。
【0118】
条項12、条項11に記載の計算装置によれば、前記三次元アレイは、複数の層からなる三次元アレイであり、各層は、行方向、列方向および対角線方向に沿って配列された複数の前記処理回路の二次元アレイを含んでおり、
前記三次元アレイに位置する前記処理回路は、その行方向、列方向、対角線方向および層方向の少なくとも1つの方向に、所定の三次元間隔パターンで同行、同列、同対角線または異なる層にある残りの1つのまたは複数の処理回路と接続するように配置される。
【0119】
条項13、条項12に記載の計算装置によれば、前記所定の三次元間隔パターンは、接続待ちの処理回路間の間隔の数および間隔層の数に関連付けられている。
【0120】
条項14、条項7乃至13のいずれか1項に記載の計算装置によれば、前記処理回路サブアレイにおける複数の処理回路は、1つまたは複数の閉ループを形成する。
【0121】
条項15、条項1に記載の計算装置によれば、各前記処理回路サブアレイは、算術演算、論理演算、比較演算およびテーブルルックアップ演算のうちの少なくとも1つを実行するように適合される。
【0122】
条項16、条項1に記載の計算装置によれば、さらに、前操作回路および/または後操作回路を含むデータ操作回路を含んでおり、前記前操作回路は、少なくとも1つの前記演算命令の入力データの予備処理を実行するように配置され、前記後操作回路は、少なくとも1つの演算命令の出力データの後処理を実行するように配置される。
【0123】
条項17、条項16に記載の計算装置によれば、前記予備処理は、データ設置および/またはテーブルルックアップに対する操作を含み、前記後処理は、データタイプ変換および/または圧縮操作を含む。
【0124】
条項18、条項17に記載の計算装置によれば、前記データ設置は、前記演算命令の入力データおよび/または出力データのデータタイプに基づいて、前記入力データおよび/または出力データに対して対応する分割または合併を行った後、対応する処理回路に伝達して演算することを含む。
【0125】
条項19、条項1乃至18のいずれか1項に記載の計算装置を含む集積回路チップである。
【0126】
条項20、条項19に記載の集積回路チップを含むボードカードである。
【0127】
条項21、条項19に記載の集積回路チップを含む電子デバイスである。
【0128】
条項22、計算装置を使用して計算を実行する方法であって、前記計算装置は、複数の処理回路を一次元または多次元アレイの構造で接続することによって形成された処理回路アレイを含み、前記処理回路アレイは、複数の処理回路サブアレイとして配置されており、
前記方法は、
前記計算装置で計算命令を受信し、解析して複数の演算命令を取得すること、
前記複数の演算命令の受信に応答して、前記複数の処理回路サブアレイによりマルチスレッド演算を実行し、前記複数の処理回路サブアレイにおける各処理回路サブアレイは、複数の演算命令のうちの少なくとも1つの演算命令を実行するように配置されることを含む。
【0129】
条項23、条項22に記載の方法によれば、前記計算命令の操作コードは、前記処理回路アレイによって実行される複数の操作を表し、前記計算装置はさらに制御回路を含み、前記方法は、前記制御回路を使用して前記計算命令を取得し、前記計算命令を解析することによって、前記操作コードで表す複数の操作に対応する前記複数の演算命令を得ることを含む。
【0130】
条項24、条項23に記載の方法によれば、前記制御回路により、前記複数の演算命令に基づいて前記処理回路アレイを配置することによって、前記複数の処理回路サブアレイを得る。
【0131】
条項25、条項24に記載の方法によれば、前記制御回路は、配置情報を記憶するレジスタを含み、前記方法は、制御回路により、前記複数の演算命令に基づいて対応する配置情報を抽出し、前記配置情報に基づいて前記処理回路アレイを配置することよって、前記複数の処理回路サブアレイを得ることを含む。
【0132】
条項26、条項22に記載の方法によれば、前記複数の演算命令は、少なくとも1つの多段パイプライン演算を含み、前記1つの多段パイプライン演算は少なくとも2つの演算命令を含む。
【0133】
条項27、条項22に記載の方法によれば、前記演算命令は述語を含み、前記方法は、各前記処理回路により、前記述語に基づいて、関連される前記演算命令を実行するかどうかを判断することをさらに含む。
【0134】
条項28、条項22に記載の方法によれば、前記処理回路アレイは一次元アレイであり、前記方法は、前記処理回路アレイにおける1つまたは複数の処理回路を1つの前記処理回路サブアレイとして配置することを含む。
【0135】
条項29、条項22に記載の方法によれば、前記処理回路アレイは二次元アレイであり、
前記方法は、
前記処理回路アレイにおける1つまたは複数行の処理回路を1つの前記処理回路サブアレイとして配置すること、または
前記処理回路アレイにおける1つまたは複数列の処理回路を1つの前記処理回路サブアレイとして配置すること、または
前記処理回路アレイにおいて、対角線方向に沿った1つまたは複数ラインの処理回路を1つの前記処理回路サブアレイとして配置することをさらに含む。
【0136】
条項30、条項29に記載の方法によれば、前記二次元アレイに位置する前記複数の処理回路は、その行方向、列方向または対角線方向の少なくとも1つの方向に、所定の二次元間隔パターンで同行、同列または同対角線にある残りの1つまたは複数の前記処理回路と接続されるように配置される。
【0137】
条項31、条項30に記載の方法によれば、前記所定の二次元間隔パターンは、前記接続で間隔を置いて設置された処理回路の数に関連付けられている。
【0138】
条項32、条項22に記載の方法によれば、前記処理回路アレイは三次元アレイであり、前記方法は、前記処理回路アレイにおける三次元サブアレイまたは複数の三次元サブアレイを1つの前記処理回路サブアレイとして配置することを含む。
【0139】
条項33、条項32に記載の方法によれば、前記三次元アレイは、複数の層からなる三次元アレイであり、各層は行方向、列方向および対角線方向に沿って配列された複数の前記処理回路の二次元アレイを含み、
前記方法は、
前記三次元アレイに位置する前記処理回路を、その行方向、列方向、対角線方向および層方向の少なくとも1つの方向に、所定の三次元間隔パターンで同行、同列、同対角線または異なる層にある残りの1つまたは複数の処理回路と接続するように配置されることを含む。
【0140】
条項34、条項33に記載の方法によれば、前記所定の三次元間隔パターンは、接続待ちの処理回路間の間隔の数および間隔層の数に関連付けられている。
【0141】
条項35、条項28乃至34のいずれか1項に記載の方法によれば、前記処理回路サブアレイにおける複数の処理回路は、1つまたは複数の閉ループを形成する。
【0142】
条項36、条項22に記載の方法によれば、各前記処理回路サブアレイは、算術演算、論理演算、比較演算およびテーブルルックアップ演算のうちの少なくとも1つを実行するように適合される。
【0143】
条項37、条項22に記載の方法によれば、前操作回路および/または後操作回路を含むデータ操作回路をさらに含み、前記方法は、前記前操作回路により、少なくとも1つの前記演算命令の入力データの予備処理を実行すること、および/または前記後操作回路により、少なくとも1つの演算命令の出力データの後処理を実行することを含む。
【0144】
条項38、条項37に記載の方法によれば、前記予備処理は、データ設置および/またはテーブルルックアップに対する操作を含み、前記後処理は、データタイプ変換および/または圧縮操作を含む。
【0145】
条項39、条項38に記載の方法によれば、前記データ設置は、前記演算命令の入力データおよび/または出力データのデータタイプに基づいて、前記入力データおよび/または出力データに対して対応する分割または合併を行った後、対応する処理回路に伝達し演算することを含む。
【0146】
本開示の複数の実施例を本明細書において示し、説明しているが、このような実施例は例示的な形態としてのみ提供されることが、当業者にとって明らかである。当業者は、本開示の思想および精神から逸脱することなく、多くの改正、変更および代替の方法を想到できる。本開示を実施する過程において、本明細書に説明された本開示の実施例に対する様々な代替案を採用することができることを理解すべきである。添付の特許請求の範囲は、本開示の保護範囲を限定することを意図しており、したがって、これらの特許請求の範囲内の同等物または代替案をカバーする。
図1
図2a
図2b
図3
図4
図5a
図5b
図5c
図5d
図6a
図6b
図6c
図6d
図7a
図7b
図7c
図7d
図8a
図8b
図8c
図9a
図9b
図9c
図9d
図10a
図10b
図10c
図11
図12
図13