TileLink Cached

TileLink Cached

TileLink Cached (TL-C) 通过向主代理提供缓存共享数据块副本的能力来完善 TileLink。然后,这些本地副本必须根据实现定义的一致性策略保持一致。本章定义的 TL-C 标准一致性协议规定了允许对哪些缓存的数据副本执行哪些内存访问操作,以及哪些消息可用于传输数据块的副本。重叠的、实现定义的一致性策略规定了如何通过特定的 TileLink 代理网络传播副本和权限,以响应接收到的内存访问操作。具体一致性策略的描述超出了本文档的范围。

总的来说,TL-C 添加了 TileLink 协议规范:三个新操作、三个新通道、一个新的 ve-step 消息序列模板和十个新消息类型。

新操作是创建或删除数据块的缓存副本的传输操作。传输操作永远不会修改数据块的值,而是传输数据块副本上可用的读/写权限。传输操作与先前定义的 TL-UL 和 TL-UH 内存访问操作无缝地互操作,因为它们是相对于彼此串行化的。由于每个传输操作在逻辑上要么发生在每个内存访问操作之前,要么发生在每个内存访问操作之后,并且所有代理都同意此顺序,因此在整个 TileLink 网络中保留了一致性不变量。

当内存访问操作通过 TileLink 网络进行时,间隙缓存可能会在其中嵌套递归传输操作。缓存首先使用传输操作来获得对该块的足够权限,然后使用其一致的本地副本为内存访问提供服务。

可缓存性是地址的一个属性,TileLink 实现必须防止创建不可缓存地址的副本(第 6.3 节)。相反,主设备可以使用先前在 TL-UL 和 TL-UH 中定义的存储器访问操作来访问可高速缓存地址,而不对其本身进行高速缓存。某些主设备可以选择缓存特定数据块,而存储器层次结构的同一级别的其他主设备可以选择不缓存。

下一节概述了设计人员在定义特定的、依赖于实现的一致性策略时可用的基本操作、消息和权限。该规范并不强制要求使用任何一种特定策略,而是定义了可以在其上构建策略的协议底层。

1. Implementing Cache Coherence Using TileLink

所有基于 TileLink 的一致性策略均由传输权限以读取和写入数据块副本的协议操作组成。内存访问操作需要代理获得正确的权限,然后代理才能将访问操作应用于缓存的副本。当代理想要在本地处理访问操作时,必须首先使用传输操作来获取必要的权限。传输操作通过网络创建或删除副本,从而修改每个副本提供的权限.

特定代理的块副本可能拥有的基本权限是“无”、“读取”或“读+写”。特定缓存副本的可用权限取决于缓存层次结构中当前存在的副本,如下所述。

对于任何给定地址,任何给定主机和拥有该地址的从机之间只有一条路径。当所有此类路径覆盖在 TileLink 网络 DAG 上时,它们会形成一棵树,其根为单个从属路径。对于每个地址,该树包含所有针对该地址的操作执行的路径。如果我们删除所有不能缓存数据的代理,我们就会留下一棵缓存代理树,描述可能缓存特定地址数据的所有位置。

在逻辑时间的任何给定时刻,这些代理的某些子集实际上包含缓存数据的副本。这些代理形成了一致性树。包容性的 TileLink 一致性协议要求树根据内存访问操作而增长和收缩。图中的每个节点都属于描述其在树上位置的四个类别之一:

Nothing 当前不缓存数据副本的节点。既没有读权限,也没有写权限。
Trunk 具有缓存副本的节点,位于 Tip 和 Root 之间的路径上。对副本既没有读权限,也没有写权限。对于提示处发生的写入,该副本可能已过时。
提示(无分支)具有缓存副本的节点,用作内存访问序列化点。对其副本具有读/写权限,该副本可能包含脏数据。
提示(带有分支)具有缓存副本的节点,用作写入序列化点。对其副本具有读取和写入权限,该副本可能包含过去写入的脏数据。
分支 具有位于提示上方的缓存副本的节点。对其副本具有只读权限。

图1显示了覆盖在单个 TileLink 网络上的多个一致性树。在A中,树的根节点具有唯一的副本,这使得它既是树的根又是树的尖端。在B中,master通过将主干增长到顶端来获得写+读权限。在C语言中,另一个master通过生长分支获得了读权限,这意味着之前的tip现在也是只读分支,共同的父节点是主干tip。在 D 中,另一位主人长出了一个分支,进一步将尖端移回根部,而原始请求者已自愿修剪其分支。

