【CXL协议-ARB/MUX层(5)】

news2024/12/28 11:31:16

5.0 Compute Express Link ARB/MUX

前言:
在CXL协议中,ARB/MUX层(Arbitration/Multiplexer layer)是负责管理资源共享和数据通路选择的一层。CXL协议包含了几个子协议,主要有CXL.io、CXL.cache 和 CXL.memory。ARB/MUX层在这些子协议之间起到了关键的调度和选择作用,以确保数据流和控制流的正确传输。
下面是ARB/MUX层的一些主要职能:
仲裁 (Arbitration): 在多个请求同时争用相同资源的情况下,仲裁逻辑确保了系统中的各种请求能够公平且有效地访问到共享资源。比如,当多个加速器试图通过CXL访问系统内存时,ARB层会决定哪一个请求先被处理。
多路复用 (Multiplexing): CXL协议支持多种类型的事务(如CXL.io、CXL.cache 和 CXL.memory事务)。MUX层负责将来自不同类型的事务的数据流按照其目的地进行路由,保证每种事务能够在正确的地址和时间到达目的地。
数据流控制: ARB/MUX层还需要处理不同速率的数据流,确保数据包能够按照正确的顺序进行转发,以及处理拥塞和压力情况。
接口协调: 在实际的硬件实现中,ARB/MUX层可能需要与物理层(PHY)协调,以匹配不同的传输速率和时序要求。
ARB/MUX层在CXL协议栈中起到了桥梁的作用,它使得数据包能够在CXL的不同协议组件之间高效、有序地传递,同时保持高效的带宽利用和低延迟。这一层对于保证CXL接口的性能和可靠性是至关重要的。由于CXL是建立在PCIe基础上的,所以ARB/MUX层也承担了与PCIe标准协议相兼容和转换的任务。

下图显示了CXL ARB/MUX在Flex Bus分层中的位置等级制度ARB/MUX提供CXL.io和CXL.cachemem的动态复用链路层控制和数据信号,以与Flex总线物理层接口。
图5-1 Flex Bus 分层 - CXL ARB/MUX (部分已经高亮)
在这里插入图片描述

在传输方向上,ARB/MUX在来自CXL链路的请求之间进行仲裁分层并多路复用数据。它还处理来自链路层:将它们解析为单个请求以转发到物理层,为每个链路层接口维护虚拟链路状态机(vLSM),以及生成ARB/MUX链路管理包(ALMP)以传送功率代表每个链路层跨链路的状态转换请求。
提到第10.3节、第10.4节和第10.5节,了解有关ALMP如何在用于功率状态转换的整个流程中使用。在PCIe*模式下,ARB/MUX旁路,因此ARB/MUX的ALMP生成被禁用
在接收方向上,ARB/MUX确定与CXL相关联的协议并将该微片转发到适当的链路层。它还处理ALMP,参与任何所需的握手并酌情更新其vLSM。
对于256B Flit模式,重放缓冲区是物理层的一部分。ALMP有与68B flit模式不同的微片格式,并受到前向纠错保护FEC)和循环冗余校验(CRC)。它们也必须分配给重播缓冲区,并遵循重放序列协议。因此,它们是保证无错误地传送到远程ARB/MUX。

5.1 vLSM状态

ARB/MUX为与其接口的每个CXL链路层维护vLSM从本地链路层接收的基于电源状态转换请求的状态或者来自代表远程链路层的远程ARB/MUX。
下表5-1列出了vLSM的不同可能状态。
PM状态和Retrain是虚拟状态可以在接口(CXL.io和CXL.cache以及CXL.mem)之间有所不同;
然而,所有其他诸如LinkReset、LinkDisable和LinkError之类的状态被转发到链路层,并且因此跨接口同步。
表5-1。每个链路层接口维护的vLSM状态
在这里插入图片描述

Note: 当物理层LTSSM进入热重置或禁用状态时,该状态为分别作为LinkReset或LinkDisable传送到所有链路层。没有ALMP交换,而不管是谁请求它们,以进行这些转换。LinkError必须将LTSSM设为检测或禁用。例如,允许映射CXL.io下游端口包含到链路错误(当LTSSM处于禁用状态时)
ARB/MUX查看每个vLSM的状态,以解析为单个状态请求转发到表5-2中指定的物理层。例如,如果vLSM[0]状态为L1.0(行=L1.0),当前vLSM[1]状态为Active(列=活跃),则从ARB/MUX到物理层的已解析请求将是活跃的
表5-2。ARB/MUX多vLSM分辨率表
在这里插入图片描述

