【Minecraft|延迟学Ⅲ】即时更新理论的基本内容
Rosumint
编辑于 2021年08月03日 01:11
收录于文集
共15篇

本文不适合完全没有红石基础的玩家阅读。

延迟学Ⅰ:网页链接​

延迟学Ⅱ:网页链接​

上期我们探讨了活塞的延迟现象,介绍了解释活塞延迟的其中一个重要理论——启动延迟理论。今天我们主要介绍的便是由上期的猜想2——与活塞相连的中继器/比较器,延迟发生了变化——出发提出的一个解释活塞延迟现象的理论,即由国外玩家Sancarn和Selulance提出的即时更新理论

这个理论实际上对各种常见的、不常见的信号触发方式都进行了讨论。在此,我们将内容大幅简化,只讨论其中的一小部分最常用的内容。如果对这个理论感兴趣,可以去看由小渊翻译的熟肉:网页链接​

cut-off

【边沿信号的同步性】

即时更新理论最核心的内容是对于边沿信号同步性的讨论。注意,这里的同步性与启动延迟理论的同步信号不同,是一个独立的概念,注意区分。

那么对于“边沿信号的同步性”,我们先从什么是边沿信号谈起。

当你拉下拉杆,红石灯亮起,这个时候实际上实现了一个信号从无到有的过程。若把无信号记作0,有信号记作1,那么“拉下拉杆”这一行为使信号发生了0-1转变。这样的转变我们称之为上升沿。同样,当你收回拉杆,信号从有到无,即发生了1-0转变,这时我们称之为下降沿。边沿信号包括上升沿和下降沿两种。

如图3-1所示,上面的箭头表示一个上升沿,下面的箭头表示一个下降沿。

图3-1

介绍完边沿信号,下面我们就来说明何为“边沿信号的同步性”。在此之前,请大家暂时忘记我们之前探讨过的启动延迟理论,从一个全新的视角审视活塞的延迟现象。这样能更好的进行下面的讨论,避免思维定势。

下面我们来从一个装置看起。

图3-2

如图3-2所示。左侧黄色羊毛的两个拉杆是信号的输入端。右侧共有两个输出端,一个是蓝色端,一个是粉色端。其中,粉色端中继器的档位为2。下面我们要观察不同信号输入时,两个活塞是否同时推出。

拉下右侧拉杆,拉杆直接触发两路电路,给予电路一个上升沿。此时现象如图3-3所示。

图3-3

此时两个活塞同时伸出。由此,我们称:

拉杆在上升沿是同步的。

这里的“同步”一词便是由于“活塞同时推出”这一实验现象。

这里我们需要暂时忽略其原理的讨论,只对现象进行描述。

同理,当左侧与中继器相连的拉杆拉下时,上升沿信号经由中继器输入,此时现象如图3-4所示。

图3-4

显然,图中两个活塞并不是同时伸出的,所以我们称:

中继器在上升沿是非同步的。

这里的“非同步”即是指两个活塞不同时伸出。

这个装置称为上升沿同步性检测装置。通过改变黄色端的信号输出方式,我们可以检测不同输入方式产生的上升沿的同步性。

注意,这一装置只能检测上升沿的同步性,而对下降沿无效。

下降沿同步性检测装置如图3-5所示。

图3-5

同样,黄色端用于输入下降沿,绿色端和橙色端负责检测。观察的现象同样是两个活塞是否同时推出。注意,这一装置只能检测下降沿的同步性,而对上升沿无效。

下面我们分别检测拉杆下降沿的同步性。收回图中的拉杆,可以观察到的现象如图3-6所示。

图3-6

显然此时两个活塞同时伸出,所以我们有:

拉杆在下降沿是同步的。

同理对中继器进行检测,现象如图3-7。

图3-7

此时两个活塞不同时伸出,所以我们称:

中继器在下降沿是非同步的。

而将两个检测装置相连,我们就可以制作一个简易的边沿信号同步性检测器。这是我们这个系列专栏中介绍的第二个重要装置。如图3-8所示。

图3-8

这一装置的基本功能和用法:

  1. 黄色端是边沿信号的输入端,蓝色端和粉色端用于判断上升沿的同步性,绿色端和橙色端用于判断下降沿的同步性;

  2. 不论检验上边沿还是下降沿,同步性的判断都取决于检测用的两个活塞是否同时伸出,而不是取决于两个活塞是否同时收回。若同时伸出,就称这种输入方式在这一边沿是同步的;若不同时伸出,就称这种输入方式在这一边沿是非同步的;

  3. 检验某一边沿信号时,只关注用于检测这一边沿信号用的两个活塞,忽略另外两个活塞。

利用这一装置,我们就可以很准确地的判断一个边沿信号的同步性。

上述讨论,不要纠结于装置的原理,核心在于装置的功能以及装置能给我们的结论。只要能够理解如何利用边沿信号同步性检测器来判断信号的同步性,对于即时更新理论的核心内容你就已经掌握了一半了。

cut-off

【同步性与元件延迟】

费了这么大篇幅详细讲解了如何判断一个边沿信号的同步性,下面我们就要来说明信号的同步性如何应用于延迟计算。

在即时更新理论中,我们把元件分为两类。