图2描述了可以在处于哪种状态的节点上执行哪些访问操作,这是相对于其在树中的位置来定义的。另外,政策定义的状态可以基于这些基本状态。

在这里插入图片描述

1.1. Operations

这三个新操作被称为传输操作(第 6 节),因为它们将数据块的副本传输到内存层次结构中的新位置:

acquire 在请求的主节点中创建块的新副本(或其特定权限)。
release 将块的副本(或对其的特定权限)从发出请求的主站交回给从站。
探测probe 强制从主设备向发出请求的从设备删除块的副本(或对其的特定权限)。

获取操作通过扩展树干或从现有分支或尖端添加新分支来生长树。为此,在新分支生长之前,可能必须通过递归探测操作修剪旧的主干或分支。释放操作通过自愿收缩树来修剪树,通常是为了响应缓存容量冲突。

1.2. Channels

为了提供对传输操作的支持,TL-C 在执行内存访问操作所需的两个现有通道中添加了三个新通道。 A 和 D 通道也被重新用于发送附加消息以实现传输操作。传输操作使用的 5 个通道是:

通道 A 主设备发起获取读取或写入高速缓存块副本的许可。

通道 B 从设备查询或修改主设备对缓存数据块的权限,或将内存访问转发给主设备。

通道 C 主设备确认通道 B 消息,可能会释放该块的权限以及任何脏数据。也用于自动写回脏的缓存数据。

通道 D 从设备向原始请求者提供数据或权限,授予对缓存块的访问权限。也用于确认脏数据的自愿写回。

通道 E 主设备提供事务完成的最终确认,由从设备用于事务序列化。

1.3. TL-C Messages

在 5 个通道中,TL-C 列出了 10 条消息,其中包括 3 项操作。表 30 列举了这些消息。列出的响应是唯一可能的响应,但请注意,对于某些请求消息类型,可能会收到多个响应消息类型,具体取决于响应者是否返回数据副本。

在这里插入图片描述

1.4. Permissions Transitions

传输在逻辑上对权限进行操作,因此包含它们的消息必须指定预期结果:升级到更多权限、降级到更少权限或保持权限不变的无操作。这些变化是根据它们对特定地址的一致性树的形状的影响来指定的。我们将可能的权限转换集分为六个子集;不同的子集可用作某些消息的参数,如下小节中所定义。

在这里插入图片描述
修剪包括缩小树的权限降级,并记录以前的权限和新的较小权限。
增长包括增长树的权限升级,并记录以前的权限和新的、更大的权限。
报告包含无操作,其中权限保持不变,但报告当前的权限是什么。
Cap 包含权限更改,但不指定原始权限是什么,而是仅指定它们应该变成什么。

2. Flows and Waves

传输操作引入了新的事务流,这些事务流可以组合起来形成完整的缓存一致性策略事务。图 26 概述了三个新流程。获取请求总是触发递归授予请求和 GrantAck 响应。根据块权限的状态和一致性策略,获取还可能触发一个或多个递归释放或探测操作。

在这里插入图片描述
上图显示了一个消息流,该消息流更详细地说明了包含所有三个新操作的事务。

在此流程中,主设备通过获取在目标数据块的本地副本中读取或写入数据的许可来对存储器访问操作请求做出反应。该事务完成后,主节点已获得读取或写入缓存块以及该块数据的副本的权限。其他主机被调查,迫使他们释放对该块的权限并写回其拥有的脏数据。此外,发出 Acquire 的 master 还使用 Release 来自愿释放其对缓存块的权限。通常,当缓存必须逐出包含脏数据的块,以便将其替换为重新放入缓存中的块时,就会发生这种类型的事务。此事务完成后,主服务器将失去读取或写入第二个缓存块及其数据副本的权限。如果从属设备能够使用目录跟踪哪些主设备拥有该块的副本,则此元数据已更新以反映两个块的权限更改。

在这里插入图片描述

  1. 缓存主机向从机发送 Acquire。
  2. 为了给预期的响应腾出空间,同一个主机发送一个 Release。
  3. 如果需要,从站与后备存储器进行通信。
  4. 从设备使用 ReleaseAck 确认写回事务的完成。
  5. 从站还向其他主站发送任何必要的探测。
  6. 从设备等待接收每个发送的 Probe 的 ProbeAck。
  7. 如果需要,从站与后备存储器通信。
  8. 从机用 Grant 响应原始请求者。
  9. 原始master响应GrantAck以完成事务。

