任何CPU体系结构都使用元数据吗?

问题描述 投票:4回答:2

我最近一直在研究称为Mill的CPU体系结构的概念。

用于CPU中各种事物的磨机(尽管可能是汽机)uses metadata,例如软件投机负载产生的值标记为不是结果NaR)。如果以后的指令尝试以非推测方式存储该结果,则硬件会检测到该错误并出故障。

我想知道在架构中使用元数据的意义上是否还有其他CPU相似。

cpu-architecture
2个回答
4
投票

是的,IA-64 Itanium还具有not-a-thing加载结果,如果您读取结果,这些结果将出错,原因与Mill的软件推测原因相同。其架构师将其描述为EPIC ISA。 (EPIC =显式并行指令计算,与CISC或RISC相对。它也是VLIW。)From Wikipedia

该体系结构实现了大量寄存器:

  • 128个通用整数寄存器,它们是64位加上用于推测执行的一个陷阱位(“ NaT”,代表“不是事物”)。其中的32个是静态的,其余的96个则使用可变大小的寄存器窗口堆叠,或者为流水线循环而旋转。 gr0始终读为0。

  • 128个浮点寄存器。浮点寄存器的长度为82位,以保持中间结果的精度。代替整数寄存器那样的专用“ NaT”陷阱位,浮点寄存器具有一个称为“ NaTVal”的陷阱值(“不是事物值”),类似于(但不同于)NaN。它们还具有32个静态寄存器和96个窗口或旋转寄存器。 fr0始终读为+0.0,而fr1始终读为+1.0。

因此,对于整数,确实存在单独的元数据。对于FP,元数据被带内编码。


[与软件可见的推测有关的元数据的其他示例包括:

x87 FPU有8个体系结构寄存器,但是普通指令将它们作为寄存器堆栈进行访问,其中st(0)的基础寄存器由x87状态字中的字段确定。 (即,元数据在结构上是可见的,可以用fincstp进行修改以旋转“左轮手枪的枪管”。)请参见fincstp以获取良好的图表并介绍x87设计。而且,x87对每个寄存器都有一个空闲/使用中标志;尝试加载到已在使用的寄存器中会产生FP异常(如果屏蔽了异常,则会生成NaN)。通常,通过使用http://www.ray.masmcode.com/tutorial/fpuchap1.htm“弹出”寄存器堆栈来存储和弹出(或其他方式)来清除使用中标志,但是还有fstp将任何x87寄存器标记为空闲。


微体系结构(仅性能影响:):

显然,微体系结构必须保留大量有关正在执行的指令的信息,例如它们是否已完成执行。但是至少有一种有趣的元数据案例是关于

data

,而不是代码:在AMD Bulldozer系列和Bobcat / Jaguar中,SIMD FPU显然保留了一些额外的元数据以及实际的体系结构寄存器值。 ffree

(Bulldozer系列)19.11不同执行域之间的数据延迟:

当将浮点计算的输出输入到浮点时,会有很大的损失以不同的精度计算点,例如,如果输出为双精度浮点加法被输入到单精度加法中。这几乎没有任何实际意义重要性,因为这样的序列很可能是编程错误,但是它表明处理器存储有关128位以外的浮点数的其他信息在XMM寄存器中。在英特尔处理器上看不到这种效果。

[这可能与以下事实有关:从FMA单元指令转发到另一FMA指令时,推土机的FP延迟降低了1个周期,例如ffree在没有As Agner Fog explains in his microarchitecture PDFmulps的情况下转发到addps之间。

此外,各种AMD uarches在L1 I高速缓存中标记了指令边界,从而减少了重复解码的延迟。英特尔Silvermont也这样做。


0
投票
[有很多标记的架构,主要是研究项目。有些标签的标记很少,例如Tera MTA,它支持每个64位字增加4个附加位-“全/空”位,“间接”位和两个“陷阱”位。 “完全/空”位是最重要的,它允许比缓存系统更有效的生产者-消费者事务。

我所看到的最先进的标记架构仍在开发中。它最初是由BAE系统在DARPA资助下开发的,在“ CRASH-SAFE”项目下有许多重要而有趣的进展/论文:

    sqrtps
  • 这是一种“标记丰富”的方法,每64个数据位具有64个标记位,如果需要,可以使用64个标记位作为指向任意大标记结构的指针。该方法为“数据”和“标签”提供了几乎完全独立的流水线,“安全流水线”将来自输入数据的标签与输入指令类型进行组合,以确定执行是否有效,如果有效,则输出什么标签?应该是。

    [Crash-Safe项目结束后(〜2015年),Draper Industries选中了该项目,并将其变成“ Dover固有安全处理器”(xorps)。在2017年,Draper诞生了https://web.archive.org/web/20191022221212/http://www.crash-safe.org/,该技术将继续以“ CoreGuard”的名义针对多种架构开发。我感兴趣的两个项目是:

  • Transmeta(https://www.dovermicrosystems.com/
  • 第一个很有趣,因为它将创意引入了RISC-V开源处理器社区,第二个因为既得到了业界重量级人物(Cadence)的支持,又与(未得到充分认可的)Tensilica体系结构建立了联系。] >

    这种方法背后的动机是安全性,一旦您意识到在安全领域可以“修复”多少安全性,就很难理解为什么您甚至会以其他方式制造计算机。但这不限于安全性-标签对于非常高级的数据类型化方法(例如“维度分析”或针对多维数组的不同维度的单独的索引变量类型)非常有用。

  • © www.soinside.com 2019 - 2024. All rights reserved.