首页 文章

大型机上的虚拟化架构(z / Architecture)

提问于
浏览
0

我有兴趣研究了Intel和AMD为x86架构(分别称为VMX和SVM)添加的硬件虚拟化扩展 . 虽然这仍然是x86 CPU的一个相对新近的补充,但我的理解是大型机架构从70年代到80年代广泛使用虚拟化,例如以古老的z / VM操作系统的形式 . 甚至使用嵌套虚拟化 .

我的问题是,是否有z / VM操作系统用于实现此虚拟化的z / Architecture提供的硬件设施的公开文档?即硬件实现的控制寄存器和数据结构允许管理程序模拟访客状态并捕获必要的指令?我很好奇的另一件事是z / Architecture是否支持二级地址转换(后来添加到VMX和SVM) .

2 回答

  • 1

    为了解决这个问题,System / 370及其所有后代都支持虚拟化(它们满足virtualization requirements) . 从这个意义上说,与英特尔架构相比,从未需要特殊的硬件支持 .

    通过z / Architecture一直在System / 370,XA,ESA等上的VM guest虚拟机的性能改进传统上使用 DIAG (诊断)指令以及微代码(现在是millicode)辅助来实现 . 从现代的角度来看,它更像是半虚拟化 . 记录设施,例如,您可以启动here .

    更新 - 阅读了大量的评论,一些注释和说明 .

    • S / 370及其后代从不需要专门的硬件虚拟化支持来正确运行客户操作系统 - 不是因为虚拟化是初始设计和要求的一部分 - 事实并非如此,而是因为该架构设计得恰到好处以支持安全的多用户环境 . Popek和Goldberg的虚拟化要求实际上非常弱 - 实质上,只有特权指令才会影响系统配置 . 在第一个虚拟化系统出现之前,这个要求甚至是S / 370的前身System / 360的一部分 .

    • VM guest虚拟机的性能影响沿着两行进行 .

    • 首先,半虚拟化方法 - 主要为客户 - 管理程序通信开发架构良好的API . 它不仅用于性能,还用于各种其他服务,如VM间通信 . API已在上面提到的手册中记录 .

    • 其次,微代码扩展(VM微代码辅助)在微代码级别执行一些性能敏感的管理程序逻辑,基本上是硬件级别 . 这不是半虚拟化,而是适当的硬件虚拟化支持 . 但是在早期的370台机器上,这种支持并没有架构,这意味着它依赖于模型并且可能会发生变化 . 借助370 / XA,IBM推出了一种适当的架构方式来支持高性能虚拟化,即启动解释执行( SIE )指令 . 该指令未在操作原理中记录,而是在单独的出版物_3037572中记录 . (本文档在操作原理中多次引用 . 链接指的是文档的第一个版本,您可以下载版本2 here . 我不确定该出版物是否曾经更新过 - 可能这是最新版本 . )另外,I / O子系统也提供了VM协助 .

    我没有提到 SIE 指令和在我的原始答案中记录它的手册,这是故事的关键部分 . 我很感谢这个问题的作者和广泛的评论,这些评论使我能够检查我的记忆并弄清楚我跳过了一些重要的技术背景 . This presentation提供了z / VM核心设施的完美概述,涵盖了其他方面,包括内存管理,I / O,网络等 .

  • 3

    SIE指令是虚拟化软件如何访问z / Architecture解释执行工具(IEF) . 自20世纪90年代初以来,界面的确切细节尚未公布 .

    这是一种基于硬件的功能 . IEF提供两个级别的虚拟化 . 固件(通过SIE指令)使用第一级创建 partitions . 在每个分区中,您都可以运行操作系统 . 其中一个操作系统是z / VM . 它使用SIE指令(在第一级SIE指令的上下文中运行)运行 virtual machines . 您可以在虚拟机中运行任何z / Architecture操作系统,包括z / VM本身 .

    SIE指令将虚拟服务器(分区或虚拟机)的描述作为输入 . 然后硬件运行虚拟服务器的指令流,只有当它需要来自SIE指令的任何帮助时才停止,无论是分区管理程序还是z / VM管理程序 .

相关问题