Linus 批评英特尔的 LAM 代码,拒绝将其合并到内核

英特尔希望将其 LAM(Linear Address Masking :线性地址掩码) 功能合并到 Linux 6.2,但该功能被 Linus 批评了一番,并拒绝了该合并。

英特尔线性地址掩码 (LAM) 允许软件将 64 位线性地址的未转换地址位用于元数据,线性地址使用 48 位(4 级分页)或 57 位(5 级分页),而 LAM 允许将 64 位线性地址的剩余空间用于元数据。

简而言之,英特尔 LAM 在使用用户空间地址的未翻译地址位,因此它可用于用户空间内存清理和标记等元数据的多种用途,它的本质上类似于 AMD 的高位地址忽略“UAI”(Upper Address Ignore )以及 Arm 的顶部字节忽略“TBI”(Top-Bits-Ignore)功能。

英特尔在 2020 年初次对外展示 LAM,从那以后一直致力于 Linux 内核支持。11月中旬,英特尔工程师为 Linux 6.2 的 x86/mm 分支提交了大量补丁,希望将该功能代码合并到内核中。

然而,LAM 随即遭受了 Linus 的猛烈批评,不仅是内核实现代码,Linus 甚至连“LAM” 这个名称都不满意:

现在要求英特尔将这个  LAM 功能称为“Top-Bits-Ignore” (TBI) ,会不会有些太晚了?

...

整个 LAM  功能不是特定于 mm ,它可以轻松影响每个线程。

想象一下,有一个设置,其中一些线程使用标记指针,而一些线程不使用。例如,地址的高位可能包含一个仅在虚拟机中使用的标签,甚至可以让“本机”模式使用完整的地址空间,并将其自身及私有数据虚拟地放在高位。

再想象一下,使用虚拟地址掩码不仅能实现内存清理器,还能实现一种真实的分离功能(例如,JITed 代码可能基本上只能访问较低的位,而 JITter 本身可以看到整个地址空间)。

也许这不是 LAM 在 x86 上的工作方式,但它对 untagged_addr() 的更改并不是 x86 特定的。所以我真的认为这是完全错误的,除了命名之外, 它全都是一些无效的假设。事实上,这个特定于 mm 的 LAM 功能,最后只会成为代码中一个活跃的 Bug ,即使在 x86-64 上也是如此。

所以我真的认为 LAM 是一个根本性的设计错误,虽然我把它拉出来并解决了琐碎的冲突,但我又把它拉了下来,因为它的设计是错误的。

Linux 内核邮件列表讨论了对英特尔的 LAM 的 Linux 实现方式的设计更改。但 Linus 认为英特尔 LAM 代码还没有为 Linux 做好准备,因此最终没有合并代码。英特尔已提交新的 x86/mm pull ,但删除了 LAM 代码英特尔 Linux 工程师将重新编写 LAM 代码,为 Linux 6.3 做准备。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/222141/linus-bashes-intel-lam

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。