基于来自一个或多个链路层的请求状态,ARB/MUX将将所述状态请求改变到所述物理层以获得期望的链路状态。
对于链路层支持将ARB/MUX定向到LinkReset或LinkError或LinkDisable,ARB/MUX必须无条件传播这些从请求链路层到物理层的请求;这个优先超过表5-2
表5-3描述了vLSM从一种状态转换到下一个在触发条件中的所有步骤之后发生到下一个状态的转换列已完成。一些触发条件是连续的,表明来自多个来源的一系列操作。例如,在从“活动”转换为上游端口上的L1.x状态,直到vLSM接收到来自链路层的进入L1.x的请求,随后vLSM发送向远程vLSM请求ALMP{L1.x}。接下来,vLSM必须等待接收状态来自远程vLSM的ALMP{L1.x}。一旦所有这些条件依次满足vLSM将根据请求转换到L1.x状态。某些触发条件是仅在68B Flit模式下运行时适用,并且这些在表中突出显示“仅适用于68B Flit模式”

表5-3。ARB/MUX状态转换表(第1页,共2页)
在这里插入图片描述

表5-3。ARB/MUX状态转换表(第2页,共2页)
在这里插入图片描述

5.1.1本地vLSM转换的附加规则

1.对于68B Flit模式,如果任何链路层请求进入到ARB/MUX的Retrain,ARB/MUX必须将请求转发到物理层以启动LTSSM过渡到恢复。根据Active to Retrain转换触发器条件下,LTSSM处于恢复状态后,ARB/MUX应将Retrain反映为所有处于活动状态的vLSM。对于256B Flit模式,没有Active to Retrain arc在ARB/MUX vLSM中,因为物理层LTSSM转换到恢复不会影响vLSM状态。
注意:对于256B Flit模式:不将物理层LTSSM转换为恢复暴露到链路层vLSM允许Rx重试缓冲区可能耗尽的优化而LTSSM处于恢复中。它还避免了vLSM变成与远程链接伙伴不同步。处理错误情况,如UpdateFCDLLP超时,实现必须具有来自链接的边带机制用于触发LT的物理层的层SSM过渡到恢复。
2.一旦vLSM处于Retrain状态,预计相应的链路层将最终请求ARB/MUX转换到活动。
3.如果LTSSM移动到检测,则每个vLSM最终必须转换到重置。

5.1.2 vLSM跨链路状态转换规则

本节涉及vLSM状态转换。

5.1.2.1 一般规则

如果CXL.io协议断开,则链路无法对任何其他协议进行操作(CXL.io操作是最低要求)

5.1.2.2进入主动交换协议

进入活动状态所需的ALMP协议由4个ALMP交换机组成在本地和远程vLSM之间,如图5-2所示。进入Active以开头发送到远程vLSM的活动状态请求ALMP状态ALMP。对活动状态请求的唯一有效响应是活动一旦相应的链路层准备好接收协议微片,状态状态。这个远程vLSM还必须向本地vLSM发送活动状态请求ALMP以活动状态ALMP进行响应
在初始链路训练期间,上游端口(图5-2中的UP)必须等待非物理层微片(即,不是由下游端口(图5-2中的DP))第6.4.1节)。因此,在初始链路训练期间,第一个ALMP总是从下行端口到上行端口。如果有其他活动交换机握手随后发生(例如,作为PM退出的一部分),可以启动活动请求ALMP从两侧。
一旦vLSM发送并接收到活动状态ALMP,vLSM转换到活动状态。
图5-2。进入活动协议交换
在这里插入图片描述

5.1.2.3状态同步协议

