【CHI】(十二)Memory Tagging

目录

1. Introduction

2. Message extensions

3. Tag coherency

4. Read transaction rules

4.1 TagOp values

4.2 Permitted initial MTE tag states

5. Write transactions

5.1 Permitted TagOp values

5.2 TagOp, TU, and tags relationship

6. Dataless transactions

7. Atomic transactions


1. Introduction

        内存标签扩展(MTE:Memory Tagging Extension)是一种用于检查内存中数据的正确使用情况的机制。当内存位置分配给特定用途时,还可以为其分配一个存储器标签。

        此内存标签与内存中的数据一起保存,称为“分配标签”。以后访问内存位置时,请求者使用位置的地址和它认为与位置相关联的标签值。

        此标签称为物理地址标签(Physical Address Tag)或物理标签(Physical Tag)。

        对于启用标签检查的任何访问,将根据分配标签检查物理标签。访问始终按正常进行标签检查结果决定是否发出错误条件信号

        此机制可确保内存访问用于其预期目的,而不是错误或恶意访问。它可以在运行时用于识别许多常见的编程存储器错误,例如缓冲区溢出和use-after-free。

注:计算机安全领域中的"use-after-free"漏洞是一种常见的内存安全问题,指的是在释放(free)了某块内存后,程序继续使用了已释放的内存区域,可能导致严重的安全问题。漏洞发生的主要原因之一是内存管理不当。

存储器标签包括与内存中的每个16字节对齐数据相关联的4-bit标签。

支持以下行为:

  • 只在请求Normal WriteBack内存时允许内存标记。
  • Read transactions请求中有一个指示(TagOp),确定是否必须与数据一起返回分配标签值。
  • 由请求者执行根据分配标签检查返回的物理标签。举个例子,如果缓存保存数据值但不保存分配标签值,则Read事务必须执行同时返回数据data和标签tag,返回的数据不要求有效。
  • 需要提取标签的读取请求不得使用转发监听 Forwarding snoops。
  • StashOnce transactions请求分配标签。分配标签预计会随着数据的存储而被积存。
  • Write transactions有一个物理标签和必须根据分配标签检查的写数据一起提供。由Completer执行对分配标签进行检查物理标签。如果不匹配,则需要发出失败通知。
  • Write transactions将分配标签更新为新值。这些写事务通常会同时更新数据。但是,允许没有字节使能置位,以便仅更新标签。
  • Write transactions将Dirty或clean的cache line刷到下级cache line,无需更新或检查标签。这些写入事务始终包括数据,并指示分配标签值是否也随数据一起传递。
  • 返回数据的Snoop transactions也可以返回关联的分配标签。如果标签是Dirty,则必须返回标签。如果标签为“Clean”,则返回标签是可选的。
  • CMO缓存维护操作必须在数据和相应的内存标签上运行。

2. Message extensions

CHI消息定义的以下扩展用于支持Memory Tagging:

Tag

提供4-bit标签集,每个标签都与16字节对齐的数据相关联。

  1. 只适用于DAT 通道
  2. Size = Data位宽/32bit

TU

Tag Update。指示必须更新哪些分配标签。

  1. 只适用于DAT 通道
  2. Size = Data位宽/128bit

TagOp

Tag Operation。指示要对相应DAT通道中存在的标签执行的操作。

  1. 只适用于 REQ, DAT, RSP 通道
  2. Size = 2 bits

TagOp的编码如下:

TagOp[1:0]

Tag operation

0b00

Invalid

0b01

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子墨祭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值