在这里插入图片描述
虽然这三个流构成了涉及缓存块传输的所有 TileLink 事务的基础,但当它们在时间上相互重叠或分层组合时,会出现许多边缘情况。我们现在讨论如何在主 TileLink 代理和从属 TileLink 代理之间分配管理此并发的责任。

TileLink 故意不假设存在点对点有序的消息传递。事实上,来自较高优先级通道的消息必须能够绕过网络中较低优先级的消息,即使它们针对的是同一代理。从站充当与其连接的所有主站之间的便捷同步点。由于每个事务都必须通过发送到从属设备的获取消息来启动,因此从属设备可以轻松地对事务进行排序。一个非常安全的实现是一次只接受一个事务,但这样做对性能的影响是可怕的,事实证明我们可以在继续提供正确的序列化的同时提高并发性。尽管问题具有分布式性质,但对代理行为施加一些限制使我们能够保证可以构建交易的全序。图 28 概述了每个操作的并发限制。

在发出或阻止请求消息方面,最容易理解对 TileLink 代理施加的并发限制。所有请求消息都会生成响应消息,并且响应消息保证最终取得进展。然而,在某些情况下,在收到未完成的响应消息之前,不应发出针对同一块的递归请求消息。我们按请求消息类型细分这些情况:

获取 如果块上有待处理的授权,则主节点不应发出获取。一旦发出 Acquire,主设备就不应在该块上发出进一步的 Acquire,直到收到 Grant。
Grant 如果块上有待处理的 ProbeAck,从属设备不应发出 Grant。一旦发出 Grant,从属设备在收到 GrantAck 之前不应在该块上发出 Probes。
发布
如果块上有待处理的授权,则主节点不应发布释放。一旦发出 Release,主设备不应发出 ProbeAcks、Acquires 或进一步的 Release,直到它从从设备接收到确认写回完成的 ReleaseAck。
探测 如果块上有待处理的 GrantAck,则从属设备不应发出探测。一旦发出 Probe,从机不应在该块上发出进一步的 Probe,直到收到 ProbeAck。

现在,我们以报文序列图的形式提供一些演示并发限制的示例流程。图 29 展示了一个探测器请求被延迟的场景。即使网络上有一个尚未处理的 “授权”(Grant)等待处理,主站也必须继续处理和响应 “探针”(Probes)。 从站必须在响应 "获取 "升级权限的 "授予 "中包含最新的数据副本,除非从站确定自 "获取 "发出以来,该主站未被探测过。假定从属程序在处理获取同一区块的第二个事务时受到了阻塞,那么关键问题就来了: 从站何时可以安全地处理待处理的 “获取”?如果我们假定信息是点对点有序发送到某个代理,那么从属程序只需将 "Grant "信息发送到原主程序源即可。从属程序可以在区块上处理更多的交易,而发送给同一个主程序的更多 "探测 "和 "授予 "信息也会按顺序到达。由于无法保证这种顺序,我们转而依靠 GrantAck 消息让从属程序将两个事务序列化

现在我们来看第二个限制并发责任的例子,这个责任由主节点承担。如果主控程序在某个区块上有一个未完成的 Release 事务,那么在收到从属程序确认回写完成的 ReleaseAck 之前,它不能用 ProbeAcks 响应该区块上传入的 Probe 请求。图 30 以报文序列图的形式列出了这种情况。这一限制序列化了自愿回写相对于正在进行的获取操作(产生探针)的顺序。从属代理不能简单地阻塞自愿释放事务,直到获取事务完成,因为该事务中的 ProbeAck 消息可能被阻塞在自愿释放后面的网络中。从属代理必须处理这样一种情况,即接收到另一个主站正在尝试获取的区块的自愿释放。从代理必须接受自愿释放,以及主站在发送 Release 之前已经处理过的探测信息所产生的任何超时探测检查,然后向每个主站提供 ReleaseAck 和 Grant 信息,他们的交易才能被视为完成。自愿 Release 的数据可用于向原始请求者回复 “Grant”,但 "Grant "本身在从站收集到预期数量的 "ProbeAcks "之前无法发送。这种情况是两个交易信息流同时存在的一个例子