对于256B Flit模式,由于重试缓冲区位于物理层,因此所有ALMP保证无错误地传送到远程ARB/MUX。此外,所有ALMP保证会得到回应。因此,不存在上游端口和下游端口vLSM可能不同步。
状态同步协议仅适用于68B Flit模式。以下内容描述和规则适用于68B Flit模式。
在初始链路训练期间达到协商的最高操作速度之后随后的LTSSM恢复转换必须用信号通知ARB/MUX。vLSM状态退出恢复后必须执行同步协议。链接层不能在LTSSM恢复后的链路上进行任何其他通信,直到相应vLSM的状态同步协议已完成。图5-3显示了状态同步协议的示例。
状态同步协议完成需要中的以下事件列出的订单:
1.状态交换:传输状态状态ALMP,并接收无错误状态状态ALMP。传输的状态状态ALMP中指示的状态为vLSM状态的快照。参见第5.1.2.3.1节。
2.基于发送和接收状态的相应状态状态决议同步交换期间的状态ALMP。确定见表5-4已解析的vLSM状态。
3.新状态请求和状态ALMP交换(如适用)。如果解析的vLSM状态与链路层请求的状态不同。

5.1.2.3.1 vLSM快照规则

STATUS_EXCHANGE_PENDING变量用于确定可以采用vLSM。以下规则适用:
•如果为该vLSM清除STATUS_EXCHANGE_PENDING变量
•一旦拍摄快照,就会为vLSM设置STATUS_EXCHANGE_PENDING变量
•STATUS_EXCHANGE_PENDING变量在重置或完成时被清除
状态交换(即,传输状态ALMP,并接收无错误状态ALMP)这是为了说明在状态期间损坏的状态ALMP的情况Exchange可以通过恢复导致更多LTSSM转换。见图5-16以该流程为例

图5-3。状态交换示例
在这里插入图片描述

表5-4。状态交换后的vLSM状态解析(第1张,共2张)
在这里插入图片描述

表5-4。状态交换后的vLSM状态解析(第2页,共2页)
在这里插入图片描述

5.1.2.3.2状态交换后状态解析说明(表5-4)

1、对于解析状态为活动的行,相应的ARB/MUX必须确保在状态状态ALMP之后立即从远程ARB/MUX可以由相应vLSM的链路层来服务。保证这一点的一种方法是确保对于这些情况,链路层接收器在状态交换期间发送状态状态ALMP之前已准备就绪。
2、第7行和第11行将导致L1退出流遵循状态解析。这个相应的ARB/MUX必须通过新状态启动向活动的转换请求ALMP。一旦上游端口VLSM和下游端口VLSM处于活动状态时,如果需要,链路层可以重新进行PM条目协商。类似地,对于行10,如果在PM协商期间达到,则要求两个vLSM都启动主动请求ALMP。
3、如果支持,第3行和第8行将导致L2出口流遵循状态解析。由于LTSSM最终将移动到Detect,因此每个vLSM最终都将转换到重置状态。
4、第7行和第8行仅适用于上游端口。由于进入PM总是由上游端口启动,并且它不能将其vLSM转换为PM,除非下游港口已经这样做了,不存在这些行可以申请的情况下游端口。
5、行为未定义,并且实现特定于中未捕获的组合表5-4。
5.1.2.4状态请求ALMP
以下规则适用于发送状态请求ALMP。状态请求ALMP是发送以请求将状态更改为活动或PM。对于PM,只能启动请求通过上游端口上的ARB/MUX。

5.1.2.4.1进入活动

1、所有恢复状态操作必须在进入活动序列之前完成启动。对于68B Flit模式,这包括完成状态同步LTSSM从恢复转换到L0后的协议
2、发送ALMP状态请求以启动进入活动状态。
3、vLSM必须发送请求并接收状态,然后发射器才能被认为是活跃的。这并不等同于vLSM活动状态。
4、只有当vLSM达到活动状态时,才能传输协议层微片状态
图5-4显示了进入活动状态的示例。图5-4中的流程显示四个不一定在中发生的独立操作(ALMP握手)所示的顺序或小时间段。vLSM发射机和接收机可能会彼此独立地活动。发射器和接收器必须在vLSM状态为活动。vLSM发送后,发送器变为活动状态请求ALMP{Active}并且接收到状态ALMP{Active}。接收器变成在vLSM接收到请求ALMP{active}并发送状态ALMP{active}之后处于活动状态作为回应有关活动状态请求/状态的规则,请参阅第5.1.2.2节握手协议。
图5-4。CXL进入活动示例流
在这里插入图片描述

5.1.2.4.2进入PM状态(L1/L2)

