(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-07
(45)【発行日】2022-07-15
(54)【発明の名称】シミュレータを実現するための方法、装置、デバイス及び媒体
(51)【国際特許分類】
G16Z 99/00 20190101AFI20220708BHJP
【FI】
G16Z99/00
【外国語出願】
(21)【出願番号】P 2020003208
(22)【出願日】2020-01-10
【審査請求日】2020-05-11
(31)【優先権主張番号】201910364810.8
(32)【優先日】2019-04-30
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(73)【特許権者】
【識別番号】521457387
【氏名又は名称】クンルンシン テクノロジー (ベイジン) カンパニー リミテッド
【氏名又は名称原語表記】Kunlunxin Technology (Beijing) Company Limited
【住所又は居所原語表記】CW Section, F/4, Building 1, No.10, Shangdi 10th Street, Haidian District, 100101, Beijing, China
(74)【代理人】
【識別番号】110000578
【氏名又は名称】名古屋国際特許業務法人
(72)【発明者】
【氏名】ジャン チャオ
【審査官】新里 太郎
(56)【参考文献】
【文献】特表2008-519346(JP,A)
【文献】特開平04-363730(JP,A)
【文献】特開2004-341737(JP,A)
【文献】特開2003-330992(JP,A)
【文献】特開2007-004216(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
G16Z 99/00
(57)【特許請求の範囲】
【請求項1】
シミュレータを実現するための方法であって、
シミュレータにおけるシミュレーションモジュールの入力データと出力データを一括的に保存するための一括保存ファイルから、前記シミュレータにおける第1シミュレーションモジュールに使用される第1データを読み込むステップであって、第1シミュレーションモジュールは、チップの第1機能をシミュレートするように配置されたステップと、
前記第1シミュレーションモジュールによる前記第1データの処理によって生成された第2データを、前記一括保存ファイルに書き込むステップと、
前記一括保存ファイルから、前記シミュレータにおける第2シミュレーションモジュールに使用される前記第2データを読み込むステップであって、前記第2シミュレーションモジュールは、前記チップの第2機能をシミュレートするように配置され、且つ、前記第1シミュレーションモジュールの後に実行されるように配置されたステップと、
前記第2シミュレーションモジュールによる前記第2データの処理によって生成された第3データを、前記一括保存ファイルに書き込むステップと、を含み、
前記シミュレータにおけるシミュレーションモジュールは、いずれも前記一括保存ファイルを介してデータドッキングを行う、方法。
【請求項2】
前記チップは、計算タスクの加速を実行するための人工知能(AI)チップであり、前記第1シミュレーションモジュールと前記第2シミュレーションモジュールのそれぞれは、データ再編モジュール、行列計算モジュール、アクティブ計算モジュール及びダイレクトメモリアクセス(DMA)モジュールのうちの何れか一項であり、
前記シミュレータを用いて前記人工知能チップの設計の実行可能性を検証するステップをさらに含む、請求項1に記載の方法。
【請求項3】
制御フロープロファイルにおいて、前記シミュレータ内における、少なくとも前記第1シミュレーションモジュールと前記第2シミュレーションモジュールを含む複数のモジュールの実行順序を設定するステップと、
前記制御フロープロファイルに設定された実行順序に基づいて、前記複数のシミュレーションモジュールを順次実行するステップと、をさらに含む請求項1に記載の方法。
【請求項4】
前記制御フロープロファイルの前記実行順序を変更するステップと、
変更後の実行順序に基づいて、前記シミュレータ内の複数のシミュレーションモジュールの処理プロセスを調整するステップと、をさらに含む請求項3に記載の方法。
【請求項5】
前記制御フロープロファイルにおける前記実行順序を変更するステップは、
前記シミュレータにおいて一つ又は複数のシミュレーションモジュールが再配置されたことに応答して、前記制御フロープロファイルにおける前記実行順序を変更するステップを含み、
前記再配置は、シミュレーションモジュールの添加、削除、並び替えのうちの少なくとも一項を含む、請求項4に記載の方法。
【請求項6】
第2データを前記一括保存ファイルに書き込むステップは、
前記第1シミュレーションモジュールから、前記第2データを、前記第2シミュレーションモジュールに直接にドッキングすることなく、前記一括保存ファイルに伝達するステップと、
前記一括保存ファイルにおいて、前記第2データの種類、位置及び大きさを記録するステップと、を含む請求項1に記載の方法。
【請求項7】
前記一括保存ファイルから、前記シミュレータにおける第3シミュレーションモジュールに使用される前記第3データを読み込むステップであって、前記第3シミュレーションモジュールは、前記チップの第3機能をシミュレートするように配置されたステップのと、
前記第3シミュレーションモジュールによる前記第3データの処理によって生成された第4データを、前記一括保存ファイルに書き込むステップと、を含む請求項1に記載の方法。
【請求項8】
シミュレータを実現するための装置であって、
シミュレータにおけるシミュレーションモジュールの入力データと出力データを一括的に保存するための一括保存ファイルから、前記シミュレータにおける第1シミュレーションモジュールに使用される第1データを読み込むように配置されている第1読込モジュールであって、前記第1シミュレーションモジュールはチップの第1機能をシミュレートするように配置された第1読込モジュールと、
前記第1シミュレーションモジュールによる前記第1データの処理によって生成された第2データを、前記一括保存ファイルに書き込むように配置されている第1書込モジュールと、
前記一括保存ファイルから、前記シミュレータにおける第2シミュレーションモジュールに使用される前記第2データを読み込むように配置されている第2読込モジュールであって、前記第2シミュレーションモジュールは、前記チップの第2機能をシミュレートするように配置され、且つ、前記第1シミュレーションモジュールの後に実行されるように配置された第2読込モジュールと、
前記第2シミュレーションモジュールによる前記第2データの処理によって生成された第3データを、前記一括保存ファイルに書き込むように配置されている第2書込モジュールと、を含み、
前記シミュレータにおけるシミュレーションモジュールは、いずれも前記一括保存ファイルを介してデータドッキングを行う、装置。
【請求項9】
前記チップは、計算タスクの加速を実行するための人工知能(AI)チップであり、前記第1シミュレーションモジュールと前記第2シミュレーションモジュールのそれぞれは、データ再編モジュール、行列計算モジュール、アクティブ計算モジュール及びダイレクトメモリアクセス(DMA)モジュールのうちの何れか一項であり、
前記シミュレータを用いて前記人工知能チップの設計の実行可能性を検証するように配置されている検証モジュールをさらに含む、請求項
8に記載の装置。
【請求項10】
制御フロープロファイルにおいて、前記シミュレータにおける、少なくとも前記第1シミュレーションモジュールと前記第2シミュレーションモジュールを含む複数のモジュールの実行順序を設定するように配置されている設定モジュールと、
前記制御フロープロファイルに設定された実行順序に基づいて、前記複数のシミュレーションモジュールを順次実行するように配置されている実行モジュールと、をさらに含む請求項
8に記載の装置。
【請求項11】
前記制御フロープロファイルにおける前記実行順序を変更するように配置されている変更モジュールと、
変更後の実行順序に基づいて、前記シミュレータ内の複数のシミュレーションモジュールの処理プロセスを調整するように配置されている調整モジュールと、をさらに含む請求項1
0に記載の装置。
【請求項12】
前記変更モジュールは、前記シミュレータにおいて一つ又は複数のシミュレーションモジュールが再配置されたことに応答して、前記制御フロープロファイルにおける前記実行順序を変更する第2変更モジュールを含み、
前記再配置は、シミュレーションモジュールの添加、削除、並び替えのうちの少なくとも一項を含む、請求項1
1に記載の装置。
【請求項13】
前記第1書込モジュールは、
前記第1シミュレーションモジュールから、前記第2データを、前記第2シミュレーションモジュールに直接にドッキングすることなく、前記一括保存ファイルに伝達するように配置されている伝達モジュールと、
前記一括保存ファイルにおいて、前記第2データの種類、位置及び大きさを記録するように配置されている記録モジュールと、を含む請求項
8に記載の装置。
【請求項14】
前記一括保存ファイルから、前記シミュレータにおける第3シミュレーションモジュールの前記第3データを読み込むように配置されている第3読込モジュールであって、第3シミュレーションモジュールは、前記チップの第3機能をシミュレートするように配置された第3読込モジュールと、
前記第3シミュレーションモジュールによる前記第3データの処理によって生成された第4データを、前記一括保存ファイルに書き込むように配置されている第3書込モジュールと、をさらに含む請求項
8に記載の装置。
【請求項15】
一つ又は複数のプロセッサと、
前記一つ又は複数のプロセッサにより実行されることで請求項1~
7のいずれか一項に記載の方法を実現する一つ又は複数のプログラムを記憶する記憶装置と、
を含む電子デバイス。
【請求項16】
プロセッサにより実行されると、請求項1~
7のいずれか一項に記載の方法を実現するコンピュータプログラムを記憶する、コンピュータ読取可能な記憶媒体。
【請求項17】
プロセッサにより実行されると、請求項1~
7のいずれか一項に記載の方法を実現するコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施例は、全体的にシミュレータ開発の分野に係り、具体的に、シミュレータを実現するための方法、装置、デバイス及びコンピュータ読取可能な記憶媒体にさらに係る。
【背景技術】
【0002】
シミュレータは、通常、ソフトウェアを利用して開発されたシミュレーションプログラムであり、いくつかの特定のハードウェアプラットフォームをシミュレートすることができる。一般的なシミュレータとしては、例えば、コンピュータシミュレータ、運転シミュレータ、飛行シミュレータなどが挙げられる。チップとは、集積回路を含むシリコンウエハハードウェアであり、チップの開発中に、通常は、その対応する機能シミュレータを事前または同期に開発する必要がある。機能シミュレータは、主にチップのハードウェア設計の妥当性を検証し、ハードウェアの設計案の実行可能性を探るために用いられるとともに、開発者とテスト技術者のために、チップの開発、テスト及び検証のスピードを速めるソフトウェアプラットフォームを提供することができる。
【0003】
シミュレータの開発という目標を達成するために、シミュレータとチップとの挙動及び能力をできるだけ一致させることが求められる。特に機能シミュレータは、通常、実行結果も機能もチップと全く同じであることが求められる。一般的に、正確なデータがなければ、チップの検証とテストを実施できず、絶対的な参考作用を果たすことはできない。しかし、機能の完全で且つ正確な機能シミュレータを達成するには、機能シミュレータとチップハードウエアとの間の校正を繰り返さなければならず、そして、シミュレータ自体のテストを繰り返すことが必要となり、多くの労力および時間がかかる。また、機能シミュレータは、設計者と開発者の便宜を図って、チップ設計案の探求に助力することが求められる。
【発明の概要】
【0004】
本開示の実施例によれば、シミュレータを実現するための方法、装置、電子デバイス及びコンピュータ読取可能な記憶媒体を提供する。
【0005】
本開示の第1方面において、シミュレータを実現するための方法であって、シミュレータにおけるシミュレーションモジュールの入力データと出力データを一括的に保存するための一括保存ファイルから、前記シミュレータにおける第1シミュレーションモジュールに使用される第1データを読み込むステップであって、第1シミュレーションモジュールは、チップの第1機能をシミュレートするように配置されたステップと、前記第1シミュレーションモジュールによる前記第1データの処理によって生成された第2データを、前記一括保存ファイルに書き込むステップと、前記一括保存ファイルから、前記シミュレータにおける第2シミュレーションモジュールに使用される前記第2データを読み込むステップであって、前記第2シミュレーションモジュールは、前記チップの第2機能をシミュレートするように配置され、且つ、前記第1シミュレーションモジュールの後に実行されるように配置されたステップと、前記第2シミュレーションモジュールによる前記第2データの処理によって生成された第3データを、前記一括保存ファイルに書き込むステップと、を含む方法を提供する。
【0006】
本開示の第2方面において、シミュレータを実現するための装置であって、
シミュレータにおけるシミュレーションモジュールの入力データと出力データを一括的に保存するための一括保存ファイルから、前記シミュレータにおける第1シミュレーションモジュールに使用される第1データを読み込むように配置されている第1読込モジュールであって、前記第1シミュレーションモジュールはチップの第1機能をシミュレートするように配置された第1読込モジュールと、前記第1シミュレーションモジュールによる前記第1データの処理によって生成された第2データを、前記一括保存ファイルに書き込むように配置されている第1書込モジュールと、前記一括保存ファイルから、前記シミュレータにおける第2シミュレーションモジュールに使用される前記第2データを読み込むように配置されている第2読込モジュールであって、前記第2シミュレーションモジュールは、前記チップの第2機能をシミュレートするように配置され、且つ、前記第1シミュレーションモジュールの後に実行されるように配置された第2読込モジュールと、前記第2シミュレーションモジュールによる前記第2データの処理によって生成された第3データを、前記一括保存ファイルに書き込むように配置されている第2書込モジュールと、を含む装置を提供する。
【0007】
本開示の第3方面において、一つ又は複数のプロセッサと、一つ又は複数のプログラムを記憶する記憶装置と、を含む電子デバイスを提供する。一つ又は複数のプログラムは、一つ又は複数のプロセッサにより実行されることで、電子デバイスが本開示の実施例による方法やプロセスを実現する。
【0008】
本開示の第4方面において、プロセッサにより実行される場合に、本開示の実施例による方法やプロセスを実現するコンピュータプログラムを記憶するコンピュータ読取可能な記憶媒体を提供する。
【0009】
本開示の発明の概要に記載の内容は、本開示の実施例の肝心な特徴や重要な特徴を限定することを目指しているものではなく、本開示の範囲を制限するためにも使用されないことを、理解すべきである。本開示の他の特徴は、以下の説明によって理解しやすくなる。
【図面の簡単な説明】
【0010】
本開示の各実施例の上記特徴と他の特徴、長所及び方面について、図面と合わせるとともに、以下の詳細な説明を参照することによりもっと明らかになる。図面において、同じ又は類似する参照符号は、同じ又は類似する素子を示す。
【
図1】従来の機能シミュレータのアーキテクチャの模式図を示す。
【
図2】本開示の実施例によるシミュレータを実現するための方法のフローチャートを示す。
【
図3】本開示の実施例によるチップをシミュレートするための機能シミュレータのアーキテクチャ模式図を示す。
【
図4】本開示の実施例によるチップをシミュレートするための他の機能シミュレータのアーキテクチャの模式図を示す。
【
図5】本開示の実施例による機能シミュレータ内のシミュレーションモジュールの実行順序を調整するための模式図を示す。
【
図6】本開示の実施例による機能シミュレータへのシミュレーションモジュールの削除及び追加の模式図を示す。
【
図7】本開示の実施例によるシミュレータを実現するための装置のブロック図を示す。
【
図8】本開示のいくつかの実施例を実施可能な電子デバイスの模式的なブロック図を示す。
【発明を実施するための形態】
【0011】
以下、図面を参照して、本開示の実施例をより詳細に説明する。図面には、本開示のいくつかの実施例が示されているが、本開示は、様々な形態によって実現されることができ、ここで説明した実施例に限定されると解釈されるべきではなく、逆に、これらの実施例を提供することは、本開示をより徹底的かつ完全に理解するためであることを、理解すべきである。本開示の図面及び実施例は、本開示の保護範囲を制限するためのものではなく、例示的な役割のためにのみ使用される。
【0012】
本開示の実施例の記載において、用語「含む」及び類似する用語は、開放的な「含む」、即ち、「含むが、限定されない」と理解されるべきである。用語「基づく」は、「少なくとも基づく」と理解されるべきである。用語「一つの実施例」又は「該実施例」は、「少なくとも一つの実施例」と理解されるべきである。用語「いくつかの実施例」は、「少なくともいくつかの実施例」と理解されるべきである。以下には、他の明確的な定義と暗黙的な定義も含まれる可能性がある。
【0013】
図1には、従来の機能シミュレータのアーキテクチャの模式
図100が示されている。
図1に示すように、機能シミュレータ101は、複数のシミュレーションモジュール110、120、130、140、及び150を含み、これらのシミュレーションモジュールは、ハードウェアチップのある機能をそれぞれに実現することができる。機能シミュレータ101は、受け付けた入力105に基づいて、各シミュレーションモジュールの処理によって、対応する出力155を得ることができる。通常は、これらのシミュレーションモジュール間のデータ流れの順序が一定であるので、各シミュレータモジュールでは、それとインタラクトする前後のシミュレーションモジュールを定義する。例えば、シミュレーションモジュール120では、入力データをシミュレーションモジュール110から受信し、シミュレーションモジュール110にドッキングすることを定義するとともに、シミュレーションモジュール120では、出力データをシミュレーションモジュール130に伝達し、シミュレーションモジュール130にもドッキングすることを定義する必要がある。これにより、各シミュレーションモジュールでは、それにドッキングする入力データモジュールと出力データモジュールを定義する必要があるが、あるシミュレーションモジュールの入力データモジュール及び/又は出力データモジュールを調整する必要がある場合に、このモジュールで再定義する必要がある。
【0014】
このため、従来のシミュレータの開発中に、通常は、チップハードウェアの具体的な設計に従って定義して開発する。例えば、チップは、どのような機能モジュールを有すると、対応する機能シミュレータにも相応的なシミュレーションモジュールを有する。機能シミュレータの内部の各シミュレーションモジュールは、ソフトウェアプログラムのインターフェースを介して、緊密に接続されており、また、各シミュレーションモジュールのデータ流れの順序はほとんど一定であり、各シミュレーションモジュール間は、いずれもインターフェースを介して接続され、データをインタラクトする。しかしながら、このような緊密な結合設計は、シミュレーションモジュールを追加、削除、及び/又は並び替えるたびに、多くのシミュレーションモジュールを変更する必要があることで、機能シミュレータの開発の柔軟性が低く、調整が煩雑で、開発効率が低くなる。従って、既存の技術では、ハードウェアチップをシミュレートするためのチップシミュレータの開発効率が低く、拡張性が低いという問題がある。
【0015】
そのため、本開示の実施例は、チップシミュレータに適用するモジュール化高速開発案を提案する。本開示の実施例のチップシミュレータによると、各シミュレーションモジュールは、一括保存ファイルにデータをドッキングする一方、各モジュール間にデータをドッキングすることはない。これは、シミュレーションモジュールの任意の組み合わせと実行順序の調整に役立つ。これにより、チップシミュレータの開発効率を向上し、チップシミュレータの拡張性を向上することができる。
【0016】
また、発明者は、普通のチップと比べて、人口知能(AI)チップのビジネスサポートの変化が速くて、インタフェースの変更が柔軟であることを発見した。これに対して、インタフェースの変更は通常、関連するシミュレーションモジュールとデータ処理プロセスの変更に触れる。なお、ディープラーニング アルゴリズムの変化は速く、分岐も多く、異なる処理シーンでは異なる機能モジュールと特定のデータパスが必要である。このため、AIチップにとって、機能シミュレータのモジュール化が一層必要であり、且つ、柔軟な設計と開発という目標を達成する必要がある。従って、AIチップのシミュレータに対して、さらに、階層、モジュール別にノード結合の設計を行う必要があり、新しい変更と設計要求を迅速にサポートすることができる。以下、
図2~8を参照して、本開示のいくつかの実施例の実現を説明する。
【0017】
図2には、本開示の実施例によるシミュレータを実現するための方法200のフローチャートが示されている。
図2の方法200の説明を便利にするために、
図3の本開示の実施例によるチップをシミュレートするための機能シミュレータのアーキテクチャを参照しながら説明する。
【0018】
ボックス202において、シミュレータにおける各シミュレーションモジュールの入力データと出力データを一括的に保存するための一括保存ファイルから、前記シミュレータにおける第1シミュレーションモジュールに使用される第1データを読み込む。ここで、第1シミュレーションモジュールは、チップの第1機能をシミュレートするためのものである。例えば、
図3には、本開示の実施例によるチップをシミュレートするための機能シミュレータ301のアーキテクチャの模式
図300が示されている。矢印311に示すように、例えば行列計算のようなチップのある機能をミュレーション可能であるシミュレーションモジュール310は、データ331を一括保存ファイル330から読み込む。本開示の実施例では、一括保存ファイル330は、各シミュレーションモジュールの入出力データを一括的に保存することができ、各シミュレーションモジュールのために一括的なデータ・ドッキングインタフェースを提供することにより、各シミュレーションモジュール間の直接なデータのドッキングが回避される。いくつかの実施例では、データ331は、機能シミュレータ301の外部からの入力であってもよい。代替のものとして、データ331は、機能シミュレータ301内の他のシミュレーションモジュール(図示せず)が発生した出力結果であってもよい。
【0019】
ボックス204において、第1シミュレーションモジュールによる第1データの処理によって生成された第2データを、一括保存ファイルに書き込む。例えば、
図3を参照すると、矢印312に示すように、シミュレーションモジュール310は、データ331に対し処理(例えば、行列計算)を行って、データ332を生成し、一括保存ファイル330に送信する。
【0020】
ボックス206において、一括保存ファイルから、シミュレータにおける、第2シミュレーションモジュールに使用される第2データを読み込む。ここで、第2シミュレーションモジュールは、チップの第2機能をシミュレートするためのものであって、第1シミュレーションモジュールの後に実行される。例えば、
図3を参照すると、矢印313に示すように、アクティブ計算のようなチップのある機能をミュレーション可能であるシミュレーションモジュール320は、データ332を一括保存ファイル330から読み込む。シミュレーションモジュール320は、シミュレーションモジュール310の後に実行されるように事前に配置されていので、シミュレーションモジュール320が読み込んだ入力データ332は、シミュレーションモジュール310の出力結果(即ち、出力データ)である。また、第1シミュレーションモジュールと第2シミュレーションモジュールは、ハードウェアチップの様々の機能をそれぞれにシミュレートすることができることを、理解すべきである。
【0021】
ボックス208において、第2シミュレーションモジュールによる第2データの処理によって生成された第3データを、一括保存ファイルに書き込む。例えば、
図3を参照すると、矢印314に示すように、シミュレーションモジュール320は、データ332に対し(アクティブ計算のような)処理を行って、データ333を生成し、一括保存ファイル330に送信する。
【0022】
従って、本開示の実施例の方法200によると、チップシミュレータ内の各シミュレーションモジュールは、いずれも一括保存ファイルにドッキングするが、各モジュール間にデータは直接にインタラクトされることはない。このように、チップシミュレータ内の各モジュールは、いずれもどのように一括保存ファイルとドッキングするかしか考慮しないので、後のモジュールの任意の組み合わせとモジュール実行順序の調整に役立つ。これにより、チップシミュレータの開発効率及び拡張性を向上させる。
【0023】
また、本開示による実施例において、シミュレーションモジュール310は、データ331に対する計算を完了した後に、計算結果を、次のモジュールに直接に伝達することではなく、一括保存ファイル330に伝達する。いくつかの実施例において、データ332を一括保存ファイル330に書き込む場合に、記録データ332の種類、位置や大きさ等の情報を一括保存ファイル330に記録することができる。
【0024】
本開示の実施例において、機能シミュレータの各シミュレーションモジュールは、いずれもデータに対して、データの再編、データの計算及びデータの搬送等を含む処理能力を有する。シミュレーションモジュール毎にデータを処理した後に、結果を一括保存ファイルに書き込み、データの種類、データの位置、データの大きさ等の情報を明記する。他のシミュレーションモジュールがデータを読み込む必要がある場合に、保存ファイルからデータを一括的に読み込み、一括保存ファイルのデータ設定情報に基づいて解析し、データを自分の機能モジュールに取得して操作し、計算結果を再度一括保存ファイルに書き返すとともに、データの種類、データの位置、データの大きさ等の情報を明記する。このように、各シミュレーションモジュール間に、いずれかのプログラムのドッキングもない。
【0025】
上記のように、各シミュレーションモジュールは、他のシミュレーションモジュールはと独立して、一括保存ファイルに対するデータの解決と読み込みにのみ関心を持つことができる。シミュレーションモジュールは、関心するデータを一括保存ファイルから読み込んで、次に計算と処理を行い、その後、結果を一括保存ファイルに書き返し、後続のミュレーションに再利用される。各シミュレーションモジュールの開発とテストは、インタフェースとして一つの一括保存ファイルがあり、自分のモジュール内部のプログラムの開発とデバッグに注目すればよく、後続は任意のシミュレーションモジュールと論理的順序の調整及び協力を行うことができる。
【0026】
本発明の発明者は、現在のAIチップの設計が、通常の汎用チップと少し違っていることを認識した。AIチップは、汎用な計算処理のために設計されるものではなく、実際のアルゴリズムとソフトウェアアプリケーションにより近い。従って、AIチップは、実際のビジネスシーンに対して、具体的なアルゴリズムの加速、アプリケーションのスピードアップのような問題を解決する必要がある。AIチップの設計と要求は、実際の業務の発展、市場の需要に伴ってこそ、アプリケーションにサービスする目的を達成することができる。ソフトウェアアルゴリズムの絶え間ない変化と反復の過程において、ボトムAIチップを必要として、迅速な設計と検証方法を作り、評価と設計を行う。この場合に、AIチップの機能シミュレータにより実現されることが多き。これは、ハードウェア開発のサイクルが長く、ソフトウェア機能シミュレータによる迅速な開発と方案の実現可能性、及び設計案の正確性の検証を必要するためである。これは、ソフトウェア機能シミュレータも迅速かつ柔軟に実現し、実際のビジネスシーンをサポートしなければならないことを要求した。
【0027】
本開示の実施例の方法によると、各シミュレーションモジュールの計算順序は、任意的に組み合わせることができるので、AIチップの設計シミュレーションの要求によりよくマッチすることができる。AIアルゴリズムの変化と反復が速く、また、アルゴリズム中の各シミュレーションモジュールの順序と計算関係も柔軟に変化することができる。本開示の実施例は、トップアプリケーションの変化を満たすように、各機能シミュレータのシミュレーションモジュールを任意的に配置し、機能シミュレータの実行順序を調整することができる。この過程中に、本開示の実施例による機能モジュールは、ほとんど変更する必要がなく、開発とデバッグの作業量を著しく減少し、AIチップを助けて設計の実行可能性を迅速に検証することができる。
【0028】
いくつかの実施例において、本開示の実施例がシミュレートしたチップは、計算タスクの加速を実行するためのAIチップであってもよく、AIチップは、例えば、データ再編モジュール、行列計算モジュール、アクティブ計算モジュール及びダイレクトメモリアクセス(DMA)モジュール等のような各種の計算モジュールを含んでもよい。このように、本開示の実施例の機能シミュレータを使用してAIチップ設計の実行可能性を検証して、AIチップ設計の検証要求を効果的に解決することができる。
【0029】
図4には、本開示の実施例によるチップをシミュレートするための他の機能シミュレータ401のアーキテクチャの模式
図400が示されている。機能シミュレータ401は、複数のシミュレーションモジュール410、420、430、440及び450と、制御フロープロファイル460と、一括保存ファイル470を含み、その中、各シミュレーションモジュールは、チップ(例えば、AIチップ)のある機能をシミュレートするためのものである。
【0030】
図4を参照すると、制御フロープロファイル460は、シミュレータにおける複数のシミュレーションモジュール間の実行順序、例えば、実行順序465を設定するためのものである。前記実行順序465では、機能シミュレータ401の起動後に、先ず、シミュレーションモジュール410を実行し、次にシミュレーションモジュール420を実行し、次にシミュレーションモジュール430を実行し、次にシミュレーションモジュール440を実行し、次にシミュレーションモジュール450を実行する、という機能シミュレータ401内の各シミュレーションモジュールのプロセスの実行を指示する。つまり、機能シミュレータ401は、制御フロープロファイル460に設定されている実行順序に基づいて、複数のシミュレーションモジュールを順次実行する。一括保存ファイル470は、各シミュレーションモジュールの入出力データを一括的に保存することができ、各シミュレーションモジュールのために一括的なデータ・ドッキング インタフェースを提供することにより、各シミュレーションモジュール間のデータのドッキングが回避される。従って、各シミュレーションモジュールの実行中に、全ての計算プロセスを完了するまで、データを一括保存ファイル470から読み込んで、処理結果を一括保存ファイル470に一括的に書き込む。
【0031】
図4を参照し続けると、機能シミュレータは、外部からの入力405を受信して、一括保存ファイル470に入力記憶又はキャッシュする。次に、シミュレーションモジュール410は、実行順序465に従って、先ずデータを一括保存ファイル470から読み込み、処理が完了した後に一括保存ファイル470に相応的な結果を書き込む。シミュレーションモジュール420は、一括保存ファイル470からデータを読み込んで実行結果を書き込み、シミュレーションモジュール430は、一括保存ファイル470からデータを読み込んで実行結果を書き込み、シミュレーションモジュール440は、一括保存ファイル470からデータを読み込んで実行結果を書き込み、シミュレーションモジュール450は、一括保存ファイル470からデータを読み込んで実行結果を書き込む、ように順次実行する。全てのシミュレーションモジュールは、処理を完了した後に、出力455として、最終のデータを一括保存ファイル470から外部に出力する。
【0032】
図5には、本開示の実施例によるシミュレーションモジュールの実行順序を調整するための模式
図500が示されている。例えば、制御フロープロファイルの実行順序を変更し、変更後の実行順序に基づいてシミュレータにおける複数のシミュレーションモジュールの処理プロセスを調整することができる。
図5に示すように、新しい設計をテストして、シミュレーションモジュール430とシミュレーションモジュール440の実行順序を交換する必要がある場合に、制御フロープロファイルにおいて実行順序465を変更するだけでよい。次に、機能シミュレータ401は、動作時に変更後の実行順序465に従って変更後の処理プロセスを実行する。従って、本開示の実施例によると、機能シミュレータ401における各シミュレーションモジュールの実行順序を調整する必要がある場合に、シミュレーションモジュール自体のコード又はインタフェース接続を変更する必要がなく、制御フロープロファイル460により設定することで、機能シミュレータ401におけるモジュールの実行順序を任意に変更することができ、チップシミュレータの開発効率を著しく向上させる。
【0033】
代替のもの又は付加のものとして、機能シミュレータ中にシミュレーションモジュールを削除及び/又は追加する場合に、制御フロープロファイルに実行順序を変更することができる。
図6には、本開示の実施例による機能シミュレータにアナログモジュールを削除したり、アナログモジュールを追加するための模式
図600が示されている。
図6に示すように、
図4、
図5と比べて、機能シミュレータ401には、シミュレーションモジュール430、440、450が削除されるとともに、新しいシミュレーションモジュール530、540(例えば、新しいシミュレーション機能を有する新しいシミュレーションモジュール)を追加した。相応的に、制御フロープロファイル460中の実行順序465が変更される。そして、機能シミュレータ401は、変更後の実行順序465に従って処理プロセスのシミュレーションを実行する。つまり、先ず、シミュレーションモジュール410を実行し、次にシミュレーションモジュール420を実行し、次にシミュレーションモジュール530を実行し、次にシミュレーションモジュール540を実行する。
【0034】
本開示の実施例によると、機能シミュレータの各シミュレーションモジュールの開発者は、自体の内部モジュールの開発とデバッグにのみ注目すればよく、各シミュレーションモジュールは、他のシミュレーションモジュールと独立することができ、開発者は、一括保存ファイルのデータに対する解析と読み込みにのみ関心を持つだけでよい。各シミュレーションモジュールは、一括保存ファイルから所要のデータを読み込んで、計算、処理して、結果を一括保存ファイルに書き返すことにより、後の他のシミュレーションモジュールのために使用される。これに対して、機能シミュレータのアーキテクチャ設計者は、シミュレータ全体の枠組みを任意に構築し、計算パスとデータ処理の流れを調整することができる。つまり、各シミュレーションモジュールのプログラムコードを変更する必要がない場合に、アーキテクチャ設計者は、各シミュレーションモジュールを任意に組み合わせることができ、例えば、追加、置換、又は削除等にして様々な方法及び組み合わせを試みる。このように、機能シミュレータの開発とデバッグの作業量を効果的に低減し、チップ全体(例えば、AIチップなど)の設計と検証を加速させることができる。
【0035】
いくつかの実施例では、さらに、制御フロープロファイルにおいて、一括保存ファイルに対するシミュレータ内の各シミュレーションモジュールのデータ読み書き権限を設定することができる。このように、各シミュレーションモジュールは、他のデータを読み取ることができず、一部のデータだけを読み取ることができることで、シミュレータの安全性と信頼性を確保する。
【0036】
従って、本開示の実施例の方法によると、各アナログモジュールの実行順序は任意の組み合わせることができ、AIチップの設計探索により良くマッチすることができる。AIアルゴリズムの変化と反復が速く、また、アルゴリズム中の各シミュレーションモジュールの順序と計算関係も柔軟に変化することができる。このため、トップアプリケーションの変化を満たすように、各機能シミュレータのモジュールを任意的に配置し、機能シミュレータの実行順序を調整することができる。この過程中に、本開示の実施例の機能モジュールは、開発とデバッグの作業量を著しく減少し、AIチップを助けて設計の実行可能性を迅速に検証することができる。
【0037】
図7には、本開示の実施例によるシミュレータを実現するための装置700のブロック図が示されている。
図7に示すように、装置700は、第1読込モジュール710、第1書込モジュール720、第2読込モジュール730及び第2書込モジュール740を含む。第1読込モジュール710は、シミュレータにおけるシミュレーションモジュールの入力データと出力データを一括的に保存するための一括保存ファイルから、シミュレータにおける第1シミュレーションモジュールに使用される第1データを読み込むように配置されている。第1シミュレーションモジュールは、チップの第1機能をシミュレートするためのものである。第1書込モジュール720は、第1シミュレーションモジュールによる前記第1データの処理によって生成された第2データを、一括保存ファイルに書き込むように配置されている。第2読込モジュール730は、一括保存ファイルから、シミュレータにおける第2シミュレーションモジュールの第2データを読み込むように配置されている。第2シミュレーションモジュールは、チップの第2機能をシミュレートするためのであって、第1シミュレーションモジュールの後に実行される。第2書込モジュール740は、第2シミュレーションモジュールによる第2データの処理によって生成された第3データを、一括保存ファイルに書き込むように配置されている。
【0038】
いくつかの実施例において、チップは、計算タスクの加速を実行するための人工知能(AI)チップであり、第1シミュレーションモジュールと第2シミュレーションモジュールのそれぞれは、データ再編モジュール、行列計算モジュール、アクティブ計算モジュール及びダイレクトメモリアクセス(DMA)モジュールのうちの何れか一項であり、装置700は、シミュレータを用いて人工知能チップの設計の実行可能性を検証するように配置されている検証モジュールをさらに含む。
【0039】
いくつかの実施例において、装置700は、制御フロープロファイルにおいて、シミュレータにおける、少なくとも第1シミュレーションモジュールと第2シミュレーションモジュールを含む複数のモジュールの実行順序を設定するように配置されている設定モジュールと、制御フロープロファイルに設定された実行順序に基づいて、複数のシミュレーションモジュールを順次実行するように配置されている実行モジュールと、をさらに含む。
【0040】
いくつかの実施例において、装置700は、制御フロープロファイルにおける実行順序を変更するように配置されている変更モジュールと、変更後の実行順序に基づいて、シミュレータ内の複数のシミュレーションモジュールの処理プロセスを調整するように配置されている調整モジュールと、をさらに含む。
【0041】
いくつかの実施例において、変更モジュールは、シミュレータにおいて一つ又は複数のシミュレーションモジュールを再配置することに応答して、制御フロープロファイルにおける実行順序を変更する第2変更モジュールを含み、前記再配置は、シミュレーションモジュールの添加、削除、並び替えのうちの少なくとも一項を含む。
【0042】
いくつかの実施例において、装置700は、制御フロープロファイルにおいて、一括保存ファイルに対するシミュレータ内の各シミュレーションモジュールのデータ読み書き権限を設定するように配置されている第2設定モジュールをさらに含む。
【0043】
いくつかの実施例において、第1書込モジュール710は、第1シミュレーションモジュールから第2シミュレーションモジュールに第2データを直接にドッキングすることなく、第1シミュレーションモジュールから前記一括保存ファイルに第2データを伝達するように配置されている伝達モジュールと、一括保存ファイルにおいて、第2データの種類、位置及び大きさを記録するように配置されている記録モジュールと、を含む。
【0044】
いくつかの実施例において、装置700は、一括保存ファイルから、前記シミュレータにおける、チップの第3機能をシミュレートするための第3シミュレーションモジュールに使用される第3データを読み込むように配置されている第3読込モジュールと、第3シミュレーションモジュールによる第3データの処理によって生成された第4データを、一括保存ファイルに書き込むように配置されている第3書込モジュールと、をさらに含む。
【0045】
図7に示される第1書込モジュール710、第1書込モジュール720、第2読込モジュール730及び第2書込モジュール740は、一つ又は複数の電子デバイスに含まれてもよいことを、理解すべきである。また、
図7に示されるモジュールは、本開示の実施例を参照した方法やプロセスにおけるステップや動作を実行可能であることを、理解すべきである。従って、本開示の実施例は、チップシミュレータを開発する過程中に、各シミュレーションモジュールは、一括保存ファイルにデータをドッキングする一方、各モジュール間にデータをドッキングすることはない。これは、シミュレーションモジュールの任意の組み合わせと実行順序の調整に役立つ。これにより、チップシミュレータの開発効率を向上することができる。
【0046】
図8には、本開示の実施例を実施可能なデバイス800の模式的なブロック図が示されている。デバイス800は、本開示に説明されたシミュレータを実現するための装置700又は電子デバイス800に用いられることができる。図面に示すように、デバイス800は、中央処理ユニット(CPU)801を含み、読み出し専用メモリ(ROM)802に記憶されているコンピュータプログラム又は記憶ユニット808からランダムアクセスメモリ(RAM)803に取り込まれたコンピュータプログラムにより各種の適宜な動作及び処理を実行することができる。RAM803においては、デバイス800の操作に必要な各種のプログラム及びデータが記憶されている。CPU801と、ROM802と、RAM803とは、バス804を介して互いに接続されている。入力/出力(I/O)インターフェース805もバス804に接続されている。
【0047】
キーボード、マウスなどを含む入力ユニット806と、例えば様々な液晶ディスプレイ及びスピーカーなどの出力ユニット807と、例えば磁气ディスク、ディスク等の記憶ユニット808と、例えばインターネットカード、モデム、無線通信トランシーバ等の通信ユニット809とのような、デバイス800の複数の部材は、I/Oインターフェース805に接続されている。通信ユニット809は、デバイス800がインタネットのようなコンピュータ・ネットワーク及び/又は各種の電信ネットワークを経由して情報・データを他のデバイスと交換することを許可する。
【0048】
処理ユニット801は、例えば方法200のような、上記に記載された各方法やプロセスを実行する。例えば、いくつかの実施例において、方法は、例えば記憶ユニット808等の機械読込可能な媒体に有形的に含まれるコンピュータソフトウェアプログラムとして実現することができる。いくつかの実施例において、コンピュータプログラムの一部または全部は、ROM802および/または通信ユニット809を介してデバイス800にロードおよび/またはインストールされることができる。コンピュータプログラムがRAM803にロードされ、CPU801によって実行される場合に、上記に記載された方法の一つまたは複数の動作やステップを実行することができる。代替のものとして、他の実施例において、CPU801は、他の任意の適切な方法(例えば、ファームウェアを介して)によって、方法を実行するように構成されてもよい。
【0049】
本明細書に記載された上記の機能は、少なくとも部分的に一つ又は複数のハードウェア論理部材によって実行されてもよい。例えば、使用可能なモデルタイプのハードウェア論理部材は、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途用標準品(ASSP)、オンチップシステム(SOC)、プログラム可能論理デバイス(CPLD)等を含むが、それに限定されない。
【0050】
本開示の方法を実施するためのプログラムコードは、1つまたは複数のプログラミング言語の任意の組合せを用いて作成することができる。これらのプログラムコードは、汎用のコンピュータ、専用のコンピュータ又は他のプログラム可能データ処理装置のプロセッサまたはコントローラに提供されることで、プログラムコードは、プロセッサまたはコントローラによって実行される場合に、フローチャートおよび/またはブロック図に規定された機能/動作が実行される。プログラムコードは完全に機器上で実行され、部分的に機器上で実行され、独立的なソフトウェアパッケージとして機器上で実行され且つ部分的にリモート機器上で実行され、またはリモート機器やサーバ上で完全に実行されることができる。
【0051】
本開示の明細書では、機械可読媒体は、コマンド実行システム、装置またはデバイスの使用またはコマンド実行システム、装置またはデバイスと関連して使用されるプログラムを包含または記憶することができる有形の媒体であってもよい。機器可読媒体は、機器可読信号媒体や機器可読記憶媒体であってもよい。機器可読媒体は、電気、磁気、光、電磁気、赤外線、又は半導体システム、装置又はデバイス、あるいは任意の上記の組み合わせであってもよいが、これに限定されない。機器可読記憶媒体のより具体的な例示として、1つ又は複数の導線に基づく電気的な接続、携帯型のコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROM又はフラッシュメモリ)、光ケーブル、携帯型のコンパクトディスク読み出し専用メモリ(CD-ROM)、光記憶装置、磁気記憶装置、又は上記の任意の適切な組み合わせを含むが、これらに限定されない。
【0052】
特定の順序で各動作やステップを説明したが、このような動作やステップは、示された特定の順序又は順次実行されるように要求されるか、あるいは、図示された全ての動作やステップが所望の結果を得るために実行されるべきであることが、理解されるべきである。一定の環境では,マルチタスクと並列処理が有利である可能性がある。同様に、上記の説明にはいくつかの具体的な実現の詳細が含まれているが、これらは本開示の範囲に対する制限として解釈されてはならない。個別の実施例のコンテキストで説明されたいくつかの特徴は、単一のインプリメンテーションにおいても組み合わせて実現されることができる。反対に、単一のインプリメンテーションのコンテキストで説明された様々な特徴は、単独で、または任意の適切なサブグループで、複数のインプリメンテーションにおいて実現されることができる。
【0053】
本開示の実施例は、構造的特徴および/または方法的論理動作に特定の言語を用いて説明されているが、添付した特許請求の範囲に規定された主題は、上記の特定の特徴または動作に限定されないことを理解すべきである。反対に、上記に記載された特定の特徴および動作は、特許請求の範囲を実現するための例示的な形態にすぎない。