主代理的最终并发限制责任是,只有当事务可以通过唯一的事务标识符相互区分时,才对同一区块发出多个通道 A 请求。例如,主代理缓存在读取未命中下有一个写入未命中,它可以在提供读取权限的 "授予 "到达之前发出 "获取 "请求,要求获得写入权限。不过,即使第二个 Acquire 针对的是同一个地址,它也必须使用唯一的事务标识符。主代理不能指望从代理会以任何特定顺序序列化多个未完成的 Acquires,它必须为收到的第一个 Grant[Data] 发送 GrantAck,而不必等待收到第二个。

在这里插入图片描述
所示为交错报文流,演示了从站使用 GrantAck 对 Grant 和 Probe 进行序列化。

  1. 主站 A 首先发送 Acquire,但在网络中被延迟。
  2. 主站 B 第二个发送 Acquire,但它最先到达从站,并在 A 的 Acquire 之前序列化。
  3. 从站向主站 A 发送一个 Probe,主站 A 必须处理它,即使它有待处理的 Grant。
  4. 从站接收到主站 A 的 ProbeAck 后,向主站 B 发送 Grant。
  5. 主站 A 的 Acquire 到达从站,但由于 GrantAck 尚未处理,因此无法向前推进。
  6. 一旦主站 B 响应 GrantAck,主站 A 的交易即可正常进行。
  7. 从站探测主站 B,但该探测相对于之前的 Grant 被序列化。
  8. 从站必须以正确类型的 “授予”(包括数据副本)回应主站 A,因为主站 A 在发送 “获取”(Acquire)后已经进行了探测。

在这里插入图片描述
演示了使用 ReleaseAck 对 Release 和 Probe 进行序列化的交错报文流。

  1. 主站 A 向从站发送 Acquire。
  2. 与此同时,主站 B 选择驱逐同一数据块,并自愿发出 Release。
  3. 然后,从站向主站 B 发送一个 “探测”(Probe)。从站等待接收每个 “探测”(Probe)的 “探测确认”(ProbeAck),但同时也接受自愿 “释放”(Release)。
  4. 从站发送 ReleaseAck,确认收到自愿回写。
  5. 主站 B 在收到确认的 ReleaseAck 之前,不会用 ProbeAck 响应 Probe。
  6. 一旦主站 B 响应了 ProbeAck,主站 A 的交易就可以正常进行。

3. TL-C Messages

权限传输使用三个附加通道,其中包含六个新消息、一个新的 Channel A 消息和三个新的 Channel D 消息。新通道为 B、C 和 E。新消息类型为 Acquire、Probe、ProbeAck[Data]、Release[Data]、ReleaseAck、Grant[Data] 和 GrantAck。

3.1. AcquireBlock

AcquireBlock 消息是一种请求消息类型,由具有缓存的主代理使用,用于获取计划在本地缓存的数据块的副本。主代理还可以使用此消息类型来升级他们对已拥有的块的权限(即获得对只读副本的写入权限)。

表 32 显示了该消息类型的 A 字段所使用的编码。 a_opcode 必须是 Acquire,编码为 6。a_param 指示主代理打算发生的权限更改的特定类型。可能的转换是从表 31 的“增长”类别中选择的。a_size 表示请求主代理希望缓存的数据总量,以 log2(字节)为单位。

a_address 必须与 a_size 对齐。 a_mask 提供字节选择通道,在本例中指示要读取的字节。详细信息请参见第 4.5 节。 a_size、a_address 和 a_mask 必须一一对应。采集必须具有自然对齐的连续掩模。
a_source 是发出此请求的主代理的 ID。响应从属代理将使用它来确保正确路由响应。
a_data 被忽略并且可以分配任何值。 a_corrupt 是保留的并且必须为 0。
在这里插入图片描述

3.2. AcquirePerm

AcquirePerm 消息是一种请求消息类型,由具有缓存的主代理使用,用于升级块上的权限,而无需提供块中包含的数据的副本。 AcquirePerm 必须仅在不需要数据副本来完成启动操作的情况下使用。主要示例是正在获取块以便完全覆盖的情况。表 33 显示了该消息类型的通道 A 字段所使用的编码。