1、发送ALMP状态请求以启动进入PM状态。仅上游端口可以启动进入PM态。
2、对于上游端口,vLSM必须在对于相应的vLSM,PM协商被认为是完成的。
图5-5显示了由上游端口启动的进入PM状态(L1)的示例(图中向上)ARB/MUX。一旦vLSM已发送请求ALMP{L1},并收到状态ALMP{L1}作为返回或vLSM已接收到请求ALMP{L1}并发送状态ALMP{L1}作为返回。vLSM独立操作,操作可能无法按顺序或在时间表显示。一旦所有vLSM都准备好进入PM状态(L1),通道将完成EIOS交换并输入L1。
图5-5。CXL进入PM状态示例

5.1.2.5 State Status ALMP
5.1.2.5.1 When State Request ALMP is received(当收到状态请求 ALMP 时)

• 当接受进入PM 状态时,在接收到进入活动状态或PM 状态的状态请求ALMP 后,发送状态ALMP。 如果不接受 PM 状态,则不发送状态 ALMP。 有关更多详细信息,请参见第 10.3 节“Compute Express Link 电源管理”。

5.1.2.5.2 Recovery State

• 如果在 vLSM 未首先发送状态请求的情况下接收到状态 ALMP,则 vLSM 将触发链路恢复,除非出于同步目的而接收到状态 ALMP(即在链路退出恢复之后)。
图 89 显示了恢复退出的一般示例。 状态同步协议的详细内容请参见5.1.2.3 节。
在这里插入图片描述
退出恢复时,通道两侧的 vLSM 将发送状态 ALMP 以便同步 vLSM。 如果解析的状态和链路层请求的状态不相同,则用于同步的状态 ALMP 可能会触发状态请求 ALMP,如图 90 所示。请参阅第 5.1.2.3 节了解状态同步期间应用的规则。 在出现意外 ALMP 的情况下,用于同步的 ALMP 可能会触发重新进入恢复。 使用第 5.1.3.1 节中的初始链路训练流程示例对此进行了解释。 如果两个 vLSM 解析的状态与链路层请求的状态相同,则 vLSM 被视为已同步并将继续正常操作。

图 90 显示了通过恢复退出 PM 状态 (L1) 的示例。 L1状态的DP vLSM[0]收到Active Request,链路进入Recovery状态。 退出恢复后,每个vLSM都会发送Status ALMP{L1}以同步vLSM。
由于同步后的resolved状态不等于请求状态,所以Request ALMP{Active}和Status ALMP{Active}握手完成,进入Active状态。
在这里插入图片描述

5.1.2.6 Unexpected ALMPs

以下情况描述了意外 ALMP 将触发链路恢复的情况:
• 当退出恢复后执行状态同步协议时,除状态ALMP 之外的任何ALMP 均被视为意外ALMP,并将触发恢复。
• 发送主动请求ALMP 后,收到除主动状态ALMP 或主动请求ALMP 之外的任何ALMP 均被视为意外ALMP,并将触发恢复。
• 如第 5.1.2.5.2 节所述,在未首先发送状态请求 ALMP 的情况下接收到的状态 ALMP 是意外 ALMP,除非在状态同步协议期间。

5.1.3 vLSM状态转换规则的应用

5.1.3.1 初始链路训练

当链路从 Gen1 速度训练到最高支持速度(CXL 的 Gen3 或更高速度)时,LTSSM 可能会经历多次恢复到 L0 到恢复的转换。
实现不需要将 ARB/MUX 暴露给所有这些恢复转换。 根据这些初始恢复转换是否对 ARB/MUX 隐藏,初始 ALMP 握手可能会发生四种不同的情况。 在所有情况下,vLSM 状态转换规则保证情况会自行解决,vLSM 达到活动状态。 这些场景如下图所示。 请注意,这些图是说明性示例,实现必须遵循前面几节中概述的规则。 图中只显示了一次 vLSM 握手,但第二次 vLSM 也可能发生类似的握手。
图 91 显示了 DP 和 UP 都隐藏来自 ARB/MUX 的初始恢复转换的场景示例。 由于它们都没有看到恢复条目的通知,因此它们继续交换 Active 请求和状态 ALMP 以转换为 Active 状态。 请注意,第一个 ALMP(Active request ALMP)是从 DP 发送到 UP 的。

