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. 门做完后,它可能把量子比特换回去,也可能让它们保持挪动后的位置并据此重新规划。