JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

把量子位元耦合在一起

雙量子位元閘要求兩個量子位元能按需互相「感受」——做閘時強耦合,其餘時間則完全不耦合。本文講解可調耦合器如何充當這個開關,常開的「ZZ」交互作用與訊號串擾為何會作對,以及量子位元之間的連線圖為何決定了每個程式要額外付出多少代價。

為什麼耦合必須是可開關的

再好的單個量子位元,也只能做單位元操作。要執行真正的演算法,你需要雙量子位元閘——也就是兩個量子位元交換資訊的時刻。為此,量子位元之間必須*耦合*:必須存在一條讓能量或相位從一個流向另一個的通道。

問題在這裡。你希望這種耦合在閘所需的那幾十奈秒裡很強,之後則消失。常開的耦合會在你想讓兩個量子位元各自靜止時仍不斷推擠它們,慢慢破壞程式。所以設計目標不是「把量子位元耦合起來」,而是「只在需要時耦合」。

在超導晶片上實現這種開關行為,最常見的辦法是可調耦合器:一個坐落在兩個量子位元之間的小附加電路,它自身的頻率可以用控制訊號來移動。往一個方向調,兩個量子位元就交談;往另一個方向調,它們的交互作用就抵消到接近於零。

畫出來:兩個量子位元加一個耦合器

標準佈局是一排三個電路:量子位元、耦合器、量子位元。兩個量子位元並不直接相連,而是各自與中間元件耦合,而中間元件的頻率決定了它們最終能相互感受到多少。

      g1                 g2
  Q1 -----[  COUPLER  ]----- Q2
 (qubit)   (tunable      (qubit)
            frequency)
            |
            | flux/control line
            v
  set coupler freq  ->  effective Q1<->Q2 coupling J_eff

  J_eff(on)  : large   -> two-qubit gate runs
  J_eff(off) : ~0      -> qubits left alone

  g1, g2  = fixed couplings from each qubit to the coupler
  J_eff   = net coupling the two qubits actually feel
兩個量子位元透過一個可調中間電路耦合;耦合器的頻率決定有效耦合 J_eff。

中間元件之所以能把耦合關掉,靠的是干涉。兩個量子位元實際上同時沿兩條路徑耦合:直接路徑(它們之間一條微弱的固定洩漏)與間接路徑(經過耦合器)。當你把耦合器頻率調到合適的點,這兩條路徑互相抵消。淨耦合 J_eff——量子位元真正感受到的唯一量——便穿過零點。

兩個敵人:常開 ZZ 與串擾

即便耦合器名義上「關閉」,通常仍有殘餘交互作用存活。最麻煩的一種叫 ZZ 耦合:一個量子位元的頻率會隨著它鄰居是 0 還是 1 而輕微移動。它很小,卻從不休息——每個空閒的量子位元都會慢慢累積一份不想要、且依賴鄰居的相位,這就表現為閘誤差。

  idle ZZ error, intuitively:

     phase picked up  ~  (residual ZZ rate) x (idle time)

     residual ZZ rate : how much a qubit's frequency
                        shifts per the state of its neighbour
                        (units: cycles per second)
     idle time        : how long the qubit waits between gates

  smaller residual ZZ  -> less junk phase per microsecond
  a tunable coupler is tuned to push residual ZZ toward 0
為何微小的常開 ZZ 仍然有害:誤差隨空閒時間增長,所以必須壓制而非無視。

第二個敵人是訊號串擾:本應作用於某個量子位元的控制脈衝,也會傳到它的鄰居。在擁擠的晶片上,連線與量子位元本身在物理上很近,於是微波驅動會向旁邊「洩漏」。你想定址的那個量子位元會正確移動;你本想放著不動的那些則被輕輕地、意外地踢了一下。

連接性:誰能和誰交談

耦合器在晶片面積、連線與額外串擾上都很昂貴,所以晶片不會把每個量子位元都連到其他每一個。相反,每個量子位元只與少數幾個鄰居相連。哪些量子位元共享一個耦合器,這張圖就是晶片的連接性,它在晶片製造出來那天就固定在矽裡了。

一種流行的佈局是重六邊形點陣:每個量子位元刻意只接觸兩到三個鄰居。更稀疏的連接意味著每個量子位元周圍擁擠的耦合器更少,從而壓低 ZZ 與串擾——但這也意味著大多數量子位元對之間*並不*直接相連。

當演算法需要兩個量子位元互相作用、它們卻不是鄰居時,編譯器會插入 SWAP(交換)操作:把一個量子位元的狀態在晶片上一跳一跳地挪動,直到它緊挨著搭檔。每次 SWAP 本身又由若干雙量子位元閘組成,因此耗時並引入誤差。有限的連接性不會讓程式變得不可能——只會讓它變長。

  1. 編譯器讀取某個閘需要哪兩個量子位元,並查閱晶片的連接性圖。
  2. 如果它們已是鄰居,就直接執行雙量子位元閘。
  3. 如果不是,就插入 SWAP,把一個狀態沿點陣挪向另一個——每一跳都要額外的閘與時間。
  4. 閘做完後,它可能把量子位元換回去,也可能讓它們保持挪動後的位置並據此重新規劃。