在这里插入图片描述
图 92 显示了一个示例,其中 DP 和 UP 在初始链路训练期间向 ARB/MUX 通知至少一个恢复转换。 在这种情况下,首先交换状态同步 ALMP(指示重置状态),然后定期交换活动请求和状态 ALMP(未明确显示)。 请注意,第一个 ALMP(复位状态)是从 DP 发送到 UP 的。
在这里插入图片描述
图 93 显示了 DP 隐藏来自 ARB/MUX 的初始恢复转换但 UP 不隐藏的场景示例。 在这种情况下,DP ARB/MUX 尚未看到恢复转换,因此它首先向 UP 发送活动状态请求 ALMP。 这被 UP 解释为意外的 ALMP,并触发链路恢复(现在必须通知 ARB/MUX,因为它是在以最高支持的链路速度达到操作之后)。 使用 state=Reset 进行状态同步,然后执行常规的 Active 请求和状态握手(未明确显示)。
在这里插入图片描述
图 94 显示了 UP 隐藏初始恢复转换但 DP 不隐藏的场景示例。 在这种情况下,DP首先发送复位状态ALMP。
这将导致 UP 根据第 5.1.2.5 节中的规则触发链路恢复(现在必须通知 ARB/MUX,因为它是在以最高支持的链路速度达到操作之后)。 使用 state=Reset 进行状态同步,然后执行常规的 Active 请求和状态握手(未明确显示)。
在这里插入图片描述

5.1.3.2 Status Exchange Snapshot Example(状态交换快照示例)

图 95 显示了 UP 上 vLSM[1] 的状态交换期间状态 ALMP 损坏的情况示例。 损坏的 ALMP 是指较低的四个 DW 与接收到的 ALMP 不匹配; 它表示传输期间 ALMP 的低 4 个 DW 上出现位错误。 ARB/MUX 会因此触发 LTSSM 恢复。 当收到第二个恢复条目的恢复条目通知时,UP 上的 vLSM[1] 快照仍处于活动状态 - 因为状态交换尚未成功完成。
在这里插入图片描述

5.1.3.3 L1 中止示例

图 96 显示了物理链路 L1 转换期间可能出现的场景示例。 首先,两个 vLSM 通过相应的 PM 请求和状态 ALMP 握手成功进入 L1。 ARB/MUX 甚至请求物理层将 LTSSM 带到 DP 和 UP 的 L1。 然而,恰好存在竞争,并且在 DP 物理层接收到 EIOS 之前,其中一个 vLSM 请求“活动”。 这会导致 ARB/MUX 删除 L1 条目请求(L1 中止),同时向 UP 发送主动请求 ALMP。 当EIOS最终被物理层接收时,由于DP侧的ARB/MUX没有请求L1(并且没有
支持 CXL 中的 L0),物理层必须将 LTSSM 恢复以解决此情况。 在恢复退出时,DP 和 UP ARB/MUX 都会发送其相应的 vLSM 状态作为同步协议的一部分。 对于vLSM[1],由于已解决的状态状态(Retrain)与期望的状态状态(Active)不同,因此DP必须向UP发送另一个Active请求ALMP。 类似地,在 UP 侧,接收到的状态状态(L1)与期望的状态状态(Active - 因为 vLSM 移动到 Retrain 会触发 UP 链路层请求 Active)不同,UP ARB/MUX 将发起 向 DP 发出主动请求 ALMP。 一旦发送和接收了 Active 状态 ALMP,相应的 ARB/MUX 会将 vLSM 移至 Active,并且可以开始协议级 flit 传输。
在这里插入图片描述

5.2 ARB/MUX Link Management Packets

ARB/MUX 使用 ALMP 将与每个链路层相关的虚拟链路状态转换请求和响应传送到远程 ARB/MUX。
ALMP 是一个 1DW 数据包,其格式如下图 97 所示。 该 1DW 数据包在 528 位 flit 的低 16 字节上复制四次,以提供数据完整性保护; flit 在高位上用零填充。 如果 ARB/MUX 检测到 ALMP 中的错误,它会启动链路重新训练。
在这里插入图片描述
ALMP数据包的字节1、2和3如下表62所示。 ALMP 的字节 1 中使用的消息代码是 0000_1000b。 ALMP 可以是请求类型或状态类型。 本地 ARB/MUX 使用请求 ALMP 启动远程 vLSM 的转换。 接收到请求ALMP后,本地ARB/MUX处理转换请求并返回状态ALMP以指示转换已经发生。 如果不接受转换请求,则不会发送状态 ALMP,并且本地和远程 vLSM 均保持其当前状态。
在这里插入图片描述

