(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-10
(54)【発明の名称】ベクトル化量子コントローラ
(51)【国際特許分類】
G06N 10/20 20220101AFI20240403BHJP
【FI】
G06N10/20
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023564472
(86)(22)【出願日】2022-04-19
(85)【翻訳文提出日】2023-11-29
(86)【国際出願番号】 CN2022087639
(87)【国際公開番号】W WO2022222917
(87)【国際公開日】2022-10-27
(32)【優先日】2021-04-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】523396048
【氏名又は名称】アリババ(チャイナ)カンパニー,リミテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】チャン,ファン
(72)【発明者】
【氏名】チェン,ジアンシン
(57)【要約】
量子演算を実行するためのシステムおよび方法が提供される。ベクトル化量子コントローラから構成されるシステムは、コンピューティングデバイスからコマンドを受信することができ、コマンドは、量子プロセッサのキュービットへの量子ゲートの適用を示す。ベクトル化量子コントローラは、コマンドを1つまたは複数の量子アセンブリ命令に変換することができ、1つまたは複数の量子アセンブリ命令は、キュービットのレジスタを作成するためのベクトル命令を含み、レジスタは、キュービットのインジケーションを含む。ベクトル化量子コントローラは、1つまたは複数の量子アセンブリ命令を実行して、キュービットコントローラに、量子ゲートをキュービットに適用させることができ、コンピューティングデバイスに出力を提供することができる。
【特許請求の範囲】
【請求項1】
量子演算を実行するためのシステムであって、
キュービットと、
前記キュービットに制御信号を提供するように構成された回路部を含むキュービットコントローラと、
ベクトル化量子コントローラであって、
コンピューティングデバイスからコマンドを受信することであって、前記コマンドは、前記キュービットへの量子ゲートの適用を示す、受信することと、
前記コマンドを1つまたは複数の量子アセンブリ命令に変換することであって、前記1つまたは複数の量子アセンブリ命令は、キュービットのレジスタを作成するためのベクトル命令を含み、前記レジスタは、前記キュービットのインジケーションを含む、変換することと、
前記1つまたは複数の量子アセンブリ命令を実行して、前記キュービットコントローラに、前記量子ゲートを前記キュービットに適用させることと、
前記コンピューティングデバイスに出力を提供することと
を行うように構成された回路部を備える、ベクトル化量子コントローラと
を備える、システム。
【請求項2】
前記1つまたは複数の量子アセンブリ命令を実行して、前記キュービットコントローラに、前記量子ゲートを前記キュービットに適用させることは、
前記キュービットコントローラに構成情報を提供することと、
前記キュービットコントローラにトリガ信号を提供することと
を含む、請求項1に記載のシステム。
【請求項3】
前記構成情報は、
前記キュービットに印加する波形のインジケーションと、
前記波形の前記印加のタイミングのインジケーションと
を含む、請求項2に記載のシステム。
【請求項4】
前記ベクトル化量子コントローラは、コマンドプロセッサおよび出力制御部を含み、
前記1つまたは複数の量子アセンブリ命令を実行して、前記キュービットコントローラに、前記量子ゲートを前記キュービットに適用させることは、前記コマンドプロセッサによって、前記構成情報および前記トリガ信号を前記キュービットコントローラのメモリに書き込むことを含む、請求項2に記載のシステム。
【請求項5】
前記出力は、バイナリ値の測定値、バイナリ値の測定値の和、または状態データを含む、請求項1に記載のシステム。
【請求項6】
前記キュービットは、超伝導回路を含む、請求項1に記載のシステム。
【請求項7】
前記ベクトル化量子コントローラは、ベクトル化コマンドプロセッサを実装するように構成されたFPGAを含む、請求項1に記載のシステム。
【請求項8】
前記ベクトル化コマンドプロセッサは、量子アセンブリ命令を含むように拡張されたRISC-V命令セットをサポートする、請求項7に記載のシステム。
【請求項9】
量子プロセッサを用いて量子演算を実行するための方法であって、
前記量子プロセッサのベクトル化量子コントローラによって、コンピューティングデバイスからコマンドを受信することであって、前記コマンドは、前記量子プロセッサのキュービットへの量子ゲートの適用を示す、受信することと、
前記ベクトル化量子コントローラによって、前記コマンドを1つまたは複数の量子アセンブリ命令に変換することであって、前記1つまたは複数の量子アセンブリ命令は、キュービットのレジスタを作成するためのベクトル命令を含み、前記レジスタは、前記キュービットのインジケーションを含む、変換することと、
前記1つまたは複数の量子アセンブリ命令を実行して、前記量子プロセッサのキュービットコントローラに、前記量子ゲートを前記キュービットに適用させることと、
前記コンピューティングデバイスに出力を提供することと
を含む、方法。
【請求項10】
前記1つまたは複数の量子アセンブリ命令を実行して、前記キュービットコントローラに、前記量子ゲートを前記キュービットに適用させることは、
前記キュービットコントローラに構成情報を提供することと、
前記キュービットコントローラにトリガ信号を提供することと
を含む、請求項9に記載の方法。
【請求項11】
前記構成情報は、
前記キュービットに印加する波形のインジケーションと、
前記波形の前記印加のタイミングのインジケーションと
を含む、請求項10に記載の方法。
【請求項12】
前記ベクトル化量子コントローラは、コマンドプロセッサおよび出力制御部を含み、
前記1つまたは複数の量子アセンブリ命令を実行して、前記キュービットコントローラに、前記量子ゲートを前記キュービットに適用させることは、前記コマンドプロセッサによって、前記構成情報および前記トリガ信号を前記キュービットコントローラのメモリに書き込むことを含む、請求項10に記載の方法。
【請求項13】
前記出力を提供することは、バイナリ値の測定値、バイナリ値の測定値の和、または状態データを提供することを含む、請求項9に記載の方法。
【請求項14】
前記量子ゲートを前記キュービットに適用することは、前記量子ゲートを超伝導回路に適用することを含む、請求項9に記載の方法。
【請求項15】
前記ベクトル化量子コントローラによって変換することは、ベクトル化コマンドプロセッサを実装するように構成されたFPGAによって変換することを含む、請求項9に記載の方法。
【請求項16】
前記ベクトル化コマンドプロセッサは、量子アセンブリ命令を含むように拡張されたRISC-V命令セットをサポートする、請求項15に記載の方法。
【請求項17】
量子演算を実行するためのベクトル化量子コントローラであって、
コンピューティングデバイスからコマンドを受信するように構成された回路部を含む通信コントローラであって、前記コマンドは、キュービットへの量子ゲートの適用を示す、通信コントローラと、
コマンドプロセッサであって、
前記コマンドを1つまたは複数の量子アセンブリ命令に変換することであって、前記1つまたは複数の量子アセンブリ命令は、キュービットのレジスタを作成するためのベクトル命令を含み、前記レジスタは、前記キュービットのインジケーションを含む、変換することと、
前記1つまたは複数の量子アセンブリ命令を実行して、構成情報およびトリガ情報を生成することと
を行うように構成された回路部を含む、コマンドプロセッサと、
前記構成情報および前記トリガ情報をキュービットコントローラに提供するように構成された回路部を含む出力制御部と
を備える、ベクトル化量子コントローラ。
【請求項18】
前記コマンドプロセッサは、FPGAを用いて実装される、請求項17に記載のベクトル化量子コントローラ。
【請求項19】
前記コマンドプロセッサは、量子アセンブリ命令を含むように拡張されたRISC-V命令セットをサポートする、請求項18に記載のベクトル化量子コントローラ。
【請求項20】
前記コマンドプロセッサに含まれる前記回路部は、
前記構成情報および前記トリガ情報を前記出力制御部のマッピングされたメモリに書き込む
ように更に構成される、請求項17に記載のベクトル化量子コントローラ。
【請求項21】
前記構成情報は、
前記キュービットコントローラによって前記キュービットに印加する波形のインジケーションと、
前記波形の前記印加のタイミングのインジケーションと
を含む、請求項17に記載のベクトル化量子コントローラ。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
[0001] 本開示は、2021年4月20日に出願された、「VECTORIZED QUANTUM CONTROLLER」と題する米国特許出願第17235155号の優先権の利益を主張し、その全体が参照により本明細書に援用される。
【0002】
[0002] 本開示は、一般に、量子コンピューティングに関し、より詳細には、ベクトル化量子コントローラに関する。
【背景技術】
【0003】
[0003] 計算デバイスは、量子コンピューティング演算を実行するための、量子コンピューティングアクセラレータ、コプロセッサまたはプロセッサ(例えば、量子プロセッサ)を含むことができる。量子コンピューティング演算は、量子ゲートの適用を通じて操作されるキュービットを用いて行うことができる。量子ゲートは、電磁放射のパルス(例えば、マイクロ波パルス等)として実装することができる。したがって、プロセッサは、波形発生器に命令を提供するように実装することができる。そして、波形発生器は、キュービット(例えば、超伝導回路または別の適切なキュービット実装)に適用される量子ゲートを生成する。アナログ/デジタル変換器(ADC)を波形発生器と共に用いて、キュービットの状態を読み出すことができる。
【発明の概要】
【0004】
[0004] 開示されるシステムおよび方法は、コンピューティングデバイスと通信するように構成されたプロセッサに関する。プロセッサは、コンピューティングデバイスから受信した命令に基づいて、キュービットコントローラに命令を提供することができる。いくつかの場合、キュービットコントローラに提供される命令は、波形発生器を構成し、キュービットへの電磁放射のパルスの印加をトリガすることができる。様々な場合に、命令は、キュービットの状態を読み出すようにADCおよび波形発生器を構成することができる。
【0005】
[0005] 開示される実施形態は、量子演算を実行するためのシステムを含む。システムは、キュービットと、キュービットコントローラと、ベクトル化量子コントローラとを備えることができる。キュービットコントローラは、キュービットに制御信号を提供するように構成された回路部を含むことができる。ベクトル化量子コントローラは、動作を実行するように構成された回路部を含むことができる。動作は、コンピューティングデバイスからコマンドを受信することを含むことができ、コマンドはキュービットへの量子ゲートの適用を示す。動作は、コマンドを1つまたは複数の量子アセンブリ命令に変換することを更に含むことができ、1つまたは複数の量子アセンブリ命令は、キュービットのレジスタを作成するためのベクトル命令を含み、レジスタはキュービットのインジケーションを含む。動作は、加えて、1つまたは複数の量子アセンブリ命令を実行して、キュービットコントローラに、量子ゲートをキュービットに適用させることを含むことができる。動作は、コンピューティングデバイスに出力を提供することを更に含むことができる。
【0006】
[0006] 開示される実施形態は、量子演算を実行するための方法を含む。方法は、量子プロセッサのベクトル化量子コントローラによって、コンピューティングデバイスからコマンドを受信することを含むことができ、コマンドは、量子プロセッサのキュービットへの量子ゲートの適用を示す。方法は、ベクトル化量子コントローラによって、コマンドを1つまたは複数の量子アセンブリ命令に変換することを更に含むことができ、1つまたは複数の量子アセンブリ命令は、キュービットのレジスタを作成するためのベクトル命令を含み、レジスタはキュービットのインジケーションを含む。方法は、加えて、1つまたは複数の量子アセンブリ命令を実行して、量子プロセッサのキュービットコントローラに、量子ゲートをキュービットに適用させることを含むことができる。方法は、コンピューティングデバイスに出力を提供することを更に含むことができる。
【0007】
[0007] 開示される実施形態は、命令を含む非一時的コンピュータ可読媒体を含む。量子プロセッサのベクトル化量子コンピュータによって実行されると、命令は、ベクトル化量子コントローラに動作を実行させることができる。動作は、コンピューティングデバイスからコマンドを受信することを含むことができ、コマンドは量子プロセッサのキュービットへの量子ゲートの適用を示す。動作は、コマンドを1つまたは複数の量子アセンブリ命令に変換することを含むことができ、1つまたは複数の量子アセンブリ命令は、キュービットのレジスタを作成するためのベクトル命令を含み、レジスタはキュービットのインジケーションを含む。動作は、1つまたは複数の量子アセンブリ命令を実行して、量子プロセッサのキュービットコントローラに、量子ゲートをキュービットに適用させることを更に含むことができる。動作は、コンピューティングデバイスに出力を提供することを含むことができる。
【0008】
[0008] 開示される実施形態は、量子演算を実行するためのベクトル化量子コントローラを含む。ベクトル化量子コントローラは、通信コントローラ、コマンドプロセッサおよび出力制御部を含むことができる。通信コントローラは、コンピューティングデバイスからコマンドを受信するように構成された回路部を含むことができ、コマンドはキュービットへの量子ゲートの適用を示す。コマンドプロセッサは、コマンドを1つまたは複数の量子アセンブリ命令に変換することであって、1つまたは複数の量子アセンブリ命令は、キュービットのレジスタを作成するためのベクトル命令を含み、レジスタはキュービットのインジケーションを含む、変換することと、1つまたは複数の量子アセンブリ命令を実行して、構成情報およびトリガ情報を生成することと、を行うように構成された回路部を含むことができる。出力制御部は、構成情報およびトリガ情報をキュービットコントローラに提供するように構成された回路部を含むことができる。
【0009】
[0009] 上記の包括的な説明および以下の詳細な説明の双方は、例示的および説明的なものにすぎず、特許請求される開示される実施形態を限定するものではないことが理解されよう。
【0010】
[0010] 本明細書の一部を構成する添付の図面は、いくつかの実施形態を示し、明細書と併せて、開示される実施形態の原理および特徴を説明する役割を果たす。
【図面の簡単な説明】
【0011】
【
図1】[0011]開示される実施形態による、コンピューティングデバイスおよび量子プロセッサを備える例示的なシステムの概略図である。
【
図2A】[0012]開示される実施形態による、例示的なベクトル化量子コントローラの第1の実装の概略図である。
【
図2B】[0013]開示される実施形態による、例示的なベクトル化量子コントローラの第2の実装の概略図である。
【
図3A】[0014]開示される実施形態による、
図2Aの例示的なベクトル化量子コントローラを用いて量子演算を実行するための例示的な方法のフローチャートである。
【
図3B】[0015]開示される実施形態による、
図2Bの例示的なベクトル化量子コントローラを用いて量子演算を実行するための例示的な方法のフローチャートである。
【発明を実施するための形態】
【0012】
[0016] 次に、添付の図面に関して論じられる例示的な実施形態を詳細に参照する。いくつかの場合、同じ参照符号が図面および以下の説明全体を通じて同じまたは類似の部品を指すのに用いられる。別に定義されない限り、技術的または科学的用語は、当該技術分野における当業者によって一般的に理解される意味を有する。開示される実施形態は、当業者が開示される実施形態を実施することを可能にするために十分詳細に説明される。他の実施形態を利用することができ、開示される実施形態の範囲から逸脱することなく変更を行うことができることが理解されよう。このため、材料、方法および例は、単なる例示であり、必ずしも限定を意図したものではない。
【0013】
[0017] 量子プロセッサは、量子演算を実行するために量子アセンブリ言語を用いて構成することができる。量子アセンブリ言語は、1つまたは複数のキュービットへの量子ゲートの適用を指定する量子命令を含むことができる。例えば、量子命令は、単一のキュービットへの1キュービットゲートの適用、または一対のキュービットへの2キュービットゲートの適用を指定することができる。従来のコンピューティングと異なり、量子演算は、複数のキュービットへの量子ゲートの同時の適用を必然的に含み得る。さらに、いくつかの量子演算は、キュービットに対する厳密にタイミング調整されたゲートの適用を必要とする場合がある。
【0014】
[0018] 複数のキュービットまたはゲートを伴う量子演算を実行するように従来の量子プロセッサを構成することは、複数の量子命令を必要とする場合がある。非限定的な例として、量子演算は、5つのキュービットへの単一キュービットゲートXの適用を必要とする場合がある。この例において、量子命令「Xqubit_identifier」は、量子プロセッサに、単一キュービットゲートXを、qubit_identifierによって示されるキュービットに適用させることができる。キュービット1、2、3、7および10に対し量子演算を実行するための命令に応答して、量子プロセッサのコントローラは、以下の量子アセンブリ言語を実行することができる。
X1
X2
X3
X7
X10
【0015】
[0019] しかし、量子演算は、キュービット1、2、3、7および10への単一キュービットゲートXの同時の適用を必要とする場合がある。したがって、この例において、コントローラの命令レートは、量子プロセッサが量子演算を実行することができるか否かを判断することができる。量子演算がキュービットへのゲートの適用に対しタイミング要件(例えば、同時の適用等)を課さないとき、コントローラの命令レートは、コントローラがスーパースカラープロセッサを用いて実装されるときであっても、量子プロセッサの性能を制限する要因となる場合がある。
【0016】
[0020] 量子プロセッサは、ターゲットレジスタのコンテンツによって識別されるキュービットにゲートを適用する量子命令をサポートするように構成することができる。非限定的な例として、以下の2つの量子命令は、ターゲットレジスタTMに、キュービット1、2、3、7および10のインデックスを記憶し、次に、量子ゲートXをターゲットレジスタTMのコンテンツによって識別されるキュービットに適用することができる。
TARGET TM 1 2 3 7 10
X TM
【0017】
[0021] 本明細書に記載のように、識別されたキュービットへの量子ゲートXの適用は、キュービットに電磁パルスを提供することを含むことができる。このために、そのような量子命令をサポートするように量子プロセッサを構成することは、指定された量子ゲートを指定されたキュービットに同時に適用するための適切な命令を、量子プロセッサの他の構成要素(例えば、波形発生器、バイアスソース等)に提供するように、量子プロセッサのコントローラを構成することを含むことができる。
【0018】
[0022] キュービットをターゲットレジスタに関連付ける量子命令は、多数のキュービットを有する量子プロセッサに対しスケーリングするのが困難である場合がある。例えば、量子プロセッサが256個のキュービットを含む場合、各キュービットは、8ビット整数識別子を必要とする場合がある。したがって、量子命令TARGET TM 1 2 3 7 10は、40ビットに加えて、命令およびレジスタを識別するために必要な任意のビットを必要とする場合がある。さらに、必要とされるビットの数は、ターゲットレジスタに割り当てられているキュービットの数に依拠し得る。
【0019】
[0023] 開示される実施形態によれば、ベクトル量子プロセッサは、量子演算のスケーリング可能な同時の実行をサポートすることができる。そのようなプロセッサは、量子ベクトル命令をサポートするように構成されたベクトルコントローラを含むことができる。例えば、以下の量子ベクトル命令の実行は、ベクトルコントローラに、メモリロケーションAにおいて10キュービットインデックスをロードさせることができ、次に、示されたキュービットに対しゲートXを実行させることができる。
TARGET TM A 10
X TM
【0020】
[0024] このようにして、量子プロセッサは、複数のキュービット(またはキュービットの複数の対、キュービットの複数のトリプレット等)に対するゲート(または複数のゲート)の実行を含む量子演算をサポートするように構成することができる。
【0021】
[0025]
図1は、開示される実施形態による、コンピューティングデバイスおよび量子プロセッサを備える例示的なシステム100の概略図を示す。コンピューティングデバイス101は、量子プロセッサ102に命令を提供するように構成することができ、量子プロセッサ102は、キュービット状態に影響を及ぼす量子演算を用いてこれらの命令を実装することができる。いくつかの場合、命令は読み出し命令とすることができる。量子プロセッサ102は、そのような読み出し命令の受信に応答して1つまたは複数のキュービット状態を読み出すように構成することができる。このようにして、システム100は、量子プロセッサ102を用いて、従来のコンピューティングデバイスを用いると実行することができないかまたは効果的に実行することができない量子計算を実行することができる。
【0022】
[0026] 開示される実施形態によれば、コンピューティングデバイス101は、従来のデジタルコンピューティングデバイス(例えば、モバイルデバイス、ラップトップ、デスクトップ、ワークステーション、コンピューティングクラスタ、またはクラウドコンピューティングプラットフォームにおいて実装されるクラウドコンピューティングインスタンス)、またはデジタルおよび量子プロセッサを組み合わせたコンピューティングデバイスの従来の部分であり得る。開示される実施形態は、コンピューティングデバイス101と量子プロセッサ102との間の通信の任意の特定の実施に限定されない。開示される実施形態によれば、コンピューティングデバイス101は、バス(例えば、PCIエクスプレスバス、RapidIO、ハイパートランスポート、QuickPathインターコネクト、または他の適切な規格)を用いて、またはネットワークを用いて(例えば、イーサネット接続等を用いて)量子プロセッサ102と通信するように構成することができる。
【0023】
[0027] 開示される実施形態によれば、量子プロセッサ102は、ベクトル化量子コントローラ103、1つまたは複数のキュービットコントローラ(例えばキュービットコントローラ105Aおよびキュービットコントローラ105B)、ならびに1つまたは複数のキュービット(例えば、キュービット107Aおよびキュービット107B)を含むことができる。
図1に示すキュービットコントローラおよびキュービットの特定の構成は限定を意図していない。いくつかの場合、例えば、キュービットコントローラは、複数のキュービットを制御するように構成することができる。量子プロセッサ102は、量子計算に適切な温度にキュービットを維持するための極低温システムを含むことができる。量子プロセッサ102は、キュービットコントローラ出力とキュービットとの間に配設されるノイズ低減フィルタと、キュービット読み出しとキュービットコントローラ入力との間に配設される低ノイズ増幅器とを更に含むことができる。
【0024】
[0028] 開示される実施形態によれば、ベクトル化量子コントローラ103は、コンピューティングデバイス101と通信するように構成することができる。いくつかの場合、ベクトル化量子コントローラ103は、コンピューティングデバイス101から命令を受信することができる。そのような命令は、キュービットに対し量子ゲートを実行するかまたはキュービット状態を読み出すための命令を含むことができる。ベクトル化量子コントローラ103は、そのような命令をキュービットコントローラのためのコマンドに変換するように構成することができる。いくつかの場合、本明細書に記載のように、そのようなコマンドは、いずれの波形を生成するか、波形を生成する時点を指定するか、または波形の生成をトリガすることができる。様々な場合、そのようなコマンドは、キュービットコントローラがキュービットの状態を読み出すことを指定することができる。次に、コマンドは、示すように、キュービットコントローラ105Aおよび105Bに提供することができる。いくつかの場合、例えばキュービットの状態を読み出すためのコマンドに応答して、ベクトル化量子コントローラ103は、キュービットコントローラからデータを受信することができる。いくつかの場合、状態データは、キュービットの測定状態(例えば、キュービットが「0」に対応する状態にあったか、または「1」に対応する状態にあったか)を記述することができる。いくつかの実施形態では、状態データは、キュービットの固有状態のポピュレーションを記述することができる。
【0025】
[0029] 開示される実施形態によれば、キュービットコントローラ(例えば、キュービットコントローラ105Aまたはキュービットコントローラ105B)は、1つまたは複数のキュービットと通信するように構成することができる。キュービットコントローラは、1つまたは複数のデジタルコンピューティングデバイスとするかまたはこれらを含むことができる。いくつかの実施形態では、キュービットコントローラは、波形発生器、バイアスソース、マイクロ波ソース等を含むことができる。
【0026】
[0030] いくつかの実施形態では、キュービットコントローラは、マイクロ波ソースと多重化され、キュービットのXY制御ラインに接続された波形発生器出力を含むことができる。いくつかの例において、XY制御ラインは、キュービットの状態を励起するのに用いることができる。
【0027】
[0031] いくつかの実施形態では、キュービットコントローラは、キュービットのZ制御ラインに接続された波形発生器出力を含むことができる。バイアスソースは、キュービットのZ制御ラインに接続することもできる。波形発生器出力およびバイアスソースは、信号をZ制御ラインに提供して、キュービット周波数を調整することができる。
【0028】
[0032] いくつかの実施形態では、キュービットコントローラは、マイクロ波ソースと多重化され、キュービットの読み出しラインに接続された波形発生器を含むことができる。波形発生器は、キュービットの読み出しラインにプローブ信号を提供するように構成することができる。アナログ/デジタル変換器(ADC)は、読み出しライン(例えば、読み出しラインの他端)に接続することができる。ADCは、プローブ信号の提供に応答して読み出しラインによって出力された信号を測定するように構成することができる。キュービットコントローラはADCを含むことができる。キュービットコントローラ(または、ベクトル化量子コントローラ等の量子プロセッサの別の構成要素)は、出力信号から振幅および位相を決定することができる。出力信号の振幅および位相を用いて、プローブされたキュービットの状態を決定することができる。開示される実施形態は、キュービットの状態を測定する任意の特定の方法に限定されない。
【0029】
[0033] 本明細書に記載のように、キュービットコントローラは、ベクトル化量子コントローラ103と通信するように構成することができる。いくつかの実施形態では、キュービットコントローラの波形発生器は、複数の異なるパルスエンベロープを記憶するように構成することができる。これらのパルスエンベロープは、異なる量子ゲートに対応することができる。ベクトル化量子コントローラ103は、キュービットコントローラに、キュービットに提供するためのゲート(またはパルスエンベロープ)の選択を提供することができる。いくつかの実施形態では、波形発生器は、特定の時点に選択されたゲート(または選択された1つもしくは複数のパルスエンベロープ)を提供するように構成することができる。開示される実施形態は、時点を示す任意の特定の方法に限定されない。いくつかの実施形態では、時点は、タイムスタンプのベクトルによって示すことができる。タイムスタンプは、刺激の開始からパルスの提供までの単位(例えば、マイクロ秒、クロックティック、または別の適切な時間単位)の数を示すことができる。様々な実施形態において、波形発生器は、トリガコマンドに応答して刺激を開始するように構成することができる。
【0030】
[0034] ベクトル化量子コントローラ103とキュービットコントローラとの間の通信の非限定的な例として、ベクトル化量子コントローラ103は、キュービットコントローラが、刺激の開始後10マイクロ秒に始まる、アダマールゲートに対応するパルスをキュービットに提供することを示すことができる。ベクトル化量子コントローラ103は、刺激を開始するトリガ信号を提供することもできる。いくつかの実施形態では、キュービットコントローラは、キュービットコントローラが刺激を提供するように構成されていることを示すために肯定応答信号をベクトル化量子コントローラ103に提供することができる。そのような実施形態において、ベクトル化量子コントローラ103は、肯定応答信号に応答してトリガ信号を提供することができる。
【0031】
[0035] 開示される実施形態によれば、キュービット(例えば、キュービット107Aおよびキュービット107B)は、超伝導量子回路を用いて実装することができる。そのようなキュービットは、電流(例えば、フラックスキュービット)または電荷(例えば、電荷キュービット)またはエネルギー(例えば、位相キュービット)に基づくことができる。異なる実装は、外部の雑音に対する感度、コヒーレンス時間または非調和性等の異なる特性を有することができる。例えば、容量的に短絡されたジョセフソン接合を含む電荷キュービットのタイプであるトラズモンキュービットは、電荷ノイズに対し低減された感度を呈し得る。更なる例として、キャパシタおよびインダクタ(後者は追加のジョセフソン接合のアレイを用いて実現可能である)によって短絡されたジョセフソン接合を含むフラックスキュービットのタイプであるフラクソニウムキュービットは、長いコヒーレンス時間および大きな非調和性を呈し得る。開示される実施形態は、任意の特定のキュービット実施に限定されない。いくつかの実施形態では、複数のキュービットを単一の超伝導回路を用いて実装することができる。
【0032】
[0036] いくつかの実施形態では、キュービットは、キュービットコントローラから制御信号を受信し、読み出し出力信号をキュービットコントローラに提供するように構成することができる。制御信号は、同相および直交パルスエンベロープまたはDCバイアス波形を含むことができる。いくつかの実施形態では、波形は、キュービットに提供されるマイクロ波信号とすることができるか、またはこれを変調することができる。読み出し出力信号は、キュービットコントローラによって提供されるプローブ信号に応答して生成することができる。例えば、読み出し信号は、キュービットの状態に関する分散性の読み出し信号符号化情報とすることができる。
【0033】
[0037] 本明細書に記載のように、キュービットコントローラには、記憶された波形をプロビジョニングすることができる。いくつかの実施形態では、キュービットコントローラは、ベクトル化量子コントローラ103と通信して波形を受信することができる。様々な実施形態において、キュービットコントローラは、コンピューティングデバイス101(または別のコンピューティングデバイス)と通信して波形を受信することができる。非限定的な例として、キュービットコントローラの波形発生器は、バスまたはネットワークを用いてコンピューティングデバイス101(または別のコンピューティングデバイス)に接続することができる。この別個の接続を用いて、波形発生器のメモリに波形をロードすることができる。
【0034】
[0038]
図2Aは、開示される実施形態による、例示的なベクトル化量子コントローラ103の第1の実装の概略図を示す。
図1に示すように、ベクトル化量子コントローラ103は、コンピューティングデバイス101から命令を受信し、キュービットコントローラにコマンドを提供し、キュービットコントローラから出力データ(またはキュービット状態データ)を受信するように構成することができる。いくつかの実施形態では、ベクトル化量子コントローラ103は、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)またはマイクロプロセッサを用いて実装することができる。いくつかの実施形態では、ベクトル化量子コントローラ103は、拡張命令セットを用いてRISC-Vプロセッサを実装するように構成することができる。いくつかの実施形態では、拡張命令セットは、ベクトル動作のための標準RISC-V拡張を含むことができる。様々な実施形態において、拡張命令セットは、可変長命令語(VLIW)符号化を扱うように構成することができる。いくつかの実施形態では、ベクトル化量子コントローラ103の挙動は、ハードウェア記述言語(例えば、VerilogまたはVHDL)によって指定することができ、次にこれを合成し、ベクトル化量子コントローラ103を実装するFPGAにルーティングすることができる。
【0035】
[0039] 開示される実施形態によれば、通信コントローラ201は、ベクトル化量子コントローラ103がコンピューティングデバイス101と通信することを可能にすることができる。いくつかの実施形態では、通信コントローラ201は、PCIeコントローラ、または類似の通信規格に適合された類似のコントローラとすることができる。通信コントローラ201は、コンピューティングデバイス101から受信した命令をコマンドパーサ203に提供することができる。
【0036】
[0040] 開示される実施形態によれば、コマンドパーサ203は、通信コントローラ201から受信したコマンドを、量子アセンブリ命令に変換するように構成することができる。
【0037】
[0041] いくつかの実施形態では、ベクトル化量子コントローラ103は、コマンドパーサ203を省くことができる。そのような実施形態において、コンピューティングデバイス101のアセンブラは、擬似命令を量子アセンブリ命令に変換することができる。次に、量子アセンブリ命令を、コマンドでベクトル化量子コントローラ103に提供することができる。そのような実施形態において、量子アセンブリ命令は、通信コントローラ201によってコマンドプロセッサ205に提供することができる。
【0038】
[0042] コマンドプロセッサ205は、量子アセンブリ命令を処理するように構成することができる。いくつかの場合、量子アセンブリ命令は、キュービットへの量子ゲートの適用に対応する命令を含むことができる。例えば、上記のように、命令Xレジスタの実行により、量子プロセッサに、レジスタに記憶されたインデックスによって示されるキュービットにゲートXを適用させることができる。開示される実施形態によれば、コマンドプロセッサ205は、コマンドパーサ203から受信した命令をキュービットコントローラのためのコマンドに変換するように構成することができる。
【0039】
[0043] 非限定的な例として、コマンドプロセッサ205は、CNOTゲートを、registerAおよびregisterBによって指定されるキュービットの対に適用する命令CNOT registerA registerBを処理することができる(例えば、registerAにおける第1のキュービットはregisterBにおける第1のキュービットと対にされ、次にregisterAにおける第2のキュービットはregisterBにおける第2のキュービットと対にされる等)。コマンドプロセッサ205は、この命令を、指定のキュービットのためのコマンドに分解することができる。例えば、そのようなコマンドは、キュービットコントローラにおける波形発生器またはバイアスソースへの構成コマンドを含むことができる。そのような構成コマンドは、キュービットにおけるzバイアスを変更して、対における双方のキュービットを同じ周波数に調整するためのコマンドを含むことができる。そのような構成コマンドは、キュービットの対におけるキュービットのうちの一方に電磁刺激を提供するためのコマンドを含むことができる。電磁刺激は、特定のパルスエンベロープ(特定の形状、振幅および持続時間を有することができる)および(ゲート適用の開始に対する)特定の開始時間の観点で指定することができる。
【0040】
[0044] いくつかの実施形態では、特定のキュービットのためのコマンドは、コマンドプロセッサ205によって出力ステージ207に順次提供することができる。例えば、コマンドプロセッサ205は、シリアルインタフェース(例えば、シリアルペリフェラルインタフェースまたは別の適切なインタフェース)を用いて出力ステージ207と通信することができる。コマンドが提供される順序は限定を意図していない。例えば、コマンドプロセッサ205は、全てのキュービットについての波形選択コマンドを提供し、次に、全てのキュービットについてのタイミングコマンドを提供することができる。代替的な例として、コマンドプロセッサ205は、第1のキュービットの波形およびタイミングコマンドを提供し、次に、第2のキュービットの波形およびタイミングコマンドを提供すること等ができる。様々な実施形態において、指定されたキュービットのコマンドは、コマンドプロセッサ205によって出力ステージ207に並列に提供することができる。
【0041】
[0045] 出力ステージ207は、コマンドを適切なキュービットにルーティングするように構成することができる。いくつかの実施形態では、各キュービットコントローラは、通信チャネル(例えば、1つまたは複数のPCIeレーン等)に関連付けることができる。出力ステージ207は、そのコントローラに関連付けられた通信チャネルを用いて各キュービットコントローラと通信するように構成することができる。コマンドプロセッサ205は、コマンドの宛先のインジケーション(例えば、特定のキュービットコントローラ、特定のキュービット、その組み合わせのインジケーション、または別の適切なインジケーション)を提供することができる。次に、出力ステージ207は、コマンドを適切なキュービットコントローラにルーティングすることができる。様々な実施形態において、出力ステージ207は、全てのキュービットコントローラによって共有される通信チャネルにおいて、コマンドを、宛先キュービットコントローラ(または宛先キュービット)のインジケーションと共にブロードキャストすることができる。いくつかの実施形態では、出力ステージ207は、クロッキング、リタイミング、またはジッタクリーニング機能を提供するように構成することができる。
【0042】
[0046] 開示される実施形態によれば、コマンドパーサ203は、命令をトリガ制御部209に提供するように構成することができる。コマンドプロセッサ205は、構成命令をキュービットコントローラに(出力ステージ207を通じて)提供することができるのに対し、トリガ制御部209は、量子ゲートの適用を開始するためのトリガ信号をキュービットコントローラに提供することができる。いくつかの実施形態では、トリガ制御部209は、そのようなトリガ信号を提供する前に、キュービットコントローラからの確認信号を待機することができる。例えば、コマンドがキュービット1および2(キュービットコントローラAによって制御される)ならびにキュービット5(キュービットコントローラBによって制御される)への量子ゲートの適用を指定するとき、トリガ制御部209は、トリガ信号を提供する前に、キュービットコントローラAおよびBからの確認信号を待機するように構成することができる。いくつかの実施形態では、トリガ信号は、ゲートを適用するように構成されたキュービットコントローラのみに提供することができる。いくつかの実施形態では、トリガ信号は、構成命令と同じ通信チャネルにおいて提供することができる。様々な実施形態において、トリガ信号は、別個の通信チャネルにおいて提供することができる。非限定的な例として、通信チャネルは、波形発生器に固有とすることができる。トリガ信号は、各波形発生器におけるTTLトリガ入力への単一配線のシステムグラウンド基準接続において提供されるトランジスタ-トランジスタ論理(TTL)信号とすることができる。
【0043】
[0047]
図2Bは、開示される実施形態による、例示的なベクトル化量子コントローラ103の第2の実装の概略図を示す。
図1に示すように、ベクトル化量子コントローラ103は、コンピューティングデバイス101から命令を受信し、キュービットコントローラにコマンドを提供し、キュービットコントローラから出力データ(またはキュービット状態データ)を受信するように構成することができる。いくつかの実施形態では、ベクトル化量子コントローラ103は、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)またはマイクロプロセッサを用いて実装することができる。いくつかの実施形態では、ベクトル化量子コントローラ103は、拡張命令セットを用いてRISC-Vプロセッサを実装するように構成することができる。いくつかの実施形態では、拡張命令セットは、ベクトル動作のための標準RISC-V拡張を含むことができる。様々な実施形態において、拡張命令セットは、可変長命令語(VLIW)符号化を扱うように構成することができる。いくつかの実施形態では、ベクトル化量子コントローラ103の挙動は、ハードウェア記述言語(例えば、VerilogまたはVHDL)によって指定することができ、次にこれを合成し、ベクトル化量子コントローラ103を実装するFPGAにルーティングすることができる。
【0044】
[0048] 開示される実施形態によれば、通信コントローラ211は、ベクトル化量子コントローラ103がコンピューティングデバイス101と通信することを可能にすることができる。いくつかの実施形態では、通信コントローラ211は、PCIeコントローラ、または類似の通信規格に適合された類似のコントローラとすることができる。通信コントローラ211は、コンピューティングデバイス101から受信した命令をコマンドプロセッサ215に提供することができる。
【0045】
[0049] 開示される実施形態によれば、コマンドプロセッサ215は、量子アセンブリ命令を処理するように構成することができる。いくつかの実施形態では、コマンドプロセッサ215は、コンピューティングデバイス101から(例えば、通信コントローラ211等を通じて)受信された疑似命令を量子アセンブリ命令に変換する(次にこれらの命令を処理する)ように構成することができる。本明細書に記載のように、コマンドプロセッサ215は、量子アセンブリ命令によって、キュービットコントローラのための命令(例えば、波形または読み出し状態を適用する命令)を出力メモリ216に書き込むように構成することができる。
【0046】
[0050] 開示される実施形態によれば、出力メモリ216は、コマンドプロセッサ215および出力制御部217にアクセス可能なメモリとすることができる。いくつかの実施形態では、出力メモリ216は、ベクトル化量子コントローラ103の他の構成要素(例えば、コマンドプロセッサ215、出力制御部217等)と同じFPGAを用いて実装することができる。いくつかの実施形態では、出力メモリ216は、出力制御部217の一部とすることができる。コマンドプロセッサ215は、AXI(Advanced eXtensible Interface)または類似のインタフェースを用いて出力メモリ216に書き込むように構成することができる。様々な実施形態において、出力メモリ216は、別の構成要素(例えば、ディスクリートメモリ構成要素等)を用いて実装することができる。
【0047】
[0051] 出力メモリ216は、開示される実施形態によるメモリマッピングされたI/Oを実装することができる。出力メモリ216におけるメモリアドレスは、キュービットの「チャネル」にマッピングすることができる。チャネルは、キュービットコントローラとキュービットとの間の物理的接続の抽象化であり得る。例えば、キュービットのXY制御ラインは、入力チャネルによって表すことができる。追加の例として、z制御ライン(またはz制御ラインおよびバイアスソース)は、入力チャネルによって表すことができる。更なる例として、プローブ入力、出力およびADC(および、いくつかの実施形態では、ADCを用いて得られた信号からキュービットの状態を決定するための回路部)は出力チャネルによって表すことができる。
【0048】
[0052] 開示される実施形態によれば、出力制御部217は、出力メモリ216の適切なキュービットに書き込まれる命令を提供するように構成することができる。出力制御部217は、通信ネットワークを用いてキュービットコントローラに接続することができる。いくつかの実施形態では、この通信ネットワークは、ベクトル化量子コントローラ103をコンピューティングデバイス101に接続する通信ネットワークと別個にすることができる。いくつかの実施形態では、出力制御部217は、ベクトル化量子コントローラ103とキュービットコントローラとの間の通信を管理するように構成することができる。例えば、出力制御部217は、命令を、ネットワークを介した通信に適したプロトコルに変換し、この命令をプロトコルに従ってキュービットコントローラに提供することができる。
【0049】
【0050】
[0053] 表1は、チャネルのメモリまたはレジスタに対応するアドレスに書き込むかまたはそこから読み出すことができる命令の非限定的な例を提供する。この例において、太字のパラメータは、メモリマッピングによって決定される(例えば、チャネル1にマッピングされるメモリアドレスに書き込まれた「プレイ」命令は、チャネル1を実装するキュービットに提供される)。斜体のパラメータは、メモリ216において同じアドレスに書き込まれた同じ時点の次のコマンドのために保持される。いくつかの場合、斜体のパラメータ値は新たな値によって上書きすることができる。
【0051】
[0054] いくつかの実施形態では、コマンドプロセッサ215は、出力メモリ216に構成命令(例えば、「待機」、「プレイ」もしくは「取得」命令、または提供される波形および波形提供のタイミングに影響を与える類似の命令)を書き込むように構成することができる。
【0052】
[0055] 開示される実施形態によれば、「待機」命令は、チャネルに、次の命令を処理する前に或る時間量遅延するように命令することができる。いくつかの実施形態では、待機命令は、記憶された命令のセット内の最後の命令からの時間を指定することができる(例えば、待機100を3回繰り返すことによって、時点100、200および300におけるアクションを指定することができる)。様々な実施形態において、出力制御部217は、待機命令を、トリガ基準タイミングに変換するように構成することができる(例えば、相対待機タイミングの待機100、待機100および待機100を、トリガ基準の待機100、待機200および待機300に変換することができる)。いくつかの実施形態では、出力メモリ216における固定メモリアドレスを待機命令に割り当てることができる。
【0053】
[0056] 開示される実施形態によれば、「プレイ」命令は、チャネルに、指定されたインデックスを有する波形をプレイするように命令することができる。いくつかの実施形態では、コンピューティングデバイス101が波形をキュービットコントローラに提供するとき、コンピューティングデバイス101によってインデックスを決定することができる。様々な実施形態において、インデックスを予め定めることができ、コンピューティングデバイス101は、予め定めたインデックスに従って波形を記憶するようにキュービットコントローラを構成することができる。いくつかの実施形態では、チャネルおよび波形インデックスを指定するのではなく、波形インデックスが書き込まれるメモリアドレスによりチャネルを指定することができる。いくつかの実施形態では、「プレイ」命令は、チャネルごとに波形インデックスを記憶するためのメモリ領域を含むことができる。次に、各プレイ命令は、チャネルごとに波形インデックスを指定することができる(これは、その特定の「プレイ」命令に応答して波形を提供するように意図されていないチャネルについては、デフォルトまたはゼロ出力インデックスとすることができる)。
【0054】
[0057] 開示される実施形態によれば、「取得」命令は、出力制御部217に、チャネルを実装するキュービットコントローラに、キュービットからデータを取得するための命令を提供させることができる。いくつかの実施形態では、キュービットコントローラは、キュービットにプローブ波形を提供し、ADCを用いて測定値を取得するように構成することができる。測定値構成パラメータは、測定値の詳細(例えば、取得されたサンプルの数、サンプリングされた周波数等)を指定することができる。取得命令は、キュービットコントローラが出力を提供するための宛先アドレスを含むことができる。いくつかの実施形態では、キュービットコントローラは、測定値をバイナリ値出力測定値(または、複数の測定値が提供されるとき、測定値の和)に変換するように構成することができる。
【0055】
[0058] いくつかの実施形態では、「プレイ」命令に類似して、測定値構成が書き込まれるメモリアドレス(または宛先アドレス)がチャネルを指定することができる。いくつかの実施形態では、「取得」命令は、チャネルごとに測定値構成(または宛先アドレス)を記憶するためのメモリ領域を含むことができる。次に、各「取得」命令は、チャネルごとに測定値構成(または宛先アドレス)を指定することができる(これは、その特定の「取得」命令に応答して測定値を得るように意図されていないチャネルについては、デフォルトまたはゼロ読み出しインデックスであり得る)。
【0056】
[0059] コマンドプロセッサ215は、トリガ命令を出力メモリ216に書き込むように構成することができる。トリガ命令は、トリガが送信されるべきチャネルを指定することができる(例えば、パラメータ「チャネル」は、トリガ命令が送信されるべきチャネルのビットマスクであり得る等)。いくつかの実施形態では、トリガがチャネルに送信されることを指定するトリガ信号に応答して、出力制御部217は、そのチャネルについての記憶された構成命令(例えば、「待機」、「プレイ」および「取得」命令)を、そのチャネルを実装するキュービットコントローラに提供することができる。構成命令がチャネルに提供された後、次に出力制御部217は、トリガ信号をチャネルに提供することができる。いくつかの実施形態では、キュービットコントローラは、受信された順序で命令を処理することができる。したがって、キュービットコントローラを構成してから、次にトリガすることができる。トリガ命令は、トリガを繰り返す回数(例えば、パラメータ「リピートカウント」)を更に提供することができる。トリガされたチャネルについての記憶された構成命令は、再び各繰り返しでチャネルに提供することができる。トリガ命令は、トリガの各繰り返し間の時間間隔(例えば、パラメータ「リピート間隔」)を更に提供することができる。トリガ命令は、(そのチャネル上で最後のトリガが送信された時間を基準として)トリガを送信する最早時間を更に提供することができる。最早時間が既に過ぎている場合、出力制御部217はトリガを迅速に提供することができる。いくつかの実施形態では、チャネルにおいてトリガの全ての繰り返しが提供された後、そのチャネルについて記憶された構成情報をクリアすることができる。
【0057】
[0060] いくつかの実施形態では、構成命令はベクトル化することができる。非限定的な例として、コマンドプロセッサ215は、ベクトル化された「プレイ」命令を処理することができる。ベクトル化された「プレイ」命令は、コマンドプロセッサ215のレジスタまたはメモリロケーションを指定する入力パラメータを取得することができる。レジスタまたはメモリロケーションは、波形インデックスのベクトルを記憶することができる。ベクトル化されたプレイ命令は、ベクトルのコンテンツを出力メモリ216におけるアドレスのベクトルに書き込むことができる。アドレスのベクトルにおける各アドレスは、キュービットの入力チャネルに対応することができる。追加の例として、コマンドプロセッサ215は、ベクトル化された「取得」命令を処理することができる。ベクトル化された「取得」命令は、コマンドプロセッサ215のレジスタまたはメモリロケーションを指定する入力パラメータを取得することができる。レジスタまたはメモリロケーションは、測定値構成情報のベクトルを記憶することができる。ベクトル化されたプレイ命令は、ベクトルのコンテンツを出力メモリ216におけるアドレスのベクトルに書き込むことができる。アドレスのベクトルにおける各アドレスは、キュービットの出力チャネルに対応することができる。
【0058】
[0061] 開示される実施形態によれば、コマンドプロセッサ215は、キュービットへの量子ゲートの適用に対応する命令を処理するように構成することができる。例えば、上記のように、命令Xレジスタの実行により、量子プロセッサに、レジスタに記憶されたインデックスによって示されるキュービットにゲートXを適用させることができる。いくつかの実施形態では、コンピューティングデバイス101の(またはコマンドプロセッサ205の)アセンブラは、命令Xレジスタを、レジスタに記憶されたインデックスによって指示されるキュービットへのゲートXの適用を実装する「プレイ」、「待機」、「取得」および「トリガ」命令のセットに変換するように構成することができる。本明細書に記載のように、コマンドプロセッサ215は、実施命令のセットを実行し、それによって、出力メモリ216における適切なロケーションに適切な値を書き込むように構成することができる。いくつかの実施形態では、コマンドプロセッサ215の命令セットは、ゲートXを、レジスタに記憶されたインデックスによって示されるキュービットに適用するためのアセンブリ命令を含むように拡張することができる。そのような実施形態において、コマンドプロセッサ215は、ゲートXを、レジスタに記憶されたインデックスによって示されるキュービットに適用するために、適した波形インデックス、遅延、トリガおよび測定値構成情報を、出力メモリ216内の適したメモリアドレスに書き込むことができる。
【0059】
[0062] 追加の非限定的な例として、コマンドプロセッサ215は、CNOTゲートを、レジスタAおよびレジスタBによって指定されるキュービットの対に適用する命令CNOT registerAregisterBを処理することができる(例えば、registerAにおける第1のキュービットはregisterBにおける第1のキュービットと対にされ、次にregisterAにおける第2のキュービットはregisterBにおける第2のキュービットと対にされる等)。コマンドプロセッサ205は、この命令を、指定されたキュービットのための「プレイ」、「待機」、「取得」および「トリガ」命令の適したセットに分解することができる。例えば、「プレイ」命令を、キュービットの各対におけるキュービットのzバイアスに対応するチャネルに提供し、キュービットの各対におけるキュービットを、同じ周波数に調整させることができる。追加の「プレイ」命令により、キュービットコントローラに、キュービットの対におけるキュービットの1つに電磁刺激を提供させることができる。電磁刺激は、特定のパルスエンベロープ(特定の形状、振幅および持続時間を有することができる)および(ゲート適用の開始に対する)特定の開始時間に関して指定することができる。「トリガ」命令により、キュービットコントローラに、キュービットの対へのCNOTゲートの適用を始めさせることができる。様々な実施形態において、命令CNOT registerAregisterBは、コマンドプロセッサ215によってサポートされる量子アセンブリ命令とすることができる。そのような実施形態において、コマンドプロセッサ215は、CNOTゲートを、regosterAおよびregisterBに記憶されたインデックスによって示されるキュービット対に適用するために、適した波形インデックス、遅延、トリガおよび測定値構成情報を、出力メモリ216内の適したメモリアドレスに書き込むことができる。
【0060】
[0063]
図3Aは、開示される実施形態による、
図2Aのベクトル化量子コントローラを用いて量子演算を実行するための例示的な方法300のフローチャートを示す。方法300は、コマンドを量子プロセッサ(例えば、量子プロセッサ102)のベクトル化量子コントローラ(例えば、ベクトル化量子コントローラ103)に提供する工程と、ベクトル化量子命令を実行する工程と、量子ゲートを、選択されたキュービットに適用する工程と、出力データを提供する工程とを含むことができる。開示される実施形態によれば、ベクトル化量子命令のサポートは、量子演算のスケーリング可能な同時の実行を可能にすることができる。
【0061】
[0064] 開示される実施形態によれば、工程301において、ベクトル化量子コントローラは、コンピューティングデバイス(例えば、コンピューティングデバイス101)からコマンドを受信するように構成することができる。コマンドは、特定のキュービットに対する1つまたは複数の量子演算の実行を指定することができる。開示される実施形態によれば、コンピューティングデバイス101は、プログラムの実行中にコマンドを提供することができる。いくつかの場合、コンピューティングデバイス101は、コンピューティングデバイス101を用いるよりも、量子プロセッサ102を用いた方が結果をより迅速に得ることができる(例えば、コンピューティングデバイス101を用いるより、量子プロセッサ102を用いた方が暗号化メッセージをより迅速に解読することができる)と判断することができる。
【0062】
[0065] 開示される実施形態によれば、工程303において、ベクトル化量子コントローラは、コンピューティングデバイスから受信したコマンドに対応するベクトル化量子命令を実行するように構成することができる。いくつかの実施形態では、ベクトル化量子コントローラは、コマンドを1つまたは複数の量子アセンブリ命令に(例えば、コマンドパーサを用いて)変換することができる。量子アセンブリ命令は、RISC-V命令セット(例えば、ベクトル命令を含むように拡張される)に基づくことができる命令セットの一部とすることができる。いくつかの場合、コマンドは、関与する特定の量子演算を指定することなく量子演算の一般的目的を指定する高レベルコマンドとすることができる。例えば、コマンドは、公開鍵および暗号化メッセージを所与として、秘密鍵を要求することができる。様々な場合、コマンドは、特定の量子演算を指定する低レベルコマンドとすることができる。例えば、コマンドは、量子プロセッサの全てのキュービットへのアダマールゲートの適用を指定することができる。
【0063】
[0066] 量子アセンブリ命令は、ベクトル化アセンブリ命令とすることができる。例えば、命令は、ベクトル演算を用いてキュービットインデックスをキュービットレジスタにロードすることができる。次に、命令は、ゲートを、キュービットレジスタによって示されるキュービット(またはキュービット対)に適用することができる。示されるキュービット(またはキュービット対)へのゲートの適用は、構成命令の自動生成を含むことができる。これらの構成命令は、波形選択およびタイミングを含むことができる。ベクトル化量子コントローラは、指定されたキュービットを制御するキュービットコントローラに波形選択およびタイミングを提供するように構成することができる。
【0064】
[0067] いくつかの実施形態では、キュービットコントローラは、構成命令の受信を肯定応答するように構成することができる。キュービットコントローラは、更にまたは代替的に、構成の成功を肯定応答することができる。
【0065】
[0068] ベクトル化量子コントローラは、トリガ信号を提供するように構成することができる。いくつかの実施形態では、トリガ信号は、肯定応答信号の受信に応答して提供することができる。例えば、ベクトル化量子コントローラは、全ての指定されたキュービットのキュービットコントローラが構成の成功を示したと判断することができる。それに応答して、ベクトル化量子コントローラは、これらのキュービットコントローラにトリガ信号を提供し、これらに指定されたキュービットに対する量子ゲートの適用を始めさせることができる。
【0066】
[0069] 開示される実施形態によれば、工程305において、量子プロセッサは、選択されたキュービットに量子ゲートを適用することができる。キュービットコントローラは、トリガ信号の受信に応答して、指定されたタイミングを有する指定された波形をキュービットに提供することができる。このようにして、量子ゲートを、指定されたキュービット(またはキュービット対)に適用することができる。
【0067】
[0070] 工程307において、量子プロセッサは、出力データをコンピューティングデバイスに提供することができる。いくつかの場合、出力データは、コンピューティングデバイスから受信されたコマンドに応答して提供することができる(例えば、コンピューティングデバイスが秘密鍵を要求し、それに応答して量子プロセッサが秘密鍵を提供する)。様々な場合、工程301において受信されたコマンドを含むコマンドシーケンスに応答して、出力データを提供することができる。例えば、工程301は、指定されたキュービットの初期化を命令することができる。次に、後続のコマンドは、様々なキュービットへの様々なゲートの適用を指定することができる。これらの様々なゲートの適用後、読み出しコマンドは、1つまたは複数のキュービットの状態を要求することができる。読み出し方法に依拠して、状態の測定値(例えば、バイナリ値に対応する)を提供することができるか、または状態データが指定されたキュービットの固有状態のポピュレーションを記述する。
【0068】
[0071]
図3Bは、開示される実施形態による、
図2Bのベクトル化量子コントローラを用いて量子演算を実行するための例示的な方法310のフローチャートを示す。方法310は、コマンドを量子プロセッサ(例えば、量子プロセッサ102)のベクトル化量子コントローラ(例えば、ベクトル化量子コントローラ103)に提供する工程と、ベクトル化量子命令を実行する工程と、量子ゲートを、選択されたキュービットに適用する工程と、出力データを提供する工程とを含むことができる。開示される実施形態によれば、ベクトル化量子命令のサポートは、量子演算のスケーリング可能な同時の実行を可能にすることができる。
【0069】
[0072] 開示される実施形態によれば、工程311において、ベクトル化量子コントローラは、コンピューティングデバイス(例えば、コンピューティングデバイス101)からコマンドを受信するように構成することができる。コマンドは、特定のキュービットにおける1つまたは複数の量子演算の実行を指定することができる。開示される実施形態によれば、コンピューティングデバイス101は、プログラムの実行中にコマンドを提供することができる。いくつかの場合、コンピューティングデバイス101は、コンピューティングデバイス101を用いるより、量子プロセッサ102を用いた方が結果をより迅速に得ることができると判断し得る。
【0070】
[0073] 開示される実施形態によれば、工程313において、ベクトル化量子コントローラは、コンピューティングデバイスから受信したコマンドに対応するベクトル化量子命令を実行するように構成することができる。いくつかの実施形態では、ベクトル化量子コントローラは、コマンドを1つまたは複数の量子アセンブリ命令に(例えば、コマンドプロセッサを用いて)変換することができる。量子アセンブリ命令は、下位レベルの命令(例えば、本明細書に記載のように、「プレイ」、「待機」、「取得」または「トリガ」命令等)またはゲートレベルの命令(例えば、本明細書に記載のように、ゲートXを、レジスタrsに記憶されたインデックスを有するキュービットに適用する等)とすることができる。量子アセンブリ命令は、RISC-V命令セット(例えば、ベクトル命令を含むように拡張される)に基づくことができる命令セットの一部とすることができる。いくつかの場合、コマンドは、関与する特定の量子演算を指定することなく量子演算の一般的目的を指定する高レベルコマンドとすることができる。例えば、コマンドは、公開鍵および暗号化メッセージを所与として、秘密鍵を要求することができる。様々な場合、コマンドは、特定の量子演算を指定する低レベルコマンドとすることができる。例えば、コマンドは、量子プロセッサの全てのキュービットへのアダマールゲートの適用を指定することができる。
【0071】
[0074] 量子アセンブリ命令は、ベクトル化アセンブリ命令とすることができる。例えば、命令は、ベクトル演算を用いてキュービットインデックスをキュービットレジスタにロードすることができる。次に、命令は、ゲートを、キュービットレジスタによって示されるキュービット(またはキュービット対)に適用することができる。示されるキュービット(またはキュービット対)へのゲートの適用は、構成およびトリガ命令の自動生成を含むことができる。
【0072】
[0075] 開示される実施形態によれば、構成命令は、波形選択およびタイミングを含むことができる。ベクトル化量子コントローラのコマンドプロセッサ(例えば、コマンドプロセッサ215等)は、構成命令を、コマンドプロセッサおよびベクトル化量子コントローラの出力制御部(例えば、出力制御部217等)にアクセス可能なメモリ(例えば、出力メモリ216)に書き込むことができる。コマンドプロセッサは、メモリにトリガ命令を書き込むことができる。トリガ命令の書き込みに応答して、出力制御部は、適切なキュービットコントローラに構成命令およびトリガを提供することができる。
【0073】
[0076] 開示される実施形態によれば、工程315において、量子プロセッサは、選択されたキュービットに量子ゲートを適用することができる。キュービットコントローラは、構成命令の受信に応答して、命令をトリガすることができ、指定されたタイミングを有する指定された波形をキュービットに提供することができる。このようにして、量子ゲートを、指定されたキュービット(またはキュービット対)に適用することができる。
【0074】
[0077] 工程317において、量子プロセッサは、出力データをコンピューティングデバイスに提供することができる。いくつかの場合、出力データは、コンピューティングデバイスから受信されたコマンドに応答して提供することができる(例えば、コンピューティングデバイスが秘密鍵を要求し、それに応答して量子プロセッサが秘密鍵を提供する)。様々な場合、工程311において受信されたコマンドを含むコマンドシーケンスに応答して、出力データを提供することができる。例えば、工程311は、指定されたキュービットの初期化を命令することができる。次に、後続のコマンドは、様々なキュービットへの様々なゲートの適用を指定することができる。これらの様々なゲートの適用後、読み出しコマンドは、1つまたは複数のキュービットの状態を要求することができる。読み出し方法に依拠して、状態の測定値(例えば、バイナリ値に対応する)を提供することができるか、または状態データが指定されたキュービットの固有状態のポピュレーションを記述する。
【0075】
[0078] いくつかの実施形態では、命令を含む非一時的コンピュータ可読ストレージ媒体も提供され、命令は、上記で説明した方法を実行するために、デバイス(開示したエンコーダおよびデコーダ等)によって実行することができる。非一時的媒体の一般的な形態は、例えば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、または任意の他の磁気データ記憶媒体、CD-ROM、任意の他の光データ記憶媒体、孔パターンを有する任意の物理媒体、RAM、PROMおよびEPROM、FLASH(登録商標)-EPROMまたは任意の他のフラッシュメモリ、NVRAM、キャッシュ、レジスタ、任意の他のメモリチップまたはカートリッジ、およびこれらのネットワーク化されたバージョンを含む。デバイスは、1つまたは複数のプロセッサ(CPU)、入力/出力インタフェース、ネットワークインターフェースおよび/またはメモリを含むことができる。
【0076】
[0079] 上記の説明は、例示の目的で提示された。これらは包括的でなく、開示される厳密な形式または実施形態に限定されない。本明細書を検討し、開示される実施形態を実践することで、実施形態の変更形態および適応形態が明らかになるであろう。例えば、記載される実装はハードウェアを含むが、本開示によるシステムおよび方法は、ハードウェアおよびソフトウェアを用いて実装されてもよい。いくつかの実施形態では、ベクトル化量子コントローラおよびその構成要素(例えば、通信コントローラ、コマンドパーサおよびコマンドプロセッサ)は、開示される機能/動作を実行するように構成された回路部を用いて(例えば、ベクトル処理および量子ゲート動作をサポートするように拡張された命令セットを実装するように構成されたFPGAを用いて)実装することができる。様々な実施形態において、開示される機能は、高水準プログラミング言語(例えは、Python等)および中央処理ユニットベースの制御スタックを用いてソフトウェアで実装することができる。そのような実施形態において、ソフトウェアモジュールは、開示される構成要素(例えば、通信コントローラ、コマンドパーサおよびコマンドプロセッサ)を実装することができる。加えて、或る特定の構成要素が、互いに結合されているものとして説明されたが、そのような構成要素は、互いに統合されるか、または適切な形式で分散されてもよい。
【0077】
[0080] さらに、例示的な実施形態が本明細書に記載されたが、範囲は、本開示に基づく均等な要素、変更、省略、(例えば、様々な実施形態にわたる態様の)組み合わせ、適合または変形を有するありとあらゆる実施形態を含む。特許請求の範囲における要素は、特許請求の範囲において用いられる言葉に基づいて広く解釈されるべきであり、非排他的なものとして解釈されるべきである、本明細書に記載される実施例または出願手続きに際して記載された実施例に限定されるべきではない。さらに、開示される方法の工程は、工程の並べ替え、または工程の挿入もしくは削除を含む任意の方式で変更することができる。
【0078】
[0081] 本明細書の「第1の」および「第2の」等の関係語は、或るエンティティまたは動作を別のエンティティまたは動作と区別するために用いられるにすぎず、これらのエンティティまたは動作間のいかなる実際の関係または順序も必要としないかまたは含意しないことに留意すべきである。さらに、「含む」、「有する」、「含有する」および「包含する」ならびに他の同様の形式の用語は、意味の点で均等であることを意図し、これらの用語のうちの任意のものの後に続くアイテムがそのようなアイテムの網羅的列挙であることを意図していないか、または列挙するアイテムのみに限定されることを意図していない点で非限定的であることを意図する。
【0079】
[0082] 本開示の特徴および利点は、詳細な明細書から明らかであるので、添付の特許請求の範囲が、本開示の真の趣旨および範囲内にある全てのシステムおよび方法をカバーすることが意図される。本明細書において用いられるとき、不定冠詞「a」および「an」は、「1つまたは複数」を意味する。同様に、複数形の使用は、与えられた文脈で明確でないならば、必ずしも複数形を意味するわけではない。さらに、多数の修正および変更が、本開示の研究から容易に行われるであろうため、本開示を、示され、説明される厳密な構造および動作に限定することは所望されず、したがって全ての好適な修正形態および均等物は、本開示の範囲内に入るように再分類することができる。
【0080】
[0083] 本明細書において用いられるとき、別段の定めがない限り、「または」という語は、実行不可能な場合を除いて、あり得る全ての組み合わせを包含する。例えば、或るデータベースがAまたはBを含み得ると述べた場合、別段の定めがない限りまたは実行不可能でない限り、そのデータベースは、A、B、またはAおよびBを含むことができる。第2の例として、或るデータベースがA、BまたはCを含み得ると述べた場合、別段の定めがない限りまたは実行不可能でない限り、そのデータベースは、A、B、C、AおよびB、AおよびC、BおよびC、AおよびBおよびCを含むことができる。
【0081】
[0084] 上記で説明した実施形態は、ハードウェア、ソフトウェア(プログラムコード)、またはハードウェアとソフトウェアとの組み合わせによって実装できることが理解される。ソフトウェアによって実装される場合、ソフトウェアは、コンピュータ可読媒体に記憶することができる。コンピュータ可読媒体は非一時的コンピュータ可読媒体とすることができる。ソフトウェアは、プロセッサによって実行されるとき、開示する方法を実行することができる。本開示で説明した計算ユニットおよび他の機能ユニットは、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組み合わせによって実装することができる。上記のモジュール/ユニットの複数を1つのモジュール/ユニットとして組み合わせることができ、上記のモジュール/ユニットのそれぞれを複数のサブモジュール/サブユニットに更に分割できることも当業者であれば理解するであろう。
【0082】
[0085] 上記の本明細書では、実装態様ごとに変わり得る多数の具体的な詳細に関して実施形態を説明してきた。記載した実施形態に対する或る特定の適応および修正がなされ得る。本明細書を検討し、本明細書に開示される本発明を実践することで他の実施形態が当業者に明らかになり得る。本明細書および例は、専ら例示として検討され、本発明の真の範囲および趣旨は、添付の特許請求の範囲によって示されることが意図される。また、図中に示す工程の順序は、例示目的にすぎず、特定の工程の順序に限定されることを意図しない。そのため、これらの工程は、同じ方法を実装しながら異なる順序で実行され得ることを当業者であれば理解することができる。
【0083】
[0086] 実施形態は、以下の節を用いて更に説明することができる。
1.量子演算を実行するためのシステムであって、キュービットと、キュービットに制御信号を提供するように構成された回路部を含むキュービットコントローラと、ベクトル化量子コントローラとを備え、ベクトル化量子コントローラは、コンピューティングデバイスからコマンドを受信することであって、コマンドは、キュービットへの量子ゲートの適用を示す、受信することと、コマンドを1つまたは複数の量子アセンブリ命令に変換することであって、1つまたは複数の量子アセンブリ命令は、キュービットのレジスタを作成するためのベクトル命令を含み、レジスタは、キュービットのインジケーションを含む、変換することと、1つまたは複数の量子アセンブリ命令を実行して、キュービットコントローラに、量子ゲートをキュービットに適用させることと、コンピューティングデバイスに出力を提供することと、を行うように構成された回路部を備える、システム。
2.1つまたは複数の量子アセンブリ命令を実行して、キュービットコントローラに、量子ゲートをキュービットに適用させることは、キュービットコントローラに構成情報を提供することと、キュービットコントローラにトリガ信号を提供することと、
を含む、節1のシステム。
3.構成情報は、キュービットに印加する波形のインジケーションと、波形の印加のタイミングのインジケーションと、
を含む、節2のシステム。
4.ベクトル化量子コントローラは、コマンドプロセッサおよび出力制御部を含み、1つまたは複数の量子アセンブリ命令を実行して、キュービットコントローラに、量子ゲートをキュービットに適用させることは、コマンドプロセッサによって、構成情報およびトリガ信号をキュービットコントローラのメモリに書き込むことを含む、節2または3のいずれか一節のシステム。
5.ベクトル化量子コントローラは、ベクトル化コマンドプロセッサを実装するように構成されたFPGAを含む、節1~4のうちの任意のもののシステム。
6.ベクトル化コマンドプロセッサは、量子アセンブリ命令を含むように拡張されたRISC-V命令セットをサポートする、節5のシステム。
7.出力は、バイナリ値の測定値、バイナリ値の測定値の和、または状態データを含む、節1~6のいずれか一節のシステム。
8.キュービットは超伝導量子回路を含む、節1~7のいずれか一節のシステム。
9.量子プロセッサを用いて量子演算を実行するための方法であって、量子プロセッサのベクトル化量子コントローラによって、コンピューティングデバイスからコマンドを受信することであって、コマンドは、量子プロセッサのキュービットへの量子ゲートの適用を示す、受信することと、ベクトル化量子コントローラによって、コマンドを1つまたは複数の量子アセンブリ命令に変換することであって、1つまたは複数の量子アセンブリ命令は、キュービットのレジスタを作成するためのベクトル命令を含み、レジスタは、キュービットのインジケーションを含む、変換することと、1つまたは複数の量子アセンブリ命令を実行して、量子プロセッサのキュービットコントローラに、量子ゲートをキュービットに適用させることと、コンピューティングデバイスに出力を提供することと、を含む、方法。
10.1つまたは複数の量子アセンブリ命令を実行して、キュービットコントローラに、量子ゲートをキュービットに適用させることは、キュービットコントローラに構成情報を提供することと、キュービットコントローラにトリガ信号を提供することと、
を含む、節9の方法。
11.構成情報は、キュービットに印加する波形のインジケーションと、波形の印加のタイミングのインジケーションと、
を含む、節10の方法。
12.ベクトル化量子コントローラはコマンドプロセッサおよび出力制御部を含み、1つまたは複数の量子アセンブリ命令を実行して、キュービットコントローラに、量子ゲートをキュービットに適用させることは、コマンドプロセッサによって、構成情報およびトリガ信号をキュービットコントローラのメモリに書き込むことを含む、節10または11のいずれか一節の方法。
13.ベクトル化量子コントローラによって変換することは、ベクトル化コマンドプロセッサを実装するように構成されたFPGAによって変換することを含む、節9~12のいずれか一節の方法。
14.ベクトル化コマンドプロセッサは、量子アセンブリ命令を含むように拡張されたRISC-V命令セットをサポートする、節13の方法。
15.出力を提供することは、バイナリ値の測定値、バイナリ値の測定値の和、または状態データを提供することを含む、節9~14のいずれか一節の方法。
16.量子ゲートをキュービットに適用することは、量子ゲートを超伝導回路に適用することを含む、節9~15のいずれか一節の方法。
17.命令を含む、非一時的コンピュータ可読媒体であって、命令は、量子プロセッサのベクトル化量子コントローラによって実行されると、ベクトル化量子コントローラに、コンピューティングデバイスからコマンドを受信することであって、コマンドは、量子プロセッサのキュービットへの量子ゲートの適用を示す、受信することと、コマンドを1つまたは複数の量子アセンブリ命令に変換することであって、1つまたは複数の量子アセンブリ命令は、キュービットのレジスタを作成するためのベクトル命令を含み、レジスタは、キュービットのインジケーションを含む、変換することと、1つまたは複数の量子アセンブリ命令を実行して、量子プロセッサのキュービットコントローラに、量子ゲートをキュービットに適用させることと、コンピューティングデバイスに出力を提供することと、を含む動作を実行させる、非一時的コンピュータ可読媒体。
18.1つまたは複数の量子アセンブリ命令を実行して、キュービットコントローラに、量子ゲートをキュービットに適用させることは、キュービットコントローラに構成情報を提供することと、キュービットコントローラにトリガ信号を提供することと、
を含む、節17の非一時的コンピュータ可読媒体。
19.構成情報は、キュービットに印加する波形のインジケーションと、波形の印加のタイミングのインジケーションと、を含む、節18の非一時的コンピュータ可読媒体。
20.ベクトル化量子コントローラは、コマンドプロセッサおよび出力制御部を含み、1つまたは複数の量子アセンブリ命令を実行して、キュービットコントローラに、量子ゲートをキュービットに適用させることは、コマンドプロセッサによって、構成情報およびトリガ信号をキュービットコントローラのメモリに書き込むことを含む、節18または19のいずれか一節の非一時的コンピュータ可読媒体。
21.量子演算を実行するためのベクトル化量子コントローラであって、通信コントローラと、コマンドプロセッサと、出力制御部とを備え、通信コントローラは、コンピューティングデバイスからコマンドを受信するように構成された回路部を含み、コマンドは、キュービットへの量子ゲートの適用を示し、コマンドプロセッサは、コマンドを1つまたは複数の量子アセンブリ命令に変換することであって、1つまたは複数の量子アセンブリ命令は、キュービットのレジスタを作成するためのベクトル命令を含み、レジスタは、キュービットのインジケーションを含む、変換することと、1つまたは複数の量子アセンブリ命令を実行して、構成情報およびトリガ情報を生成することと、を行うように構成された回路部を含み、出力制御部は、構成情報およびトリガ情報をキュービットコントローラに提供するように構成された回路部を含む、ベクトル化量子コントローラ。
22.コマンドプロセッサは、FPGAを用いて実装される、節21のベクトル化量子コントローラ。
23.コマンドプロセッサは、量子アセンブリ命令を含むように拡張されたRISC-V命令セットをサポートする、節22のベクトル化量子コントローラ。
24.コマンドプロセッサに含まれる回路部は、構成情報およびトリガ情報を出力制御部のマッピングされたメモリに書き込むように更に構成される、節21~23のいずれか一節のベクトル化量子コントローラ。
25.構成情報は、キュービットコントローラによってキュービットに印加する波形のインジケーションと、波形の印加のタイミングのインジケーションと、を含む、節21~24のいずれか一節のベクトル化量子コントローラ。
【0084】
[0087] 図面および明細書において、例示的な実施形態が開示された。しかしながら、これらの実施形態に対し、多くの変形および変更を行うことができる。したがって、特定の用語が用いられているが、これらは一般的で記述的な意味でのみ使用され、実施形態の範囲の限定または制限の目的のために使用されるものではない。範囲は以下の特許請求の範囲によって定義される。
【国際調査報告】