促进目标处理系统的输入/输出处理的方法和系统的制作方法

文档序号:6461822阅读:190来源:国知局

专利名称::促进目标处理系统的输入/输出处理的方法和系统的制作方法
技术领域
:本发明通常涉及计算机系统模拟(emulation)领域,更具体地,涉及通过在宿主(native)系统上针对目标(guest)处理系统的输入/输出(1/0)架构进行模拟,以便促进一个或者多个目标处理系统的输入/输出(I/O)处理。
背景技术
:大型机级别处理环境的复兴已经对软件开发者编写大型机环境的应用程序产生了增长的期望。这种环境的用于开发和培训目的的高成本阻碍了这一努力。对于这种进退两难局面来说,模拟是一种方案。模拟是这样的过程,通过该过程将宿主系统(例如,通用处理器,诸如基于UNIX或者LINUX的工作站)进行编程以便提供更专业化的目标系统处理器架构(例如,由纽约Armonk的国际商业机器公司提供的2/八^11^"11^0系统)。有利地,此方案提供了一种成本低得多的产品所有权以用于继续应用程序开发。
发明内容在此提出的概念通过在宿主系统上模拟至少一个目标处理系统的I/O架构来促进在宿主系统上的所述至少一个目标处理系统的输入/输出(1/0)处理,从而支持上述努力。更具体地,一方面,在此提供的是一种制品,其包括具有计算机可读程序代码逻辑的至少一个计算机可用介质,以便促进至少一个目标处理系统的1/0处理。当执行该计算机可读程序代码逻辑时,该计算机可读程序代码逻辑执行例如以下步骤在宿主处理系统上针对所述至少一个目标处理系统的I/O架构进行模拟,其中模拟I/O架构包括针对I/O架构的多个I/0设备提供多个设备管理器;提供至少一个通信适配器进程,使得该多个设备管理器与至少一个网络驱动进程进行接口通信;以及其中该多个设备管理器将至少一种目标处理系统格式的I/O消息转换为宿主系统格式的消息,以用于由该至少一个通信适配器进程处理,由此促进该至少一个目标处理系统的1/0处理。在另一方面中,提供了一种促进至少一个目标处理系统的I/O处理的方法,其中所述方法包括在宿主处理系统上针对至少一个目标处理系统的I/O架构进行模拟。1/0架构的模拟包括针对I/0架构的多个I/O设备提供多个设备管理器;提供至少一个通信适配器进程,使得该多个设备管理器与至少一个网络驱动进程进行接口通信,以及其中该多个设备管理器将至少一种目标处理系统格式的I/O消息转换为宿主系统格式的消息,以用于由该至少一个通信适配器进程处理,由此促进该至少一个目标处理系统的1/0处理。在另一方面中,提供了一种用于促进至少一个目标处理系统的1/0处理的系统。所述系统包括包含模拟器(emulator)的处理环境,模拟器用于至少部分地模拟I/O架构以促进至少一个目标处理系统的I/O处理。该模拟器包括模拟器I/O接口;用于正被模拟的I/O架构的多个I/O设备的多个设备管理器,其中针对I/O架构的多个I/O设备中的每个1/0设备提供独立的设备管理器;多个消息队列,每个消息队列与多个设备管理器中各自的设备管理器相关联;至少一个通信适配器进程,使得该多个设备管理器与至少一个网络驱动进程进行接口通信;以及其中该多个设备管理器将至少一种目标处理系统格式的I/O消息转换为宿主系统格式的消息,以用于由该至少一个通信适配器进程处理,由此促进该至少一个目标处理系统的1/0处理。通过本发明的4支术实现了其他特征和优点。在此详细描述本发明的其他实施方式和方面,并且将其认为是所要求的本发明的一部在说明书结尾处的权利要求书中作为示例特别指出并且明确要求了本发明的一个或者多个方面。根据以下结合附图的详细说明,本发明的上述和其他目的、特征和优点是显而易见的,其中图1描述了用以结合和使用本发明的一个或者多个方面的处理环境的一个实施方式;图2根据本发明的一个或者多个方面,描述了图1的存储器的一个实施方式的进一步的细节;图3根据本发明的一个方面,描述了与目标处理系统和在宿主硬件架构上运行的宿主处理系统进行接口通信的模拟器的一个实施方式的进一步的细节;图4根据本发明的一个方面,描述了示出输入/输出架构模拟细节的模拟器的另一实施方式;图5是根据本发明的一个方面的用于初始化图4的输入/输出架构模拟的一个实施方式的流程图;图6是根据本发明的一个方面的图4的多个设备管理器中的一个设备管理器的数据流程处理的一个实施方式的流程图;图7根据本发明的一个方面,描述了图4的才莫拟的I/O架构的另一实施方式,并且示出了所模拟的I/O架构的各种进程的共享能力;图8根据本发明的一个方面,描述了图4的模拟的I/0架构的另一实施方式,并且示出了用于重启停止的通信适配器接口的通用恢复进程;图9是根据本发明的一个方面的1/0架构模拟和I/0子系统重启处理的一个实施方式的流程图;以及图10描述了结合本发明的一个或者多个方面的计算机程序产品的一个实施方式。具体实施方式根据本发明的一个方面,提供了一种通过在宿主系统上模拟用于至少一个目标处理系统的i/o架构来促进至少一个目标处理系统的输入/输出(1/0)处理的能力。在这里,以示例的方式,参考纽约Armonk的国际商用机器公司所提供的z/Architecture,描述并要求I/O架构模拟的多个方面。对于适配器这个词,在数据处理方面,适配器通常是用以在主机系统和一个或者多个外部设备之间进行通信的硬件:没备。由此,适配器被视为在数据处理系统中提供了一种形式的输入/输出连接性。在此参考(然而并非唯一地参考)由纽约的Armonk的国际商用机器公司所提供的一种称作开放系统适配器(OSA)的产品来描述本发明。此适配器针对在主机系统存储器和数据网络之间的数据传输提供一种协议。更特别地,此协议所针对的数据网络是局域网(LAN)。常规来说,开放系统适配器使用QDIO协议。队列直接输入/输出(QDIO)在1990年引入,并且QDIO是提供快速的主机至LAN通信的一种形态的I/O架构。在美国专利No.6,976,083中可以看到4吏用此协议的一个系统的示例,所述专利已授予本发明的受让人。另夕卜,在IBMJournalofResearchandDevelopment,Volume46,Numbers4/5,2002中也描述了QDIO架构。如最初所指出的,由于硬件开发成本的提高(尤其是对于高端系统),模拟技术在业内变得越来越普遍。大型机级别机器的复兴趣。一种最为重要的高端系统是由国际商用机器公司制造和销售的数据处理器z/Series。不幸的是,这些高端系统的成本阻碍了程序编写者和设计者在该领域的工作,尤其是用于开发和培训目的的工作。尽管已经尝试提供在UnixWare或者基于LINUX的工作站上运行的z/Series处理器模拟,但越来越期望对系统的其他部分(包括DASD、耦合、I/O架构以及网络功能)进行模拟。本发明旨在于满足I/O架构模拟这一需求,例如针对z/SeriesI/O架构。参考图1,描述了结合以及使用本发明的一个或者多个方面的处理环境的一种实施方式。在此示例中,处理环境ioo基于一个架构(可以称作宿主架构),而模拟另一架构(可以称作目标架构)。例如,宿主架构是由纽约Armonk的国际商用机器公司所提供的Power4或者PowerPC,或者由Intel公司提供的Intel⑧架构;而目标架构是同样由纽约Armonk的国际商用机器司提供的z/Architecture。在2005年9月的IBM出版物No.SA22-7832國04的"z/ArchitecturePrinciplesofOperation"中描述了z/Architecture的各个方面,在此通过引用将其全部引入。处理环境100例如包括宿主处理器102(例如,中央处理单元(CPU))、存储器104(例如,主存储器)以及经由例如一个或者多个总线108相互耦合的一个或者多个输入/输出(I/O)设备106。例如,处理器102是由纽约Armonk的国际商用机器公司(IBM)所提供的pSeries服务器的一部分。IBM、pSeriesPowerPC⑧以及2/八^11&(^1^@是美国纽约Armonk的国际商用机器公司的注册商标。Inte^是Intel公司的注册商标。在此使用的其他名称可能是国际商用机器公司或者其他公司的注册商标、商标或者产品名称。宿主中央处理单元102包括在环境中的处理期间^使用的一个或者多个宿主寄存器110,诸如一个或者多个通用寄存器和/或一个或者多个专用寄存器。这些寄存器包括表示在任意特定时间点处的环境状态的信息。而且,宿主中央处理单元102执行存储在存储器104中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器104中的模拟器代码112。此代码使得在一个架构中配置的处理环境能够模拟另一架构。例如,模拟器代码112允许基于z/Architecture以外架构的机器(诸如卩86^5@服务器)模拟z/Architecture,并且执行基于2^^11^^1^@开发的软件和指令。参考图2,描述了关于模拟器代码112(也称为,模拟器)的进一步细节。在一个示例中,模拟器代码112包括指令获取例程200,所述指令获取例程200用以从存储器104获得一个或者多个目标指令202,以及可选地为该一个或者多个获得的指令提供宿主緩存。目标指令202包括软件指令(例如,机器指令),所述软件指令被开发以4更在除宿主CPU102以外的其他架构中才丸行。例如,目标指令202可能已经被设计为在z/Architectm^处理器上执行,不过相反的是其正在宿主CPU102上才莫拟,其中所述宿主CPU102例如可以是pSeries②月良务器。模拟器112还包括指令转换例程204,用以确定已经获得的目标指令的类型,并且将所述目标指令转换成一个或者多个相应的宿主指令208。此转换例如包括,识别将由目标指令执行的功能,以及选择宿主指令来执行该功能。此外,模拟器112包括用以使得执行宿主指令的模拟控制例程206。模拟控制例程206可以使得宿主CPU102执行对一个或者多个先前获得的目标目标指令进行模拟的宿主指令的例程,以及在这些执行结束时,返回控制给指令获取例程,以便模拟接下来的一个或者多个目标指令的获取。宿主指令208的执行可以包括将数据从存储器104加载到寄存器中;将数据从寄存器存储回到存储器;或者根据转换例程的确定,执行某种算术或者逻辑操作。例如,每个例程以软件方式实现,所述软件存储在存储器中并且由宿主中央处理单元102来执行。在其他示例中,一个或多个例程或操作以固件、硬件、软件或者其某种结合来实现。被模拟的目标处理器的寄存器可以使用宿主CPU的寄存器IIO或者通过使用存储器104中的位置来模拟。在一个或者多个实施方式中,目标指令202、宿主指令208以及模拟代码112可以驻留在同一存储器中,或者可以分布在不同的存储器设备中。在一个实施方式中,进一步向即时(Just-In-Time)编i奪器210提供已经通过获取和控制例程处理过的指令的集合。所述即时编译器是动态编译器,其检查指令、查找去除冗余的机会以及在正在其上运行模拟器的宿主平台上生成指令的匹配序列。尽管模拟器一次对一个指令具有可见性,但是即时编译器对指令序列具有可见性。由于即时编译器对于指令序列具有可见性,其可以尝试在指令序列中查找冗余并去除冗余。即时编译器的一个示例是由纽约Armonk的国际商用机器公司提供的JAVATM即时(JIT)编译器。JAVA是加州SantaClara的SunMicrosystems公司的商才示。模拟器112包括用以模拟与宿主架构不同的架构的多个组件。在此实施方式中,正在被模拟的CPU和I/O架构是由IBN^I是供的z/Architecture,不过同样可以模拟其他的架构。该才莫拟使得在宿主架构上执行目标操作系统212(例如,z/OS,这是国际商用机器公司的注册商标),并且使得能够支持一个或者多个目标应用214(例如,Z应用)。参考图3描述关于模拟器210的进一步的细节。参考图3,模拟器112包括耦合至一个或者多个服务进程302的共享存储器300、输入/输出(I/O)实现304以及中央处理单元(CPU)实现306,在下文中将更详细地描述其中的每一个。共享存储器300代表主机中存储器的一部分,其对于服务进程302、I/O实现304以及CPU实现306是可见的。共享存储器300是一个存储区域,在其中独立进程(例如,服务进程、1/0实现、CPU实现)通过读取所述共享存储器中的数据以及将数据存储到所述共享存储器中得以通信。作为一个示例,共享存储器包括多个区域,这些区域例如包括系统全局信息、CPU上下文和信息、模拟的主存储区、模拟的主存储钥(key)以及子信道(即,表示I/0设备的数据结构)。服务进程302包括用以创建CPU的一个或者多个进程以及一个或者多个其他进程,同时提供架构化的操作者工具(诸如,启动、停止、复位、初始程序加载(IPL)等)。服务进程302还可以提供其他功能,诸如所模拟系统工具的显示或调整、获得/释放共享资源、其他维护命令等。输入/输出实现304例如包括用以与I/O设备通信的一个或者多个子信道进程以及i/o控制器。在本发明的一个方面中,1/0控制器负责启动子信道进程以及执行恢复。中央处理单元(CPU)实现306负责执行指令以及管理进程。图4至图9描述了用于促进在宿主系统上使用1/0架构模拟的一个或者多个目标处理系统的输入/输出(I/O)处理的方法的实施方式。在这些I/O架构模拟图示中,"主机"表示宿主系统和/或目标系统,其中任何一个都可以使用所模拟的I/O架构。图4至图9仅以示例方式描述了针对由纽约Armonk的国际商用机器公司所提供的z/SeriesI/O架构的I/O架构^^拟。图4描述了软件结构400的一个实施方式,所述软件结构400针对使用一个或者多个开放系统适配器(OSA)的2/861^3@处理环境来模拟I/O硬件。模拟器400包括兼容队列直接输入/输出(QDIO)工作411以及非QDIO工作412的模拟器1/0接口410。模拟器I/O接口410与多个设备管理器420连接,所述多个设备管理器420依次与一个或者多个开放系统适配器(OSA)进程430通信。对于正在模拟的I/O架构的每个1/0设备,提供独立的设备管理器420。设备管理器420提供一种能力,用于将一种或者多种目标处理系统格式的I/O消息转换成宿主系统格式的消息以便由一个或者多个OSA进程(即,所述一个或者多个通信适配器进程)进行处理。针对多个设备管理器420的每个各自的设备管理器使用消息队列425,以协助将宿主系统格式的消息递送到一个或者多个OSA进程430。模拟器400进一步包括模拟器服务接口450,所述模拟器服务接口450经由为每个OSA进程指定的专用服务队列435来与每个OSA进程430进行通信。在下文中,参考用于启动或重启OSA模拟的恢复进程来进一步描述模拟器服务接口。每个OSA进程430都与一个或者多个网络接口(诸如,驱动器440)通信。在一个示例中,网络接口是局域网。图4描述了提供对I/O架构精确模拟的软件架构,所述I/O架构诸如使用开放系统适配器(OSA)的z/SeriesI/0架构。OSA功能可以在IBMAD^和IntelLINUX两个环境中作为单独UNIX⑧进程来运行。关于模拟的I/O架构会是在例如AD^平台上的一个或者多个LAN适配器,其中该平台提供在z/Series大型机上当前可用的任何硬件辅助。针对此实现,每个OSAchpid与由运行模拟器软件的工作站所提供的一个或者多个LAN适配器进行通信。OSAchpid(或者chpid)既包括OSA进程又包括一个或者多个设备管理器(DM)进程。通过示例,图4描述了包括OSA进程(1)和DM进程弁l-5的单个chpid。如所示出,此chpid可以通过多个主才几来连续;也或者同时地使用。在一种实现中,模拟的I/O架构包括多个chpid。在z/Architecture才莫拟环境中运行的chpid的上述描述中,OSA进程经由一组DM进程与主机TCP/IP或者SNA堆栈进行通信,其中针对I/O架构的每个1/0设备提供一个设备管理器进程。在图4的示例中,针对利用QDIOTCP/IP堆栈411的主机处理系统461,使用所示出的chpid的三个DM进程420,而4十对主冲几处理系统462的SNA和非QDIO通信堆栈412,使用两个DM进程420。无论使用QDIOTCP/IP堆栈还是使用SNA或者非QDIO通信堆栈,都V吏用信道命令字(CCW)通过一系列的消息队列来与通信适配器进程通信。CCW将公知的名称与系统相关联,并且在QDIO与非QDIO连接上使用不同的CCW集合。对于每个OSAchpid进程,可以存在与DM消息队列。按相关联的消息队列425的顺序处理每个CCW,并且可以在用作控制读取设备的DM进程的读取队列上返回响应(诸如CCW的状况)。离开(off)LAN的业务经由读取队列也到达主机。OSA进程经由宿主操作系统提供的标准LAN驱动器接口来与默认OSALAN驱动器(宿主于LINUX或者AIX)通信。每个设备管理器420使用一个或者多个转换表来将各自的CCW消息转换成为宿主系统格式,以用于由所模拟的OSA进程进行处理。通过使用在z/SeriesI/0架构上发布的信息,例如包括上面结合的z/Architecture操作原理,本领域普通技术人员可容易地获得这些表。通过提供用于在设备管理器进程处接收的CCW协议消息的代码以及用于从设备管理器进程发送的宿主系统消息格式的代码的示例,在以下列表中表示出了这种转换。typedefstruct{lon亭intmtype;/*消息类型(又称,设备"*/unsignedsliortmreqtype;/*来自CP的请求类型"unsignedcharmcmd;/*4寺4争4奐的CCW命令*/unsignedcharmflags;/*CCW标记*/intmcount;/*待传送的字节数*/charmtextf8];/*消息文未*/}OSAMSG—t;爆恭惑发'遽潜4'.'typedefstructlongintdevice—number;/*又称,消息类型*/unsignedshortreqjype;/*去往或j来自OSA的请求类型*/unsignedcharchanneJstatus;unsignedchardevice—status;unsignedshortresidual—count;/*没有传送的字节数*/unsignedshorttransfer—count;/*消息中存在多少字节*/charmtext[8];/*将返^J的凄欠据*/}DMMSG—t;通过进一步的示例,下文的列表是命令转换代码的部分示例,所述命令转换代码是用于设备管理器,所述设备管理器将CCW转换至宿主系统格式以用于由模拟的z/Series1/O架构中的OSA进程处理。命令脊炎/t'^:#defineASYNC一STATUS0xF000#defineOSAJP5l0xF001#defineSET一QDIOACTIVE0xF002#defineSET二QDIO二INACTIVE0xF003/*重置qdio激活*/〃向OSA发送MsgIDawsosa以指示清除和同步#defmeOSA—CLEANUPOxCCCCtypedefstructBYTEFlags;#defmeCUJnit一Status0x80/*当该比特——起作—用时,信道函数将从控制单元函数请求状态*/#defineCU—End—Status0x40/*当该比特1一好,指示数据传输完成,从而信道必须从控制单元请求结束状态。*//*如果该比特是零,则从CDT条目的最终状态字段取得结束状态。*/#defineCU—Get—Buffers0x20/*当该比特—i一时,指示信道必须分配新的SGL和LDS数据緩存。*//*该比特通常对于写操作起作用。*/#defineCU—Special—Cmd0x10/*当该比碍是一时,其指示命令是特殊的。*//*即,命令是有效命令,但是不在主线(mainline)路径中使用。*//*写操作*/BYTEInit一Status;BYTEFinaT一Status;BYTECU—Flags;/*针对CU的特殊标记*/}CDT—E>^RY;typedefstruct{CDT一ENTRYEntiy[256];}CDT;#defineCU—Invalid0x01/*无效命令指示符#defineCU二IntvR叫0x02/*干涉所需的条件(cond)*/#defineCU二Sense0x04/*传感+令*/#defineCU二Tools0x08/*工具CCW.*/#defmeCU—RstEvt0x10/*重置事件CDT.*/#defineCU—QDIO0x20/*QDIO特殊命令*/#defineCU—ATN0x80/*注意*/#defineCU二SMF0x40/*状态寸'务改*/#defmeCU二CUE0x20/*控制卓元结束*/#defmeCU:BSY0xl0/*忙碌*/#defineCU:CE0x08/*信道结束*/#defineCU二DE0x04/*设备结束*/#defineCU二UC0x02/*单元检查*/#defineCU=UE0x01/*卓元异常*/图5是根据本发明的一个方面的用于I/O架构模拟初始化500的处理的一个实施方式的流程图。模拟器启动510,接下来是从定义文件读i[又I/0配置520。定义文件可以包含目标预置I/O定义。通过示例,表1描述了用于z/SeriesI/0架构的简化定义。__名称awsosa18path(3各径)二pathtype(^各4圣类型)=osd设备600设备601设备60216<table>tableseeoriginaldocumentpage17</column></row><table>在这个示例定义文件中,^又描述了I/0部分。OSD表示QDIOchpid,而OSE是非QDIOchpid。路径是指chpid号,而设备是指设备管理器号,其中每个设备声明表示设备管理器的一个实例。模拟器针对在定义文件中定义的每个i/o设备启动一个设备管理器实例530。然后,针对每个设备管理器分配一个服务队列540。与启动设备管理器相对应的,模拟器针对每个系统对恢复进程进行初始化550。在下文参考图8和图9进一步描述恢复进程。基本上,恢复进程针对在定义文件中定义的每个chpid对OSA进程进行初始化560。然后,创建服务队列或者针对每个OSA进程实例分配服务队列570。所分配的服务队列是用于对OSA进程实例的所有服务请求。一旦完成队列的建立,则初始化结束580,并且向模拟器通知I/O架构模拟的I/O初始化部分已经完成。此后,可以使用所模拟的I/O架构开始数据传送590。在一个初始化实施方式中,在共享存储器中(例如,在图9的退出区域935中)创建256条目的chpid目录。在chpid初始化时,所有chpid注册表2中的信息。另外,将设备特定的OSA信息(诸如,在表3中所述的)进行保存(例如,在图8的OSA进程恢复存储器810中)。在后续的恢复处理期间,使用表2和表3的信息。<table>tableseeoriginaldocumentpage17</column></row><table>插槽#(2字节)端口#(2字节)卡#(4字节)_chpid#(2字节)接口#(2字节)接口名称(12字节)设备特定信息(480字节)_^__OSA一特定布局(480字节)_功能掩码(4字节)恢复功能掩码(4字节)Siga矢量定位标识符(8字节)_IOPLitechpid进程ID(8字节)OSAchpid进程ID(8字节)_恢复chpid进程ID(8字节)HAS定位标识符(8字节)_Siga进程ID(8字节)服务进程ID(8字节)CCA定位标识符(8字节)_OSA踪迹(trace)定位(8字节)OSA日志定位(8字节)_OSA退出定位(8字节)OSA功能支持掩码(8字节)__配置.文件名称(128字节)__240字节保留_在创建chpid进程之前,解析(parse)定义文件。这由针对共享存储器区域中的chpid创建所有必要控制块的模拟器的主I/O进程来执行,例如,用以模拟z/SeriesI/O架构上的HAS。将针对每个chpid的存储器区域限定在特定的共享存储器区域(名称),以便保护其他chpid免受其chpid外部的HAS访问。一旦已经解析了定义文件,并且已经建立了针对所有chpid的所有HSA控制块,则创建各个chpid进程。针对每个定义的chpid创建一个"父"进程。根据该父chpid进程,OSA进程可创建为对主chpid进程的子进程。根据CPU模拟初始化进程创建DM进程。相信这一设计在错误恢复场合下可以进行辅助。在父chpid进程和DM和OSA进程之间可以使用"心跳"消息来检测"挂起"状况。如果出现"附力口(append)",则可以向父chpid进程发送信号(sigchild)以用信号发送此"附加"。该信号可以被父进程使用来"退出(logout)"针对OSA或者针对DM进程的信息,如结合图8和图9在下文进一步描述的那样。在创建时传送至chpid进程的参数包4舌chpid号。可经由chpid号来获取所有其他OSA共享存储器名称。可以通过在共享chpid目录中的查找来标识I/O恢复进程和I/Ochpid进程,在下文针对z/ArchitectureI/Of莫拟的表4至表8的详细示例中对此方面进行描述。表4<table>tableseeoriginaldocumentpage19</column></row><table><table>tableseeoriginaldocumentpage20</column></row><table><table>tableseeoriginaldocumentpage21</column></row><table>表7<table>tableseeoriginaldocumentpage21</column></row><table>从上文的表格中,注意OSA配置名称指向硬件驱动上的文件,其中将需要通过重置保存的所有OSA参数(诸如,MAC地址、踪迹掩码等)进行存储。对共享存储器定位的分配使得创建注册条目。接口号仅用于OSA。使用具有0x00终止的ascii形式的接口名称。例如,对于np,使用"np4m0"、"叩4ml"等;或者对于OSA,使用"entO"、"entl,,等。^口果chpid—state_np—card(chpid一3犬'态—np—卡)^立禾口chpid—state—osa一card(chpid—状态—osa—卡)4立两者均为零,则chpidg无不是np也不是osa。图6描述了根据本发明一个方面的设备管理器数据流程600的一个实施方式。在此流程中,假设主机进程发布套接字读取/写入命令610,主机进程将所述命令转换成诸如CCW命令的I/O命令或者消息620。例如通过所模拟的处理器的QDIO堆栈或者非QDIO堆栈,由设备管理器解译CCW命令630。设备管理器接收CCW640,并且将所述CCW命令转换为OSA消息650。然后,将此OSA消息放置在相关联的消息队列上660。OSA进程接收来自设备管理器的相关联消息队列的消息670,并且响应于所述消息纟是供OSA处理680。然后,依照OSA处理将数据往外发送到相关联的LAN上690。对于入站数据,设备管理器进程从LAN(经由OSA处理)接收数据,并且将打包数据所需的CCW命令字添加到用于转发至所模拟的处理器的适当TCP/IP堆栈的消息之中。所模拟的处理器从此TCP/IP堆栈读出消息,并且将消息传输至将所述消息转换回到套接字读取/写入数据的VTAM协议层。作为数据流程处理的特定例子,主机操作系统发布套接字读取/写入,并且用于主机操作系统(即,VTAM)的基础的1/0协议将套接字读取/写入转换为包含CCW的1/0程序(即,命令)。信道命令字是从IBM处理器360/370架构产生的公知的协议格式。由模拟器解译此CCW消息,并且将其传输至所模拟处理器的合适的QDIO或者非QDIO堆栈。然后,取回(retrieve)数据和命令,并且通过适当的设备管理器进程将其转换成消息条目。特别地,使用诸如SIGUSR2之类的信号来向设备管理器进程告知新的消息和数据正在QDIO或者非QDIO堆栈中等待。DM进程得到该消息,将其进行转换以便传输至适当的OSA进程,这就完成了将要发送到LAN上的数据和包的处理。图7描述了根据本发明一方面的模拟器400的另一方面。同样模拟器400包括耦合至一个或者多个OSA进程430的多个设备管理器420,如结合图4所描述的。模拟器进一步包括多个独立的存储器块700以及多个网络(LAN)接口710。根据本发明的一个方面,在一个实施方式中,每个设备管理器进程420可访问该多个独立的模拟的存储器块700的每个,这意味着独立的存储器块可由设备管理器进程共享。类似地,每个OSA进程访问多个共享的网络接口,即网络(LAN)接口710。由此,从单个设备管理器就可以访问任意模拟器存储器块700以及任意网络接口710。这种LAN接口以及存储器块的共享与传统的基于OSA的I/O架构相反。常规来说,基于OSA的I/O架构的硬件局限于与主机操作系统的实例对话或者与物理连4妄至OSA适配器的LAN对话。这限制了存储器的数量,或者当特定OSA连接至z/Series⑧机器时这限制了该特定OSA可具有的LAN连接。在图7的模拟的I/O架构控制下,OSA可跨过任意数量的主机操作系统来共享,并且更重要地,还可跨过多个LAN实例来共享。这表现出了许多优于z/SeriesI/O硬件机器的可能的连接优点。因为模拟了这种新的OSA,所以可立即共享任何LAN接口或者硬件物理层(例如,无线能力)(相对于仅用于以太网的传统OSA)。在第2层(物理层)或者第3层(应用层)环境两者中,均可创建在端口和主机实例之间提供连接性的路由层。通过示例,可针对每个z/模拟器进程分配共享存储段。这将允许从外部z/Series⑧进程(例如,CEC清空(dump)、MANOP、系统事件等)访问数据。表9描述了共享存储器的配置表的一个示例,该共享存储器用于基于OSA的模拟的I/O架构的设备管理器进程。表9<table>tableseeoriginaldocumentpage23</column></row><table>跟踪1Meg.-由OSA分配曰志256K-由OSA分配退出数据512K-由OSA分配信道控制块由DM初始4匕进禾呈分配能的信号用途。信号名称用途SIGAL腹命令行进程以及CHSC(DM)SIGUSR1QDIOSIGUSR2DM<—〉OSA通信SIGIOLAN驱动器注意,SIGUSR1可用于针对OSA和实际I/O两者的"CP-chpid"操作(其中CP是指处理器),而SIGUSR2可以用于针对OSA和实际I/O两者的"IOP-chpid"操作。通过进一步的描述,每个chpid可以分配共享存储器块,以用于跟踪和记录日志。对于每个chpid,总共可分配1.75Mbyte以用于执行这些任务。OSA跟踪(表9)可以是1Mbyte的环形跟踪,其格式与在当前的z/SeriesI/0架构中所^使用的相同。每个条目可以包括32字节的条目、跟踪代码,其后是时间戳,接着六个4字节的用户定义字段。256Kbyte日志是"重要事件"的另一环形跟踪,其具有与所述跟踪相同的格式。退出数据区域(表9,以及参见图9)可以是512Kbyte区域,所述区域包括由传统I/O架构中的OSA硬件所管理的所有状态(stat)和操作参数。当前,此信息驻留在宿主程序存储器中,但是根据在此公开的模拟而被去除以促进调试和信息采集。表9和表10描述了用以使用这些区域的分配例程和进程。也在表9和表10中描述的命令行功能是用于调试OSA进程配置的基础。这些命令分为两类。只需要与chpid的共享存储器位置对话的命令、以及需要针对OSA进程的栓塞(tap)以执行特定操作的命令。在表中还描述了每个命令的行为。图8示出了根据本发明的一个实施方式的I/O架构的模拟的健壮的恢复进程。如所示,模拟器400同样包括多个OSA进程430,所述多个OSA进程430与模拟器服务接口450进行接口通信。示出了共享退出区域810,在该区域中每个OSA进程具有专用的恢复存储器区域,如上文所述。在下文中参考图9进一步描述的恢复进程逻辑800是用于自动透明地尝试重启任何停止的OSA进程的代码。当前,OSA硬件仅允许失败的OSA来管理和恢复其自身。在此新的模拟的I/0架构中,引入了新的恢复范例,其中OSA恢复进程800预见系统中的整个OSA基础设施并且能够执行恢复动作,诸如,端口切换或者热主机备份,这在目前的z/SeriesOSA硬件环境中尚不存在。还可以使用此恢复能力来使用新的数据传输机制。可以容易地建立链接集合或者剥离。另外,由于将整个OSA进程集成到CPU和模拟器基础之中,则当出现失败时,可以容易地创建收集所有OSA和CPU数据的错误日志。使用在此提出的模拟的I/O架构,去除了对于记录日志存储器数量以及向z/SeriesOSA提供的能力的现有约束。当失败时,所有数据可以与采集的CPU数据自动同步,并且被提供给服务人员以用于数据分析。图9是示出根据本发明的一个方面的初始化和恢复逻辑的总流程图。如所示,模拟器900初启一个或者多个设备管理器905、(图8的)恢复进程910以及服务进程915(即,图8的模拟器设备接口)。然后,恢复进程启动一个或者多个OSA进程920,并且使用针对OSA进程创建的服务队列(参见图4和图5)以在该一个或者多个OSA进程和服务进程之间建立连接925。这就完成了初始化,并且该一个或者多个I/0子系统(例如,chpid)启动并运行930。一旦运行,则将状况信号返回模拟器以用信号告知可以处理1/0命令。在运行时,使用运行状态信息周期性地更新每个chpid的独立的恢复进程存储器(参见图8)935,即在I/0系统运行时,动态地保存和管理恢复信息。如果一个或者多个设备管理器和/或OSA进程失败(例如,由于代码错误或者设备错误或者接口错误而挂起),则当出现设备管理器错误时,CPU模拟器940使用在退出区域935中所记录的状态信息来尝试重启设备管理器进程945。假设重启尝试成功,则I/0子系统或者chpid被成功重启并进行运行950,即,假设仅有设备管理器失败。如果重启未成功,则发送I/O子系统或者chpid失败信号955,并且保存针对失败I/Ochpid的I/O子系统退出数据960。如果在OSA进程中已经出现错误(同样地例如由于代码错误、设备错误或者接口错误),则恢复进程代码尝试重启一个或者多个受影响的OSA进程970。在OSA进程和/或设备管理器进程中可能出现多个失败。假设重启成功,则I/O子系统或者chpid运行中950,并且向^f莫拟器提供新的状态OK信号,指示其正在运行并且能够接受1/0命令。如果OSA进程重启未成功,则该受影响的1/0子系统(即,chpid)已经失败975并且在I/O架构模拟继续运行的同时,保存针对该受影响的I/O子系统的所有退出信息960以用于以后收集和分析I/O失败。本发明的一个或者多个方面可以包括在例如具有计算机可用介质的制品中(例如,一个或者多个计算机程序产品)。其中所述介质例如具有计算机可读程序代码装置或者逻辑(例如,指令、代码、命令等),以便提供和促进本发明的能力。该制品可以包括在计算机系统中作为其一部分或者独立销售。参考图10,其描述了结合本发明的一个或者多个方面的制品或者计算机程序产品的一个示例。计算机程序产品1000例如包括一个或者多个计算机可用介质1002,用以在其上存储计算机可读程序代码装置或者逻辑1004,以便提供和促进本发明的一个或者多个方面。介质可以是电的、磁的、光的、电》兹的、红外的或者半导体系统(或者装置或者设备)或者传播介质。计算机可读介质的示例包括半导体或者固态存储器、磁带、可移动计算机盘、随机访问存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘。光盘的示例包括压缩盘-只读存储器(CD-ROM)、压缩盘-读/写(CD-R/W)和DVD。通过一个或者多个计算机可读程序代码装置或者逻辑限定的一个或者多个关联模块的逻辑集成或者程序指令的序列指导本发明的一个或者多个方面的性能。有利地,提供了可以容易地访问的存储器单元的数据结构。通过使用此数据结构,存储器访问以及系统性能得到增强(例如,更快)。数据结构包括一个或者多个存储器单元(例如,页)的表示(例如,地址),而在此数据结构中为了访问存储器单元不需要执行地址转换或者任何其他测试。可在包括模拟环境在内的任意类型的处理环境中使用所述数据结构。尽管上文描述了各种实施方式,这些实施方式仅仅是示例。例如,可在非模拟环境的环境中包括本发明的一个或者多个方面。此外,可以在具有宿主架构的模拟环境中使用本发明的一个或者多个方面,该宿主架构不同于在上文所描述的架构和/或^^拟Z/Architecture以外的架构。可以使用各种模拟器。模拟器是商业上可用的并且由各种公司来提供。在JimSmith和RaviNair于2005年6月3日公开的VirtualMachines:VersatilePlatformsForSystemsandProcesses(TheMorganKaufmannSeriesinComputerArchitectureandDesign)中,描述了关于模拟的其他细节,在此通过引用将其全部引入。输入/输出或者1/0设备(包括但不限于键盘、显示器、定点设备、DASD、带子、CD、DVD、拇指驱动(thumbdrive)以及其他存储器介质等)可直接地或者通过其间的1/0控制器来耦合至系统。网络适配器也可以耦合至系统,以使得数据处理系统能够通过其间的私人或者公共网络而耦合至其他数据处理系统或者远程打印机或者存储设备。调制解调器、线缆调制解调器以及以太网卡只是几种可用的网络适配器类型。如此处所使用的,术语"获得"包括但不限于取回、接收、具有、提供、被提供、创建、开发等。可以以软件、固件、硬件或者其某种结合来实现本发明的一个或者多个方面的能力。可以提供用以执行本发明能力的包含至少一个机器可执行指令程序的机器可读的至少一个程序存储设备。在此描述的流程图仅仅是示例。可以在不脱离本发明精神的情况下对在此描述的这些图示或步骤(或者操作)进行多种变形。例如,可以以不同的顺序来执行步骤,或者可以添加、删除或者修改步骤。所有这些变形都被视为所要求的发明的一部分。尽管已经在此详细描写和描述了实施方式,但是相关领域的技术人员显而易见地是,可以做出各种变形、添加、替换等,而并不脱离本发明的精神,并且由此认为这些都落入如下^=又利要求书所限定的本发明的范围之中。权利要求1.一种促进至少一个目标处理系统的输入/输出(I/O)处理的方法,所述方法包括在宿主系统上模拟用于所述至少一个目标处理系统的I/O架构,其中模拟所述I/O架构包括针对所述I/O架构的多个I/O设备提供多个设备管理器;提供至少一个通信适配器进程,所述通信适配器进程将所述多个设备管理器与至少一个网络驱动进程进行接口通信;以及其中所述多个设备管理器将至少一种目标处理系统格式的I/O消息转换为宿主系统格式的消息,以用于由所述至少一个通信适配器进程处理,由此促进所述至少一个目标处理系统的I/O处理。2.根据权利要求1所述的方法,其中提供所述多个设备管理器包括针对I/O架构的所述多个I/O设备的每个I/Oi殳备提供单独的设备管理器。3.根据权利要求2所述的方法,其中所述模拟进一步包括提供多个消息队列,每个消息队列与所述多个设备管理器中各自的设备管理器相关联,所述多个消息队列协助将宿主系统格式的所述消息传递至所述至少一个通信适配器进程。4.根据权利要求1所述的方法,其中所述多个设备管理器将多种目标处理系统格式的I/O消息转换为宿主系统格式的消息,以用于由所述至少一个通信适配器进程处理,并且其中,多种目标处理系统格式的所述I/O消息由所述多个设备管理器转换为宿主系统格式的消息,以用于由所述至少一个通信适配器进程的公共通信适配器进程处理。5.根据权利要求4所述的方法,其中多种目标处理系统格式的所述1/0消息包括队列直接输入输出(QDIO)协议格式的信道命令字(CCW)以及非QDIO协议格式的CCW。6.根据权利要求4所述的方法,其中所述多个设备管理器将多种目标处理系统格式的I/O命令转换为宿主系统格式的消息,以用于由所述至少一个通信适配器进程的公共通信适配器进程处理,所述公共通信适配器进程是开放系统适配器(OSA)进程。7.根据权利要求1所述的方法,其中所述模拟进一步包括提供经由所述至少一个通信适配器进程可访问的多个网络驱动器接口,以及其中所述多个设备管理器跨过所述至少一个通信适配器进程共享所述多个网络驱动器接口。8.根据权利要求1所述的方法,其中所述至少一个目标处理系统包括划分为多个独立的存储器块的存储器,以及其中所述模拟包括允许所述多个设备管理器的每个设备管理器访问所述多个独立的存储器块的每个存储器块。9.根据权利要求1所述的方法,其中所述模拟进一步包括通过以下步骤初始化I/O架构通过从定义的输入/输出配置目录获得配置信息来初始化所述多个设备管理器;针对每个初始化的设备管理器创建消息队列;初始化所述至少一个通信适配器进程;针对所述至少一个通信适配器进程的每一个创建服务队列,所述服务队列可经由模拟器服务接口访问;以及信号发送所述初始化的完成,其后可以接收所述至少一种目标处理系统格式的I/O消息以用于在所述多个设备管理器处转换。10.根据权利要求1所述的方法,其中至少一种目标处理系统格式的所述I/0消息包括信道命令字(CCW),以及其中所述方法进一步包括由设备管理器解译至少一个CCW;将所述至少一个CCW转换为宿主系统格式的至少一个消息,以用于由所述至少一个通信适配器进程处理;将宿主系统格式的所述至少一个消息放置到与所述设备管理器相关联的消息队列上;经由所述消息队列在所述至少一个通信适配器进程处接收宿主系统格式的所述至少一个消息;以及在所述至少一个通信适配器进程处提供宿主系统格式的所述至少一个消息的通信适配器处理;其后从所述至少一个通信适配器进程向外发送数据到网络接口。11.根据权利要求1所述的方法,其中所述至少一个通信适配器进程和所述多个设备管理器中的至少一个形成所模拟的I/O架构的至少一个I/0子系统,以及其中所述方法进一步包括针对所述至少一个I/O子系统的每个I/O子系统,将关于所述I/O子系统状态的恢复信息周期性地保存至存储器,以及使用针对所述I/O子系统的周期性保存的所述恢复信息来从所述I/0子系统处的失败中透明地恢复。12.根据权利要求8所述的方法,其中所述透明恢复包括重启所述I/0子系统的失败的通信适配器进程或者设备管理器至在其失败时所保存的状态,并且其中所述至少一个I/O子系统是至少一个chpid,并且其中所述至少一个通信适配器进程包括至少一个开放系统适配器(OSA)进程。13.—种促进至少一个目标处理系统的输入/输出(I/O)处理的系统,包括实现根据权利要求1至12中任一项所述的方法的装置。14.一种促进至少一个目标处理系统的输入/输出(I/O)处理的系统,所述系统包括处理环境,所述处理环境包括用于至少部分地模拟I/O架构的模拟器,所述模拟器包括模拟器1/0接口;针对正在被模拟的所述I/O架构的多个I/O设备的多个设备管理器,其中针对所述I/O架构的所述多个I/O设备的每个I/O设备提供独立的设备管理器;多个消息队列,每个消息队列与所述多个设备管理器中各自的设备管理器相关联;至少一个通信适配器进程,其将所述多个设备管理器与至少一个网络驱动器进程进行接口通信;以及其中所述多个设备管理器将至少一种目标处理系统格式的I/0消息转换为宿主系统格式的消息,以用于由所述至少一个通信适配器进程处理,由此促进所述至少一个目标处理系统的1/0处理。15.根据权利要求14所述的系统,其中所述多个设备管理器将多种目标处理系统格式的I/O消息转换为宿主系统格式的消息,以用于由所述至少一个通信适配器进程处理。16.根据权利要求14所述的系统,其中所述模拟器进一步包括经由所述至少一个通信适配器进程可访问的多个网络驱动器接口,以及其中所述多个设备管理器跨过所述至少一个通信适配器进程来共享所述多个网络驱动器接口。17.根据权利要求14所述的系统,其中所述至少一个目标处理系统包括划分为多个独立的存储器块的存储器,以及其中所述模拟器允许所述多个设备管理器的每个设备管理器访问所述多个独立的存储器块的每个存储器块。18.根据权利要求14所述的系统,其中所述至少一个通信适配器进程和所述多个设备管理器中的至少一个形成所模拟的I/O架构的至少一个I/0子系统,以及其中所述系统进一步包括针对所述至少一个I/O子系统的每个I/O子系统,用于将关于所述I/O子系统状态的恢复信息周期性地保存至存储器的装置,以及用于使用针对所述I/O子系统周期性保存的所述恢复信息来从所述I/O子系统处的失败中透明地恢复的装置。19.根据权利要求18所述的系统,其中用于透明恢复的所述装置包括用于重启所述I/O子系统的失败的通信适配器进程或者设备管理器至其失败时所保存的状态的装置,以及其中所述至少一个I/O子系统是至少一个chpid,以及其中所述至少一个通信适配器进程包括至少一个开放系统适配器(OSA)进程。20.—种制品,包括具有实现权利要求1至12中任一项所述的方法的计算机可读程序代码逻辑的至少一个计算机可用介质。全文摘要提供了用于促进至少一个目标处理系统的输入/输出(I/O)处理的制品、方法和系统。制品包括具有计算机可读程序代码逻辑以便促进至少一个目标处理系统的I/O处理的至少一个计算机可用介质。计算机可读程序代码逻辑在执行时执行以下操作在宿主系统上模拟至少一个目标处理系统的I/O架构,该模拟包括针对I/O架构的多个I/O设备提供多个设备管理器;提供至少一个通信适配器进程,所述通信适配器进程将该多个设备管理器与至少一个网络驱动器进程进行接口通信;以及其中该多个设备管理器将至少一种目标处理系统格式的I/O消息转换为宿主系统格式的消息,以用于由至少一个通信适配器进程处理,由此促进I/O处理。文档编号G06F9/455GK101276288SQ200810086950公开日2008年10月1日申请日期2008年3月28日优先权日2007年3月30日发明者M·S·西鲁尔利,P·M·乔奎因多,P·T·陈,R·T·布兰德利,S·R·瓦利,T·J·博希齐克,Y-Y·李申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1