5.2.1 ARB/MUX 旁路功能

当 Flex Bus 链路在 PCIe 模式下运行时,ARB/MUX 必须禁用 ALMP 的生成。 可以通过 hwinit 或在链路训练期间确定旁路条件。

5.3 仲裁和数据复用/解复用

ARB/MUX 负责在来自 CXL 链路层的请求之间进行仲裁,并根据仲裁结果复用数据。 仲裁策略是特定于实现的,只要它满足通过 Flex 总线链路传输的更高级别协议的时序要求即可。 此外,必须有一种方法来编程与 CXL.io 和 CXL.cache+CXL.mem 链路层相关的相对仲裁权重,因为它们仲裁通过 Flex Bus 链路传输流量。 更多详细信息,请参见第 8.2.6.1 节。 不同 CXL 协议之间的流量交错是在 528 位 flit 边界处完成的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1547185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苹果macOS 14.4.1正式发布:修复无法使用外接显示器USB集线器问题

3 月 26 日消息,苹果今日向 Mac 电脑用户推送了 macOS 14.4.1 更新(内部版本号:23E224),本次更新距离上次发布隔了 18 天。 需要注意的是,因苹果各区域节点服务器配置缓存问题,可能有些地方探测…

高速行者,5G工业路由器助力车联网无缝通信

随着5G技术的飞速发展,智能制造正迎来一个全新的时代。5G工业路由器作为车联网的核心设备,正在发挥着关键的作用。它不仅提供高速稳定的网络连接,还支持大规模设备连接和高密度数据传输,为车辆之间的实时通信和信息交换提供了强有…

寻找最大值最小值

