最近,我一直在研究一个称为磨坊的CPU体系结构的概念。
磨坊(虽然可能是蒸气软件) 使用元数据用于CPU中的各种东西,例如软件推测负载产生标记为非结果的值(NaR)。如果以后的指令试图非投机性地存储该结果,硬件就会检测到这一点和错误。
我想知道在架构中使用元数据时,其他CPU是否类似。
发布于 2020-05-09 21:02:30
我所知道的几个随机例子,当然不是详尽无遗的清单。如果有谁使用元数据来处理磨坊所做的所有事情的话,那就去看看吧。“磨坊”所做的一些工作是独一无二的,但有些想法在其他“国际审计准则”中以类似的形式出现。
是的,IA-64 Itanium也有not-a-thing加载结果,如果你读它们的话会出错,因为和磨坊一样的软件推测的原因。它的建筑师把它描述为史诗般的ISA。(EPIC =显式并行指令计算,而不是CISC或RISC。(这也是一个VLIW.) 从维基百科
该体系结构实现了大量寄存器:
因此,对于整数,确实存在独立的元数据。对于FP,元数据是在带内编码的.
其他与软件可见猜测无关的元数据示例包括:
x87 FPU有8个体系结构寄存器,但普通指令以寄存器堆栈的形式访问它们,其中st(0)的底层寄存器由x87状态字中的一个字段确定。(也就是说,元数据在体系结构上是可见的,可以用fincstp修改以旋转“左轮手枪桶”。)有关良好的图表和x87设计的介绍,请参见x87。另外,x87对每个寄存器都有一个免费/正在使用的标志;试图将其加载到已在使用的寄存器中会产生一个FP异常(如果隐藏了异常,则会产生一个NaN )。通常,正在使用的标志是通过“弹出”注册堆栈( fstp )来清除的,以便存储和弹出,或者其他什么,但是也有ffree将任何x87寄存器标记为空闲。
微观结构(仅影响性能):
显然,一个微体系结构必须保存大量关于正在运行的指令的信息,比如它们是否已经完成执行。但至少有一个关于数据的元数据(而不是代码)的有趣例子:
在AMD Bulldozer家族和Bobcat/Jaguar中,SIMD FPU显然在实际架构注册值的同时保留了一些额外的元数据。正如阿格纳·福格在他的微结构PDF中所解释的那样,(Bulldozer系列) 19.11不同执行域之间的数据延迟()
如果将浮点计算的输出输入到具有不同精度的浮点计算,例如,如果双精度浮点加法的输出输入到单个精度加法,则会造成很大的惩罚。这几乎没有任何实际意义,因为这样的序列很可能是编程错误,但它表明处理器在XMM寄存器中存储有关浮点数的额外信息,超过128位。在英特尔处理器上没有看到这种效果。
这可能与以下事实有关:当从FMA单元指令转发到另一个FMA指令时,Bulldozer的FP延迟1周期更低,比如mulps转发到addps,其间没有sqrtps或xorps。
此外,在L1 i-缓存中,各种AMD都标记了指令边界,从而减少了反复解码的延迟。英特尔西尔佛蒙特也是这么做的。
发布于 2020-05-11 16:37:00
有许多标记的体系结构,大多数主要是研究项目。有些有最小的标记,例如Tera,它支持每64位字额外四个位--“完全/空”位、“间接”位和两个“陷阱”位。“完整/空”位是最重要的,它允许比缓存系统中更高效的生产者-消费者事务。
我所见过的最先进的标记架构仍在开发中。它最初是由BAE系统在DARPA资助下开发的,在“坠机安全”项目下有许多重要和有趣的发展/论文:
这是一种“标记丰富”的方法,每64个数据位有64个标记位,如果需要的话,可以使用64个标记位作为指向任意大标记结构的指针。该方法为“数据”和“标记”提供了几乎完全独立的管道,“安全管道”将来自输入数据的标记与输入指令类型相结合,以确定执行是否有效,如果有效,则确定输出标记应该是什么。
在事故安全项目(2015年)结束后,德雷珀工业( Draper )接手了这个项目,将其转化为“多佛固有安全处理器”(https://www.draper.com/explore-solutions/inherently-secure-processor)。2017年,德雷珀剥离了https://www.dovermicrosystems.com/,在那里,这项技术继续以"CoreGuard“的名义为各种体系结构开发。我感兴趣的两个项目是:
第一个是有趣的,因为它将这些想法推入RISC-V开源处理器社区,第二个原因是行业重量级(Cadence)的支持和与(被低估的)Ten二氧化硅体系结构的链接。
这种方法背后的动机是安全,一旦你意识到这能在安全世界中“修复”多少,就很难理解为什么你会尝试以其他方式制造计算机。但它并不局限于安全性--标记对于非常高级的数据类型方法非常有用,例如“维度分析”或多维数组的不同维度的单独索引变量类型。
https://stackoverflow.com/questions/61702729
复制相似问题