AcquirePerm 消息是一种请求消息类型,由具有缓存的主代理使用,用于升级块上的权限,而无需提供块中包含的数据的副本。 AcquirePerm 必须仅在不需要数据副本来完成启动操作的情况下使用。主要示例是正在获取块以便完全覆盖的情况。
表 33 显示了该消息类型的通道 A 字段所使用的编码。
a_opcode 必须是 AcquirePerm,编码为 7。a_param 指示主代理打算发生的权限更改的特定类型。可能的转换是从表31的增长类别中选择的。
a_size指示请求主代理希望具有缓存权限的数据总量,以log2(字节)为单位。
与 Get 消息中一样,AcquirePerm 消息本身不包含数据。此外,不会向请求者返回任何数据来响应此消息。
a_address 必须与 a_size 对齐。 a_mask 提供字节选择通道,在本例中指示要读取的字节。详细信息请参见第 4.5 节。
a_size、a_address 和 a_mask 必须一一对应。 AcquirePerm 必须有一个自然对齐的连续掩码。
a_source 是发出此请求的主代理的 ID。响应从属代理将使用它来确保正确路由响应。 a_data 被忽略,可以分配任何值。 a_corrupt 是保留的并且必须为 0。
在这里插入图片描述

3.3. ProbeBlock

ProbeBlock 消息是从属代理用来查询或修改特定主代理存储的数据块缓存副本的权限的请求消息。从属代理可以撤销主代理对缓存块的权限,或者响应另一个主代理的获取,或者出于自己的意愿。
表 34 显示了该消息类型的 B 的所有字段。 b_opcode 必须是 ProbeBlock,编码为 6。
b_param 指示从属代理打算发生的权限更改的特定类型。可能的转换是从表 31 的上限类别中选择的。探测主代理将其权限限制在比当前更宽松的级别是允许的,并且不会导致权限更改。
b_size 指示请求代理希望探测的数据总量,以 log2(字节)为单位。如果响应此探测而写回脏数据,则 b_size 表示生成的 ProbeAckData 消息的大小,而不是此特定 ProbeBlock 消息的大小。
b_address 必须与 b_size 对齐。 b_mask 提供字节选择通道,在本例中指示要探测哪些字节。详细信息请参见第 4.5 节。
b_size、b_address和b_mask必须一一对应。 ProbeBlock 消息必须具有连续的掩码。
b_source 是作为此请求目标的主代理的 ID。它用于将请求路由到例如特定的缓存。详细信息请参见第 6.4 节。 b_data 被忽略并且可以被赋予任何值。 b_corrupt 保留且必须为 0

在这里插入图片描述

3.4. ProbePerm

ProbePerm 消息是从属代理用来查询或修改由特定主代理存储的数据块的缓存副本的权限的请求消息。从代理可以撤销主代理对缓存块的权限,或者响应来自另一个主代理的获取,或者出于自己的意愿。 ProbePerm 只能在不需要数据副本来完成启动操作的情况下使用。主要示例是正在获取块以便完全覆盖的情况。表 35 显示了该消息类型的通道 B 的所有字段。
b_opcode 必须是 ProbePerm,编码为 7。b_param 指示从属代理打算发生的权限更改的特定类型。可能的事务是从表 31 的上限类别中选择的。允许探测主代理将其权限限制在比当前更宽松的级别,并且不会导致权限更改。
b_size 指示请求代理希望探测的数据总量,以 log2(字节)为单位。不会向请求者返回任何数据来响应此消息。
b_address 必须与 b_size 对齐。 b_mask 提供字节选择通道,在本例中指示要探测哪些字节。详细信息请参见第 4.5 节。
b_size、b_address和b_mask必须一一对应。
ProbePerm 消息必须具有连续的掩码。 b_source 是作为该请求目标的主代理的 ID。它用于路由请求,例如到特定的缓存。详细信息请参见第 6.4 节。
b_data 被忽略并且可以被赋予任何值。 b_corrupt 是保留的并且必须为 0。

在这里插入图片描述

3.5. ProbeAck

在这里插入图片描述

3.6 ProbeAckData

在这里插入图片描述

3.7. Grant

