(57)【要約】この開示は、ソフトウェア定義された量子コンピュータの種々の態様を記載する。例えば、ソフトウェア定義された量子コンピュータと拡張可能／モジュラー量子コンピュータが記載される。また、少なくとも１つのソフトウェア定義された量子アーキテクチャ、リソースマネージャワークフロー、量子コンパイラアーキテクチャ、ハードウェア記述言語構成、アプリケーションプログラミングインタフェース（ＡＰＩ）アクセスポイントのレベル、およびソフトウェア定義された量子アーキテクチャにおける例外処理が記載される。【選択図】図１Ａ〜図１Ｄ
2021504829.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアプログラムからプログラミング命令を受信し、前記プログラミング命令に少なくとも一部基づいて制御信号を生成するように構成された制御ユニットと、
複数のキュービットと、を備え、前記複数のキュービットの数と、前記複数のキュービットの任意の２つの間の接続は、前記制御ユニットからの前記制御信号によりイネーブルにされ制御される、ソフトウェア定義された量子コンピュータ。
【請求項２】
ハードウェア記述言語は、前記制御ユニットおよび前記複数のキュービットを構成するために使用される、請求項１に記載のソフトウェア定義された量子コンピュータ。
【請求項３】
前記制御ユニットは、動的に制御信号を生成して、前記複数のキュービットの数および前記複数のキュービットの任意の２つの間の接続を調節するように構成される、請求項１に記載のソフトウェア定義された量子コンピュータ。
【請求項４】
前記複数のキュービットは、前記ソフトウェアプログラムに関連づけられた特定の量子演算を実行するように構成され、１つまたは複数の例外は、前記ソフトウェアプログラムの実行中に処理される、請求項１に記載のソフトウェア定義された量子コンピュータ。
【請求項５】
前記１つまたは複数の例外は、ハードウェア例外、ソフトウェア例外または両方を含む、請求項３に記載のソフトウェア定義された量子コンピュータ。
【請求項６】
各モジュールが、制御ユニット、通信制御ユニット、および複数のキュービットを有し、各制御ユニットは、ソフトウェアプログラムからプログラミング命令を受信し、前記プログラミング命令に少なくとも一部基づいて制御信号を生成するように構成され、前記複数のキュービットの数および前記複数のキュービットの任意の２つの間の接続が前記制御ユニットからの前記制御信号によりイネーブルにされ、制御される、複数のモジュールと、
前記複数のモジュールの各々からの前記通信制御ユニットからの通信チャネルをイネーブルにするように構成されるスイッチ／ルータユニットと、
を備えた、ソフトウェア定義された量子コンピュータ。
【請求項７】
前記複数のモジュールの数は動的に変化する、請求項６に記載のソフトウェア定義された量子コンピュータ。
【請求項８】
各通信制御ユニットは、前記ソフトウェアプログラムからのプログラミング命令を受信して、前記プログラミング命令の少なくとも一部に基づいて制御信号を生成するように構成される、請求項６に記載のソフトウェア定義された量子コンピュータ。
【請求項９】
各通信制御ユニットは、それぞれの通信チャネルに関連する前記複数のキュービットの少なくとも１つを制御する、請求項８に記載のソフトウェア定義された量子コンピュータ。
【請求項１０】
前記複数のキュービットは、メモリ／オペレーションキュービットおよび通信キュービットを含み、前記メモリ／オペレーションキュービットは、前記制御ユニットからの制御信号によりイネーブルにされ、制御され、前記通信キュービットは、前記通信制御ユニットからの前記制御信号によりイネーブルにされ、制御される、請求項８に記載のソフトウェア定義された量子コンピュータ。
【請求項１１】
アプリケーションプログラミングインタフェース（ＡＰＩ）と、
前記ＡＰＩがリソースマネージャとスイッチを含む量子ＯＳを実行する量子オペレーティングシステム（ＯＳ）と、
前記スイッチを介して接続された複数の量子コアであって、前記リソースマネージャは、前記複数の量子コア内のキュービットの割り当てを決定するように構成される複数の量子コアと、
を備えた、ソフトウェア定義された量子コンピューティングアーキテクチャ。
【請求項１２】
前記複数の量子コアは、異種アーキテクチャである、請求項１１に記載のソフトウェア定義された量子コンピューティングアーキテクチャ。
【請求項１３】
前記異種アーキテクチャに１つまたは複数のトランスデューサをさらに備えた、請求項１２に記載のソフトウェア定義された量子コンピューティングアーキテクチャ。
【請求項１４】
前記複数の量子コアは、同種アーキテクチャである、請求項１１に記載のソフトウェア定義された量子コンピューティングアーキテクチャ。
【請求項１５】
前記スイッチは、ソフトスイッチとハードスイッチを含む、請求項１１に記載のソフトウェア定義された量子コンピューティングアーキテクチャ。
【請求項１６】
前記複数の量子コアの１つまたは複数は、前記スイッチに接続された古典的チャネルと量子チャネルを有する、請求項１１に記載のソフトウェア定義された量子コンピューティングアーキテクチャ。
【請求項１７】
量子プログラミング言語のハイレベル中間表現についての字句解析を実行するステップと、
前記字句解析の出力についてのセマンティック解析を実行するステップと、
前記セマンティック解析の出力に基づいて前記量子プログラミング言語の中間レベルの中間表現を生成するステップと、
を備えたソフトウェア定義された量子コンピュータのためのソースコードをコンパイルする方法。
【請求項１８】
前記セマンティック解析を実行することは、オペレーショナルセマンティック解析を実行するステップと、意味論的セマンティック解析を実行するステップを含む、請求項１７に記載の方法。
【請求項１９】
量子プログラミング言語のハイレベル中間表現についての字句解析を実行するためのコードと、
前記字句解析の出力についてセマンティック解析を実行するためのコードと、
前記セマンティック解析の出力に基づいて前記量子プログラミング言語の中間レベルの中間表現を生成するためのコードと、
を備えた、ソフトウェア定義された量子コンピュータのためのソースコードをコンパイルするためにプロセッサにより実行可能な命令を備えたコードを記憶するコンピュータ可読媒体。
【請求項２０】
前記セマンティック解析を実行するためのコードは、オペレーショナルセマンティック解析を実行するためのコードと、意味論的セマンティック解析を実行するためのコードを含む、請求項１９に記載のコンピュータ可読媒体。
【請求項２１】
第１の制御ユニットと、
第２の制御ユニットと、を備え、
前記第１の制御ユニットは、ソフトウェアプログラムからプログラミング命令を受信し、第１の制御信号を生成するように構成され、第１の複数のキュービットは、前記第１の制御ユニットからの前記第１の制御信号によりイネーブルにされて制御され、
前記第２の制御ユニットは、前記ソフトウェアプログラムからのプログラミング命令を受信し、第２の制御信号を生成するように構成され、第２の複数のキュービットは、前記第２の制御ユニットからの前記第２の制御信号によりイネーブルにされて制御され、
前記第１の制御ユニットはさらに、前記第２の複数のキュービットの数が、シャトルされる前記第１の複数のキュービットの数だけ増加されるように、前記第２の制御ユニットにより制御される、前記第１の複数のキュービットの数をシャトルするようにさらに構成される、ソフトウェア定義された量子コンピュータ。
【請求項２２】
前記第１の制御ユニットによって受信される前記プログラミング命令は、前記第２の制御ユニットにより受信されたプログラミング命令とは異なる、請求項２１に記載のソフトウェア定義された量子コンピュータ。
【請求項２３】
前記シャトルされる前記第１の複数のキュービットの前記数は、前記第１の複数のキュービットに関連した情報を含み、前記情報は、シャトルされる前記第１の複数のキュービットの数だけ、前記第２の複数のキュービットに転送される、請求項２１に記載のソフトウェア定義された量子コンピュータ。
【請求項２４】
前記第１の制御ユニットと前記第２の制御ユニットを含む制御ユニットの数は、動的に変化される、請求項２１に記載のソフトウェア定義された量子コンピュータ。
【請求項２５】
前記第１の制御ユニットにより受信された前記プログラミング命令は、前記第２の制御ユニットにより制御される、前記第１の複数のキュービットの数をシャトルするための通信命令を含む、請求項２１に記載のソフトウェア定義された量子コンピュータ。
【請求項２６】
前記第２の制御ユニットにより制御されるようにシャトルされた、前記第１の複数のキュービットの前記数は、１つまたは複数のキュービットを含み、前記１つまたは複数のキュービッドのシャトリングは、前記第１の複数のキュービットと、前記第２の複数のキュービットとの間の通信チャネルを確立する、請求項２１に記載のソフトウェア定義された量子コンピュータ。
【請求項２７】
前記第１の複数のキュービットは、前記第１の制御ユニットからの前記制御信号によりイネーブルにされ、制御されるメモリ／オペレーションキュービットおよび通信キュービット含み、シャトルされる前記第１の複数のキュービットの数は、１つまたは複数の前記通信キュービットを含む、請求項２１に記載のソフトウェア定義された量子コンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
この特許出願は、２０１８年１１月２６日に「ソフトウェア定義された量子コンピュータ」というタイトルの米国非仮出願第１６／１９９９９３号、および２０１７年１１月２８日に出願された「ソフトウェア定義された量子コンピュータ」というタイトルの米国仮特許出願第６２／５９１６４１号の優先権を主張し、その内容は、参照することにより、全体が本明細書に組み込まれる。
【背景技術】
【０００２】
この開示の態様は、一般に、構成可能な量子コンピューティングシステムに関し、特に、ソフトウェア定義された量子コンピュータに関する。ソリッドステート量子ビットまたはキュービット（例えば、超電導キュービット、量子ドット（ＱＤｓ）等）に関する一般的な量子コンピュータ（ＱＣ）では、キュービットが組み立てられ、それらの接続は、しばしば、チップまたは集積回路のハードウェア設計により制限される。これは、例えば、（これに限定されないが）（ｉ）計算することができる問題のサイズ、（ｉｉ）インプリメントすることができる回路動作またはアルゴリズム／計算のタイプ、（ｉｉｉ）対応する性能メトリック（例えば、回路／アルゴリズムを実行するのに必要なゲートの合計数、計算を実行するのにかかる時間、および量子回路に関する成功確立）が、しばしば、チップまたは集積回路としてインプリメントされる、キュービットハードウェア（すなわち、量子ビットを実現するために使用するハードウェア）の設計に強く依存することを意味する。言い換えれば、一般的なソリッドステート量子コンピュータの動作または構成は、ハードウェアコンポーネントのインターネット制限により、柔軟性に欠ける傾向がある。量子コンピュータの柔軟性および構成可能性、特に、動的および／またはソフトウェアベースの構成可能性を可能にする技術が非常に望まれている。
【発明の概要】
【０００３】
以下は、そのような態様の基本的理解を提供するために１つまたは複数の対応の簡単化された要約を提示する。この要約は考えられるすべての態様の包括的な概要ではなく、すべての態様の主要な、または重要な要素を特定することを意図したものではないし、また、任意のまたはすべての態様の範囲を線引きすることを意図したものでもない。その目的は、後で提示される、より詳細な説明の前置きとして、1つ以上の態様のいくつかの概念を簡略化された形式で提示することである。
【０００４】
この開示の一態様において、ハードウェア記述言語をソフトウェア定義された量子コンピュータに用いて、ソフトウェア定義された量子コンピュータに利用可能な種々のリソースを構成し、特定のタスク、機能、プログラム、または、ルーチンを実行することができる。ハードウェア記述言語を用いて、例えば、計算のサイズ（例えば、キュービットの数）を固定にする必要がなく、臨機応変に調節することができるように、ソフトウェア定義された量子コンピュータを動的に構成することができる。一例において、ハードウェア記述言語は、ソフトウェア定義された量子コンピュータの構造（例えば、ハードウェア接続性）および動作（例えば、操作）を指定することができる。
【０００５】
この開示の一態様において、ソフトウェアプログラムからプログラミング命令を受信し、プログラミング命令に少なくとも一部基づいて制御信号を生成するように構成された制御ユニットと、キュービットを含み、キュービットの数およびキュービットの任意の２つの間の接続が、制御ユニットからの制御信号によりイネーブルとなり、制御される、ソフトウェア定義された量子コンピュータが記載される。
【０００６】
この開示の他の態様において、複数のモジュールを含み、各モジュールは、制御ユニットと、通信制御ユニットと、複数のキュービットを有し、各制御ユニットは、ソフトウェアプログラムからプログラミング命令を受信し、プログラミング命令に少なくとも一部基づいて制御信号を生成するように構成された制御ユニットと、多数のキュービットとを含み、キュービットの任意の２つの間の接続が、制御ユニットからの制御信号によりイネーブルとなり制御される、ソフトウェア定義された量子コンピュータが記載される。ソフトウェア定義されたコンピュータは、また、複数のモジュールの各々からの通信制御ユニットからの通信チャネルをイネーブルにするように構成されたスイッチ／ルータユニットを含む。
【０００７】
この開示の別の態様において、アプリケーションプログラミングインタフェース（ＡＰＩ）と、ＡＰＩが実行する量子オペレーティング・システム（ＯＳ）であって、リソースマネージャとスイッチを含む量子ＯＳと、前記スイッチを介して接続された複数の量子コアとを含み、リソースマネージャは、量子コア内のキュービットのアロケーションを決定するように構成される、ソフトウェア定義された量子コンピューティングアーキテクチャが記載される。
【０００８】
この開示の他の態様において、量子プログラミング言語の高レベルの中間表現についての字句解析を実行するステップと、字句解析の出力についての意味解析を実行するステップと、前記意味解析の出力に基づいて量子プログラミング言語の中間レベルの中間表現を生成するステップ含む、ソフトウェア定義された量子コンピュータのためにソースコードをコンパイルする方法が記載される。この開示のさらに他の態様において、量子プログラミング言語高レベル中間表現についての字句解析を実行するためのコードと、字句解析の出力についての意味解析を実行するコードと、意味解析の出力に基づいて量子プログラミング言語の中間レベルの中間表現を生成するコードを含む、ソフトウェア定義された量子コンピュータのためのソースコードをコンパイルするためにプロセッサにより実行可能な命令を有したコードを記憶したコンピュータ可読媒体が記載される。
【０００９】
この開示の他の態様において、第１の制御ユニットと第２の制御ユニットを含むソフトウェア定義された量子コンピュータが記載される。第１の制御ユニットは、ソフトウェアプログラムからプログラミング命令を受信し、第１の制御信号を生成するように構成することができ、第１の複数のキュービットは、第１の制御ユニットからの第１の制御信号によりイネーブルされ制御されるように構成することができる。第２の制御ユニットは、ソフトウェアプログラムからプログラミング命令を受信し、第２の制御信号を生成し、第２の複数のキュービットは、第２の制御ユニットからの第２の制御信号によりイネーブルにされ、制御されるように構成することができる。さらに、第１の制御ユニットは、第２の複数のキュービットの数が、往復される（shuttled）第１の複数のキュービットの数だけ増加するように第２の制御ユニットにより制御される第１の複数のキュービットの数を往復させるように構成することができる。ソフトウェア定義された量子コンピュータに関連づけられた種々の態様の方法、装置およびコンピュータ可読媒体が本明細書に記載される。添付した図面は、いくつかのインプリメンテーションのみを図示しており、範囲を限定するものとみなされるべきではない。
【図面の簡単な説明】
【００１０】
【図１Ａ】この開示の態様に従う、ソフトウェア定義された量子コンピュータの一例を図示する。
【図１Ｂ】この開示の態様に従う量子ビット（キュービット）の複数領域を制御する例を図示する図である。
【図１Ｃ】この開示の態様に従う量子ビット（キュービット）の複数領域を制御する例を図示する図である。
【図１Ｄ】この開示の態様に従う量子ビット（キュービット）の複数領域を制御する例を図示する図である。
【図２】この開示の態様に従う拡張可能なソフトウェア定義された量子コンピュータの一例を図示する図である。
【図３】この開示の態様に従う、ソフトウェア定義された量子コンピュータアーキテクチャの一例を図示する図である。
【図４Ａ】この開示の態様に従うリソースマネージャワークフローの一例を図示するフローチャートである。
【図４Ｂ】この開示の態様に従うリソースマネージャワークフローの一例を図示するフローチャートである。
【図４Ｃ】この開示の態様に従うリソースマネージャワークフローの一例を図示するフローチャートである。
【図５】この開示の態様に従うアプリケーションプログラミングインタフェース（ＡＰＩ）アクセスポイントのレベルの一例を図示するチャートである。
【図６】この開示の態様に従うコンパイラアーキテクチャの一例を図示する図である。
【図７Ａ】この開示の態様に従う例外分類の一例を図示する図である。
【図７Ｂ】この開示の態様に従う例外分類の一例を図示する図である。
【図７Ｃ】この開示の態様に従う例外分類の一例を図示する図である。
【図８】この開示の態様に従うコンピュータデバイスの一例を図示する図である。
【発明を実施するための形態】
【００１１】
添付図面に関連して下記に述べる詳細な説明は、種々の構成の記載として意図され、ここに記載した概念を実施可能な唯一の構成を表すことを意図するものではない。詳細な記述は、種々の概念の完全な理解を提供する目的のための特定の詳細を含む。しかしながら、当業者には、これらの概念は、これらの特定の詳細なしに実施可能であることが理解されるであろう。いくつかのインスタンスにおいて、そのような概念が不明瞭にならないように、良く知られたコンポーネントがブロック図の形態で示される。
【００１２】
この開示は、量子コンピュータ（ＱＣ）、ＱＣシステム、または量子情報処理（ＱＩＰ）システムをインプリメントするためのアプローチの種々の態様を記載し、ほとんどではないにしても、ＱＣの機能的態様のいくつかは、ソフトウェア（すなわち、ソフトウェア定義された機能性）により定義される。すなわち、ＱＣの機能性は、ハードウェア設計により柔軟性に欠けるまたは制限される必要がなく、ソフトウェアを用いて構成することができる。ＱＣのためにソフトウェア定義されたアーキテクチャをインプリメントすることにより、キュービットのシステムを定義し、キュービット接続性（例えば、異なるキュービット間の接続）を制御および操作し、所定の計算タスクまたはシミュレーションタスクを実行するために、キュービット間の相互作用（例えば、異なるキュービット間の相互作用）を変更するために、ソフトウェアまたはいくつかの動的命令を使用することが可能である。このアプローチは、また、ＱＣのためのハードウェア構成を記載するシステム的な方法を含むことができる。
【００１３】
古典的な、すなわち、量子でない、中央処理装置（ＣＰＵ）は、典型的に、制御ユニットおよびデータパスからなり、両方とも、典型的に、デジタル相補型ＭＯＳ（ＣＭＯＳ）を用いてインプリメントされる。制御ユニットは典型的にデータをどのように操作するかを決定するために、プログラムの命令を変換し、命令の実行に必要なＣＰＵ内のリソースの管理、並びに各命令実行のタイミングを管理する。データパスは、処理中のデータが流れる、プロセッサ内の機能ユニット、レジスタ、およびバスの集合である。計算は、種々の機能ユニット、レジスタおよびバスにデータを操作するように命令する、制御ユニットにより実行され、所望の計算タスクの最終出力を結果として得る。典型的なＣＰＵでは、制御ユニットとデータパスは、ロジックエレメントを用いて構築され、トランジスタを用いて組み立てられたデジタル回路を用いてインプリメントされ、チップ上のレイアウトにおいて高度に結び付けられる（intertwined）。
【００１４】
量子コンピュータ（またはＱＣ／ＱＩＰシステム）は（キュービットの単位で測定された）量子データを操作し、それゆえ、データパスは、量子オブジェクトで構成されなければならない。データを記憶し、転送し、操作する機能ユニットは、キュービットを処理し、（重ね合わせやエンタングルメント（entanglement）のような）量子特性を維持し、重ね合わせ入力状態のすべてのコンポーネントについて同時に動作することができなければならない。一方、制御プログラムで指定された命令は、本質的に古典的であるので、制御ユニットは、典型的に古典的である。典型的な制御ユニットは、プログラムまたはアルゴリズムからの命令を、機能ユニットに操作してキュービットに作用して所望のデータ操作を行う、古典的制御信号に変換するように構成することができる。キュービットに対する作用は、一般に、本質的にアナログであり、古典的制御信号（典型的には、同じまたは異なるフィールドにおける作用を符号化する変調を有するキャリア電磁場（例えば、無線周波数（ＲＦ）、マイクロ波、光）から成る）が、キュービット（または、キュービットのグループ）を、量子システムの制御された時間の進化を介して異なる量子状態に変換する。すなわち、古典的制御信号は、時間に対してキュービット情報をシーケンシャルに変換する動作を制御して、所望の計算またはシミュレーションを発生させるために使用される。
【００１５】
この開示において、データパスの物理的インプリメンテーションを完全に柔軟で再構成可能にしながら、制御ユニットがハードウェアで特別に設計され、構築されている量子コンピュータ（またはＱＣ／ＱＩＰシステム）のインプリメンテーションが考察される。データパスの物理的インプリメンテーションは、ハードウェアで事前に設計および製造されるのではなく、ハードウェアユニットに提供される命令のセットにより記述される。同様に、キュービットデータパス間の相互作用も、ソフトウェアプログラムを用いた制御ユニットにより生成された、制御信号により指示される、キュービットシステムの時間発展を実行する（enact）一連の命令としてインプリメントされる。
【００１６】
この開示で記載されるアプローチは、このアプローチを以前のアプローチと差別化するいくつかのユニークな特徴を有する。例えば、トラップイオンテクノロジーに基づくＱＣの場合、提案されたシステムのユニークな特徴が以下に記載される。トラップイオンテクノロジーは、トラップまたは同様の構造にロードされ配置された、イオンまたは原子を用いて、量子操作／シミュレーションを実行するために、それらの状態を制御することに言及することができる。
【００１７】
第１の態様において、システム内のキュービットの数と接続性（例えば、相互作用）は、ハードウェアの設計によりあらかじめ決定されていない。例えば、ＱＣは、ハードウェア（制御ユニット）設計において、ある時刻におけるｎ（例えば、ｎは整数であり、１６、３２、６４、あるいはそれより大きい数）のキュービットを制御する能力を有する制御ユニットを有することができ、次に、ＱＣを操作することを選択するたびに１とｍ（例えば、ｍも整数であり、ｎよりはるかに大きな数になる可能性がある）のキュービットとの間のどこかで「ロード」することができる。
【００１８】
図１Ａは、この開示の態様に従うソフトウェア定義された量子コンピュータの一例を図示する図１００を示す。図１Ａの図１００に示されるシステムは、上述したように、ｍのキュービットまでロードまたはイネーブルにすることができ、次に、ｎのキュービット（例えば、図１Ａのキュービット１３０を参照されたい）の任意のサブセットを制御することができ、ただし、ｍ≧ｎである。ここで使用されるように、量子コンピュータ、量子コンピュータシステム、量子コンピューティングシステム、量子情報処理システムという用語は、互いに交換可能に使用することができる。
【００１９】
上述したように、ハードウェア記述言語をソフトウェア定義された量子コンピュータに使用してソフトウェア定義された量子コンピュータに利用可能な種々のリソースを構成し、特定のタスク、機能、プログラム、またはルーチンを実行することができる。ハードウェア記述言語は、例えば、計算のサイズ（例えば、キュービットの数）を臨機応変に（on the fly）調節することができる（例えば、任意の時点で一方のサイズから他方のサイズへ変更することができる）ようにソフトウェア定義された量子コンピュータを動的に構成するために使用することができる。一例において、ハードウェア記述言語は、ソフトウェア定義された量子コンピュータの構造と動作を指定することができる。このアプローチは、構成に柔軟性を欠きハードウェアにより固定された従来の量子コンピュータとは異なる。代わりに、ソフトウェア定義された量子コンピュータは、例えば、フィールドプログラマブルデバイスを構成し得る方法と類似の方法で、ハードウェア記述言語（または量子ハードウェア記述言語）を用いて構成することができる。従って、ソフトウェア定義された量子コンピュータは、実行している特定の動作に対して、必要に応じて、１０キュービット、２０キュービット、または１００キュービット（または、任意の数）をロードおよび使用するように構成することができる。
【００２０】
第２の態様において、それらの間で利用可能なすべての（all-to-all）相互作用を有し、そのような相互作用の形態は、通常オフであり得る。言い換えれば、各キュービットは、（単一の他のキュービットを含む）残りのキュービットのサブセットに対して、または残りのキュービットのすべてに対して相互作用する、または何らかの接続性（例えば、図１Ａの接続または相互作用１４０参照）を有することができる。キュービット間の相互作用のいくつかは、制御ユニット（例えば、図１Ａの制御ユニット１２０）により「オン」にされるか、または有効にされ、キュービットのセット上のある命令（例えば、論理ゲートのセット）に影響を及ぼすことができる。各命令の性質は、命令（複数の場合もあり得る）を実行するために、必要な制御信号（例えば、制御信号１２５）を生成するために、制御ユニットが（例えば、プログラミング命令１１５を用いたプログラム１１０により）プログラムされる方法により決定することができる。プログラム１１０により提供されるプログラミング命令１１５は、それゆえ、命令のセットを反映することができ、制御ユニット１２０は、プログラミング命令１１５を処理して適切な制御信号１２５を生成し、命令のセットを実行することができる。
【００２１】
他の態様において、１つのインプリメンテーションでは、命令のセットは、各ゲートが、キュービットの量子入力について離散アクション（discrete action）を実行してキュービットの出力状態を生成する代数量子ゲートの集合として記述することができる。他の態様では、他のインプリメンテーションにおいて、命令のセットは、各ゲートが、量子入力についてパラメータに依存するアクションを実行する、広義に定義された、パラメータ化された連続量子ゲートの集合として記述することができる。例えば、所望の相互作用ハミルトニアン（Hamiltonian）に関連するＱＣ内のキュービットのセットの所定の発展は、発展の性質を指示する連続変数でインプリメントされる。
【００２２】
さらに他の態様において、使用されるキュービットのセットの時間発展は、それらが良く知られている限り、断熱的（adiabatic）（例えば、断熱的時間発展）、非断熱的（diabatic）（例えば、非断熱的時間発展）、またはその間の任意のもの（例えば、断熱的／非断熱的、または混合された時間発展）でありえる。さらに、他の態様において、他のインプリメンテーションにおいて、命令のセットは、量子ロジックゲートとハミルトニアン発展の結合であり得る。この結合は、時間的、空間的またはその両方でありえる。
【００２３】
他の態様において、拡張されたまたは拡張可能なシステムは、また、この開示で記載したソフトウェア定義された量子コンピュータのタイプの一部とみなすことができる。全体的な複合システムは、個々のコンポーネントキュービットシステムのグループで構成することができ、構成するキュービットシステム間の量子接続は、構成するキュービットシステムのサブセット間の共有エンタングルメントにより、または、構成するキュービットシステム間のキュービットを物理的に移動することにより、確立される。
【００２４】
図１Ｂは、制御ユニット１２２の一例を説明する図１７０を示す。図１７０の単一の制御ユニット１２２は、図１Ａの制御ユニット１２０のいくつかのインプリメンテーションを表すことができる。これらの複数の制御ユニット１２０は、互いに物理的および／または論理的に分離しているが、より高いレベルの構造内で、この場合には、単一の制御ユニット１２２内で組織化、またはインプリメントすることができる。例えば、図１７０において、制御ユニット１２２は、制御ユニット１２０ａ、１２０ｂ．．．１２０ｋを含み、それはまた制御ユニット１２２に対するサブ制御ユニットまたはサブユニットと呼ぶことができる。
【００２５】
この例では、制御ユニット後１２０ａ、１２０ｂ、．．．１２０ｋの各々は、制御ユニット１２２により受信したプログラミング命令１１５のサブセット、またはプログラミング命令１１５のそれ自体の別個のセットを処理することができる。図２は、拡張可能なソフトウェア定義された量子コンピュータを示し、以下でより詳細に説明され、２以上の制御ユニット１２０が使用される場合を図示し、これらの制御ユニット１２０は、別個にインプリメントすることができる。制御ユニット１２０ａ、１２０ｂ、．．．１２０ｋの各々は、独立してプログラム可能であり、キュービット（例えば、キュービット１３０）の異なるセットを（例えば、制御信号１２５を用いて）制御するために使用することができる。キュービットの数は、受信したプログラミング命令および制御ユニット１２０ａ、１２０ｂ、．．．、１２０ｋのそれぞれの制御ユニットによりロードすることができるか、またはイネーブルにすることができるかに依存して、制御ユニットのすべてに対して同じであり得るか、または制御ユニット間で変更することができる。他の態様において、キュービットは、イオントラップテクノロジーを用いてインプリメントされ、制御ユニット１２０ａ、１２０ｂ、．．．１２０の各々は、イオントラップの異なる領域内のキュービットを処理する。次に、イオントラップ内の隣接領域に関連してこれらの制御ユニットが、どのように使用されるかにより、ソフトウェア定義された量子コンピュータを拡張することができる。
【００２６】
図１Ｃおよび１Ｄは、それぞれ、異なる制御ユニット間（例えば、イオントラップ内の異なる領域間）のイオンまたは原子の「シャトリング（shuttling）」を説明する。例えば、図１８０において、制御ユニット１２０ａは、ｘキュービット（例えば、イオンまたは原子）を制御し、制御ユニット１２０６は、ｙキュービット（例えば、イオンまたは原子）を制御する。破線は、制御ユニット１２０ａと制御ユニット１２０が別個のデバイスとして示されているけれども、それらは、オプションで、同じ構造の一部（例えば、図１Ｂの制御ユニット１２２）としてモノリシックにインプリメントすることができる。
【００２７】
ダイアグラム１９０は、制御ユニット１２０ａにより制御されたキュービットから制御ユニット１２０ｂにより制御されたキュービットへのｚキュービットの「シャトリング」または変換を示す。このプロセスの結果として、制御ユニット１２０ａは、制御（ｘ−ｚ）キュービットを制御したままであり、制御ユニット１２０ｂは、制御（ｙ＋ｚ）キュービットを制御したままである。一例において、両方の制御ユニットが、最初に３０個のイオンまたは原子を処理し、５個のイオンが、または原子が、シャトルまたは変換された場合、制御ユニット１２０ｂは、３５個のイオンまたは原子を制御または処理したままであり、制御ユニット１２０ａは、２５個のイオンまたは原子を制御、または処理したままである。これらのシャトルされたまたは変換されたイオンまたは原子を用いてキュービットの一方のセットからキュービットの他方のセットへ情報を通信することができる。
【００２８】
図１Ｂ−１Ｄに記載されたさらなる態様に基づいて、ソフトウェア定義された量子コンピュータ（例えば、図１Ａのソフトウェア定義された量子コンピュータ１００の変形例のような）は、第１の制御ユニット（例えば、制御ユニット１２０ａ）および第２の制御ユニット（例えば、制御ユニット１２０ｂ）を含むことができ、第１の制御ユニットは、ソフトウェアプログラムからプログラミング命令（例えば、プログラミング命令１１５）を受信し、第１の制御信号（例えば、制御信号１２５ａ）を生成するように構成され、第１の複数のキュービットは、第１の制御ユニットから第１の制御信号によりイネーブルにされ、制御され（例えば、ｘキュービット）、第２の制御ユニットは、ソフトウェアプログラムからプログラミング命令を受信し、第２の制御信号（例えば、制御信号１２５ｂ）を生成し、第２の複数のキュービットは、第２の制御ユニットからの第２の制御信号によりイネーブルにされ、制御される（例えば、ｙキュービット）。そのような量子コンピュータにおいて、第１の制御ユニットと第２の制御ユニットを含む制御ユニットの数は、動的に変更することができる（例えば、必要とされるキュービットの数およびこれらのキュービットを制御するのに必要な制御ユニットの数に基づいて増加したり減少したりすることができる）。
【００２９】
第１の制御ユニットはさらに、第２の複数のキュービットの数がシャトルされる第１の複数のキュービットの数だけ増加される（例えば、Ｔ＋ｚキュービット）ように第２の制御ユニットにより制御される第１の複数のキュービット（例えば、ｚキュービット）の数をシャトルするように構成される。第１の制御ユニットの制御下に留まるキュービットの数は、シャトルされるキュービットの量だけ低減される（例えば、ｘ−ｚキュービット）。
【００３０】
第１の制御ユニットにより受信されたプログラミング命令は、第２の制御ユニットにより受信されたプログラミング命令とは異なり得る。第１の制御ユニットにより受信されたプログラミング命令は、第２の制御ユニットにより制御される第１の複数のキュービットの数をシャトルするための通信命令を含む。
【００３１】
他の態様において、シャトルされる第１の複数のキュービットの数は、第１の複数のキュービットに関連した情報を含み、この情報は、シャトルされる第１の複数のキュービットの数だけ、第２の複数のキュービットに転送される。第２の制御ユニットにより制御され、シャトルされる第１の複数のキュービットは、１つまたは複数のキュービットを含み、１つまたは複数のキュービットのシャトリングは、第１の複数のキュービットと第２の複数のキュービットとの間に通信チャネルを確立する。
【００３２】
他の態様において、第１の複数のキュービットは、第１の制御ユニットからの制御信号によりイネーブルにされ、制御された、メモリ／オペレーションキュービット（例えば、図２のメモリ／オペレーションキュービット１３０ａ参照）および通信キュービット（例えば、図２の通信キュービット１３０ｂ参照）を含み、シャトルされる第１の複数のキュービットの数は、１つまたは複数の通信キュービットを含む。
【００３３】
イオンまたは原子の数およびイオンまたは原子を制御するのに必要な制御ユニットの数を調節することにより、図１Ａ−１Ｄに関連して上述した技術を介してソフトウェア定義された、量子コンピュータの能力を格調することが可能である。そのような拡張した能力の一例は、図２において以下により詳細に記載される。
【００３４】
図２は、この開示の態様に従う、拡張可能なソフトウェア定義された量子コンピュータ、または量子コンピューティングシステムの一例を図示する。図２のダイアグラム２００に示される拡張可能な量子コンピューティングシステムは、図１Ａのダイアグラム１００および図１Ｂ−１Ｄに示すシステムのアーキテクチャの複数の態様のいくつかに従う。例えば、ダイアグラム２００のシステムは、制御ユニット１２０ａおよび通信制御ユニット２２０ａ（図２のComm.Ctl.ユニット２２０ａと呼ばれる）を有するモジュール２１０ａ（モジュール１）へプログラミング命令を供給するプログラム１１０ａを含む。プログラミング命令１１５ａは、制御ユニット１２０aにより生成された制御信号を介してモジュール２１０ａ内にロードされた、１つまたは複数のキュービット上の命令のセットに影響を与えるように、制御ユニット１２０ａをプログラムするために使用することができる。さらに、プログラミング命令１１５ａは、スイッチ／ルータユニット２３０を用いて通信チャネル２２５ａをイネーブルにし、インプリメントし、または制御するために、通信制御ユニット２２０ａにより生成された制御信号を介して、１つまたは複数のキュービット上の命令のセットに影響を与えるように、通信制御ユニット２２０ａをプログラムするために使用することができる。
【００３５】
プログラム１１０ａは、また、制御ユニット１２０ｂと、スイッチ／ルータユニット２３０を備えた通信チャネル２２５ｂをイネーブルにし、インプリメントし、または制御することができる、通信制御ユニット２２０ｂ（図２のComm.Ctl.ユニット２２０ａと呼ばれる）を含むように構成されたモジュール２１０ｂ（モジュール２）に、プログラミング命令１１５ｂを提供することができる。略図２００に示すように、システムに使用されるモジュールの数は、構成可能または拡張可能であり、最大ｋ個のモジュールまで存在する可能性があり、モジュール２１０ｋ（モジュールＫ）は、また、（複数のインターナルキュービットに加えて）制御ユニットと通信制御ユニットを含むことができ、通信チャネル２２５ｋは、モジュール２１０ｋとスイッチ／ルータユニット２３０との間でイネーブルにすることができる。スイッチ／ルータユニット２３０は、モジュールとスイッチ／ルータ２３０との間のインタフェースを介して異なるモジュール間に、接続性を提供するように構成される。
【００３６】
図２の通信制御ユニット２２０ａおよび２２０ｂは、それぞれの制御ユニット１２０ａおよび１２０ｂから独立してインプリメントすることができるか、またはそれぞれの制御ユニット１２０ａおよび１２０ｂ内に集積することができる。通信制御ユニット２２０ａおよび２２０ｂ並びにスイッチ／ルータユニット２３０を用いて達成される通信は、また、少なくとも一部、キュービットの１つのセットからの情報が、キュービットのシャトリングの結果として、キュービットの他のセットに利用可能である、図１Ｃおよび１Ｄに記載されたシャトリング技術を用いて成就または実現することもできる。
【００３７】
モジュール２１０ａ、．．．２１０ｋの各々内には、それぞれの制御ユニットと通信制御ユニットにより制御することができる、多数のキュービット１３０がある。キュービットのいくつかは、メモリ／オペレーション（例えば、キュービット１３０ａ）に使用することができ、他は、通信チャネル２２５（例えば、キュービット１３０ｂ）をイネーブルにするために使用される、通信キュービットであり得る。例えば、モジュール内のキュービットが、イオントラップ技術を用いてインプリメントされると、メモリ／オペレーションキュービット１３０ａは、１７１Ｙｂ＋原子イオンに基づくことができ、通信キュービット１３０ｂは、１３８Ｂａ＋原子イオンに基づくことができる。他の種および／または同位体もまた、メモリ／オペレーションおよび通信キュービットのペアに使用することができる。メモリ／オペレーションキュービット１３０ａは、それぞれの制御ユニットからの制御信号によりイネーブルにされ制御され、通信キュービット１３０ｂは、それぞれの通信制御ユニットからの制御信号によりイネーブルにされ制御される。
【００３８】
他の態様において、ハードウェア構成（例えば、図１Ａ−１Ｄおよび図２に記載したシステムのハードウェア構成）の特定のインスタンスは、各ハードウェア（またはキュービットのセット）インストレーション、それらの利用可能性、相対接続、およびその構成によりイネーブルにされる量子ハードウェアの低レベル機能性をキャプチャ（capture）するハードウェア記述言語（ＨＤＬ）の量子バージョンを用いて提供することができる。それは、ハイレベルソフトウェアにより生成される量子プログラムがハードウェア（例えば、プログラム１１０、１１０ａ、および制御ユニット１２０、１２０ｚ、１２０ｂ）の操作を制御するインタフェースも有する。
【００３９】
さらに他の態様において、この開示に記載されたアプローチは、ソフトウェア定義されたアーキテクチャを用いることによりＱＣまたはＱＣシステムのハードウェア仕様の基礎となる詳細からのコード独立性が可能となるため、量子プログラム（例えば、ＱＣまたはＱＣシステムを用いて実行されるプログラムまたは命令）の最大ポータビリティも保証する。すなわち、図１Ａおよび図２のプログラム１１０および１１０ａは、それぞれ移植（port）することができる。他の態様において、この開示において記載したアプローチの柔軟性は、最適化されたグラフ配置の使用と、異なるソフトウェア定義されたアーキテクチャ間でプログラムを移植するために、ヒューリスティック（heuristics）（例えば、カスタムタブー検索（ＴＳ））と、ディープラーニングの両方を用いてアルゴリズムの埋め込みを可能にする。ヒューリスティックのためのカスタムタブー検索（custom tabu search）を用いることは、グローバル最適アルゴリズムと、埋め込まれたヒューリスティック技術を制御するためのメタヒューリスティックあるいはメタストラテジーを用いることを含む。
【００４０】
他の態様において、この開示で記載したアプローチは、形式的アプローチとアルゴリズム的アプローチの両方を用いてソフトウェア定義されたアーキテクチャへのプログラムの移植を検証することを可能にする。他の態様において、この開示はまた、入力されるジョブのための最も効率の良いソフトウェア定義されたアーキテクチャを提供するためのリソースマネージャ（例えば、図３の略図３００のリソースマネージャ３３０を参照）のインプリメンテーションを記載する。最適化は、以下のパラメータに対して行われる。
【００４１】
（ａ）ソフトウェア定義されたアーキテクチャは２つの態様を有する：
キュービットの可変数と可変接続。リソースマネージャは、要求されたアーキテクチャのためのリソースを最適化しながら両方の態様をキャプチャするように構成することができる。（ｂ）イオンの数が３２未満（例えば、イオントラップされたＱＣシステムの場合）のとき３２のハードワイヤードチャネルまたは相互作用とのイオンのアライメントの最適性。正しいアライメントを見つけることは自明であり得る。
ｎイオンの場合、ｎ＜３２であり、イオンをアライメントする３３−ｎの方法がある。
すべてのこれらのアライメントのコストは、同じであると想定されるが、システムが校正を開始すると、コストをさらに良く理解することができる。上述したリソースマネージャは、非自明な費用関数（cost function）がある場合、最適化を提供するように構成される。
【００４２】
（ｃ）キュービットが少ない場合、波形（例えば、アナログ制御信号）の計算時間を増加させることができ、これは、使用されるキュービットの数が動的に構成されるソフトウェア定義された、アーキテクチャの使用に有利である。すなわち、キュービットの数における可変性および構成可能性は、ソフトウェア定義されたＱＣのハードウェアサイドに利点を提供する。（ｄ）接続性における可変性は、例えば、堅固なアプリケーションプログラミングインタフェース（ＡＰＩ）スタックの構築を可能にすることにより、ソフウェアサイドに利点を提供するであろう。現在のシステムは、本質的に制限されたグラフを有することができるけれども、ハードウェアサイドにも利点があるかもしれない。
【００４３】
さらに、他の態様において、この開示で記載したソフトウェア定義されたＱＣアプローチは、また、クラウドコンピューティングからの弾性（elasticity）の概念に適合させることもできる。例えば、キュービットをリザーブ領域（すでに別個のトラッピングゾーンにロードされている）からコンピューティング領域にシャトルし、プログラムの実行中にオンデマンドで戻すことができる、弾性コンピューティング環境をインプリメントすることができる。すなわち、プログラムの実行中にシステムに課せられた要求を使用して、コンピューティング環境を動的に変更する（例えば、弾性を提供する）ことができる。それゆえ、さらなるコンピューティングリソース（例えば、事前ロードされたイオン）を有する、トラップに容易に利用可能なゾーンを有し、オンデマンドでコンピューティング環境を容易に拡張することが可能である。
【００４４】
他の態様において、ソフトウェア定義されたＱＣｓおよびＱＣ／ＱＩＰシステムに関してここに記載したアーキテクチャは、同種（homogenous）及び異種（heterogeneous）のマルチコア量子処理ユニット（ＱＰＵ）システムの両方をサポートすることができる。同種のマルチコアＱＰＵは、同一トラップ（例えば、イオントラップ）のネットワークである。他方、異種のマルチコアＱＰＵは、異なる構成のトラップのネットワーク、または異なる技術（例えば、イオントラップ、超電導回路、等）を用いて構成されたＱＰＵｓのネットワークである。
【００４５】
異なる技術を有する、異種のマルチコアＱＰＵの場合、異なる物理システムのキュービットを接続するためにトランスデューサ（例えば、量子トランスデューサ）の使用が必要になるかもしれない。１つのインプリメンテーションにおいて、単一のトランスデューサは、異なる技術の２つのキュービット間に使用することができる。他のインプリメンテーションにおいて、異なるトランスデューサは、接続または相互作用の方向（例えば、キュービット１からキュービット２の方向に第１のトランスデューザ、およびキュービット２からキュービット１の方向へ第２のトランスデューサ）に基づいて使用することができる。
【００４６】
この開示に関連して記載した、ソフトウェア定義されたＱＣおよびＱＣ／ＩＰシステムの種々の態様は、これらに限定されないが、アーキテクチャグラフ、回路グラフ、ポータビリティ、二次代入問題、深度最適レイアウト、（ヒューリスティック）最適埋め込みのシーケンス、単一命令マルチデータ（ＳＩＭＤ）ＱＣ、量子回路コンパイル、量子回路設計、および量子回路最適化を含む、アーキテクチャ、インプリメンテーション、構成および最適化に関連する態様を含む。
【００４７】
図３は、この開示に従うソフトウェア定義されたＱＣのためのシステムアーキテクチャの一例を説明する概略図３００を示す。概略図３００に示されるシステムは、イオントラップまたはイオントラップ技術に基づき、一例として提供され、限定のためではない。イオントラップ技術とは異なる技術に基づくシステム（例えば、トラップされたニュートラル原子または超電導回路）はまた、図３の概略図３００に関連して記載された技術を用いてインプリメントすることができる。
【００４８】
ソフトウェア定義された量子コンピュータは、一般に３つの主要なアーキテクチャレイヤを含むことができる。最上部にあるのは、コンピュータのユーザのためのプログラマブルインタフェースを見せるように構成された、ＡＰＩスタック３１０が置かれている。典型的には、ＡＰＩスタック３１０は、ハードウェアの変動性を露呈せず、完全に接続された、仮想の大型量子コンピュータを想定している。すなわち、ハードウェアが構成される態様は、コンピュータのユーザに知られる必要はない。
【００４９】
量子オペレーティングシステム（ＯＳまたはＱＯＳ）３２０は、ハードウェアとＡＰＩスタック３１０との間に存在する。ソフトウェア定義された量子アーキテクチャのプリミティブ（primitives）は、このレイヤ内で公開およびプログラム可能である。量子ＯＳ３２０は、キュービットアロケーションを処理するための最適な方法を見つけるためのリソースマネージャ３３０（少なくとも一部を上述した）を含むことができる。すなわち、リソースマネージャ３３０の役割は、入力ジョブに対する最も効率的なソフトウェア定義されたアーキテクチャを識別することである。キュービットアロケーションは、イントラ（intra）またはインター（inter）量子コア（例えば、量子コア３７０ａ、３７０ｂおよび３７０ｍを参照）であり得る。量子コアは、また量子ユニット、コアユニット、または単にコアと呼ぶこともできる。特にそうでないと指定しない限り、この開示で使用されるように、量子コアは、例えば、個々のイオントラップ（他の技術の量子コアも使用することができるけれども）を意味することができる。個々のイオントラップは、１つまたは複数のキュービットを含むことが理解される。ネットワークまたはアーキテクチャ内のコアユニットが同一でない場合、アーキテクチャは、異種（heterogeneous）アーキテクチャと呼ばれる（これは、異なるイオントラップ、またはイオントラップと、トラップされたニュートラル原子、または超電導キュービットのような、異なる技術からなる異なるコアを意味することができる）。一方、ネットワークまたはアーキテクチャが同一のコアユニット（例えば、同一のイオントラップ）を有するとき、アーキテクチャは、同種（homogeneous）アーキテクチャと呼ばれる。リソースマネージャ３３０は、キュービットがコアユニット（例えば、イオントラップ）内でどのように割当てられ、整列されるかを決定（decide）または判断（determine）するように構成される。リソースマネージャ３３０は、また、複数のコアユニット（例えば、トラップ）に対するキュービット割り当てに対する最良のキュービット接続（例えば、相互作用１４０）と通信チャネル（例えば、通信チャネル２２５）（例えば、フォトニックインターコネクト（photonic interconnect））を決定するように構成される。マッピングがリソースマネージャ３３０により決定された後で、量子ＯＳ３２０内のスイッチ３４０は、すべての操作および読出しをルーティングする（route）ことができる。スイッチ３４０は、量子コアに接続された古典的チャネル３８０（破線）と量子チャネル３８５（実線）を有することができる。
【００５０】
ソフトウェア定義された量子アーキテクチャに割り当てられたリソースの他の態様において、図４Ａ−４Ｃは、この開示の態様に従うリソースマネージャワークフローの一例を図示するフローチャート４００を示す。ソフトウェア定義された量子アーキテクチャには、リソースマネージャ（例えば、リソースマネージャ３３０）を自由に使える多くの異なる種類のリソースがある。これらのリソースは、キュービット、接続性、コヒーレンス、コアユニット（例えば、イオントラップ）間の（フォトニック）相互接続ネットワーク、古典的通信チャネル、並びに他のタイプのリソースを含む。ソフトウェア定義された量子アーキテクチャは、リソースマネージャを介して、合理的なタイムフレーム内でリソースの使用率を最適化する必要がある。プログラム（例えば、命令のセット）がＡＰＩスタック３１０（４０５を参照）を介して提出されると、リソースマネージャ（４１０を参照）に渡される次のレベルの中間表現に変換される。ネットリスト（netlist）のような表現から、リソースマネージャは、プログラムを実行するコストを推定する（４１５参照）。このコストは、リソース割り当てについての決定を行うためにリソースマネージャにより使用される。リソースマネージャにより行われる最初の決定は、プログラムを実行するために、ハードウェアが必要かつ十分なリソースを有しているかどうかである。マルチ量子コアシステムの場合、リソースマネージャは、プログラムを実行することができる最小数のコアを選択する。２以上のセットの最小数のコアがある場合、リソースマネージャは、プログラムの配布が最も安いコアを選択する。例えば、現在の要求されている操作は、あるソフトウェア定義されたアーキテクチャ上で実行された一連の従前の操作に従っている（４３０参照）。リソースマネージャは、既存のソフトウェア定義されたアーキテクチャ上の操作をマッピングする（４４０参照）コストと、操作にネイティブの（native to）ソフトウェア定義されたアーキテクチャを作るコストと、を比較し、それに従って決定することができる（４４５、４５０参照）。任意の決定が回路深さ（circuit depth）を増加させる場合（４５５参照）、あるいは、丸め込みエラー（rounding off error）が生じる場合（４６５参照）、結果を返しながら、適切なフラッグを立てる必要がある（４６０、４７０参照）。次に、ジョブがターゲットコア（複数の場合もある）の優先度キューに配置することができる（４７５参照）。
【００５１】
この開示で記載されるソフトウェア定義された量子コンピュータアーキテクチャに関連した他の態様は、量子プログラムをコンパイルする必要性である。図５を参照すると、この開示の態様に従って、ＡＰＩアクセスポイントのレベルの一例を図示するチャート５００が示される。チャート５００は、一番上のレベルとして、クライアント５１０を示し、次に、ｒｅｓｔ  ＡＰＩ５２０、量子プログラミング言語（ＱＰＬ）５３０、ハイレベル中間表現（ＨＬＩＲ）５４０、ソフトウェア定義アーキテクチャのための中間レベル中間表現（ＭＬＩＲ）５５０、良否ハードウェア定義または記述言語（ＨＤＬ）５６０、ロウレベル中間表現（ＬＬＩＲ）５７０、量子制御システム言語５８０、および最下位レベルとしてのマシン言語５９０が続く。
【００５２】
理想的なシステムインプリメンテーションにおいて、ソフトウェア定義された量子アーキテクチャは、最高位レベルのＡＰＩ（例えば、ｒｅｓｔ  ＡＰＩ５２０）を介して公開されない場合がある（may not be exposed）。ＱＰＬ（例えば、ＱＰＬ  ５３０）を用いて書かれたコードは、以前として理想的な量子アーキテクチャを想定することができるハイレベル中間表現（５４０）に変換することができる。ソフトウェア定義された量子ａｒｃｈｉｔｅｃｔｕｒｅのための言語プリミティブ（language primitive）にアクセスするインタプリタ（interpreter）は、コードを中間レベルの中間表現に変換することができる（５５０）。この中間レベルの中間表現は、次に、ハードウェア記述言語（ＨＤＬ）または量子ＨＤＬ（ＱＨＤＬ）の量子バージョンに変換することができる（５６０）。ソフトウェア定義されたアーキテクチャのためのハイレベル中間表現から中間レベルの中間表現への、プログラマのエラーの伝搬を制限するための、堅固な型システム（type system）が必要である。堅固な型システムの開発は、型理論のアプリケーションを介して成就することができる。これらのアプリケーションのためのロジックの標準言語は、Floyd-Hoareロジックおよび直観主義型論理（intuitionistic type theory）である。命令型の中間レベルの中間表現（imperative mid-level intermediate representation）のためにFloyd-Hoareロジックを使用することは自然であり得るけれども、表現が、分散量子コンピュータのための機能エレメントを有する場合、直観主義型論理から利益を得ることができる。上述したように、ＱＨＤＬの使用の後で、ロウレベル中間表現（５７０）、量子制御システム言語（５８０）、およびマシンコード（５９０）を取得するかまたは適用することができる。
【００５３】
さらに、量子プログラムのコンパイルに関して、図６は、この開示の態様に従う量子コンパイラの典型的コンポーネントの一例を図示する略図６００を示す。略図６００に示すように、量子コンパイラ６２０は、量子プログラミング言語ソースコード６１０を受信する。量子コンパイラ６２０は、字句アナライザ６３０およびセマンティックアナライザ６４０を含み、セマンティックアナライザ６４０は、操作セマンティックアナライザ６５０と意味論的セマンティックアナライザ６６０を有する。量子コンパイラ６２０の出力は、中間表現６７０である。
【００５４】
ソフトウェア定義されたアーキテクチャの場合、量子コンパイラ６２０の変形（variant）を使用して、ソースコードのハイレベル中間表現(HLIR）（６１０）を中間レベルの中間表現（ＭＬＩＲ）（６７０）に変換する。ＨＬＩＲは、字句アナライザ６３０を通過し、字句アナライザ６３０は、プログラムのシンタックスが適切であることをチェックまたは検証する。目標は、ソフトウェア定義されたアーキテクチャが適切にフォーマットされたパラメータおよび命令で使用されているかどうかを確認することである。次に、セマンティックアナライザ６４０は、コードの有意味性を決定する。概略図６００に示すように、これは２つのレベルで行われる。操作セマンティックアナライザ６５０は、コードの組織がソフトウェア定義されたアーキテクチャに準拠しているかどうかをチェックする。次に、意味論的セマンティックアナライザ６６０は、各ステートメントの入力と出力の予想されるタイプと実際のタイプの同等性を検証する。セマンティックアナライザが完了すると、ハイレベル中間表現（ＨＬＩＲ）から中間レベルの中間表現（ＭＬＩＲ）への変換が完了し、ＭＬＩＲは、ソフトウェア定義されたアーキテクチャの言語プリミティブを含む。
【００５５】
ソフトウェア定義されたＱＣアーキテクチャの操作に関連した他の態様は、例外処理である。ソフトウェア定義された量子コンピュータ上でプログラムが実行されている間、例外が起こり得る。図７Ａ−７Ｃは、この開示の態様に従って免除分類法の一例を図肢する略図７００、７４０、６５０を示す。
【００５６】
図７のダイアグラム７００に示すように、免除７１０は、ハードウェア７２０またはソフトウェア７３０から起こる可能性がある。ソフトウェア定義されたＱＣアーキテクチャのためのＡＰＩスタック（例えば、ＡＰＩスタック３１０）は、一般に、これらの例外を適切に処理し、適切なレベルの抽象化で、例外メッセージを返すのに十分に堅固である。図７Ｂのダイアグラム７４０は、ハードウェア例外７２０を示す。これらの例外は、限定する必要はないが、デコヒーレンスエラー７２１、測定エラー７２２、シャトリングエラー７２５、リセット７２６、インタラプト７２７、テレポーテーションエラー７２８、および周波数クラウド７２９を含むことができる。測定エラー７２２は、グローバル測定エラー７２３または部分測定エラー７２４のいずれかから起こり得る。
【００５７】
図７Ｃのダイアグラム７５０は、ソフトウェア例外７３０を示す。これらの例外は、スタックトレース７６０、エラー７７０およびプログラマイニシエート（programmer initiated）７８０を含むことができる。唯一のプログラマイニシエート例外は測定である。ソフトウェアエラー７７０は、これらに限定されないが、アドレスエラー７７１、回転丸め込みエラー７７２、特権違反（privilege violation)エラー７７３、不正な命令エラー、ゼロ除算エラー７７５、クローニングエラー（cloning error）７７６、トモグラフィーエラー７７７を含む。ソフトウェア定義されたＱＣアーキテクチャにおいて、中間層がハードウェアエラーを抽象化し、多数のソフトウェアエラーを処理する上で重要な役割を果たす。
【００５８】
図８を参照すると、この開示の態様に従う例示コンピュータデバイス８００が図示される。コンピュータデバイス８００は、例えば、単一コンピュータデバイス、複数のコンピューティングデバイス、または分散コンピューティングシステムを表すことができる。コンピュータデバイス８００は、量子コンピュータ（またはＱＣ／ＱＩＰシステム）、古典的コンピュータ、または量子および古典的コンピューティング機能の組み合わせとして構成することができる。例えば、コンピュータデバイス８００は、モジュラー拡張性、アーキテクチャ、リソースマネージャ機能性およびワークフロー、ＡＰＩアクセスポイント、および免除分類法／処理を含むソフトウェア定義された量子コンピュータのために、ここに記載された特徴のいくつか、または全てをインプリメントすることができる。さらに、コンピュータデバイス８００は、古典的コンピュータの態様をインプリメントして、コンパイル、最適化等のある機能を実行することができる。さらに、コンピュータデバイス８００は、ここに記載した種々の態様を可能にするためにシーケンシャルに、および／または同時に古典的コンピュータおよび量子コンピュータの特徴の組み合わせをインプリメントすることができる。このため、コンピュータデバイス８００は、図１乃至３に関連して記載されたハードウェアおよび／またはソフトウェアコンポーネントの１つまたは複数を含むことができる。
【００５９】
より一般的には、コンピュータデバイス８００は、ここに記載した特徴の１つまたは複数に関連づけられた処理機能を実行するためのプロセッサ８４８を含むことができる。プロセッサ８４８は、単一のまたは複数のプロセッサ、またはマルチコアプロセッサを含むことができる。さらに、プロセッサ８４８は、集積処理システムおよび／または分散処理システムとしてインプリメントすることができる。
【００６０】
プロセッサ８４８は、中央処理装置（ＣＰＵ）、量子処理ユニット（ＱＰＵ）、または両方を含むことができる。このため、プロセッサ８４８は、古典的動作、量子動作、または古典的動作と量子動作の組み合わせを、実行またはインプリメントするために使用することができる。プロセッサ８４８は、例えば、制御ユニット、通信制御ユニット、および／またはスイッチ／ルータユニット（図１および２を参照）の少なくとも一部をインプリメントして、プログラム、ＡＰＩｓおよび／ＱＯＳ（図１乃至３参照）、の少なくとも一部を実行し、および／またはキュービット制御（図１乃至３を参照）に関連した態様をインプリメントするために使用することができる。
【００６１】
プロセッサ８４８は、例えば、図４Ａ乃至４Ｃに記載したリソースマネージャワークフローを実行し、図５に記載したアプリケーションプログラミングインタフェース（ＡＰＩ）のレベルをインプリメントし、図６に記載したコンパイラアーキテクチャの機能をインプリメントし、および／または図７Ａ乃至７Ｃに記載した例外をインプリメントするために使用することができる。
【００６２】
コンピュータデバイス８００は、データを記憶するためのメモリ８５０を含むことができ、メモリ８５０は、ここに記載した機能を実行するためのプロセッサ８４８により実行可能な命令を含むことができる。インプリメンテーションにおいて、メモリ８５０は、ここに記載した１つまたは複数の機能または動作を実行するためのコードまたは命令を記憶するコンピュータ可読記憶媒体に対応することができる。一例において、メモリ８５０は、図１および２のプログラム１１０および１１０ａを含むことができる。他の例において、メモリ８５０は、図（例えば、ＱＯＳ３２０の少なくとも一部を記憶することにより）、図３に記載したソフトウェア定義された量子コンピュータアーキテクチャ、図４Ａ乃至４Ｃのリソースマネージャワークフロー、図５に記載したＡＰＩアクセスポイントのレベル、図６に記載したコンパイラアーキテクチャ、および／または図７Ａ乃至７Ｃに記載した例外をイネーブルにするために使用することができる。
【００６３】
さらに、コンピュータデバイス８００は、ここに記載したハードウェア、ソフトウェアおよびサービスを利用する、１つまたは複数の当事者との通信を確立し維持することを提供する通信コンポーネント８５２を含むことができる。通信コンポーネント８５２は、コンピューティングデバイス８００上のコンポーネント間の通信と、並びに、コンピュータデバイス８００と外部デバイス、例えば、コンピュータデバイス８００に、シリアルに、またはローカルに接続された通信ネットワークおよび／またはデバイス上に位置するデバイス間の通信を運ぶことができる。例えば、通信コンポーネント８５２は、１つまたは複数のバスを含むことができ、さらに、外部デバイスとインタフェースするために動作可能な、それぞれ送信機および受信機に関連づけられたチェーンコンポーネントを送信し、チェーンコンポーネントを受信することを含むことができる。
【００６４】
一態様において、コンピュータデバイス８００が、量子演算をインプリメントするとき、通信コンポーネント８５２は、図２の通信制御ユニット（例えば、通信制御ユニット２２０ａおよび２２０ｂ）およびスイッチ／ルータユニット２３０の態様を含み、および／またはインプリメントすることができる。
【００６５】
さらに、コンピュータデバイス８００は、データストア８５４を含むことができ、それは、ここに記載したインプリメンテーションに関連して採用された、情報、データベース、およびプログラムのマスストレージを提供するハードウェアおよび／ソフトウェアの任意の適切な組み合わせであり得る。例えば、データストア８５４は、オペレーティングシステム８４０（例えば、古典的ＯＳ、量子ＯＳ、または両方）のためのデータリポジトリであり得る。１つのインプリメンテーションにおいて、データストア８５４は、メモリ８５０を含むことができる。
【００６６】
コンピュータデバイス８００は、また、コンピュータデバイス８００のユーザから入力を受信するように動作可能であり、さらに、ユーザに提示するための出力を生成するように動作可能なユーザインタフェースコンポーネント８５６を含むことができる。
【００６７】
ユーザインタフェースコンポーネント８５６は、これらに限定されないが、キーボード、テンキー、マウス、タッチセンサー式ディスプレイ、デジタイザ、ナビゲーションキー、ファンクションキー、マイクロフォン、音声認識コンポーネント、ユーザからの入力を受信することができる任意の他のメカニズム、あるいはそれらの任意の組み合わせを含む、１つまたは複数の入力デバイスを含むことができる。さらに、ユーザインタフェースコンポーネント８５６は、これらに限定されないが、ディスプレイ、スピーカ、ハプティックフィードバックメカニズム、プリンタ、出力をユーザに提示することができる任意の他のメカニズム、あるいはそれらの任意の組み合わせを含む、１つまたは複数の出力デバイスを含むことができる。
【００６８】
１つのインプリメンテーションにおいて、ユーザインタフェースコンポーネント８５６は、オペレーティングシステム８４０の動作に対応するメッセージを送信および／または受信することができる。さらに、プロセッサ８４８は、オペレーティングシステム８５６および／またはアプリケーションまたはプログラムを実行することができ、メモリ８５０またはデータストア８５４は、それらを記憶することができる。コンピュータデバイス８００がクラウドベースのインフラストラクチャーソリューションの一部として、インプリメントされると、ユーザインタフェースコンポーネント８５６は、クラウドベースインフラストラクチャーソリューションのユーザが遠隔的にコンピュータデバイス８００と相互作用することを可能にするために使用することができる。例えば、ユーザは、コンピュータデバイス８００により実行するようにプログラムされたアルゴリズムまたはシミュレーションを提供することにより相互作用することができる。
【００６９】
さらに他の態様において、コンピュータデバイス８００は、量子コンピュータまたはＱＣ／ＱＩＰシステムの態様をインプリメントするとき、キュービットハードウェア８７０を含むことができる。上述したように、キュービットハードウェア８７０は、イオントラップ技術のような１つの型の量子技術に基づくことができ、この場合、キュービットハードウェア８７０は、量子演算を実行するための少なくとも１つのイオントラップを含む。キュービッドハードウェア８７０は、超電導技術のような他の型の量子技術に基づくことができ、この場合、キュービットハードウェア８７０は、量子演算を行うための超電導回路を含む。
【００７０】
図示するインプリメンテーションに従ってこの開示を述べたけれども、当業者は、実施形態に対する変形例があり得ること、そしてこれらの変形例はこの開示の範囲内であることを容易に認識するであろう。したがって、多くの変形例は、添付した請求項の範囲から逸脱することなく当業者により作ることができる。
【図１Ａ】
2021504829.tif 000003
【図１Ｂ】
2021504829.tif 000004
【図１Ｃ】
2021504829.tif 000005
【図１Ｄ】
2021504829.tif 000006
【図２】
2021504829.tif 000007
【図３】
2021504829.tif 000008
【図４Ａ】
2021504829.tif 000009
【図４Ｂ】
2021504829.tif 000010
【図４Ｃ】
2021504829.tif 000011
【図５】
2021504829.tif 000012
【図６】
2021504829.tif 000013
【図７Ａ】
2021504829.tif 000014
【図７Ｂ】
2021504829.tif 000015
【図７Ｃ】
2021504829.tif 000016
【図８】
2021504829.tif 000017
【手続補正書】
【提出日】令和2年3月6日(2020.3.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソフトウェアプログラムからプログラミング命令を受信し、前記プログラミング命令に少なくとも一部基づいて制御信号を生成するように構成された制御ユニットと、
複数のキュービットと、を備え、前記複数のキュービットの数と、前記複数のキュービットの任意の２つの間の接続は、前記制御ユニットからの前記制御信号によりイネーブルにされ制御され、
前記制御ユニットは、前記キュービットの異なるサブセットに対して別個の制御信号を生成することにより前記複数のキュービットの異なるサブセットを別個に制御するようにさらに構成され、キューピットの第１のサブセットにおける１つまたは複数のキュービットを、転送される前記１つまたは複数のキュービットが、キュービットの第２のセブセットに対して生成された前記別個の制御信号により制御されるように、前記キューピットの第２のサブセットに転送される、
キュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項２】
ハードウェア記述言語は、前記制御ユニットおよび前記複数のキュービットを構成するために使用される、請求項１に記載のキュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項３】
前記制御ユニットは、動的に制御信号を生成して、前記複数のキュービットの数および前記複数のキュービットの任意の２つの間の接続を調節するように構成される、請求項１に記載のキュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項４】
前記複数のキュービットは、前記ソフトウェアプログラムに関連づけられた特定の量子演算を実行するように構成され、１つまたは複数の例外は、前記ソフトウェアプログラムの実行中に処理される、請求項１に記載のキュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項５】
前記１つまたは複数の例外は、ハードウェア例外、ソフトウェア例外または両方を含む、請求項４に記載のキュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項６】
各モジュールが、制御ユニット、通信制御ユニット、および関連づけられた複数のキュービットを有し、前記複数のモジュールの各々における前記制御ユニットは、ソフトウェアプログラムからプログラミング命令を受信し、前記プログラミング命令に少なくとも一部基づいて制御信号を生成するように構成され、前記複数のキュービットの数および前記複数のキュービットの任意の２つの間の接続が前記制御ユニットからの前記制御信号によりイネーブルにされ、制御される、複数のモジュールと、
前記複数のモジュールの各々からの前記通信制御ユニットからの通信チャネルをイネーブルにするように構成されるスイッチ／ルータユニットと、
を備え、
前記複数のモジュールの各々における前記制御ユニットはさらにその前記制御ユニットおよびそのそれぞれのモジュールに関係づけられた前記キュービットの１つまたは複数を、他の制御ユニットおよびそのそれぞれのモジュールと関係づけて制御されるように転送されるように構成される、
キュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項７】
前記複数のモジュールの数は動的に変化する、請求項６に記載のキュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項８】
各通信制御ユニットは、前記ソフトウェアプログラムからのプログラミング命令を受信して、前記プログラミング命令の少なくとも一部に基づいて制御信号を生成するように構成される、請求項６に記載のキュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項９】
各通信制御ユニットは、それぞれの通信チャネルに関連する前記複数のキュービットの少なくとも１つを制御する、請求項８に記載のキュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項１０】
前記複数のキュービットは、メモリ／オペレーションキュービットおよび通信キュービットを含み、前記メモリ／オペレーションキュービットは、前記制御ユニットからの制御信号によりイネーブルにされ、制御され、前記通信キュービットは、前記通信制御ユニットからの前記制御信号によりイネーブルにされ、制御される、請求項８に記載のキュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項１１】
アプリケーションプログラミングインタフェース（ＡＰＩ）と、
前記ＡＰＩがリソースマネージャとスイッチを含む量子ＯＳを実行する量子オペレーティングシステム（ＯＳ）と、
前記スイッチを介して接続された複数の量子コアであって、前記リソースマネージャは、量子コア内のいずれか１つのキュービットが前記量子コア内の残りのキュービットのサブセットまたはすべてと接続可能にすることを含む、前記複数の量子コア内の前記キュービットの割り当てを決定するように構成される複数の量子コアと、
を備えた、キュービットを制御するための量子コンピュータに関するソフトウェア定義されたアーキテクチャ。
【請求項１２】
前記複数の量子コアは、異種アーキテクチャである、請求項１１に記載のキュービットを制御するための量子コンピュータに関するソフトウェア定義されたアーキテクチャ。
【請求項１３】
前記異種アーキテクチャに１つまたは複数のトランスデューサをさらに備えた、請求項１２に記載のキュービットを制御するための量子コンピュータに関するソフトウェア定義されたアーキテクチャ。
【請求項１４】
前記複数の量子コアは、同種アーキテクチャである、請求項１１に記載のキュービットを制御するための量子コンピュータに関するソフトウェア定義されたアーキテクチャ。
【請求項１５】
前記スイッチは、ソフトスイッチとハードスイッチを含む、請求項１１に記載のキュービットを制御するための量子コンピュータに関するソフトウェア定義されたアーキテクチャ。
【請求項１６】
前記複数の量子コアの１つまたは複数は、前記スイッチに接続された古典的チャネルと量子チャネルを有する、請求項１１に記載のキュービットを制御するための量子コンピュータに関するソフトウェア定義されたアーキテクチャ。
【請求項１７】
量子プログラミング言語のハイレベル中間表現についての字句解析を実行するステップと、
前記字句解析の出力についてのセマンティック解析を実行するステップと、
ソフトウェア定義されたアーキテクチャの言語プリミティブを有する前記量子プログラミング言語の中間レベルの中間表現を生成するステップであって、前記中間レベルの中間表現は、ロウレベルの中間表現を生成する前の前記セマンティック解析の出力に基づく、前記量子プログラミング言語の中間レベルの中間表現を生成するステップと、
を備えたキュービットを制御するための量子コンピュータに関するソフトウェア定義されたアーキテクチャのためのソースコードをコンパイルするためのコンピュータ実施方法。
【請求項１８】
前記セマンティック解析を実行することは、オペレーショナルセマンティック解析を実行するステップと、意味論的セマンティック解析を実行するステップを含む、請求項１７に記載の方法。
【請求項１９】
量子プログラミング言語のハイレベル中間表現についての字句解析を実行するためのコードと、
前記字句解析の出力についてセマンティック解析を実行するためのコードと、
ソフトウェア定義されたアーキテクチャの言語プリミティブを有する前記量子プログラミング言語の中間レベルの中間表現を生成するためのコードであって、前記中間レベルの中間表現は、ロウレベルの中間表現を生成する前の前記セマンティック解析の出力に基づく、前記量子プログラミング言語の中間レベルの中間表現を生成するためのコードと、
を備え、プロセッサにより実行されると、プロセッサに、キュービットを制御するための量子コンピュータに関するソフトウェア定義されたアーキテクチャのためのソースコードをコンパイルさせる命令を備えたコードを記憶するコンピュータ可読媒体。
【請求項２０】
前記セマンティック解析を実行するためのコードは、オペレーショナルセマンティック解析を実行するためのコードと、意味論的セマンティック解析を実行するためのコードを含む、請求項１９に記載のコンピュータ可読媒体。
【請求項２１】
第１の制御ユニットと、
第２の制御ユニットと、を備え、
前記第１の制御ユニットは、ソフトウェアプログラムからプログラミング命令を受信して第１の制御信号を生成するように構成され、第１の複数のキュービットは、前記第１の制御ユニットからの前記第１の制御信号によりイネーブルにされて制御され、
前記第２の制御ユニットは、前記ソフトウェアプログラムからのプログラミング命令を受信し、第２の制御信号を生成するように構成され、第２の複数のキュービットは、前記第２の制御ユニットからの前記第２の制御信号によりイネーブルにされて制御され、
前記第１の制御ユニットはさらに、前記第２の複数のキュービットの数が、シャトルされる前記第１の複数のキュービットの数だけ増加されるように、前記第２の制御ユニットにより制御される前記第１の複数のキュービットの数のシャトリングを可能にするようにさらに構成され、
前記第２の制御ユニットは、前記第１の複数のキュービット数が、シャトルされる前記第２の複数のキュービットの数だけ増加するように、前記１の制御ユニットにより制御される前記第２の複数のキュービットの数のシャトリングを可能にするように同様に構成される、
キュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項２２】
前記第１の制御ユニットによって受信される前記プログラミング命令は、前記第２の制御ユニットにより受信された前記プログラミング命令とは異なる、請求項２１に記載のキュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項２３】
前記シャトルされる前記複数のキュービットの前記数は、前記第１の複数のキュービットに関連した情報を含み、前記情報は、シャトルされる前記第１の複数のキュービットの数だけ前記第２の複数のキュービットに転送される、請求項２１に記載のキュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項２４】
前記第１の制御ユニットと前記第２の制御ユニットを含む制御ユニットの数は、動的に変化される、請求項２１に記載のキュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項２５】
前記第１の制御ユニットにより受信された前記プログラミング命令は、前記第２の制御ユニットにより制御される前記第１の複数のキュービットの数をシャトルするための通信命令を含む、請求項２１に記載のキュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項２６】
前記第２の制御ユニットにより制御されるようにシャトルされた前記第１の複数のキュービットの前記数は、１つまたは複数のキュービットを含み、前記１つまたは複数のキュービッドのシャトリングは、前記第１の複数のキュービットと前記第２の複数のキュービットとの間の通信チャネルを確立する、請求項２１に記載のキュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【請求項２７】
前記第１の複数のキュービットは、前記第１の制御ユニットからの前記制御信号によりイネーブルにされ、制御されるメモリ／オペレーションキュービットおよび通信キュービット含み、シャトルされる前記第１の複数のキュービットの数は、１つまたは複数の前記通信キュービットを含む、請求項２１に記載のキュービットを制御するための量子コンピュータのソフトウェア定義された構成。
【国際調査報告】
2021504829.tif 000018
2021504829.tif 000019