Problem Finding both the minimum and maximum in an array of integers A[1..n] and assume for simplicity that n is a power of 2 A straightforward algorithm 1. x←A[1]; y←A[1] 2. for i←2 to n 3. if A[i] < x then x←A[i] 4. if A[i] > y then y←A[i…

Trapcode Particular---打造惊艳粒子效果

Trapcode Particular是Adobe After Effects中的一款强大3D粒子系统插件&#xff0c;其能够创造出丰富多样的自然特效&#xff0c;如烟雾、火焰和闪光&#xff0c;以及有机的和高科技风格的图形效果。Trapcode Particular功能丰富且特色鲜明&#xff0c;是一款为Adobe After Eff…

HTML作业2

作业1: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>table…

FPGA高端项目:解码索尼IMX390 MIPI相机转HDMI输出,提供FPGA开发板+2套工程源码+技术支持

目录 1、前言2、相关方案推荐本博主所有FPGA工程项目-->汇总目录我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、个人 FPGA高端图像处理开发板简介5、详细设计方案设计原理框图IMX390 及其配置MIPI CSI RX图像 ISP 处理图像缓存HDMI输出工程源码架构 6、工程源码…

Charles工具安装,连接手机抓包

1. 下载Charles&#xff0c;[官网地址](https://www.charlesproxy.com/download/latest-release/) 根据自己使用的系统下载对应的安装包即可 注&#xff1a;charles双击打不开&#xff0c;且安装的jdk版本为jdk11的&#xff0c;建议参考以下处理方法&#xff1a;https://blog.…

【虚幻引擎】DTWebSocketServer 蓝图创建WebSocket服务器插件使用说明

本插件可以使用蓝图创建WebSocket服务器&#xff0c;并监听响应数据。 1. 节点说明 Create Web Socket Server – 创建WebSocket服务器对象并开启监听 创建一个WebSocket服务器对象&#xff0c;并监听相应端口&#xff0c;连接地址为 ws://IP:PORT, 比如ws://192.168.1.5:9001…

系列学习前端之第 7 章:一文掌握 AJAX

1、AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML&#xff08;中文名&#xff1a;阿贾克斯&#xff09;&#xff0c;就是异步的 JS 和 XML。AJAX 不是新的编程语言&#xff0c;而是一种将现有的标准组合在一起使用的新方式。AJAX 可以在浏览器中向服务器发送异步请求…

GAMES Webinar 288-VR/AR专题-陆峰-混合现实中的多模态自然人机交互

感知交互增强智能 研究室虚拟现实技术与系统国家重点实验室&#xff0c;北京航空航天大学计算医学研究所&#xff0c;大数据精准医疗北京市高精尖创新中心 Perception & Hybrid Interaction (PHI) for Augmented & Affective Intelligence (A2I) We are working on v…

windows下powershell与linux下bash美化教程(使用starship)

starship美化教程 Win11 Powershell 安装 在命令行使用下面命令安装 # 安装starship winget install starship将以下内容添加到 Microsoft.PowerShell_profile.ps1&#xff0c;可以在 PowerShell 通过 $PROFILE 变量来查询文件的位置 Invoke-Expression (&starship i…

深入浅出(二)log4cplus库

log4cplus库 1. log4cplus简介1.1 log4cplus下载 2. log4cplus配置3. log4cplus配置文件 *.properties 配置 1. log4cplus简介 log4cplus是C编写的开源的日志系统。log4cplus具有线程安全、灵活、以及多粒度控制的特点&#xff0c;通过将日志划分优先级使其可以面向程序调试、…

代码随想录 图论

目录 797.所有可能得路径 200.岛屿数量 695.岛屿的最大面积 1020.飞地的数量 130.被围绕的区域 417.太平洋大西洋水流问题 827.最大人工岛 127.单词接龙 841.钥匙和房间 463.岛屿的周长 797.所有可能得路径 797. 所有可能的路径 中等 给你一个有 n 个节点的…

基于nginx 动态 URL反向代理的实现

背景&#xff1a; 我们在项目中在这样一个场景&#xff0c;用户需要使用固定的软件资源&#xff0c;这些资源是以服务器或者以容器形式存在的。 资源以webAPI方式在内网向外提供接口&#xff0c;资源分类多种类型&#xff0c;每种类型的资源程序和Wapi参数都一样。这些资源部属…

域名交易系统源码 无需授权即可正常使用,附带后台功能

域名交易系统已测试可正常使用免授权带后台 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88949686 更多资源下载&#xff1a;关注我。

Unity 打包真机脚本丢失的问题

记录Bug Bug详情分析解决方案附录 Bug详情 项目中导入了UI Particle的Package,用于处理特效层级 unity 运行效果正常&#xff0c;打包真机后运行时发现特效并没有正确显示&#xff0c;真机Log如下图 需要接入查看真机Log工具的点这里 查看图中Log发现对应的Prefab上挂载的脚本…

uniApp中使用小程序XR-Frame创建3D场景(2)加载模型

上篇文章讲述了如何将XR-Frame作为子组件集成到uniApp中使用&#xff0c;只完成了简单的环境搭建&#xff0c;这篇文章讲解如何加载3D模型。 1 加入模型加载标签 在XR-Frame框架中&#xff0c;加载资源都是在wxml文件的标签中实现的。下面是wxml中完整的代码 index.wxml &l…

github vscode 笔记

目录 前言1. 新建代码库2. 下载代码到本地3. 更新代码并上传到github 前言 github方便多人协作维护代码。该笔记记录了下面三个过程&#xff1a; 在github上新建代码库&#xff0c;下载代码到本地&#xff0c;将更新代码并上传到github 1. 新建代码库 2. 下载代码到本地 链…

本地GPU调用失败问题解决1

一&#xff1a;发现问题 1、电脑环境参数&#xff1a; OMEN by Gaming Laptop Windows 11 家庭中文版 2th Gen Intel(R) Core(TM) i9-12900H 2.50 GHz NVIDIA GeForce RTX 3060 Laptop GPU 显存6G PyCharm 2023.1.1(Professional Edition) 2、PyCharm中检测GPU&#x…

web自动化测试系列-selenium的运行原理和常用方法介绍(二)

目录 1.selenium的运行原理 2.常用方法介绍 接上文 &#xff1a;web自动化测试系列-selenium的安装和运行(一)-CSDN博客 在上文中我们编写了一段简单的代码 &#xff0c;可以驱动浏览器访问百度并搜索关键字 。这里我们再把这段代码再拿来加以说明 。 # 1. 导包 from selen…