在这里插入图片描述
授予消息既是响应消息,也是请求消息,从属代理使用它来确认收到获取消息,并向原始请求主代理提供访问缓存块的权限。表 38 显示了该消息类型的 D 字段所使用的编码。
d_opcode 必须为 Grant,编码为 4。
d_param 指示从属代理授予在主代理中的块的缓存副本上发生的权限(作为获取请求的结果)的特定访问类型。可能的权限转换是从表 31 的 Cap 类别中选择的。权限增加​​而不指定原始权限。权限可能超出原始请求的 a_param 字段所请求的权限。
d_size 包含正在传输其权限的数据的大小,尽管此特定消息本身不包含数据。必须与原始 a_size 相同。
d_sink 是发出此消息的代理的标识符,用于路由其 E 响应,而 d_source 应该已从原始通道 A 请求中的 a_source 保存,并且现在被重新用于将此响应路由到正确的目的地。详细信息请参见第 6.4 节。
d_data 被忽略并且可以被赋予任何值。
d_denied 表示从机没有处理权限转移。在这种情况下,d_param应该被忽略,这意味着该块的一致性策略权限保持不变。
d_corrupt 是保留的并且必须为 0。

3.8. GrantData

在这里插入图片描述

3.8 GrantAck

在这里插入图片描述

3.10. Release

在这里插入图片描述

3.11. ReleaseData

在这里插入图片描述

3.12. ReleaseAck

在这里插入图片描述

4. TL-UL and TL-UH Messages on Channel A and D

除了新消息之外,TL-C 物种还隐含了来自 TL-UL 和 TL-UH 的这些现有消息的许可传输。隐式获取将权限限制为“无”(无效)。 {PutFullData, PutPartialData, ArithmeticData, LogicalData} 隐式将权限限制为非读+写 [Trunk] 或 [Tip],即无 [Invalid] 或读 [Branch]。

5. TL-UL and TL-UH messages on B and C

除了三个新操作(获取、探测、释放)之外,TL-C 在通道 B 和 C 上重新指定了 TL-UH 的所有操作。这允许这些通道用于将访问和提示操作转发给远程所有者缓存的数据。换句话说,实现可以选择使用基于更新的协议而不是基于失效的协议。

Glossary

访问 在指定地址读取和/或写入数据的操作。

确认消息 如果您发送请求,则其他代理需要发回的消息

获取 传输操作,主设备通过该操作获取从从设备缓存块副本的权限。

代理 协议中的主动参与者,发送和接收消息以完成操作。

原子 一种访问操作,允许主设备读取-修改-写入由从设备管理的地址。

节拍 任何消息的单时钟周期片段,需要多个周期才能在特定宽度的通道上传输。

突发 多节拍消息。

通道 主接口和从接口之间承载同质优先级消息的单向通信链路。

通道 A 传输可在指定地址执行操作、访问或缓存数据的请求。

通道 B 传输在指定主机上执行操作的请求,访问或取消缓存数据。

通道 C 传输通道 B 请求的数据或权限确认。

通道 D 向原始请求者传输数据或权限确认。

通道 E 为请求者传输缓存块传输的最终确认,用于序列化。

DAG 有向无环图。

后续消息 由于接收其他消息而发送的任何消息。

转发消息 与发起它的消息具有相同优先级的递归消息。

获取 访问操作允许主设备读取从设备管理的地址。

提示 仅供参考的操作,对数据值没有直接影响。

意图 提示操作,指示主机打算在从机管理的地址处读取或写入数据。

链接 完成两个代理之间的操作所需的通道集。

主接口 代理可以通过该接口请求执行内存操作,或者请求缓存数据副本的许可。

消息 通过特定通道发送的一组控制和数据值。 MOESI 具有所有权状态的缓存一致性策略。

操作 对内存层次结构中地址范围的数据值、权限或位置的更改

探测 一种传输操作,从设备通过该操作撤销从主设备缓存块副本的权限。

Put 允许主设备写入由从设备管理的地址的访问操作。接收者 在通道上接受消息的接口(引发就绪)。

递归消息 作为实现操作的一种方式发送的可选消息。

释放 一种传输操作,主设备自愿将块上的权限释放回从设备。

请求消息 指定对缓存块执行访问或更改权限的消息。

响应消息 如果您发送请求,则其他代理需要发回的消息。

sender 在通道上发起消息的接口(引发有效)。

从接口 代理可以通过该接口授予对一系列地址的权限和访问权限,并以完成的内存操作进行响应。

SoC 片上系统。

TL-C TileLink 缓存。 TL-UH TileLink 未缓存重量级。 TL-UL TileLink 无缓存轻量级。

传输 通过网络移动权限或缓存数据副本的操作。

  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值