虚拟机系统及其计算机系统的输入/输出执行方法

文档序号:89795阅读:603来源:国知局
专利名称:虚拟机系统及其计算机系统的输入/输出执行方法
本发明涉及到高速虚拟机系统(VMS),特别是用于减少虚拟机系统I/O模拟内务操作的方法和系统。
1975年6月24日揭示的日本公开专利申请ИO、55-76950的说明书,1981年2月23日揭示的ИO、56-19153,1980年3月25日的ИO、55-42326,以及美国专利ИO、4,459,661(1982年4月21日由金田三郎等基于最近日本公开专利申请的协约优先权提交的申请)都论及了虚拟机系统。
图1是实计算机系统9000的结构配置。数字1000代表中央处理机(CPV),数字2000表示主存储器,数字3000表示I/O处理机(IOP),数字4000为I/O控制器(IOC)。数字100表示CPU1000和主存储器2000之间的信号传输线,数字200代表CPU1000和I/O处理机3000之间的信号传输线,数字300表示I/O处理机3000和主存储器2000之间的信号传输线,数字400表示I/O处理机3000和I/O控制器4000之间的信号传输线。实计算机系统9000在主存储器2000操作系统(OS)的总系统资源管理(CPU,主存储器和I/O设备)程序的控制下,进行工作。
虚拟机系统(VMS)的结构见图2。实计算机系统10000的硬件结构(CPU,主存储器和I/O设备)与图1的结构相似,但它的主存储器2000中存有虚拟机系统的控制程序(VMCP或简写为CP)。多元逻辑机(称之为虚拟机(VM))是靠虚拟机控制程序的硬件模拟功能进行工作的逻辑结构。虚拟机(VM)的10000-1(VM1),10000-2(VM2)和10000-3(VM3)均为逻辑结构,其硬件结构与实计算机系统(称之为主系统)10000相同。控制虚拟机的OS-И(И=1、2,3)存储在各个虚拟机的主存储器2000-И(И=1,2,3)中,这些操作系统(OS)在一部主系统的控制下同时运行。图2中的各个虚拟机的硬件结构((CPU,主存储器,I/O处理机和I/O控制器),都由虚拟机控制程序(VMCP)作逻辑配置,因而大部分实体都靠由主系统配置的各虚拟机的相应硬件结构来维持。例如,作为它的主存储器而言,虚拟机可排他地占有部分主系统的主存储器2000,也可访问主存储器2000。作为它的I/O设备,虚拟机可分享主系统的I/O设备,也可排他地占用I/O设备。换句话说,主系统中可以没有相应的I/O设备,I/O设备可由虚拟机控制程序的模拟功能作虚拟配置。在任何情况下,各个虚拟机主存储器2000-И(И=1,2,3)的操作系统(OS)都可访问与主系统硬件结构相同的硬件结构(CPU,主存储器,I/O处理机,I/O控制器)。应该指出,各个虚拟机的结构(硬件结构和从操作系统角度来说的功能)都可以与主系统的结构略有差异。同样,各虚拟机(VM)的结构也可以不相同。例如,主系统的机器指令组可不必与各虚拟机的机器指令组精确地一一相同。但是在本发明中,虚拟机系统不予以采用完全不同的机器指令组,因为这将增大虚拟机控制程序的负荷,并增大主系统仿真机构的规模。本发明的虚拟机(VM)要求大多数机器指令都可在VMCP不作干预的情况下在主系统上直接执行,并且有与主系统相同的性能(执行速度)。虽然图2中仅有三部虚拟机,实际上可容纳任意数量的虚拟机,这一数量的上限取决于主系统资源容量和虚拟机性能之间的折衷。主系统有一个特许状态和一个非特许状态。对系统赋予重大影响的机器指令(例如I/O指令或系统中断屏蔽位更换指令)被称为特许指令,它只能在特许状态下使用。这一点在计算机界是众所周知的。
图3是图2中的虚拟机VM1存储器层次的存储器分级结构。数字2060表示由VM1的OS1产生的虚拟空间。OS1存储在VM1的主存储器2000-1中。VM1的主存储器2000-1被拷贝在主系统的主存储器2002中(主系统的主存储器2000被分割为硬件系统区2001和可编程序区2002,参见图7)。该拷贝由地址转换表2010给出。图4a所示为地址转换表2010(1)。该地址转换表含有对应于VM1主存储器2000-1中的地址V2和主存储器2002中的相应地址r的表目。当VM1的OS1在存储器22000-1中运行时,地址转换表2010(1)的起始地址将存储在CPU1000基本控制寄存器1100(见图7)的一个控制寄存器1110(实地址转换表起始地址寄存器(RATOR)中。在这时,地址转换表2010(1)存储在VM10000-1的主存储器2000-1中,即,主系统的主存储器2002中。同时,起始地址被存储在由主系统的主存储器2002中的一个地址所描述的寄存器1110中。
图3中的数字2060表示VM1的OS1产生的虚拟存储器;并由OS1管理的地址转换表2040给出VM1主存储器2000-1的拷贝。图4b是地址转换表的格式。它含有虚拟存储器2060的地址V3和VM1主存储器2000-1的地址V2相对应的表目。当VM1的OS1在虚拟存储器2060中运行时,地址转换表2040的起始地址存储在CPU1000基本控制寄存器1100(见图7)的一个控制寄存器1120(虚拟地址转换表起始地址寄存器(VATOR)(VATOR)中。此时,由于地址转换表2040存储在OS1的主存储器2000-1中,因而起始地址将由OS1的主存储器2000-1的一个地址系统来描述。地址转换表2010(1)(称为转换表A)由虚拟机控制程序VMCP替各虚拟机进行管理和修正。地址转换表2040(称为转换表B)由各虚拟机的操作系统替它本身的虚拟存储器作管理和修正。主系统的主存储器2002称作为1级存储器,各虚拟机的主存储器2000-И(И=1,2,3,……)称为2级存储器,由各个虚拟机的OS产生的虚拟存储器2060(通常OS可产生多个虚拟存储器)总称为3级存储器。虚拟存储器通常分割为一些有预定容量(例如4KB)的页;并被变换到各页的主存储器中,一定数量的连续页数(例如256页,1MB)称为一段,这在计算机界也是众所周知的。图3中的数字2020代表由VMCP为起动其输入输出操作而产生的I/O操作命令字(CCW)。由于VMCP是在1级存储器上运行工作的,因而在1级存储器地址产生CCW2020。它称为1级CCW。1级CCW无需作地址转换;当I/O起动命令发给1级CCW时,由I/O处理机3000直接对它加以变换并发送给I/O控制器4000。I/O控制器4000替各I/O设备执行各个CCW。数字2030表示由虚拟机操作系统(OS)产生的命令字(CCW),它由2级存储器地址来描述。2级CCW由虚拟机的OS产生。当I/O起动指令从虚拟机的OS发给CCW时,它可通过VMCP转换为等效的1级CCW;I/O的起动可通过虚拟机控制程序(VMCP)由等效的1级CCW实施。然而,这将增加虚拟机控制程序的内务操作。因而,可采用另一种方法在VMCP的干预下,把地址转换表中由2级存储器转换为1级存储器(转换表A)的地址传送给I/O处理机3000,I/O处理机3000查找转换表2010后,把2级CCW(或2级存储器地址)中的数据地址转换为1级存储器地址。这种方法减少了VMCP的干预,减少内务操作。在许多情况下,虚拟机的OS在3级存储器上执行,因而由虚拟机OS所产生的CCW往往存储在3级存储器中。图3中的数字2050表示由3级存储器地址描述的CCW,即3级CCW。当虚拟机的OS把I/O起动指令发给3级CCW时,它把地址转换表中的地址由3级存储器传送给2级存储器(转换表B)并将该地址由2级存储器传送给1级存储器(转换表A)进而传送给I/O处理机3000(图7)。I/O处理机3000查找转换表B,把3级CCW的数据地址(3级存储器地址)转换为2级存储器地址;再查找转换表A,把转换而得的2级存储器地址转换为1级地址,以便执行CCW。
图4C是地址转换缓冲器3030,它设置在I/O处理机3000(图7)的局部存储器中,用于减少I/O处理机3000地址转换的内务操作。地址转换缓冲器3030的字段1含有VM序号(VM#);字段2含有地址转换表A和B的起始地址;字段3容纳其识别特征位;字段4包含地址转换前的CCW数据地址;而字段5包含地址转换后的1级存储器地址。I/O处理机3000(图7)查找地址转换缓冲器以便作地址转换。如果查找不到该地址,则查找转换表B和A来作地址转换,并把被转换的地址寄存在转换缓冲器3030中。地址转换缓冲器是I/O处理机3000中的一个高速局部存储器,其查找速度比在主存储器2002中查找转换表B和A要快。应指出,在I/O执行期间,2级CCW,3级CCW和数据缓冲器都应固定在1级存储器上。图5给出了把主系统主存储器2002的连续区域分割为子区域的方法。这些子区域被用作各相应虚拟机的主存储器。在使用这种虚拟机时,把预定的地址位移α加到虚拟机主存储器的地址上,就可求得主系统主存储器2002的地址。图5中,VM1的地址位移是α1,VM2的地址位移是α2。这种情况下,从2级存储器地址转换为1级存储器地址的地址转换2010可能只是一个管理各个虚拟机的上、下限地址的转换表,如图5 2010(2)所示。这种情况下,进行2级CCW的地址转换十分方便,对2级CCW来说,不需要地址转换缓冲器3030的表目(地址转换缓冲器3030的字段3为“0”的表目)或者说,如图5所示,把转换表2010(2)读入I/O处理机3000(图7)的局部存储器中;由虚拟机的序号(VM#)得到地址位移α,叠加上α,从而实现地址的转换(从2级存储器地址转换到1级存储器地址)。高速虚拟机模式可供以下情况下虚拟机使用,即虚拟机(图3)的全部主存储器在主系统的主存储器2002中是常驻的和固定的;或者它占有主系统主存储器的一个连续区域(见图5)。在采用高速虚拟机模式时,可直接执行由虚拟机OS发出的特许指令(没有VMCP干预时,以几乎与主系统相同的性能执行指令)。但是,虚拟机的I/O指令仍需要VMCP干预,详见下文。
下面,参照图6说明VMCP执行虚拟机OS发出的起动I/O指令的方式。虚拟机的OS指示与I/O设备相对应的子通道号(子通道#),发出起动I/O指令。由于这一子通道的编号是从属于虚拟机的,因此称其为虚拟子通道号#。VMCP把它转换为相应的实子通道号#。这一对应关系是在定义虚拟机时确定的。VMCP检验由虚拟机OS发出的起动I/O指令的CCW的级别。通常,它用起动I/O指令的操作数表示。假定该起动I/O指令送到3级CCW。图6中,CCW2810是3级存储器的CCW,其数据地址是3级存储器地址。VMCP把操作数2800加到OS产生的CCW2810上,发出起动I/O指令。操作数2800包含有指示CCW级别的字段L;当L=3时,还包含有转换表B的起始地址VATOR,及其段长SS和页面大小PS。操作数2800也包含转换表A的起始地址RATOR,及其段长SS,页面大小PS和CCW2810的地址。它们通过信号传输线200,按VMCP的起动I/O指令,送到I/O处理机3000(图7);而基本信息被置于相应的子通道寄存器3011中。类似的基本信息被存储在子通道控制块2090(见图7)的相应的子通道控制块中(见图10中的子通道控制块2091)。I/O处理机3000(图7)采用子通道中的地址转换表执行OS产生的CCW2810,同时转换地址。
图7给出了原先的虚拟机系统的硬件配置和与I/O执行有关的方块图。
图7的CPU1000包括一个前置寄存器1010(它包括含有硬件中断信息的区域前缀(PSA)的地址)。CPU控制寄存器1100和包含有CPU基本状态的程序状态字(PSW)1020(如一个中断控制位或接着要执行的下一个机器指令地址)。它也包括一个I/O指令执行电路1030,一个I/O中断电路1040,一个I/O指令执行微程序1050和一个I/O中断处理微程序1060。代表虚拟机模式的V-位是在作为虚拟机系统特征位的1090中。在虚拟机运行期间,由VMCP将这一位置于“1”。高速虚拟机模式状态的特征位H存储在1090中。虚拟机系统控制标记1090也可以为其它形式。例如,可提供VMCP模式(管理程序模式)和虚拟机模式。虚拟机模式可以包括优选的或高性能的虚拟机模式和非优选的虚拟机模式。它们多少有些类似。如上所述,I/O处理机3000执行3级CCW或2级CCW(见图3),同时在微程序3020控制下,根据包含在子通道控制块2090和子通道寄存器3010中的地址转换信息(图6),使用地址转换缓冲器3030(见图4c)的信息。图7中的主存储器2000被分割为硬件系统区(HSA)2001和可编程序区2002、HSA2001包含有供CPU1000和I/O处理机3000使用的硬件信息。它可以用CPU和I/O处理机的微程序1050,1060和3020进行存取和更新,但不能用访问CPU1000的一般用户的机器指令。可编程序区2002可用机器指令访问,就OS或VMCP而言,它是一个主存储区。与I/O装置的操作相关联的那些I/O指令,如起动I/O,都要以请求排队的方式在I/O请求队列2070中排队。2070由包含有I/O请求实子通道号(由地址指示器互连)的控制块2071组成。在对I/O请求队列进行排队后,起动信号通过信号传输线200送到I/O处理机3000。I/O处理机3000对HSA2001中的请求队列2070进行访问,并顺序地读出请求列队单元2071,处理I/O请求。I/O中断请求按实中断的优先级在I/O中断请求队列2080中排队。其结构示于图9中。可以得到8个中断优先级0,1,2,3,4,5,6和7。当发出I/O指令时,由操作数连同子通道号一起来分派优先级。图10示出了子通道控制块2090(图7)中的子通道控制块2091。这些子通道控制块按实子通道编号次序排列,其位置完全由实子通道号确定。子通道控制块2090的起始地址置于CPU1000(图7)控制寄存器1100之中的一个控制寄存器中。中断优先级可被分配给每个子通道。假设,虚拟机的OS发出I/O指令,同时指定子通道号和0~7级中断优先级中的某一级。由于图7中VM的模式位1090是“1”,因此I/O指令执行微处理机(μP)1050把该控制信息传送给虚拟机控制程序(VMCP)。控制信息通过VMCP区域前缀(PSA)2100中的一个新的程序状态字传送给VMCP,作为一种中断控制信息。由于在VM起动时,VMCP的PSA地址已经被存放在VMCP前缀寄存器1010(图7)中,所以可访问该地址。
VMCP将虚拟机OS指定的子通道号作为虚拟子通道号处理,把它转换成实子通道号并管理实子通道状态。如果实子通道号是有效的,VMCP就指定地址转换信息2800(见图6)并代替虚拟机的操作系统发出I/O指令。
由虚拟机OS指定的中断优先级是虚拟中断优先级。VMCP在把虚拟中断优先级作为实中断优先级的同时发出I/O指令。因此,实中断优先级将与各虚拟机的OS共用。于是,从各虚拟机OS子通道发出的I/O中断请求被混合排列在图9的I/O中断请求队列2080的实中断优先级队列中。
由VMCP干预虚拟机OS的I/O指令的执行的理由如下(一)由虚拟机OS指定的虚拟子通道号必须转换成实子通道号。
(二)由于实子通道号可由各虚拟机的OS共用,所以需要子通道调度。
图11为控制I/O中断的一种方法。从子通道发出的I/O中断请求,由I/O处理机3000检测,相应的子通道控制块排在I/O中断请求队列2080中(见图7)。I/O中断请求队列的结构如图9所示。子通道控制块按实中断优先级的顺序排队。把图11所示的相应的实中断未决寄存器1042的位置成“1”,当中断未决寄存器1042的位和相应的实中断优先级屏蔽位寄存器1041的位都是“1”,PSW1020的I/O屏蔽位也是“1”时,则起动处于相应的实中断优先级的那个I/O中断,并把该控制信息传送给I/O中断处理微程序1060。上述操作由图11所示的硬件电路完成。
如上所述,在虚拟机系统中实中断优先级与各虚拟机OS共用。于是,在虚拟机运行期间,把实中断优先级屏蔽位寄存器1041的各个位置于各虚拟机OS的中断优先级屏蔽位的“或”功能状态,亦即置成“1”,使得中断总是可以接受的。PSW1020的I/O屏蔽位也被置成“1”。因而,如果实中断未决寄存器1042的一个位由子通道发出的I/O中断请求改变成“1”,那么,“与”门1046中的某个门的输出将变为“1”,“或”门1043的输出变为“1”,“与”门1044的输出也变为“1”,于是I/O中断处理微程序1060立即被图11所示的I/O中断电路所起动。I/O中断处理微程序1060使排在相应的最高中断优先级I/O中断请求队列中的子通道撤离队列(图9),以便把该中断反映到VMCP的前缀。如果实中断优先级的中断请求队列是空的,则实中断优先级实中断未决寄存器1042的位被置成“0”,结果中断未决寄存器被清零。通过对VMCP的中断反映,控制信息被传送给VMCP的I/O中断处理程序。把请求I/O中断的实子通道号作为I/O中断参数和相应的VM号一起送给VMCP。VMCP完成下列处理,以便把I/O中断反映到虚拟机。
(一)把实子通道号转换成虚拟子通道号。
(二)检查VM的中断优先级屏蔽位寄存器和PSW的I/O屏蔽位,借以确定该I/O中断是否可以接受。
(三)如果VM接受中断,则把该中断反映到VM的前缀PSA。
(四)如果VM不接受中断,则该中断被VMCP处以未决状态。
由于实中断优先级由各VM共用,所以必须把屏蔽位置于各VM相应屏蔽位的“或”功能状态(通常为“1”)。结果,即使是在VM中属不能中断的优先级,也可使VMCP中断。在这样的情况下,I/O中断由VMCP处以未决状态。于是,对送往子通道的I/O指令来说,需要由VMCP干预的模拟操作。
如上所述,在原虚拟机系统的虚拟机OS的I/O执行中,为了直接执行3级CCW和2级CCW,需要利用I/O处理机的功能。否则就是要VMCP不断进行干预和进行模拟操作。于是具有较高I/O发出频率的负载将会增加VMCP的模拟内务操作。
本发明的目的是用VMCP减少虚拟机OS的I/O指令和I/O中断的模拟内务操作;用硬件和微程序支持VM的I/O指令和I/O中断的直接执行。
按照本发明,在含有虚拟机系统(VMS)的系统中,VMS中至少有一个操作系统可借助一个实计算机系统(主系统)和控制VMS的控制程序,主系统的I/O设备是否被OS专用或由OS占用,根据存储在实计算机系统中的信息来确定。如果由I/O指令而不是由OS发出的I/O起动指令指定的I/O设备专供正在运行的OS使用,则I/O指令就发给该I/O设备;如果不是专供正在运行的OS使用时,则VMCP被中断。
从以下结合附图所作的详细描述中,便可以清楚地了解本发明。其中图1是由一般OS控制的实计算机系统的方块图;
图2是以往虚拟机系统的方块图;
图3是以往虚拟机的存储器分级结构;
图4~11是先有技术的实例;其中图4A~4C是地址转换表;
图5是占有实主存储器一个连续区的VM的配置;
图6是由VMCP为进行VM的I/O模拟而发出的I/O指令;
图7是主系统的配置;
图8是I/O请求队列;
图9是I/O中断请求队列;
图10为实子通道控制块;
图11为I/O中断电路;
图12至图22与本发明有关,其中图12为主系统的结构;
图13为前缀控制表;
图14为转换表的地址控制表;
图15为虚拟机控制表;
图16为实际子通道控制块;
图17为起动虚拟机指令;
图18为虚拟机系统控制寄存器;
图19为虚拟机系统控制特征位;
图20A和20B描述了分配中断优先级的方式;
图21为虚拟机系统中断控制寄存器;
图22为虚拟机系统I/O中断电路。
现在叙述本发明的最佳实施方案。图12给出了本发明具体实施例之一的总结构配置。
CPU1000′的各组成部分与图7的类似,但其中有些部分的功能有所扩充。硬件系统区(HSA)2001包括的组成部分与图7的一样(I/O请求队列2070,I/O中断请求队列2080和实子通道控制块2090′)。但前缀控制表2300,转换表地址控制表2400以及虚拟机控制表2700包含了新信息。
可编程序区2002的组成部分与图7的一样(虚拟机控制程序PSA2100,VM1PSA2110,VM2PSA2120,(以及其他VM的PSA),虚拟机控制程序2200,由2级存储器转换为1级存储器的地址转换表2010,由3级存储器转换为2级存储器的地址转换表2040)。但中断优先级级数转换表2500和子通道号转换表2600包含了新信息。I/O处理机3000′与图7中的I/O处理机3000在结构上类似但功能有所扩充。以下将硬件系统区2001和可编程序区2002中的新改进内容作新的说明。
图13是前缀控制表2300。它包括虚拟机控制程序PSA地址,VM1PSA地址,VM2PSA地址以及VM3PSA地址。虽然在图13中没有一一标出,但其他虚拟机PSA地址也可以寄存在该表中。PSA地址由CPU1000′的微程序访问,它们是在可编程序区2002主系统中的地址。当虚拟机启动时,把虚拟机PSA地址作为启动指令操作数之一予以传送;当起动指令被执行时,它被存放在前缀控制表2300的对应表目中。前缀控制表2300的起始地址存放在CPU1000′的某一个控制寄存器1100′中(见图12)。前缀控制表是供选用的,并非必不可少。在某一种情况下需要使用它,这一点以后再作说明。图14是转换表地址控制表2400。对于每个虚拟机而言,它控制子通道号转换表2600的起始地址以及中断优先级转换表2500的起始地址。转换表地址控制表2400的起始地址也存放在CPU1000′的某一个控制寄存器1100′之中。查找子通道号转换表2600和中断优先级转换表2500的方法如图14所示。虚拟子通道号(两个字节)被分成为DO·256和D1,通过D.可以查寻前半个表2601,2601由地址控制表2400中对应条目的内容予以指示。后半个表2602的地址存放在前半个表26012601的第D0个条目中,以便查寻后半个表2602第D1个条目。用这种方式,可以获得对应的实子通道号D0′·256+D1′。只需要读转换表2500的对应表目就可将虚拟中断优先级转换成对应的实中断级。当子通道号转换表2600和中断优先级转换表2500是由VMCP命令指定,或者根据虚拟机的定义信息定义虚拟机时,2600和2500这两个表由VMCP制定;当虚拟机启动时,2600和2500由起动指令操作数指定。当执行起动指令时,2600和2500存放在转换表地址控制表2400的对应表目中。转换表2600,2500和2400都是供选用的,并不是必不可少的。只要在虚拟机系统中采用本发明I/O执行系统的虚拟机遵从这样一个准则虚拟子通道号等于实子通道号,并且虚拟中断优先级等于实中断优先级,那么上述这些转换表便都是不必要的了。
图15所示是虚拟机控制表2700的内容。它包括各对应虚拟机的主存大小(Z0,Z1……),由2级存储器地址转换为1级存储器地址的转换表2010的地址(RATORO,RATOR1,…)。这种信息是由虚拟机定义信息给出的,并通过起动虚拟机指令将其存储在HSA2001中的虚拟机控制表2700的对应表目中。虚拟机控制表2700的起始地址存放在CPU1000′某一个控制寄存器1100′中(见图12)。HSA2001中控制块的起始地址存放在CPU1000′中的控制寄存器1100′中,这与原先的系统一样。当支持本发明I/O执行系统的虚拟机限定为占用主存储器2002(图5)上的连续区域作为主存时,虚拟机控制表2700可由定义上、下限的转换表2010(2)取代。在采用图5所示的转换表2010(2)时,由虚拟机启动指令指定上,下限地址ai和ai+1(i=1,2,3,…)。在执行启动指令时,转换表2010(2)的对应表目被放置在HSA2001中。图16所示为实子通道控制块2090′,及其一个实子通道控制块2091′和它的虚拟机信息区2092′。虚拟机信息区2092′含有状态字段,虚拟机序号,虚拟子通道号,对应的实子通道号,虚拟中断优先级,对应的实中断优先级和通道命令字CCW地址转换信息2094。状态字段包含有一些特征位,用来指明该子通道是否被占用以及是否处于I/O直接执行抑制模式。CCW地址转换信息2094的内容与图10的地址转换信息2092一样。当在以下三种情况下定义虚拟机时,或是由虚拟控制程序命令来指定虚拟机时,或执行I/O指令时,虚拟机信息区2092′中的信息都由虚拟机定义信息来给定。
当定义虚拟机或由虚拟机控制程序的命令规定虚拟机时,同时也就指定了专用实子通道或专用实中断优先级。当专用被指定后,虚拟机信息区2092′中将放入下列字段·状态字段2093中的子通道专用特征位;
·I/O直接执行模式抑制特征位通常置于“0”,I/O直接执行模式置位于支持状态;
·专用虚拟机序号;
虚拟子通道号和实子通道号;
·由专用VM主存储器(2级存储器)转换为1级存储器的地址转换表的起始地址(实地址转换表起始寄存器(RATOR),见图4a),放置在通道命令字(CCW)地址转换信息2094中。如果专用VM占有图5所示的主存储器,那么就可确定上限ai和下限ai+1(i=1,2,3,…)。
在共用子通道中,在执行I/O指令时,这种信息是按需确定的。在这种情况下,它被放置在I/O发给虚拟机VM信息区的相应字段内。
图17所示为起动VM指令的一种格式。数字2900表示起动VM的指令,数字2910表示操作数。操作数2910包括VM序号,VM程序状态字PSA,VMPSA地址,子通道号转换表2600(图14)的起始地址,中断优先级转换表2500(图14)的起始地址,由VM主存储器转换为主系统主存的地址转换表2010(图15)的起始地址RATOR(见图4a),以及VM主存储器容量。对于后两项来说,当要起动的VM使用图5所示的主存储器2002的连续区作为VM主存储器时,可以指定上限ai和下限ai+1(i=1,2,3,…)。在起动VM时,在上述那些操作数信息中的VM运行程序状态字、VMPSA地址、实中断优先级状态和VMS控制特征位也就被确定了,而其他许多信息则在定义VM时由VM定义信息来确定。实中断优先级状态的实中断优先级专用状态和VM系统控制特征位将在后面解释。那些操作数由VM控制程序(VMCP)规定。虽然图17所示的信息作为操作数是需要的,但是起动VM的指令不一定是图17所示的格式。图18所示为VMS的控制寄存器1080。寄存器1081包含正在运行的VM序号,它由起动VM的指令来规定。该寄存器的内容由起动VM指令的操作数2910(图17)的一个字段的内容给定。图19所示为VMS的控制特征位1090′(见图12)。这些特征位由VM起动指令(图17)操作数的一个字段预置初始状态。它们分别有下列意义。
V在VM运行期间,它是“1”。在虚拟机控制程序运行时或在实计算机模式时,它是“0”。它由起动VM指令置于“1”;当通过中断指令把控制信息传送给VMCP时,它置于“0”。这与先有技术系统(图7)是同样的。
H在VM运行期间,当可以直接执行特许指令时,它置于“1”。当该特征位是“1”时,在VM运行中的大多数特许指令都直接由CPU1000′的指令执行电路执行。当H是“1”时,与原先的系统(图7)一样,它是高速VM模式。
R当VM的OS受到限制,致使虚拟子通道号等于实子通道号,虚虚拟中断优先级等于实中断优先级时,R被置于“1”。当R是“1”时,则无需通过微程序来进行子通道号转换和中断优先级转换(在这种情况下,图14所示的转换表2400,2600和2500就是不必要的了)。
D当能按本发明通过VM(在虚拟机控制程序不作干预的情况下)进行直接I/O执行时,D是“1”。它最初由虚拟机控制程序的起动VM指令置于“1”。
И当正在运转的VM在共用中断优先级上有一个中断未决因子(对于VM来说实际上是由VMCP处以未决的)时,它被置于“1”,对正在运转的VM的虚拟中断优先级屏蔽位而言,此时是可中断的(在VM程序状态字的I/O屏蔽位是“0”时,是不可中断的)。当检查可被虚拟中断优先级接受的VMI/O中断请求的指令被执行时,将使用这一特征位。它由虚拟机控制程序通过起动VM指令预置初始状态。
图20a和20b是一种分配实中断优先级的方法。这里使用了从0到31的32个实中断优先级。实中断优先级0是最高优先级,为虚拟机控制程序所专用。专用于各VM的实中断优先级以从实中断优先级1开始的升序排列(对中断优先级而言为降序)分配给各专用VM。共用中断优先级按照从实中断优先级31开始的降序(对中断优先级而言为升序)分配给各VM。在图20a和20b中,实中断优先级1被分配给VM1的虚拟中断优先级0,它是专用的;实中断优先级31分配给虚拟中断优先级1-7,它由各VM共用。对于VM2和VM3来说,实中断优先级的分配如图20a和20b所示。VM1中的虚拟中断优先级实际上是0或(1-7)。因此,有两个实中断优先级可以有效地由VM1的OS使用。通过操作指令可以对该操作系统进行限制。完全专用于VM的特殊中断优先级应该根据VMS的总计划确定,并且应由虚拟机控制程序控制。由此确定的实中断优先级的专用的共用状态1,由起动VM指令的操作数给出(见图17),并且在执行该指令时,专用的共用状态1将寄存在实中断优先级专用状态寄存器1049中(图21)。
图21所示为实中断优先级屏蔽位寄存器1041′,实中断未决寄存器1042′,实中断优先级状态寄存器1045和实中断优先级专用状态寄存器1049。它们都包括在图12的I/O中断电路1040′中。寄存器1041′和1042′与先有技术系统中的那些寄存器是类似的,但是位数增加了。在图21中,它们有32位,是先有技术系统中8位的4倍,增加的目的在于支援VM中实中断优先级的专用系统。因为意义相同,所以省略了寄存器1041′和1042′的说明。下面叙述实中断优先级状态寄存器1045的意义。它的含义是,当n(0-31)位是“0”时,实中断优先级n专用于正在运行的VM。在其他情况下,它置于“1”。下面叙述实中断优先级专用状态寄存器1049的含义。当C(0-31)位是“0”时,意味着实中断优先级C专用于VM;当位C是“1”时,实中断优先级C是共用的。寄存器1045和1049由起动VM指令的操作数预置初始状态。实中断优先级屏蔽位寄存器1041′由VMCP控制和更新。实中断未决寄存器1042′由I/O处理机3000′(图12)置位位,并由I/O中断处理微程序1060′(图22)来复位。
图22是本发明的I/O中断电路1040′的线路图。为简便起见,图22只给出10个实中断优先级,但实际上有32个用类似方法连接的优先级。假定实中断优先级C(C=0-31)有一个中断未决因数(也就是说,有中断请求的子通道被排列在I/O中断请求队列2080的实中断优先级(C)的等级队列中,同时未决寄存器1042′的相应位被置于“1”)。如果中断优先级C专用于当时正在运行的虚拟机,则实中断优先级状态寄存器1045的相应位是“零”,“或”门1048将输出程序状态字(PSW)I/O屏蔽位的内容,从而程序状态字1020的I/O中断屏蔽位可起有效的作用。因此,只有当相应实中断优先级屏蔽位寄存器1041′的相应位是“1”和程序状态字的I/O屏蔽位也是“1”时,与门1047的相应输出才是“1”,此时I/O中断被起动,并把这一控制信息传送到I/O中断处理微程序1060′。当中断优先级C是共用的或专用于其他虚拟机时,则寄存器1045的相应位是“1”,“或”门1048的相应输出是“1”,程序状态字1020的I/O屏蔽位不起作用,从而当相应实中断优先级屏蔽位寄存器1041′是“1”时,I/O中断被起动。经微程序1060′作中断处理后,如果中断优先级C的中断请求队列是空的,则未决寄存器1042′的相应位由微程序清除归“0”。
现在说明用硬件,主存器上的微程序和信息来执行并处理虚拟机OSI/O指令和I/O中断的方法。
这里作了如下两点假设,并且虚拟机处于高速虚拟机模式。
(一)虚拟机的整个主存储器常驻在主系统的主存储器中。
(二)虚拟机OS的直接输入/输出执行(没有虚拟机控制程序干预,包括输入/输出中断的直接执行)只供给专用子通道和有专用中断优先级的子通道。
当起动虚拟机时,虚拟机控制程序用下述一种方法,给图17的起动VM指令的操作数和实中断优先级屏蔽位寄存器1041′的位C置位。
·当实中断优先级C(0-31)专用于正在运行的虚拟机时,把相应虚拟机OS的虚拟中断优先级(为简便起见假设只有一级)的屏蔽位置于位C。
·当中断优先级C专用于其他虚拟机时,把虚拟机的相应虚拟中断优先级屏蔽位和虚拟机程序状态字的I/O屏蔽位的“与”函数置位于C位。换句话说,如果中断优先级C的中断滞后不会引起问题的话,则可以把位C置位于“0”。
·当中断优先级C由各虚拟机共用时,把位C置位于“1”。
在虚拟机运行期间,当改变虚拟中断优先级屏蔽位时,这种改变将被立即反映到实中断优先级屏蔽位寄存器1041′(图21)。相应地,改变OS虚拟中断优先级屏蔽位的指令可以通过虚拟机控制程序来模拟,或者可以通过CPU的微程序处理把这种改变反映到寄存器1041′,这与原先系统中所做的一样。当起动处于高速虚拟机模式的虚拟机时,虚拟机的程序状态字放置在图17起动虚拟机指令操作数的虚拟机运行程序状态字里,并把它放置在CPU1000′的程序状态字1020里(图12)。因此,程序状态字的I/O屏蔽位与运行中的虚拟机I/O屏蔽位与运行中的虚拟机I/O屏蔽位是一致的。由于虚拟机运行期间,操作系统的程序状态字的变化会立即反映到程序状态字1020,所以可实现这种一致性。通过直接执行方式,可以把改变OS程序状态字的指令反映到CPU1000′的程序状态字1020,或者可以通过虚拟机控制程序模拟来反映。进行那些置位之后,通过起动VM指令(图17),可把控制信息传送到虚拟机的OS。当执行指令时,图18正在运行的虚拟机序号寄存器1081,CPU1000′的程序状态字1020(图12),图13前缀控制表的相应表目,图14转换表地址控制表2400的相应表目,图15虚拟机控制表的相应表目,图21实中优先级状态寄存器1045和图19VMS控制特征位都被预置于初始状态。
我们假设,I/O指令是由虚拟机操作系统发出,在微程序1050′的控制下,CPU1000′的I/O执行线路1030′完成如下处理。
(一)如果不处于高速虚拟机状态(VMS控制特征位H=“0”,见图19),则利用虚拟机控制程序的前缀寄存器1010(图12),把中断反映到VMCP的PSA2100,使虚拟机控制程序中断。
(二)当处于高速虚拟机状态(VMS控制特征位H=“1”)时,检查是否处于虚拟机I/O直接执行状态(VMS控制特征位D=“1”)(图19)。
(三)当D=“0”时,中断虚拟机控制程序。
(四)当D=“1”时,检查VMS控制特征位R。如果R=“0”,则查找相应的虚拟子通道号转换表2600,以便把给定的虚拟子通道号转换为实子通道号。如果虚拟中断优先级由指令操作数给出,则查找中断优先级转换表,以便把它转换为实中断优先级。它是否是专用的,由实中断优先级专用状态寄存器1049来检查,并把它写入子通道控制块VM信息区2092′的状态字段中(图16)。
还要写入虚拟中断优先级和实中断优先级 之间的对应关系。当R=“1”时,不要求任何转换,并写入同样的值。
(五)当所获得的实子通道控制块2091′(图16)是专用的子通道,并有专用中断优先级时,执行I/O指令。此后的操作与实计算机系统的操作类似。当要求异步I/O设备操作时,子通道在I/O请求队列2070中排队(图8)。把条件码和控制信息返回到发出I/O的程序。
(六)如果所获得的实子通道是共用子通道,或中断优先级是共用的,则中断虚拟机控制程序并进行模拟操作,把剩下的过程委托给VMCP的模拟操作来进行。
(七)如果由虚拟机OS发出的I/O指令是检验可由虚拟中断优先级接受的(也即可由虚拟中断优先级屏蔽位接受的)I/O中断请求时,则执行以下处理。检查中断请求对应于现运行虚拟机的实专用中断优先级。如果不存在I/O中断请求,则应该检查共用中断优先级。由于虚拟机控制程序控制着共用中断优先级的中断保持,因而必须将控制信息传送给虚拟机控制程序。但是,由于这与直接执行的规则相违背,因而使用VMS的控制特征位И(图19)。当И=“1”时,这意味着虚拟机控制程序保持着待检查的I/O中断保持(可被共用中断优先级和虚拟中断优先级所接受)。于是,中断虚拟机控制程序。当И=“0”时,不存在这样的I/O中断保持,虚拟机控制程序不必中断,允许直接执行。现说明I/O中断处理。
(1)I/O设备发出的I/O中断请求由I/O处理机3000′检测,相应的实子通道控制块按HSA2001(图9)I/O中断请求队列2080的相应实中断优先级来排队,这如同在先有技术系统中所做的一样。
(2)图22所示的I/O处理机3000′将实中断未决寄存器1042′的相应位置于“1”,这也如同在先有技术系统中所做的一样。
(3)实中断优先级屏蔽位寄存器1041′按前面所述的方式置位。图22的I/O中断电路按上述方式工作。我们假定已起动I/O中断,并已把控制信息传送给I/O中断处理微程序1060′。
(4)如果出现具有虚拟机实专用中断优先级的中断,则占有的虚拟机能够接受虚拟中断优先级的中断,因为实中断优先级屏蔽位寄存器1041′和实中断优先级状态寄存器1045中已经置位。如果占有的虚拟机不能接受中断,由于程序状态字1020I/O屏蔽位以及寄存器1041′和1045的作用,对于那个实中断优先级而言,不能发生I/O中断,该控制信息将不传送给1060′,它由硬件处以未决。
(5)I/O中断微程序1060′执行以下处理。
(一)根据请求中断的实中断优先级C,撤除I/O中断请求队列2080中的实子通道(图9)。
(二)检查VMS控制特征位1090′的虚拟机特征位V和高速虚拟机模式特征位H(图19),如果V=“0”或H=“0”,则将中断反映到VMCP的PSA。使用VMCP的前缀寄存器1010(图12)。
(三)如果V=“1”和H=“1”,检查虚拟机的I/O直接执行模式位D。如果D=“0”,它就不是I/O直接执行模式,并把中断反映到VMCP的PSA。
(四)如果D=“1”,则执行以下处理。
(a)用实子通道控制块的状态字段(图16)来确定子通道是不是专用的,如果它是共用子通道,则把中断反映到VMCP的PSA。
(b)如果请求中断的实中断优先级C专用于正在运行的虚拟机,也就是说,如果实中断优先级状态寄存器1045的相应位是“0”(见图21),则把中断反映到现用虚拟机的PSA,使现用虚拟机继续工作。使用虚拟机前缀寄存器1070(图12)。用实子通道控制块2092′中的虚拟子通道号或虚拟中断优先号,把I/O中断信息反映到虚拟机前缀。
(C)当实中断优先级C专用于其他虚拟机时,把中断反映到虚拟机控制程序。接着,由虚拟机控制程序把中断反映到VM的PSA。
(d)当实中断优先级C共用时,把中断反映到虚拟机控制程序。接着,由虚拟机控制程序把中断反映到虚拟机。虚拟机可以不接受中断。在这种情况下,虚拟机控制程序把I/O中断处以未决。
如上所述,当子通道专用并处于专用实中断优先级时,可给这个子通道提供虚拟机操作系统的I/O直接执行(无需虚拟机控制程序的干预)。对于I/O中断来说,只有来自现用虚拟机专用子通道的I/O中断,才被直接执行。对于其他虚拟机专用子通道来的I/O中断,虚拟机控制程序将要进行干预,因为这要对各虚拟机进行调度。
图16实子通道控制块中状态字段2093的直接I/O执行模式抑制特征位通常为“0”,以便保障这个子通道的直接I/O执行模式。在专用子通道中,I/O指令不是来自虚拟机的操作系统,而是来自占有的虚拟机,但它可以来自虚拟机控制程序。在此情况下,把在状态字段2093中的直接I/O执行模式抑制特征位1置位于“1”,一直到虚拟机控制程序的I/O结束为止,以便抑制这个子通道的I/O直接执行模式。
因此,这个特征位可在虚拟机控制程序控制下置位和复位。在上述I/O执行系统中,要指出以下几点。
(a)虚拟机系统控制特征位1090′(图19)的R位可以略去。如果虚拟子通道号和虚拟中断优先级总是要转换的话,或者当虚拟机系统应用本发明的直接I/O执行方式,并且这些号总是相同时,则R位是不必要的。
(b)D特征位可以用H特征位来代替,但高速虚拟机模式特征位H却不能控制I/O指令的直接执行,因为除I/O指令外,它还控制特许指令的直接执行。
(C)在I/O中断处理中,如上所述,来自虚拟机(正在运行的虚拟机除外)专用的实中断优先级的I/O中断,被反映到虚拟机控制程序。由于占有的虚拟机能够接收中断,所以中断可以反映到那个虚拟机机的PSA,然后以虚拟机控制程序访问形式把控制转交给虚拟机控制程序。虚拟机的PSA地址可由图13的前缀控制表来确定。在这种情况下,有必要确定虚拟机的程序状态字,因此需要信息,它可以用各种方式根据虚拟机序号来确定,虽然没有举例说明它。
(d)子通道号转换表的起始地址,中断优先级转换表的起始地址,实中断优先级状态寄存器1045和实中断优先级专用状态寄存器1049(图21),都由起动虚拟机指令的操作数来预置初始状态(图17)。换句话说,它们可以由虚拟机控制程序的一个单独指令来预置初始状态。
正如上文所述,按照本发明,I/O指令由虚拟机操作系统发出并能直接执行,致使VMCP的I/O模拟内务操作能大大减少。这是使虚拟机性能非常接近实计算机的一个关键功能。
权利要求
1.在一个具有虚拟机系统(VMS)的系统中,VMS至少有一个操作系统(OS),可借助于一个实计算机系统(主系统)和一个控制VMS的控制程序(VMCP)同时运行,本系统的特征在于虚拟机系统的I/O执行方法包括以下几步,根据存储在实计算机中的信息,确定上述主系统的每个I/O设备是否专用于一个特定的OS;和当上述的I/O设备专用于运行中的OS时,向该I/O设备发出一个不起动该I/O设备的指令,而当上述的I/O设备不是专用于运行中的OS时,则中断虚拟机控制程序。
2.根据权项1定义的一个系统,其中包括在主系统的主存储器(实主存储器)中含有一个OS的主存储器作为第一种手段用来将地址从OS主存储器的转换成实主存储器的地址;和第二种手段是在OS建立虚拟存储器时把OS的虚拟地址转换成OS的主存储器地址,其特征在于该虚拟机系统的I/O执行方法包括以下几步,当OS发出请求I/O设备进行I/O操作的指令时,确定被该指令指定的I/O设备是否被专用于正在运行的OS;当I/O设备被专用于这个运行的操作系统以执行上述指令时,借助上述第一种或第二种手段,把该指令的地址转换成实主存储器地址;而当该I/O装置不是专用于运行中的操作系统时,就用上述的指令中断虚拟机控制程序。
3.根据权项1定义的一个系统,其中有多个I/O中断优先级和中断控制方式,每种控制方式对应一种优先级,用来控制接受与不接受I/O中断,其特点是该虚拟机系统的I/O执行方法包括以下几步,使第一中断控制方式的控制内容等于运行中的OS中断优先级控制方式的控制内容,第一中断控制方式对应于由运行中的操作系统专用的中断优先级;使第二中断控制方式(对应于由非运行中操作系统专用的中断优先级)的控制内容等于OS相应虚拟中断优先级的中断接受或不接受状态,或者使上述的第二中断控制方式的控制内容处于不接受状态;当I/O中断请求是从运行中的OS专用的I/O设备和运行中的OS专用的中断优先级发出时,则把该中断反映给运行中的OS;当I/O中断请求是从非上述I/O设备和中断优先级发出时,则把这个控制信息传送给虚拟机控制程序。
4.根据权项3定义的一,这个系统,其中有一个I/O直接执行模式特征位,它用来指定I/O操作模式,其特征在于该虚拟机系统的I/O执行方法包括以下几步,当上述的特征位处于第一状态时就使上述的反映步骤能得以实现;而当上述的特征位处于第二状态时,就用OS中的任一I/O指令和I/O中断来中断虚拟拟机控制程序。
5.根据权项1定义的一个系统,其中每个操作系统有一个第一种转换手段用来把由OS指定的虚拟I/O设备地址转换成实I/O设备地址,其特征在于该虚拟机系统的I/O执行方法包括以下步骤,利用上述的第一种转换手段,把由I/O指令指定的虚拟I/O设备地址转换成实I/O设备地址。
6.根据权项1定义的一个系统,其中每个操作系统有一个第二种转换手段用来把由OS指定的虚拟中断优先级转换成实中断优先级,其特征在于该虚拟机系统的I/O执行方法包括以下步骤,利用上述第二种转换手段,把由I/O指令指定的虚拟中断优先级转换成实中断优先级。
7.根据权项5定义的一个系统,其特征在于该虚拟机系统的I/O执行方法包括以下步骤,当I/O中断信息被反映到运行中的操作系统时,把I/O中断请求实I/O设备地址转换成虚拟I/O设备地址。
8.根据权项5定义的一个系统有一个I/O地址相等模式特征位,用来指示I/O的操作模式,其特征在于该虚拟机系统的I/O执行方法包括以下几步,当上述特征位处于第一状态时,使上述的第一状态时,使上述的第一和第二种转换手段能得以成立;当上述特征位处于第二状态时,使用虚拟I/O地址或虚拟中断优先级作为实I/O设备地址或实中断优先级。
9.根据权项2定义的I/O执行办法,其特征在于它包括有以下步骤,把由上述第一种转换手段转换得到的内容固定在运行的操作系统中。
10.根据权项3定义的I/O执行方法,其特征在于上述的第一步可以借助于运行中OS的前缀地址存储器方式,确定运行中的OS的前缀,并把I/O中断反映到该前缀。
11.一个虚拟机系统的I/O执行系统有一个虚拟机系统(VMS),它至少能使一个操作系统(OS)借助一个实计算机系统(主系统)同时运行;一个虚拟机控制程序(VMCP),用来控制上述的虚拟机系统,其特征在于上述虚拟机系统包括有,实中断优先级状态寄存器,它能在上述实计算机系统中存储多个I/O中断优先级;当与上述寄存器某一个单元相对应的一个中断优先级专用于运行中的OS时,有一些方法可使上述寄存器中至少有一个单元处于第一个状态并接受操作系统的控制;当上述的相应的中断优先级被共用或专用于其它操作系统时,有一些方式可使上述寄存器的该单元处于第二个状态而不问运行中操作系统的中断控制。
专利摘要
在含有虚拟机系统的系统中,虚拟机系统可借助一个实计算机系统和虚拟机控制程序,至少同时运行一个操作系统(一)虚拟机控制程序备有一转换表,把虚子通道号变为实子通道号;(二)实子通道控制块有一虚拟机信息区存有虚子通道号和转换来的实子通道号;(三)该信息区中一状态字段有指明该子通道号是否专用的特征位;(四)当实中断优先级专用于虚拟机时,只有带专用实中断优先级的子通道的I/O中断请求才能排进该优先级的中断请求队列中,则可避免虚拟机在该中断优先级中混和。
文档编号G06F12/08GK85101171SQ85101171
公开日1987年2月11日 申请日期1985年4月1日
发明者梅野英典, 久保隆重, 获原亘, 佐藤博昭, 沢本英雄 申请人:株式会社日立制作所导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1