我有兴趣研究了英特尔和AMD为x86架构(分别称为VMX和SVM)添加的硬件虚拟化扩展。虽然这仍然是x86 CPU的一个相对新近的补充,但我的理解是大型机架构从70年代到80年代广泛使用虚拟化,例如以古老的z / VM操作系统的形式。甚至使用了嵌套虚拟化。
我的问题是,是否有z / VM操作系统用来实现此虚拟化的z / Architecture提供的硬件设施的公开文档?即硬件实现的控制寄存器和数据结构允许管理程序模拟访客状态并捕获必要的指令?我很好奇的另一件事是z / Architecture是否支持二级地址转换(后来添加到VMX和SVM)。
答案 0 :(得分:3)
为了解决这个问题,System / 370及其所有后代都支持虚拟化(它们满足virtualization requirements)。从这个意义上讲,与英特尔架构相比,从未需要特殊的硬件支持。
传统上,使用DIAG
(诊断)指令以及微代码(现在为millicode)辅助,通过z / Architecture在System / 370,XA,ESA等上的VM来宾的性能改进。从现代的角度来看,它更像是半虚拟化。记录设施,例如,您可以启动here。
更新 - 阅读了大量的评论,一些注释和说明。
S / 370及其后代从不需要专门的硬件虚拟化支持来正确运行客户操作系统 - 不是因为虚拟化是初始设计和要求的一部分 - 它不是,但因为架构是设计合理,以支持安全的多用户环境。 Popek和Goldberg的虚拟化要求实际上非常薄弱 - 实质上,只有特权指令才会影响系统配置。在第一个虚拟化系统出现之前,这个要求甚至是S / 370的前身System / 360的一部分。
VM guest虚拟机的性能影响分为两行。
首先,半虚拟化方法 - 主要为客户管理程序通信开发架构良好的API。它不仅用于性能,还用于各种其他服务,例如VM间通信。 API已在上述手册中记录。
其次,微代码扩展(VM微代码辅助)在微代码级别执行一些性能敏感的管理程序逻辑,基本上是硬件级别。这不是半虚拟化,而是适当的硬件虚拟化支持。但是在早期的370台机器上,这种支持并没有架构,这意味着它依赖于模型并且可能会发生变化。借助370 / XA,IBM推出了一种适当的架构方式来支持高性能虚拟化,即启动解释执行(SIE
)指令。该指令未在操作原则中记录,而是在单独的出版物IBM System/370 XA Interpretive Execution中记录。 (本文档在操作原理中多次引用。链接指的是文档的第一个版本,您可以下载版本2 here。我不确定该出版物是否曾经更新过 - 可能这是最新的此外,I / O子系统也提供了VM协助。
我没有提到SIE
指令和在我的原始答案中记录它的手册,这是故事的一个重要部分。我很感谢这个问题的作者和广泛的评论,这些评论使我能够检查我的记忆并弄清楚我跳过了一些重要的技术背景。 This presentation提供了z / VM核心设施的完美概述,涵盖了其他方面,包括内存管理,I / O,网络等。
答案 1 :(得分:1)
SIE指令是虚拟化软件如何访问z /体系结构解释性执行工具(IEF)的方式。自1990年代初以来,该接口的确切详细信息尚未发布。
这是基于硬件的功能。 IEF提供了两个级别的虚拟化。固件(通过SIE指令)使用第一级来创建分区。在每个分区中,您都可以运行一个操作系统。这些操作系统之一是z / VM。它使用SIE指令(在第一级SIE指令的上下文中运行)来运行虚拟机。您可以在虚拟机中运行任何z / Architecture操作系统,包括z / VM本身。
SIE指令将虚拟服务器(分区或虚拟机)的描述作为输入。然后,硬件将运行虚拟服务器的指令流,仅在它需要发出SIE指令的任何内容(无论是分区管理程序还是z / VM虚拟机管理程序)的帮助时才停止运行。