一类称为同步型元件,这类元件的性质是:不论接收到什么同步性的信号,其延迟始终保持不变,即不受信号同步性的影响。最典型的同步型元件就是活塞,延迟始终是3gt。

另外一类是非同步型元件,这类元件具有如下性质:当接收到非同步信号时,其延迟保持不变;当接收到同步信号时,其延迟为固有延迟-1gt。典型的非同步型元件包括中继器,比较器,红石火把等。中继器的固有延迟为2ngt,n为中继器的档位;比较器和红石火把的固有延迟为2gt。

利用上述性质我们就能计算电路的延迟了。

cut-off

【同步性定律】

我们通过边沿信号同步性检测器可以得出一些常见信号的同步性。经过总结,我们可以得出以下同步性定律

(ps.下述定律基本可以满足大部分常用的信号输入方式,但有一些极其特殊的信号输入类型可能不遵循这些定律,在此不进行考虑。如果要获取一个位置信号的同步性,最好的方式还是利用边沿信号同步性检测器直接进行检测,或者可以直接查表获得)

「定律一」有玩家影响的信号输入方式是同步的,电路运行时传递的信号是非同步的。

拉杆的拉下和收回都是玩家控制的,所以拉杆在上升沿和下降沿都是同步的

按钮按下时由玩家控制,弹起时是自主弹起,所以按钮在上升沿是同步的,在下降沿是非同步的

中继器属于电路元件,传递红石信号,所以中继器在上升沿和下降沿都是非同步的

「定律二」活塞的瞬间行为所产生的信号都是非同步的,其余情况下给出的信号都是同步的。

活塞推动红石块触发下一个元件,这不是一个瞬间的动作,所以给出的信号是同步的

活塞推开压线方块,压线方块是瞬间被活塞推开,所以给出的信号是非同步的

活塞破坏红石线时,红石线是瞬间被破坏,所以给出的信号是非同步的

「定律三」红石线不改变信号的同步性。

通过上述三条定律,我们可以迅速判断信号的同步性,进而进行应用计算。

cut-off

【两个延迟理论的对比】

上面我们介绍的就是即时更新理论的基本内容了。下面我们将从一个示例出发,对比即时更新理论和启动延迟理论。

图3-9

图3-9是我们上期专栏应用启动延迟理论计算过的两个电路,下面我们应用即时更新理论,来计算一下当拉下拉杆时,两路的延迟。

对于第一路电路,拉杆给出的信号是同步的,中继器是非同步型元件,所以其延迟为2gt-1gt=1gt;活塞是同步型元件,延迟始终是3gt;活塞推动红石块给出的信号是同步的,中继器是非同步型元件,所以其延迟为2gt-1gt=1gt。故电路的总延迟为1gt+3gt+1gt=5gt。

对于第二路电路,活塞是同步型元件,延迟固定为3gt;活塞推动红石块给出的信号是同步的,中继器是非同步型元件,所以延迟为2gt-1gt=1gt;活塞固有延迟为3gt。故电路的总延迟为3gt+1gt+3gt=7gt。

对比上期我们启动延迟理论计算时得出的结论,如图3-10。

图3-10

对于第二路电路,两个理论得出了完全相同的结果;但对于第一路电路,即时更新理论得出的结论是5gt,而启动延迟理论给出的结果是6gt,显然两者不同。那么哪个结论才是正确的呢?下面我们考虑这样一个电路,如图3-11所示:

图3-11

其中,上路的中继器档位为2,下路两个中继器档位为1。

利用启动延迟理论:上路延迟为2t+1t=3t=6gt,下路延迟为1t+1t+1t=3t=6gt,即上路延迟等于下路延迟;

利用即时更新理论:上路延迟为(4gt-1gt)+3gt=6gt,下路延迟刚刚已计算是5gt,即上路延迟大于下路延迟。

进行实验,得到如图3-12所示的结果。

图3-12

ps:红石灯收到信号亮起延迟为0。

我们看到,此时右路红石灯已经亮起,左路红石灯则还没有。所以我们知道,右路的延迟要小于左路延迟,所以对于这个电路,即时更新理论是准确的,启动延迟理论则存在漏洞。

上述例子证明了启动延迟理论是不完备的。同样,经过一系列实验,我们发现即时更新理论可以完美地解释各类现象。

我们一般认为,即时更新理论是准确的,可以用于解决延迟问题。启动延迟理论在很多情况下也都是准确的,而且比即时更新理论更加简洁易懂,但仍存在一定的漏洞。

cut-off

本期我们详细介绍了第二个重要的延迟理论——即时更新理论。但是启动延迟理论提出早,可以解释大部分延迟现象,深入人心,几乎没人怀疑其正确性。所以当即时更新理论提出时,在当时可以说是震惊了国内的红石圈。最终,启动延迟理论确实被证明是有漏洞的,而即时更新理论却经受住了时间的考验。

但我们不能因为启动延迟理论存在问题就完全否定它。启动延迟理论是第一个可以解释很多延迟现象的理论,且创造性地提出了“启动延迟”的概念,可以说是深刻地影响了延迟学的发展。

至此,两个重要的延迟理论我们都已经介绍完毕。下期我们将从代码的角度,深入探究延迟的本质。