ISYNC 确保所有先前的指令都已提交,然后再继续执行下一条指令。
该指令应在以下事件之后执行(当后续指令必须观察事件的结果时):
Class: SYSTEM (slot 2)
注意:
这是一个单独的指令。 它不能与数据包中的其他指令组合在一起。
编码
L2FETCH 启动后台预取到 L2 缓存。
Rs 指定 32 位虚拟起始地址。 该指令有两种形式。
在第一种形式中,要预取的区域的维度在源寄存器 Rt 中编码如下:
在第二种形式中,操作数在寄存器对 Rtt 中编码如下:
下图显示了使用 L2FETCH 指令的两个示例。
在框预取中,在较大的帧内定义了一个二维内存范围。 第二个示例显示了对大小为 Lines * 128 的大型线性内存区域进行预取。
L2FETCH 是非阻塞的。 指令启动后,程序将继续执行下一条指令,同时在后台执行预取。 L2fetch 可用于将代码或数据引入 L2 缓存。 如果感兴趣的行已经在 L2 中,则不执行任何操作。 如果 L2$ 中缺少这些行,硬件会尝试从系统内存中获取它们。
硬件预取引擎继续请求已编程内存范围内的所有行。 预取硬件尽最大努力预取所请求的数据,并尝试以低于需求取指的优先级执行预取。 这可以防止预取在系统负载过重时增加流量。
如果程序启动新的 L2FETCH 而旧的 L2FETCH 操作仍处于挂起状态,则新请求将排队,最多为三个深度。 如果 3 个 L2FETCH 已经挂起,则最旧的请求将被丢弃。 在线程的 L2 预取活动期间,USR:PFA 状态位被设置以指示预取正在进行中。 程序员可以使用该位来决定是否在前一个 L2FETCH 完成之前启动新的 L2FETCH。
使用编程为零的任何子字段执行 L2fetch 会取消调用线程的所有未决预取。
该实现可以在需要时自由删除预取。
Class: SYSTEM (slot 2)
注意:
该指令只能与 ALU32 或非浮点 XTYPE 指令组合。
编码
PAUSE 指令将执行暂停一段指定的时间。
在暂停期间,程序进入低功耗状态,不获取和执行指令。 该指令提供了一个短立即数来指示暂停持续时间。 程序最多暂停立即数加 8 中指定的周期数。最小暂停为 0 个周期,最大暂停由实现定义。
程序中断退出暂停状态。
系统事件(例如硬件或 DMA 完成)可以触发退出暂停模式。
一个实现可以自由暂停短于 (immediate+8) 的持续时间,但不能更长。
该指令对于实现用户级低功耗同步操作很有用,例如自旋锁或等待事件信号。
Class: SYSTEM (slot 2)
注意:
这是一个单独的指令。 它不能与数据包中的其他指令组合在一起。
编码
SYNCHT 指令同步内存。
所有未完成的内存操作,包括缓存和非缓存加载和存储,都在处理器继续执行下一条指令之前完成。 这确保了某些内存操作以所需的顺序执行(例如,在访问 I/O 设备时)。
执行 SYNCHT 操作后,处理器停止从程序中获取和执行指令,直到该程序的所有未完成的内存操作完成。
在多线程或多核环境中,SYNCHT 不关心其他执行上下文。
该指令的使用取决于系统。
Class: SYSTEM (slots 0)
注意:
这是一个单独的指令。 它不能与数据包中的其他指令组合在一起。
编码
TRACE 获取寄存器 Rs 的值并将其发送到 ETM 跟踪。
必须启用 ETM 块,并且线程必须具有执行跟踪的权限。 Rs 的内容是用户定义的。
Class: SYSTEM (slot 3)
注意:
该指令只能与 ALU32 或非浮点 XTYPE 指令组合。
编码
TRAP 导致精确异常。
执行 TRAP 指令会将 SSR 中的 EX 位设置为 1,从而禁用中断并启用超级用户模式。 然后程序跳转到向量位置(TRAP0 或 TRAP1)。 该指令指定一个 8 位立即数字段。 该字段被复制到系统状态寄存器原因字段中。
从带有 RTE 的服务程序返回后,在 TRAP 指令之后的数据包处继续执行。
这些指令通常用于用户代码从操作系统请求服务。 提供了两个 TRAP 指令,因此操作系统可以针对快速服务程序和较慢服务程序进行优化。
Class: SYSTEM (slot 3)
注意:
这是一个单独的指令。 它不能与数据包中的其他指令组合在一起。
编码
WAIT 使调用线程进入等待模式。
等待模式是线程空闲的低功耗模式。 线程在等待模式下不获取或执行指令。
当线程执行 WAIT 时,PC 被设置为 WAIT 指令之后的数据包。
要退出等待模式,等待线程可以接收中断,或者另一个线程可以为等待线程执行 RESUME 指令。 在线程被中断唤醒的情况下,在中断服务程序完成并执行 RTE 指令时,线程保持运行。
请注意,指令中未使用源寄存器 Rs。 它的存在是为了向后兼容。
Class: SYSTEM (slot 3)
注意:
这是一个单独的指令。 它不能与数据包中的其他指令组合在一起。
编码