CN1804778A - 冗余存储虚拟化计算机系统 - Google Patents
冗余存储虚拟化计算机系统 Download PDFInfo
- Publication number
- CN1804778A CN1804778A CN 200610003649 CN200610003649A CN1804778A CN 1804778 A CN1804778 A CN 1804778A CN 200610003649 CN200610003649 CN 200610003649 CN 200610003649 A CN200610003649 A CN 200610003649A CN 1804778 A CN1804778 A CN 1804778A
- Authority
- CN
- China
- Prior art keywords
- storage virtualization
- data
- local bus
- central processing
- discrete
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
本发明提供一种冗余存储虚拟化计算机系统,其包含有:一主机,用来发出输出入请求;一组冗余存储虚拟化控制器,耦接至该主机,用以执行输出入操作,以响应该主机所发出的输出入请求;以及多个实体存储装置,用来提供存储空间给该计算机系统。其中,每一个实体存储装置是耦接至该组冗余存储虚拟化控制器,该组冗余存储虚拟化控制器包含有一第一、与一第二存储虚拟化控制器,其皆耦接至主机,且第一、第二存储虚拟化控制器间是藉由PCI-Express连结进行通信,在该组冗余存储虚拟化控制器中,当其中一存储虚拟化控制器离线时,另一个存储虚拟化控制器将接替该离线存储虚拟化控制器原先所执行的功能。
Description
技术领域
本发明涉及一种冗余存储虚拟化计算机系统(redundant storagevirtualization computer system),特别涉及一种利用本地总线(local bus)作为二存储虚拟化控制器间连结的冗余存储虚拟化计算机系统。
背景技术
所谓存储虚拟化(storage virtualization)是一种将实体存储空间虚拟化的技术,其是将实体存储装置(PSD,physical storage devices)的不同区段结合成可供一主机系统存取使用的逻辑存储体(logical storage entity)-在此称为「逻辑媒体单元」(LMU,logical media unit)。该技术主要用于磁盘阵列(RAID)存储虚拟化,经由此磁盘阵列的技术,可将较小实体存储装置结合成为容量较大、可容错、高效能的逻辑媒体单元。
存储虚拟化控制器(SVC,storage virtualization controller)的主要目的是将实体存储媒体的各区段的组合映像(map)形成一主机系统可见的逻辑媒体单元。由该主机系统发出的输出入(IO)请求在接收之后会先被剖析并解译,且相关的操作及数据会被编译成实体存储装置的输出入请求。这个过程可以是间接地,例如运用快取、延迟(如:回写(write-back))、预期(anticipate)(如:先读(read-ahead))、群集(group)等操作来加强效能及其它的操作特性,因而一主机输出入请求并不一定是以一对一的方式直接对应于实体存储装置输出入请求。
外部(或可称为独立式(stand-alone))存储虚拟化控制器是一种经由输出入接口连接于主机系统的存储虚拟化控制器,且其可连接至位于主机系统外部的装置,一般而言,外部存储虚拟化控制器通常是独立于主机进行运作。
将一对存储虚拟化控制器配置成一冗余对的主要动机是为了即使是在单一个存储虚拟化控制器发生故障或是失效的情形下,主机依旧可以连续不中断地执行数据存取工作,此是可利用在此等存储虚拟化控制器中加入一功能以使得其中一个控制器发生障碍或完全失能的情形下另一个控制器可接管其工作而实现。
冗余存储虚拟化控制器对的组态的分为两类,第一类是主动-待命模式(active-standby),在此模式中,其中一个存储虚拟化控制器(一般称为主要存储虚拟化控制器)对存储虚拟化子系统中的所有逻辑媒体单元的所有输出入请求进行呈现、管理及处理,而另一存储虚拟化控制器(一般称作次要存储虚拟化控制器)将仅是处于待命状态(stand by),而于主要存储虚拟化控制器发生障碍或失能时,随时接替主要存储虚拟化控制器。第二种是主动-主动模式(active-active),在此模式中,此两个存储虚拟化控制器同时对此存储虚拟化子系统中的各种逻辑媒体单元的输出入请求进行呈现、管理及处理。在主动-主动模式中,上述二存储虚拟化控制器一直都准备在另一个存储虚拟化控制器因故障(malfunction)而导致发生障碍或失能的情况下接管对方。主动-主动模式,通常提供较好的效能,因为其两个存储虚拟化控制器的资源(例如:中央处理器(CPU,central processing unit)时间、内部总线频宽…等)与单一存储虚拟化控制器相比可负荷较多的输出入请求服务。
然不论是主动—被动模式或者是主动—主动模式,冗余存储虚拟化计算机系统的一个基本功能就是在一存储虚拟化控制器发生状况时,另一个存储虚拟化控制器得以接替(Take Over)发生状况的存储虚拟化控制器的工作,例如:继续完成存取直接存取存储装置中的数据。因此要能建构冗余存储虚拟化计算机系统,其存储虚拟化控制器间首先必须要能建立一个控制器间通信信道(ICC,inter-controller communications channel),藉由此通信信道得以传送信息;再者,每个存储虚拟化控制器亦必须得以随时知悉其同伴的存储虚拟化控制器的目前工作信息,也就是说两控制器间其数据几乎必须是同步且一致,如此才能于其同伴发生状况时得以接替其工作而实现冗余之效。
而对于建立控制器间通信信道此部分,目前一般是采用光纤信道仲裁循环(FC-AL)或小型计算机系统接口(SCSI,parallel small computer systeminterface)或序列先进技术接取接口(SATA,serial advanced technologyattachment)等通信连结,采用这些连结的主要因素是在于这些连结所具有的支持长距离与可外接缆线而利于二独立装置间联机等特性。
请参阅图1,主要显示一种现有冗余存储虚拟化系统的存储虚拟化控制器的方块图。其中,第一存储虚拟化控制器100内是具有一冗余控制器通信(RCC,redundant controller communication)连结控制器136,用以建立与第二存储虚拟化控制器100’间的通信信道ICC。
由于二控制器100,100’间的通信信道ICC是采用光纤信道仲裁循环(FC-AL)或SCSI或SATA等通信连结,与控制器内电路所采用的本地总线(local bus)不同,因此,在该控制器间通信信道(ICC)两端在这些控制器中势必得设置一作为转换内部总线与该ICC外部连结接口或缓冲的RCC连接控制器136,因此使得整体电路相形复杂,成本亦高。
再者,对解决每个存储虚拟化控制器必须随时知悉其同伴(另一存储虚拟化控制器)的目前工作信息以及维持两外部存储虚拟化控制器间数据同步且一致的问题,原则上当存储虚拟化控制器的数据有所变化时,此变化就得让其同伴知道,使二存储虚拟化控制器几乎可维持同步,进而一存储虚拟化控制器发生状况时,另一存储虚拟化控制器得以在几乎没有数据时间差的情况下完全成功接管。因此,在某些情况下在通信信道ICC上的数据传输系相当频繁,无疑的将可能会加重存储虚拟化控制器内中央处理器的工作量,使得其效能大幅受到影响,因此,如何处理通信信道ICC上的数据传输亦成为一个很重要的课题。
发明内容
本发明的主要目的,在于提供一种得以简化电路、降低成本的冗余存储虚拟化计算机系统。
本发明是揭露一种计算机系统,包含有:一主机,用来发出输出入请求;一组冗余存储虚拟化控制器,是用于执行输出入操作以响应主机发出的输出入请求,其包括有耦接至主机的一第一与一第二存储虚拟化控制器,此第一与第二存储虚拟化控制器间是利用一本地总线(local bus)进行通信;以及一组实体存储装置,耦接于这些存储虚拟化控制器,是用来提供此计算机系统存储空间;其中,当第一存储虚拟化控制器发生状况时,第二存储虚拟化控制器将自动地接替发生状况的第一存储虚拟化控制器原先执行的功能。
本发明亦揭露一种存储虚拟化子系统,包含有:一组冗余存储虚拟化控制器,是用于执行输出入操作以响应一主机发出的输出入请求,其包括有用来耦接至主机的一第一与一第二存储虚拟化控制器,此第一与第二存储虚拟化控制器间是利用一本地总线(local bus)进行通信;以及一组实体存储装置,耦接于这些存储虚拟化控制器,是用来提供计算机系统存储空间;其中,当第一存储虚拟化控制器发生状况时,则第二存储虚拟化控制器将自动地接替发生状况的第一存储虚拟化控制器原先执行的功能。
依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中第一与第二存储虚拟化控制器是位于同一电路板。依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中本地总线连接二存储虚拟化控制器的方式是为外接缆线或背板。
依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中本地总线是周边组件连结(PCI)总线、周边组件连结扩充(PCI-X)总线或周边组件连结快捷(PCI-Express)总线。依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中第一与第二存储虚拟化控制器各包括一本地总线接口,用以建立第一与第二存储虚拟化控制器间的本地总线通信信道。
依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中前述的本地总线接口各位于一中央处理器芯片组,且利用二中央处理器芯片组的至少一者的接脚设定来使得其中一本地总线接口去改变其操作模式,以使二存储虚拟化控制器的本地总线接口之间得以建立联机。
依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中是利用软件来填写前述其中一本地总线接口的寄存器而使得该本地总线接口去改变操作模式,以使这些存储虚拟化控制器的本地总线接口之间得以建立联机。
依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中前述的本地总线接口更具有交叉连结的特征。
依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中前述其中至少一本地总线接口执行一自动转换机制,是利用交叉连结的特征来转换接口的操作模式,以使第一与第二存储虚拟化控制器间能建立联机。
另,本发明揭露有一种存储虚拟化控制器,包含有:一中央处理电路,用以执行输出入操作以响应一主机的输出入请求,且可利用一本地总线耦接于另一存储虚拟化控制器;至少一输出入装置连结控制器,耦接于中央处理电路;至少一主机端输出入装置端口,设置在前述至少一输出入装置连结控制器的一者中,用来耦接至主机;至少一装置端输出入装置端口,设置在前述至少一输出入装置连结控制器的一者中,用来耦接至至少一实体存储装置;以及一内存,是连接于中央处理电路,是用来缓冲传送于主机及实体存储装置之间通过中央处理电路的数据。
依据实施例的一特色,前述本发明存储虚拟化控制器中,中央处理电路包含有一中央处理器以及一中央处理器芯片组。此中央处理器芯片组是用以做为该中央处理器与其它电子组件间的接口,包括有:一第一本地总线接口,是经由该本地总线耦接于该另一存储虚拟化控制器;一内部主要总线,作为该中央处理器芯片组内各主要电子组件间的通信连结,用以在其间通联数据信号及控制信号;一中央处理器接口,用以耦接至该中央处理器与该内部主要总线,作为该中央处理器与其它电子组件间的沟通接口;一内存控制器,用以耦接至该内存与该内部主要总线,当该内存控制器接收到由该内部主要总线传来的数据,会将这些数据存储在该内存中,该内存中的数据亦通过该内存控制器传送至该内部主要总线;以及至少一第二本地总线接口,用以耦接至该输出入装置连结控制器与该内部主要总线,做为该二者间的沟通接口。
依据实施例的一特色,前述本发明存储虚拟化控制器中,前述的中央处理器芯片组更包括一寄存器,此寄存器归属于第一本地总线接口,且寄存器内一存储空间是被规划定义作为该中央处理器写入与传输数据给另一存储虚拟化控制器相关信息之用。
依据实施例的一特色,前述本发明存储虚拟化控制器中,前述寄存器是位于第一本地总线接口或一位于该中央处理器芯片组的寄存器阵列之中。
依据实施例的一特色,前述本发明存储虚拟化控制器中,前述的第一本地总线接口是周边组件连结快捷总线接口、周边组件连结扩充总线接口或周边组件连结总线接口。
依据实施例的一特色,前述本发明存储虚拟化控制器中,是利用前述中央处理器芯片组的接脚设定来使得前述的第一本地总线接口去改变其操作模式,以使与另一存储虚拟化控制器相对应而得以建立彼此间的联机。
依据实施例的一特色,前述本发明存储虚拟化控制器中,是利用软件来填写前述的第一本地总线接口的一寄存器而使得第一本地总线接口去改变操作模式,以使与另一存储虚拟化控制器相对应而得以建立彼此间的联机。
依据实施例的一特色,前述本发明存储虚拟化控制器中,前述的第一本地总线接口更具有交叉连结的特征。
依据实施例的一特色,前述本发明存储虚拟化控制器中,前述的第一本地总线接口是执行一自动转换机制,是利用交叉连结的特征来转换接口的操作模式,以使与另一存储虚拟化控制器相对应而得以建立彼此间的联机。
本发明进一步揭露一种建立存储虚拟化控制器之间的通信信道的方法,包括以下步骤:存储虚拟化控制器通过作为控制器间通信信道端的本地总线接口发送一包含其操作模式的信息的信息;存储虚拟化控制器中的至少一者于通过本地总线接口接收到另一该存储虚拟化控制器的操作模式信息时,将此所收到的操作模式信息与自己的操作模式进行比较以判断是否能建立联机;若判断能建立联机,则建立二存储虚拟化控制器间的通信信道,而若判断为无法建立联机,则存储虚拟化控制器中的至少一者将转换本地总线接口的操作模式,以使与另一该存储虚拟化控制器的本地总线接口的操作模式相对应,进而得以建立彼此的联机。
依据实施例的一特色,前述本发明的方法中本地总线接口是PCI-Express总线接口。
依据实施例的一特色,前述本发明的方法中本地总线是具有交叉连结的特征,且当该比较判断结果为无法建立联机,则存储虚拟化控制器是利用此交叉连结的特征来转换通信接口的操作模式。
依据实施例的一特色,前述本发明的方法中,比较判断结果为无法建立联机后所执行的步骤中,包括有一撮合机制,以使这些存储虚拟化控制器间通信信道两端的通信接口的操作模式彼此相对应,而得以建立联机。
依据实施例的一特色,前述本发明的方法中前述撮合机制是包括以下步骤:随机选定一计时临界参数值,接着启动计时;若在时间达到该临界值之前,接收到对方新的操作模式信息显示其已改变操作模式,则完成撮合并建立联机;若在时间达到该临界值时,且未收到对方操作模式已改变的信息,则执行该转换操作模式步骤,且在转换完成后发送一含有新的操作模式状态信息给对方;以及重新判断两者间的操作模式型态是否已不相同,若不相同则撮合完成并建立联机,若相同,则重新执行该撮合机制,直到该撮合完成。
依据实施例的一特色,前述本发明的方法中前述撮合机制所执行转换操作模式的步骤中更包括以下步骤:若在执行转换操作模式时,接收到对方传送的操作模式信息,则中止转换维持原先所设定的操作模式。
依据实施例的一特色,前述本发明的方法中在前述中止转换前是先比较对方的操作模式是否与转换前本身的操作模式不同,若是,才进行该中止转换等步骤,否则则继续执行转换。
本发明又更一步揭露一种在一计算机系统中存储虚拟化控制器间进行数据传输的方法,包含以下步骤:A.一存储虚拟化控制器的中央处理器依据一事先定义的数据传输协议格式(data-transfer-protocol format)对欲传输给另一存储虚拟化控制器的数据建立至少一相对应的离散聚集表(SG-list);B.中央处理器将存放离散聚集表的地址写入一寄存器;以及C.一本地总线接口依据写入寄存器内的地址至一内存内读取离散聚集表,并依据表中所指示的存储该数据的地址至内存内读取数据,且通过一本地总线传送给另一个存储虚拟化控制器。
依据实施例的一特色,前述本发明的方法中本地总线是周边组件连结总线、周边组件连结扩充总线或周边组件连结快捷总线。
依据实施例的一特色,前述本发明的方法中当中央处理器将存放离散聚集表的地址写入寄存器后,寄存器是将地址信息传送至本地总线接口,并触发本地总线接口执行该步骤C.。
依据实施例的一特色,前述本发明的方法中,中央处理器是将存放离散聚集表的地址写入寄存器中被定义作为写入存放离散聚集表地址之用的特定地址的存储空间。
依据实施例的一特色,前述本发明的方法中离散聚集表的数据传输协议格式是包括以下字段:表内数据数量字段,用以指示表中内含的离散聚集数据的数目;来源起始地址字段,用以指示每笔欲传输数据其所存放的内存起始地址;数据长度字段,用以指示该每笔欲传输数据的长度;以及目标起始地址字段,用以指示传输数据欲存放的目标地址。
依据实施例的一特色,前述本发明的方法的步骤C.中本地总线接口执行包括以下步骤:依据中央处理器所发送的信息至内存内将离散聚集表标头内的控制信息读出,根据控制信息中表内数据数量字段内所指示的数量依序往下读取该数量的数据;以及依据所读取到的每一笔数据中的来源起始地址字段以及离散数据长度字段内容的指示,一一读取笔离散数据,并将每笔离散数据连同该笔离散数据的目标起始地址一起通过本地总线传输给另一存储虚拟化控制器。
依据实施例的一特色,前述本发明的方法中本地总线接口所读取的离散数据是先暂存于一缓冲器,其后才连同目标起始地址一起传输出去。
依据实施例的一特色,前述本发明的方法中本地总线接口在读取与传送离散数据时,可因应缓冲器的实际容量将离散数据分批读取与传送。
依据实施例的一特色,前述本发明的方法中更包括另一存储虚拟化控制器的本地总线接口接收离散数据与目标起始地址,将离散数据存于目标地址的内存内的步骤。
依据实施例的一特色,前述本发明的方法中离散聚集表的数据传输协议格式更包括一数据方向字段,用以指示执行写入或读取操作,使得本地总线接口依据此字段内容进行相对应的存取操作。
依据实施例的一特色,前述本发明的方法中在步骤C.的在该本地总线接口执行完读取离散聚集表内容的步骤后,更包含有:依据数据方向字段的内容执行相对应的写入或读取操作;若内容指示为执行写入操作,则执行前述后续的依据离散聚集表各字段读取离散数据与传输离散数据至该另一存储虚拟化控制器的步骤;若内容指示执行读取操作,则将离散数据表内至少部分字段内容通过本地总线传输给另一存储虚拟化控制器;以及在收到另一存储虚拟化控制器所回传的数据后,再依数据所相对应的目标起始地址存入内存内。
依据实施例的一特色,前述本发明的方法中的中央处理器芯片组是将整个离散数据表内容传输给另一存储虚拟化控制器。
依据实施例的一特色,前述本发明的方法中更包括另一存储虚拟化控制器的中央处理器芯片组接收离散数据表内容后,依据来源起始地址字段以及离散数据长度字段内容的指示,依序读取每笔离散数据,以及回传离散数据的步骤。
依据实施例的一特色,前述本发明的方法中离散聚集表的数据传输协议格式更包括以下字段:第一中断字段,用以设定是否于完成此表内所列数据传输后,中央处理器芯片组需产生一中断信号通知中央处理器;以及第二中断字段,用以设定另一存储虚拟控制器在接收数据并完成相对应操作后,产生一中断信号。
依据实施例的一特色,前述本发明的方法中的步骤C.更包括有:中央处理器芯片组将前述第二中断字段内容传送给另一存储虚拟化控制器;以及中央处理器芯片组在完成离散聚集表内所指示的数据传输后,依第一中断字段的指示来决定是否进行产生一中断信号至中央处理器的动作。
依据实施例的一特色,前述本发明的方法中离散聚集表的数据传输协议格式更包括下一个离散聚集表地址的字段,用以存放下一个离散聚集表所存放的内存地址,以指示中央处理器芯片组在完成一离散聚集表内容所指示的数据传输后,可依据该下一个离散聚集表地址的字段的内容,读取下一个离散聚集表,进而连动继续处理。
依据实施例的一特色,前述本发明的方法中包含有系统规划设定有一表示无下一个离散聚集表存在的数值,当该下一个离散聚集表地址字段的内容为该数值时,即显示无存在其它离散聚集表需要连动处理。
依据实施例的一特色,前述本发明的方法中前述的表示无下一个离散聚集表存在的数值是为0。
依据实施例的一特色,前述本发明的方法中,在步骤A与B之间更包括以下步骤:查核是否存在有尚未处理完的离散聚集表;若有,则进行一连动程序,是将新建立的离散聚集表与前述尚未处理完的离散聚集表产生连动;以及否则,执行步骤B。
依据实施例的一特色,前述本发明的方法中,在进行连动程序之前更包括以下步骤:中央处理器发送出一暂停请求给本地总线接口,用以请求暂停传输数据至另一存储虚拟话控制器的相关动作;以及当本地总线接口收到该暂停请求,是执行一暂停机制,并在完成暂停机制后,回复一暂停认可给中央处理器;以及在进行连动程序之后更包括以下步骤:中央处理器通知本地总线接口解除暂停状态;以及当本地总线接口收到该解除通知,是恢复所暂停的动作,继续执行处理传送数据。
依据实施例的一特色,前述本发明的方法中前述的暂停机制为将正在处理的离散数据完成传送后暂停其后的各笔离散数据的读取传送动作,并纪录暂停点以利取消暂停时可恢复接续处理。
依据实施例的一特色,前述本发明的方法中前述的暂停机制为将正在处理的离散数据表内的所有离散数据皆完成传送后暂停进入下一个离散数据表的动作。
依据实施例的一特色,前述本发明的方法中前述的连动程序系包括:中央处理器读取存于寄存器内的离散聚集表中下一个离散聚集表地址字段内的地址数据;中央处理器依据所读取的寄存器内的地址,判断本地总线接口其后是否有需接续处理的离散聚集表;若判断结果为无需接续处理的离散聚集表,则更改寄存器内所存放下一个离散聚集表地址的字段内容为存放新建立的第一个离散聚集表的起始地址;以及若判断结果为具有须接续处理的离散聚集表,则更改这些尚未处理完的离散聚集表的一者的存放下一个离散聚集表地址的字段内容,将其改为存放该新建立的第一个离散聚集表的起始地址,且将新建立的离散聚集表中最后一者的存放下一个离散聚集表地址字段内容设定与前述尚未处理完的离散聚集表的一者于未更改前的该存放下一个离散聚集表地址字段内容一致。依据实施例的一特色,前述本发明的方法中前述尚未处理完的离散聚集表的一者是指在该本地总线接口进行暂停机制时,存储于寄存器内的离散聚集表。
依据实施例的一特色,前述本发明的方法中前述尚未处理完的离散聚集表的一者是指这些尚未处理完的连动离散聚集表中的最后一个离散聚集表。
依据实施例的一特色,前述本发明的方法中包括建立一纪录有所有离散聚集表所存放内存地址的表,用以供中央处理器查询欲更改存放下一个离散聚集表地址的字段内容的尚未处理完的离散聚集表所存放的内存地址。依据实施例的一特色,前述本发明的方法中中央处理器依据所读取的寄存器内的下一个离散聚集表地址信息读取存于该地址内的离散聚集表的下一个离散聚集表地址字段内容,依序重复之,直到读取到中央处理器欲更改存放下一个离散聚集表地址的字段内容的尚未处理完的离散聚集表为止。
依据实施例的一特色,前述本发明的方法中当中央处理器需对已建立的离散聚集表进行调动时,是执行包括以下步骤:查核目前未处理完的离散聚集表;以及判断其意欲调动的离散聚集表是否属于尚未处理完的离散聚集表之中,若是则进行调动,否则,不进行调动。
依据实施例的一特色,前述本发明的方法中是利用中央处理器读取存于寄存器内的离散聚集表中下一个离散聚集表地址字段内的地址数据,以知悉数据传输目前进度。
依据实施例的一特色,前述本发明的方法终于进行调动之前更包括以下步骤:中央处理器发送出一暂停请求给本地总线接口,用以请求暂停传输数据至另一存储虚拟化控制器的相关动作;以及当本地总线接口收到该暂停请求,是执行一暂停机制,并于完成暂停机制后,回复一暂停认可给中央处理器;以及于进行调动之后更包括以下步骤:中央处理器通知本地总线接口解除暂停状态;以及当本地总线接口收到该解除通知,是恢复所暂停的动作,继续执行处理传送数据。
本发明又再进一步揭露另一种在计算机系统中存储虚拟化控制器间进行数据传输的方法,包含以下步骤:一存储虚拟化控制器的中央处理器是发送一数据传输请求给一中央处理器芯片组;中央处理器芯片组内的一第一本地总线接口是将请求转传给另一存储虚拟化控制器;以及另一存储虚拟化控制器的中央处理器芯片组内的一第二本地总线接口接收到请求后进行相对应的处理。
依据实施例的一特色,前述本发明的方法中本地总线是周边组件连结总线接口、周边组件连结扩充总线接口或周边组件连结快捷总线接口。
依据实施例的一特色,前述本发明的方法中的中央处理器发送数据传输请求的步骤包括:中央处理器传送数据传输请求给中央处理器芯片组中的一中央处理器接口;中央处理器接口将数据传输请求放置在中央处理器芯片组中的内部主要总线;以及由第一本地总线接口读取该数据传输请求。
依据实施例的一特色,前述本发明的方法中数据传输请求是包括一写入数据,以及一目标起始地址,该目标起始地址是为用以指示写入该写入数据的内存地址,且该另一存储虚拟化控制器所进行的相对应的处理系包括:依据该目标起始地址将该写入数据写入内存中。
依据实施例的一特色,前述本发明的方法中数据传输请求内容包括有一判别信息,使第一本地总线接口得以判别而读取该数据传输请求。
依据实施例的一特色,前述本发明的方法中包含有:存储虚拟化控制器是定义另一存储虚拟化控制器的物理内存地址以一虚拟内存地址形式表示,使与其自己本身的物理内存地址不会重复,且该判别信息是为一内存地址,该内存地址并以该虚拟化内存地址形式表示。
依据实施例的一特色,前述本发明的方法中是采用直接接续本身物理内存地址的方式去定义虚拟内存地址。
依据实施例的一特色,前述本发明的方法中数据传输请求是包括一内存地址,此内存地址是以虚拟化内存地址表示,以作为该判别信息。
依据实施例的一特色,前述本发明的方法中包括第一或第二本地总线接口接口是执行将前述内存地址转换为相对应的物理内存地址的步骤。
依据实施例的一特色,前述本发明的方法中数据传输请求是包括存取指令,用以指示进行写入或读取操作。
依据实施例的一特色,前述本发明的方法中另一存储虚拟化控制器所进行的相对应的处理是包括第二建立本地总线接口解读请求内的存取指令以进行所指示相对应的操作。
依据实施例的一特色,前述本发明的方法中数据传输请求是更包括一数据长度,以及一数据来源起始地址,且另一存储虚拟化控制器所进行相对应的处理是指依据此数据来源起始地址与数据长度至内存内读取数据并将数据回传给第一本地总线接口。
依据实施例的一特色,前述本发明的方法中更包括有:当第一本地总线接口在收到另一存储虚拟化控制器的回传数据后是传送给中央处理器。
附图说明
图1为一传统冗余外部存储虚拟化控制器的方块图。
图2为依据本发明的一存储虚拟化计算机系统的方块图。
图3为依据本发明的一存储虚拟化控制器的方块图。
图4为图3中所示的中央处理电路的一实施例的方块图。
图5为图4中所示的中央处理芯片组/同位引擎的一实施例的方块图。
图6为一存储虚拟化子系统自动转换机制的流程图。
图7为一种单边自动转换机制的流程图。
图8为另一种自动转换机制中存储虚拟化控制器端的流程图。
图9为依据本发明的一种进行数据传送方法的流程图。
图10为一种分散聚集表格式。
图11为一进行数据传送的假设例。
图12为另一进行数据传送的假设例。
图13为再一进行数据传送的假设例。
图14为又一进行数据传送的假设例。
图15为另一种中央处理器进行数据传送的流程图。
图16为图15中插入或接续连动程序的一实施例流程图。
图17为图15中插入或接续连动程序的另一实施例流程图。
图18为一本发明存储虚拟化控制器间传输小量数据的流程图。
具体实施方式
随着科技发展,本地总线(local bus)从周边组件连结(PCI,peripheralcomponent interconnect)总线发展出周边组件连结扩充(PCI-X,peripheralcomponent interconnect extended)总线,以及周边组件连结快捷(PCI-Express)总线。
而PCI-Express不同于其它的本地总线之处在于,其突破了以往本地总线不能或有限制的于背板(backplane)上拉线,以及其电气特性所能传输的距离有限等种种限制,PCI-Express接口不仅可外接揽线,以缆线方式进行联机通信,且其电气特性亦可使传输距离达7公尺之远。
请参阅图2,图2是为本发明的一实施例的方块示意图,此系统包含有一主机10以及一存储虚拟化子系统20(SVS,redundants toragevirtualization subsystem)。存储虚拟化子系统20包含有一组存储虚拟化控制器(包括第一与第二存储虚拟化控制器(SVC1,SVC2)200,200’,与多个实体存储装置420。其中存储虚拟化控制器200,200’可为一磁盘阵列控制器或是一个JBOD仿真器。
虽然图2中所示仅有一主机10与一存储虚拟化子系统20相互连接,实际应用时可用多个主机10连接一个存储虚拟化子系统20,或是一主机10连接多个存储虚拟化子系统20,或是多个主机10连接多个存储虚拟化子系统20。主机10可为一主机计算机,如一服务器系统、工作站、个人计算机系统或是其它相关计算机等,而且主机10也可为另一存储虚拟化控制器。
此存储虚拟化子系统发结构,两个存储虚拟化控制器200,200’间设有一控制器间通信信道ICC,用来互相交换信息。而此控制器间通信信道ICC系为PCI-Express,在本实施利中采用PCI-Express的原因主要在于PCI-Express其除可走背板外亦可外接缆线传输以及支持较远传输距离等特征之故,因此就采用外部存储虚拟化控制器的设计来说是较为适用,使其一存储虚拟化控制器发生问题(如:故障或失效)时,可在另一正常运作发存储虚拟化控制器仍提供服务的状态下,对此发生问题的存储虚拟化控制器进行维修或替换。然本发明应不受限于此,依据控制器发设计,凡控制器内电路所采用的本地总线皆可适用,例如:就二控制器位于同一电路板的设计来说,即可采用PCI或PCI-X等。
在一实施方案中,在此存储虚拟化子系统20中的所有的实体存储装置420可组合形成一实体存储装置阵列400。
图3为本发明中连接至主机10及实体存储装置阵列400的存储虚拟化控制器200,200’的一实施例方块图。在此处,是以第一存储虚拟化控制器(SVC1)200为例说明,然实际上,第二存储虚拟化控制器200’亦相同之。此实施例中,第一存储虚拟化控制器(SVC1)200包含有一主机端输出入装置连结控制器220、一中央处理电路(CPC,central processing circuit)240、一内存280以及一装置端输出入装置连结控制器300。此处虽以分开的功能方块描述,但于实际应用时,部份甚至全部的功能方块(functional block)皆可整合在一单一芯片上。
主机端输出入装置连结控制器220连接至主机10及中央处理电路240,用来作为第一存储虚拟化控制器(SVC1)200及主机10之间的接口及缓冲,其可接收由主机10传来的输出入请求和相关数据,并且将其转换及/或映像至中央处理电路240。主机端输出入装置连结控制器220可以包含有一或多个用来耦接于主机10的主机端端口。此处所提及的端口的类型可以为:光纤信道支持fabric连结(fibre channel supporting fabric)、点对点连结、公用回路连结及/或专用回路连结于目标模式,操作于目标模式的并列小型计算机系统接口(并列SCSI,parallel small computer system interface)、支持因特网SCSI(iSCSI,internet SCSI)协议且操作于目标模式的以太网络,操作于目标模式的序列附加SCSI(SAS,serial-attached SCSI),以及操作于目标模式的序列先进技术接取接口(SATA,serial advancedt echnologyattachment)。
装置端输出入装置连结控制器300是为介于中央处理电路240及实体存储装置阵列400间,用来作为存储虚拟化控制器200及实体存储装置阵列400间的接口及缓冲。装置端输出入装置连结控制器300接收由中央处理电路240传入的输出入请求及相关数据,并将其映像及/或传送至实体存储装置阵列400。装置端输出入装置连结控制器300可以包含有一或多个用来耦接于实体存储装置阵列400的装置端端口。此处所提及的端口的类型是配合系统所采用的实体存储装置可以为:FC-AL、SCSI、序列附加SCSI(SAS,serial-attached SCSI)以及序列先进技术接取接口(SATA,serial advancedtechnology attachment)。
再者,此处虽是以主机端与装置端分别设有相对应的输出入装置连结控制器220、300为例,但在本发明的另一实施例中,可仅有一输出入装置连结控制器,而令耦接于主机10的主机端端口与耦接于实体存储装置阵列400的装置端端口皆设置在此输出入装置连结控制器中。当中央处理电路240接收到来自主机端输出入装置连结控制器220的主机输出入请求时,中央处理电路240会将此输出入请求剖析,并且执行一些操作以响应此输出入请求,以及将所请求的数据及/或报告及/或信息,由第一存储虚拟化控制器200经由主机端输出入装置连结控制器220传送至主机10。将主机10传入的输出入请求剖析之后,若所收到的为一读取请求且一或多个操作被执行以为响应时,中央处理电路240会由内部或由内存280中或藉由此二种方式取得所请求的数据,并将这些数据传送至主机10。若所请求的数据无法于内部取得或并不存在于内存280,该读取请求将会经由装置端输出入装置连结控制器300发送至实体存储装置阵列400,然后这些所请求的数据将由实体存储装置阵列400传送至内存280,之后再经由主机端输出入装置连结控制器220传送到主机10。当由主机10传入的写入请求(write request)传达至中央处理电路240时,在写入请求被剖析并执行一或多个操作后,中央处理电路240通过主机端输出入装置连结控制器220接收从主机10传入的数据,将其存储在内存280中。对于同步或异步装置操作两者,数据皆经由中央处理电路240传送至实体存储装置阵列400。当该写入请求为一回写请求(write back request),输出入做完报告(IO complete report)会先被传送至主机10,而后中央处理电路240才会执行实际的写入操作;而当该写入请求为一完全写入请求(write through request),则输出入做完报告会在数据已实际写入实体存储装置阵列400后才被传送至主机10。内存280是连接于中央处理电路240,其作为一缓冲器,用来缓冲传送于主机10及实体存储装置阵列400之间通过中央处理电路240的数据。实际应用时,内存280可以是动态随机存取内存(DRAM,dynamic random access memory),或更特别地,该DRAM亦可为同步动态随机存取内存(SDRAM,synchronous dynamic random access memory)。
而在本实施例中,是将第一存储虚拟化控制器(SVC1)200的中央处理电路240直接连接到第二存储虚拟化控制器(SVC2)200’的中央处理电路(图中未示),即建构出第一存储虚拟化控制器(SVC1)200与第二存储虚拟化控制器(SVC2)200’间的通信信道(ICC)。
除此之外,装置端输出入装置连结控制器300是耦接至实体存储装置阵列400,实体存储装置阵列400亦耦接至第二存储虚拟化控制器(SVC2)200’。
在此一结构中,第二存储虚拟化控制器(SVC2)200’可附接于第一存储虚拟化控制器(SVC1)200,且实体存储装置阵列400可被此两个存储虚拟化控制器200所存取。更甚者,由主机10发出的控制/数据信号可从中央处理电路240传送给第二存储虚拟化控制器(SVC2)200或更进一步地传送给一第二实体存储装置阵列(图中未示)。
请续参阅图3,在本实施例中,可在中央处理电路240上附接一箱体管理服务电路360(EMS circuitry,enclosure management servicecircuitry),作为一容置实体存储装置阵列400箱体的管理电路,箱体管理服务电路360用来控制该实体存储装置阵列的电源及进行其它的管理,以及一液晶显示模块350(liquid crystal display module,LCD module),用来显示子系统的操作状态。然而存储虚拟化子系统20亦有其它的配置方式,例如可依各种不同产品的功能设计而定,而将箱体管理服务箱体管理服务电路360或该LCD模块350省略,或是将箱体管理服务箱体管理服务电路360整合在中央处理电路240中。
请参阅图4,为中央处理电路240的一实施例,其中包含有CPU芯片组/同位引擎244(CPU chipset/parity engine),一中央处理器242(CPU),一只读存储器246(ROM,read only memory)及一非易失性随机存取内存248(NVRAM,non-volatile random access memory)。其中该CPU 242可为,例如,一Power PC CPU,而ROM 246可为一闪存,用来存储基本输入/输出系统(BIOS)及/或其它系统程序,而当开机时加以执行以控制子系统的操作。NVRAM 248用来存储该实体存储装置阵列输出入操作执行状态的相关信息,以备输出入操作尚未做完前发生不正常电源关闭时,作检验使用。ROM 246,NVRAM 248,LCD模块350及箱体管理服务电路360皆经由一X-总线(X-bus)连结至CPU芯片组/同位引擎244。又,该NVRAM 248是为可选择项目,在本发明的另一种配置中可以省略不设。且CPU芯片组/同位引擎244此处虽以整合的功能方块描述,但于实际应用时,CPU芯片组与同位引擎可分开设置于不同的芯片上。
请续参阅图4,中央处理器242必须通过此CPU芯片组/同位引擎244才得以与其它电子组件(如内存280等)相耦接。
而图5即显示一本发明中CPU芯片组/同位引擎244的实施例。其中CPU芯片组/同位引擎244包含有同位引擎260,CPU接口910,内存控制器920,周边组件连结快捷(PCI Express)接口930,932,934,X-Bus接口940,传输控制协议和互连网协议(TCP/IP,transmission control protocol/internetprotocol)直接内存存取(DMA,direct memory access)980,仲裁者(Arbiter)982,内部本地总线(IL,internal local)990及内部主要(IM,internal main)总线950,其中IM总线950是连接至同位引擎260、CPU接口910、内存控制器920、PCI-E接口930、932、934上,用以在其间通联数据信号及控制信号。
由主机端输出入装置连结控制器220所发出的数据及控制信号经由PCI-E接口930而进入CPU芯片组/同位引擎244。其中连结至主机端输出入装置连结控制器220的PCI-E接口930的传输速率可为,举例而言,1.5Gbit/sec。当PCI-E接口930拥有IM总线950(IM Bus)时,该数据及控制信号将被传送至内存控制器920或是CPU接口910。
当CPU接口910接收到由IM总线950传来的数据及控制信号,将会传送至CPU 242进行进一步的处理,而CPU接口910及CPU 242间的沟通管道则可为,举例而言,64-bit数据传输线及32-bit地址线来进行。
在内存控制器920内是有一除错码产生电路(ECC circuit,errorcorrection code circuit)(图中未示),用以产生一ECC码,而其产生的方式可为,举例而言,将8-bit的数据以互斥或(XOR)运算后,产生一单一位的ECC码。接下来,内存控制器920将数据及ECC码存储在内存280中。该内存280可为,举例而言,SDRAM。而内存280中的数据亦可传送至IM总线950。且内存控制器920可设计为,当数据从内存280传送至IM总线950时,内存控制器920会对数据执行单一位自动修正(1-bit auto-correction)及多位检错(multi-bit error detecting)等功能。
同位引擎260会响应于CPU 242的指示,来执行一特定磁盘阵列型态的同位功能。当然,在一些特定的条件下,比如说RAID0,同位引擎260可以关掉而不执行同位功能。
IL总线990(IL Bus)是连接于CPU接口910以及其它低速装置接口。
寄存器阵列984(Reg.array)是用来暂存CPU芯片/同位引擎244的状态,及控制IM Bus 950中的数据流动。此外,一对通用异步收发器(UART,universal asynchronous receiver and transmitter,)功能方块986则是用作CPU芯片/同位引擎244对外的接口,且该接口规格为RS232。
而此CPU芯片组/同位引擎244则是藉由PCI-E接口932而与装置端输出入装置连结控制器300连结。
TCP/IP DMA980则用以执行总合检查(checksum)计算以及DMA操作的功能。而仲裁者982则用以对IM总线950的使用权进行仲裁。
而在本实施例中,若要从内存280传输数据至第二存储虚拟化控制器200’时,则经由IM总线950进入PCI-E接口934后,藉由一PCI-E通信信道,如:外部缆线(cable)或背板(backplane),即可直接与第二存储虚拟化控制器200’中的PCI-E接口934’相耦接,其中无须像现有技术需再通过任何中间转换缓冲接口(如:冗余通信连结控制器)。
在实际应用时,PCI-E界面930,932可代换为周边组件连结扩充(PCI-X,peripheral component interconnect extended)接口,或者是以周边组件连结(PCI)接口取代。
而在子系统20启动电源时,每一存储虚拟化控制器的CPU芯片组会通过其各PCI-E接口来进行了解外接于该控制器的装置为何以及是否正确建立联机。而二装置间若要利用PCI-E接口建立PCI-E传输信道,则该二装置相连的PCI-E接口的实体层模式(PHY-mode)必须分别操作于下游(down stream)模式以及上游(up stream)模式,否则二者间将无法建立联机进行数据传输。
一般而言,存储虚拟化控制器为主动组件,因此,其PCI-E接口的PHY-mode是设定为down stream。
但是,如前所述,二存储虚拟化控制器设置是为一致,也就是说,对二存储虚拟化控制器而言,其建立二控制器间控制器间通信信道ICC的PCI-E接口的PHY-mode皆被设定为down stream,如此一来,二控制器根本无法成功建立联机。为解决此问题,在本实施例中,提出了一种转换机制使其中一控制器可转为up stream,以能成功建立联机传输数据。
请参阅图6,是为一种存储虚拟化子系统自动转换机制的流程图。其中此自动转换机制是由存储虚拟化控制器内CPU芯片组的PCI-E接口执行。
首先,二存储虚拟化控制器200,200’分别皆通过控制器间通信信道ICC两端的PCI-E接口934发送一包含其PHY-mode信息的信息,因此该二存储虚拟化控制器200,200’的PCI-E接口934可收到对方的PHY-mode信息(步骤S810);
比较二者的PHY-mode是否不同而能建立联机(步骤S820);
若比较结果为另一存储虚拟化控制器的信息显示其PHY-mode与自己的PHY-mode相同时,则将利用PCI-Express的cross link的特征改变PHY-mode,并撮合使第一与第二存储虚拟化控制器间通信信道ICC两端的PCI-E接口的PHY-mode,是分别操作于down stream以及up stream而得以建立联机(步骤S830及步骤S840)。
前述的撮合方式可藉由只允许其中一端的PCI-E接口可改变PHY-mode来达成,也就是,当发生PCI-E接口所接收的信息显示另一端的PHY-mode与自己相同时,只有其中一端的PCI-E会改变其PHY-mode。
假设前述只允许单边转换是设定由第二存储虚拟化控制器来执行。当子系统启动电源时,二存储虚拟化控制器分别皆通过控制器间通信信道ICC两端的PCI-E接口发送一包含其PHY-mode信息的信息,因此,控制器间通信信道ICC于第二存储虚拟化控制器的PCI-E接口将收到位于第一存储虚拟化控制器内PCI-E接口的PHY-mode信息。请配合参阅图7,为第二存储虚拟化控制器端的流程图。
当第二存储虚拟化控制器的PCI-E接口收到第一存储虚拟化控制器PCI-E的PHY-mode信息后,通过所接收的PHY-mode信息进而判断是否可建立联机(步骤S410,S420);
若第二存储虚拟化控制器的PCI-E接口在前述判断程序(步骤S420)中察觉另一存储虚拟化控制器的信息显示其PHY-mode与自己的PHY-mode相同时,则藉由PCI-Express的交叉连结(cross link)的特征改变其存储虚拟化控制器之PHY-mode,并在转换后发送新的PHY-mode信息给第一存储虚拟化控制器(步骤S430),进而进入建立联机程序(步骤S440)。
而第一存储虚拟化控制器的控制器间通信信道ICC端的PCI-E接口则在传送含有其PHY-mode为down stream等设定信息后,即等待直到接收到第二存储虚拟化控制器的PCI-E接口通过ICC传送显示其PHY-mode为up stream的信息,再根据这些信息内容建立二控制器间的联机。
综前所述,此实施方案在该存储虚拟化控制器对中当发生有通信信道两端的PHY-mode相同时,仅有一存储虚拟化控制器会利用cross-link转换其PHY-mode,另外一存储虚拟化控制器并不会进行任何作动。即,此实施例中该二存储虚拟化控制器的设计是不相同,故,二者所采用的CPU芯片组的IC将会不同。
亦即,前述的做法,该控制器必须得配对使用,以使得其间的通信信道ICC得以正常联机。
但是,在一些环境或状况下,会期望或要求形成该存储虚拟化控制器对的二个存储虚拟化控制器所采用的立ICC通信接口其软硬件要一致。在此,提出另一种自动转换机制,其中二存储虚拟化控制器的建立ICC的PCI-E接口所执行的流程是相同,使能因应前述状况,图8即显示存储虚拟化控制器端PCI-E接口所执行的一种实作方案流程图。
首先,当存储虚拟化控制器的PCI-E接口接收另一连结端的信息时,将解析以了解该连结端的状态(步骤S510),
接着,比较该连结端PHY-mode与自身是否相同(步骤S520),若不同,则直接进行建立联机程序(步骤S530);
若,二者的PHY-mode相同,则进入一撮合程序S540;
首先会随机(random)选定一参数T值(计时临界值),接着启动计时,以了解是否达到该T值(步骤S542);
其后,若在时间为达到该T值之前,接收到对方新的PHY-mode信息显示其已改变PHY-mode(步骤S544),则结束撮合程序,进入建立联机程序(步骤S530);
而当迟迟未收到对方PHY-mode已改变的信息,且时间达到T值,如图中所示,步骤S546判断时间t是否已达到T值,若t<T,则回去执行步骤S544,否则,执行一转换PHY-mode程序(步骤S548),是利用cross-link将PHY-mode由原先设定的型态转换为另一个型态,如:原先为down stream则转为upstream或将up stream转为down stream,且于转换完成后发送一含有新的PHY-mode状态信息给对方;
其后,回到步骤S520,确定两者间的PHY-mode型态是否已不相同而可建立联机,若相同,则重新进到撮合程序S540,此时会再重新随机随机数选取设定参数T。
其中,在步骤S548执行完毕后尚须再回去进入步骤S520的原因,是在于虽于执行转换前已判断两者PHY-mode是相同,但由于二存储虚拟化控制器有可能发生同时执行cross-link改变PHY-mode的情况发生,在此种状况下,二者间仍无法建立联机,因此,当转换完成后仍需判断二者间的PHY-mode是否已不相同,确定撮合完成以确保可建立联机。而若发生二者同时执行改变PHY-mode状况时,由于双方改变完后会发送显示新的PHY-mode状态信息给对方,因此仍可藉此并经由步骤S520比较得知撮合未成功,因此得重新再撮合一次。
另外更可设计,在步骤S548执行转换过程中,加入,若接收到对方传送的PHY-mode信息,则中止转换维持原先所设定的PHY-mode且跳至建立联机程序(S530)的步骤。
或者是,在步骤S548执行转换过程中,若接收到对方传送的PHY-mode信息,则暂停转换,先了解对方的PHY-mode状态是否与本身执行转换步骤S548前的PHY-mode不同,若是,则中止转换程序维持本身转换前的设定,且直接跳至步骤S530建立联机程序,而若察觉对方的PHY-mode仍与自己转换前相同,则继续完成转换。以避免在对方完成转换而与自己已不相同后,自己又转换为与该对方一致而仍无法建立联机之情事。
现举一实例进行说明,首先,在子系统启动电源时,二存储虚拟化控制器其PCI-E接口皆会发送出一包含显示其PHY-mode为down stream等操作状态的信息,其中当然包括用以建立控制器间通信信道ICC的PCI-E接口。
而当二存储虚拟化控制器的PCI-E接口接收到对方所传送的信息时,会解析以了解其PHY-mode,发觉其PHY-mode亦为down stream时,二者都会进入撮合程序,各自随机选取一T值(假设第一存储虚拟化控制器选定为T1,第二存储虚拟化控制器选定为T2),并开始计时,当达到该T值时,则进行cross-link,由于T值是随机选取,因此绝大机率,二控制器会选定不同的T值,即T1≠T2,而在选定较小T值的一方,则会先行进入转换程序,而将PHY-mode转换为up stream,并且于转换后发送包含有新的PHY-mode的信息给另一方,而由于另一方所选定的T值较大,因此当收到此对方所传送的新PHY-mode的信息时,可能尚未达到其所选定的T值,或者是刚达到T值正在执行转换PHY-mode程序。若为前者,则于收到对方已转换为up stream的信息后,直接进入建立两者间的控制器间通信信道ICC的联机程序,若为后者,则会中止转换维持原本down stream的PHY-mode,继而成功建立两者间的控制器间通信信道ICC。例如:假设T1<T2,则第一存储虚拟化控制器会先进入转换程序,而将PHY-mode转换为up stream,并且于转换后发送包含有新的PHY-mode(up stream)的信息给第二存储虚拟化控制器,且由于第二存储虚拟化控制器所选定的T2值较大,因此在第一存储虚拟化控制器完成转换程序后,第二存储虚拟化控制器不是尚未开始转换就是转换到一半,因此第一存储虚拟化控制器所知的第二存储虚拟化控制器仍处于down stram模式,故会认为撮合完成而进入联机程序,另对第二存储虚拟化控制器来说,若在收到此第一存储虚拟化控制器所传送的新PHY-mode的信息时,尚未达到其所选定的T2值,由于第二存储虚拟化控制器是处于down stream,亦会进入联机程序,因此,二者间可正确建立控制器间通信信道ICC,或者,第二存储虚拟化控制器于收到第一存储虚拟化控制器新PHY-mode信息而得知其改为upstream时,是刚达到T2值正在执行转换PHY-mode程序,则第二存储虚拟化控制器将会中止转换而维持原本down stream的PHY-mode,继而成功建立两者间的控制器间通信信道ICC。
而若不巧,两者所选定的T值相同,则可能发生二者同时完成转换程序并传送新的PHY-mode信息,亦即在转换完成后双方都会收到对方PHY-mode为up stream的信息,因此经过比较将得知双方的PHY-mode又相同,因此二者将查觉撮合未成功,会再重新进入撮合程序,双方重新随机随机数选定T值,只要所选定T值不同就可依前述成功建立联机。而由于每次协调撮合的时间极短,加上由于T值是随机数选定因此二控制器持续不断皆选定相同T值的机率几乎为零,因此,二存储虚拟化控制器在一短时间内必定可协调为一个为down stream,另一个为up stream,成功建立控制器间通信信道ICC。
请注意,本实施例中第一与第二存储虚拟化控制器所采用的操作流程是相同(如图8所示),也就是说第一存储虚拟化控制器所采用的设计是与该第二存储虚拟化控制器相同,因此本实施例是可使设计完全一致的二存储虚拟化控制器间成功建立控制器间通信信道ICC。
当然,二存储虚拟化控制器间要利用PCI-Express连结建立控制器间通信信道ICC,除了前述由PCI-E接口自动转换进而建立联机的机制外,亦可采用其它非由PCI-E接口自行完成的机制。例如:利用CPU芯片组/同位引擎244的接脚(pin)设定来使得(选择或强迫)该PCI-E接口934变为up stream;或者,利用软件来填写CPU芯片组/同位引擎244内的PCI-E接口934的寄存器而使得(选择或强迫)PCI-E接口934的PHY-mode变为up stream。但此两种方式,前者须人工到场设定,后者须软件检测来设定,可能造成时间上之浪费,因此,较不理想。但就本发明的其它采用无cross link特征之本地总线接口(如PCI接口)的实施例中,是较为适用。
由于,存储虚拟化控制器在电源启动时即会利用对外的各连结接口发送信息至外接于该控制器的各装置,并等待各装置的响应,以了解是否已顺利建立联机以及各连结上所连接的装置为何。而原则上,整个系统于设计上,除冗余存储虚拟化控制器对间的通信信道,其它控制器对外的通信信道所连接的是为被动装置,因此其PHY-mode为up stream,因此存储虚拟化控制器亦可利用在开机检测各连结接口联机状态时,藉由当得知所连结装置亦操作于down stream时,判断该连结通道是为控制器间通信信道ICC。
为了提高存储虚拟化控制器之中央处理器效能,请续参阅图9,本发明提出一种进行数据传送的方法,包括:
中央处理器是依据一事先定义的数据传输协议格式(data-transfer-protocol format)对欲传送给另一存储虚拟化控制器的数据,建立一相对应的离散聚集表(Scatter-Gather(SG)-list)(步骤S910);
中央处理器发送一内含存放该SG-List地址的信息写至归属于此建立控制器间通信信道的PCI-E接口的寄存器(register)(步骤S920);以及
该PCI-E接口依据该寄存器的地址信息,读取该SG-List,并依据该SG-List的内容至内存内读取欲传输的数据,并将这些数据通过控制器间通信信道ICC传送至另一个存储虚拟化控制器(步骤S930)。
上述归属于建立控制器通信信道的接口的寄存器,可设计为位于PCI-E接口之中,亦可设计于一寄存器功能区块(如寄存器阵列)之中。
在中央处理器对寄存器进行写入动作时,由于此寄存器是被设计归属于该建立控制器间通信信道的PCI-E接口,因此该寄存器即会将该地址信息传送给该建立控制器间通信信道的PCI-E接口,并且触发(trigger)该接口。
在一实施例中,是规划定义此寄存器内某些特定地址空间,作为写入存放SG-List的内存地址之用。如此设计,将使得当中央处理器对这些特定寄存器地址写入存放此SG-List的内存地址时,此写入动作等同一个触发信号,使寄存器得以去触发PCI-E接口内的引擎(engine)去执行数据传输相关程序。依此种方式,中央处理器仅需将存放SG-List的内存地址写入这些特定寄存器地址即可。
请参阅图10,是提出本发明中有关SG-List格式的一个实施例。依照此实施例,SG-List内容包含有:表内数据数量字段(list-entry-count),用以指示表中内含的离散聚集数据的数目;来源起始地址字段(Source-base-Addr),指示每笔欲传输离散数据其所存放的内存起始地址;数据长度字段(Data-Length),指示前述内存起始地址所存放的该笔欲传输数据的长度;以及目标起始地址字段(Destination-Base-Addr),指示该笔传输数据欲存放的目标地址;等等。
当中央处理器将存放此SG-List的内存地址写入寄存器时,PCI-E接口依据寄存器所指示的内存地址将该SG-List内的数据读取出,并根据前述所定义的各字段内的指示信息进行作动,例如:依据该中央处理器所写入寄存器的地址信息至该内存地址将标头内的控制信息读出后,根据标头中表内数量字段内所指示的数量依序往下读取该数量的数据,而整个SG-List的信息将存于寄存器内,接着建立控制器间通信信道的PCI-E接口依据每一笔离散数据的来源起始地址字段以及该离散数据长度字段内容的指示,依序于读取该笔离散数据后连同该笔离散数据的目标起始地址一起通过ICC传输给另一存储虚拟化控制器的建立控制器间通信信道的PCI-E接口,当另一存储虚拟化控制器的建立控制器间通信信道的PCI-E接口收到这些信息时,将依内容把这些数据存于目标地址内。
且在SG-List内亦可再包括第一中断(INT)字段,用以设定是否于完成此表内所列数据传输后,建立控制器间通信信道的接口需产生中断(interrupt)信号;以及第二中断(Ints)字段,用以设定是否目的端(另一存储虚拟化控制器)完成这些数据写入存储于各数据相对应的目标地址时,产生中断(interrupt)信号通知自身(另一存储虚拟化控制器)的中央处理器。
若系统事先定义的SG-List具有此等字段,则建立控制器间通信信道的接口是会传送此第二中断字段内容,以使另一存储虚拟化控制器的建立控制器间通信信道接口得依该字段之设定来作动,如:1为产生interrupt信号给自身的中央处理器、0为不产生。且此建立控制器间通信信道的接口于完成该SG-List内所指示的数据传输后,将依SG-List的第一中断字段的指示来决定是否进行产生一interrupt信号至中央处理器的动作,如:1为产生、0为不产生。
此外,由于因为内存内空间配置等因素,可能发生无法使用单一SG-List将所有离散数据表列进入之情况,这时可利用数个SG-Lists来表列而解决。请再参阅图10,于此一较佳的实施例中,前述SG-List的格式内尚具有一个下一个SG-List地址的字段(Next-SG-List Addr.),用以指示下一个SG-List所存放的内存地址,因此当建立控制器间通信信道的接口读取某一SG-List的内容后,就可以依据该字段内容知道下一个要处理的SG-List存放于何处,进而依据该地址读取下一个SG-List,使得这些SG-Lists之间可以自动产生连带关系,而当无下一个SG-List时,则此字段将设定为0,如此即可知道该SG-List为最后一个list。因此,中央处理器不必针对每一个SG-List都要进行一次将该SG-List存放的地址写入寄存器之动作,只要将第一个SG-List的地址写入寄存器,该建立控制器间通信信道的接口即会自动完成所有有连带关系的SG-Lists。
请参图11,显示一假设例。假设中央处理器接受一主机端所传送的请求,该请求相关信息与数据通过CPU芯片组分散存放于内存中各处,中央处理器依据这些信息与数据存放的内存地址与长度等,根据前述格式产生了四个SG-List。
如图所示,假设第一个SG-List所存放的地址为0000_0100。当建立好这些SG-Lists后,CPU只需发送包含地址0000_0100的信息写至CPU芯片组内被设定归属于该建立控制器间通信信道的接口的寄存器,,该建立控制器间通信信道的PCI-E接口至内存地址0000-0100内读取SG-List内的信息,取得控制信息(包括第一中断(INT)、下一个SG-List地址(Next-SG-List-Addr.)、表内数据数量(list-ehtry-count)等字段),再依据表内数据数量字段内所显示的数据的数量”2”,依序读取存于地址0000_0110以及0000_0120等二地址内的信息(包括来源起始地址(Source-base-Addr)、数据长度(Data-Length)、目标起始地址(Destination-Base-Addr)等字段),而将第一个SG-List的内容都读入后,接着依照第一笔数据存放的起始地址(1000_0000)与长度(0000_0010)至内存内读取该笔离散数据至缓冲器(buffer)后,连同该笔离散数据欲存放的目标起始地址(A100_0000)一起传送至另一存储虚拟化控制器,前述读取与传送该笔离散数据时,可因应缓冲器的实际容量将该笔离散数据分批读取与传送。接着依照前述方式依序完成读取与传送其后的每一笔离散数据(如:依据存放第二笔数据的起始地址(1100_0000)与数据长度(0000_0020)至内存内读取该第二笔离散数据至缓冲器(buffer),同样连同第二笔离散数据欲存放的目标起始地址(A200_0000)传送至另一存储虚拟化控制器)。当完成此第一个SG-List列入的所有离散数据的读取与传送动作后,而由于此第一个SG-List的第一中断(INT)字段内为0,因此建立控制器间通信信道的PCI-E接口不会发送interrupt信号通知中央处理器,即接着依据下一SG-List地址(Next-SG-List Addr)字段内信息(0000_020)至内存地址为0000_0200读取第二个SG-List,同样依据前述方式取得该第二个SG-List内的内容,且同样依据前述方式完成其表内所列入的每笔离散数据的传输动作,接着同样依据Next-SG-List Addr.内信息读取第三个SG-List,如此一一重复完成每一个SG-List,直到SG-List内的Next-SG-List Addr地址设定为0000_000(第四个SG-List)为止。而于此例中,由于只有第四个SG-List的第一中断(INT)字段内容是为1,因此于完成第四个SG-List的传输动作后,建立控制器间通信信道的PCI-E接口会产生一interrupt信号给中央处理器,因此中央处理器可得知四个SG-List的数据已完成传送。
利用前述方法,在执行冗余传输数据动作时,中央处理器只需维护SG-List以及传送存放第一个SG-List Addr至CPU芯片组即可,而后所有读取数据以及传送数据的动作将由CPU芯片组执行,几乎无需占用到中央处理器的工作资源。
再者,当建立控制器间通信信道接口于完成各传输数据操作后依照SG-lst内的INT字段设定回报给中央处理器,以使中央处理器可得知这些数据已被成功传送至另一存储虚拟化控制器,而可让出该存放已完成传输的SG-List的内存空间。此时可采用每完成一SG-List即回复中央处理器的方式,即每一个SG-List的INT字段皆设为1;或者是所有连带的SG-List都做完(即直到表内所显示的下一SG-List Addr地址为0000_0为止)才回复中央处理器,如前假设例,只有最后一个SG-List的INT字段设为1,其它的SG-List的INT字段皆设为0。前者的好处在于因为每做完单一SG-List就先回复,因此内存空间可实时被腾出,使得在记忆空间的配置运用上提供较好的弹性与效能。至于要采用何种回报方式是可由中央处理器依系统实际状况决定。
另外,一般而言,在冗余存储虚拟化计算机系统内,由于二存储虚拟化控制器间必须维持几乎同步,故当一存储虚拟化控制器一有变化就须告知另一存储虚拟化控制器,加上通常系统在运转时该IO操作是非常繁复的,因此可能会持续有新的数据或信息需传送给另一存储虚拟化控制器的情事发生。
以下提出一更佳的实施方法,是在前述再加入以下步骤:
当建立控制器间通信信道的PCI-E接口在处理某一SG-List的同时,CPU芯片组收到新的信息或数据进而使中央处理器依据这些信息或数据建立相对应的新SG-List(s),则中央处理器可将该新的SG-List(s)插入或接续前旧有尚未处理完的SG-List(s),例如:藉由更改PCI-E接口正在进行中的连带SG-lists中内存内某一尚未处理到的SG-list的Next-SG-list Addr字段内的数据或者是寄存器内接着要进行的Next-SG-List Addr.字段内的数据,将其改为存放此新建立的SG-List(s)的起始地址,使得这前后SG-List(s)之间也产生连动关系,令该PCI-E接口自动连动处理。
进一步说明如下,请配合参阅图15,CPU芯片组在接收到新的数据并将此新数据存入内存后通知中央处理器,中央处理器将对此等新的数据建立了数个相互连带的新的SG-Lists(步骤S602)。
接着中央处理器判断是否存有旧的SG-List(s)尚未处理完(步骤S604),此步骤可藉由建立控制器间通信信道的PCI-E接口是否发送Interrupt信号给中央处理器而得知,若中央处理并未收到Interrupt信号的话,中央处理器知道其尚未完成传送前已触发待传送的离散数据。假设,若未存有尚未处理完毕的旧SG-List,则将存放新建立的SG-List(s)的起始地址写入归属于建立控制器间通信信道之接口的寄存器以启动建立控制器间通信信道的PCI-E接口进行新数据的传送流程(步骤S606);
而若尚有未处理完已存在的SG-List(s)时,中央处理器发送出一暂停请求(Pause Req.)给建立控制器间通信信道的PCI-E接口,请求接口先暂停作动(步骤S608)。当该接口收到该请求,将会于一适当时机执行一暂停机制,暂停手上的动作,并于暂停后回复一暂停认可(Pause Gnt)给中央处理器。其中暂停机制可例如:将正在处理的离散数据完成传送后暂停其后的各笔离散数据的读取传送动作,并纪录暂停点以利取消暂停时可恢复接续处理,或者将正在处理的SG-List内的所有离散数据皆完成传送后暂停进入下一个SG-List的动作。
在收到暂停认可回复后,中央处理器开始进行插入或接续连动程序(步骤S610),主要是选定寄存器或者是前组SG-Lists中某一尚未处理的SG-List,将新产生的SG-Lists中的最后一个SG-List的Next-SG-List Addr.设定与寄存器或者是被选定的前组尚未处理的SG-List中原先所设定的Next-SG-List Addr.一致,且将寄存器或者是内存内被选定的前组尚未处理的SG-List内的Next-SG-List Addr.更改为新产生的SG-Lists所存放的起始地址(存放第一个SG-List的地址),即完成新产生的SG-Lists插入前组SG-List的动作,而令两组SG-Lists间发生连动。
当使新产生的SG-List(s)与已存在待处理的SG-List间完成连带关系后,接着通知建立控制器间通信信道的PCI-E接口解除暂停状态,则建立控制器间通信信道的接口会恢复所暂停的动作,并继续依照新的连带关系自动连动处理。(步骤S620)
前述在中央处理器进行两组SG-Lists连动前,需发送暂停请求的原因是在于防止中央处理器在更改内存内某一SG-List或寄存器内Next-SG-ListAddr.字段内的信息的同时,该建立控制器间通信信道的PCI-E接口亦读取该SG-List的内容而发生冲突引发错误。
以下就插入或接续连动程序(S610)进行说明。请参阅图16,为一种插入或接续连动程序的实施例。在此实施例中,是采用新产生的SG-List(s)直接插入寄存器正在处理的SG-List之后的方式。
由于建立控制器间通信信道的接口在要执行某一SG-List时,会先取得SG-List的内容,故在发生前述状况时,中央处理器可藉由读取寄存器内所存放有关Next-SG-List Addr.字段内的信息得以知道PCI-E接口是否有下一个SG-List要处理或者是下一个要处理的SG-List存放于何处等信息。因此,如图16所示,在中央处理器进行插入或接续连动的程序的第一个步骤是,中央处理器先读取寄存器内正在处理的SG-List中的Next-SG-List Addr字段内的地址数据(步骤S612),而在获得此PCI-E接口原本会进行的Next-SG-List Addr.信息后,其直接将新产生的SG-Lists中的最后一个SG-List的Next-SG-List Addr.设定与前所读取到的寄存器中原先所设定的Next-SG-List Addr.一致,且将此寄存器内的Next-SG-List Addr.更改为新产生的SG-Lists所存放的起始地址(存放第一个SG-List的地址),即完成新产生的SG-Lists插入前组SG-List的动作,而令两组SG-Lists间发生连动(步骤S614)。也就是说,将新产生的SG-Lists直接插入在该接口原本要接着正在处理的SG-List之后待处理的SG-List之前,并在完成后面新产生的SG-Lists相对应的数据传送后,会再跳回接续插入点原本会接续的前组尚未完成的SG-List(s)。当然,若插入点刚好是在前组SG-List(s)的最后一个SG-List之后(读取到的寄存器内的Next-SG-List Addr.为0000_000),则就不会再跳回接续前组未完成的SG-List(s),因为并没有前组未完成的SG-List(s)存在。
以前述图11为例,并请再配合参阅图12。首先如图11所示,中央处理器依所欲传送给另一个存储虚拟化控制器(同伴)的数据的存放地址建立有相互连动的四个的SG-Lists,且将含有存放第一个SG-List的地址信息写入作为控制器间通信信道的PCI-E接口的寄存器,该接口依寄存器的地址信息读取该SG-List内容,并执行读取与传送数据等动作。
另外,CPU芯片组又接收到新的数据并将此新数据存入内存后通知中央处理器,中央处理器同样对此等新的数据建立了数个相互连动的新的SG-Lists(请参图12),以使此数据可传送给其同伴备存时,请注意,与图11一样,此处虽以产生多的SG-List以及多笔离散数据为例,但同样的实际上因数据量与内存空间配置等因素亦可能只产生一个新的SG-List或单笔离散数据内容。
若在中央处理器建立好新数据相对应的SG-Lists(如图12所示)时,该建立控制器间通信信道的PCI-E接口尚未处理完图11的四个SG-Lists,此时,中央处理器发送出一暂停请求(Pause Req.)给此接口,请求先暂停进入处理下一个SG-List的动作,当该接口收到该请求,将会执行一暂停机制,暂停手上的所有动作,并回复一暂停认可(Pause Gnt)给中央处理器。在收到暂停认可回复后,中央处理器开始进行连动程序,中央处理器读取寄存器内有关Next-SG-List Addr.字段内的信息。
假设,此时该接口是正在处理图11中的第二个SG-List,则中央处理器所读取到的地址信息将会是0000_040。接着中央处理器将图12中最后一个SG-List的Next-SG-List Addr.字段设定为0000_040,并将此寄存器内的Next-SG-List Addr.改为0000_050(图12中第一个SG-List所存放的地址),则完成将新产生的SG-List(如图12中所示)插入于图11所示的第二个跟第三个SG-List之间的动作。
而若前述在收到中央处理器发送的暂停请求时,建立控制器间通信信道的接口正好处理图11中的第四个(最后一个)SG-List,则中央处理器所读取到的寄存器内的Next-SG-List Addr.会是0000_000,则图12所示的新产生的最后一个SG-List内的Next-SG-List Addr.就不用更改仍然设定为0000_000(请注意,仍然与所读取到的寄存器内的Next-SG-List Addr.一致),而将寄存器内的Next-SG-List Addr.改为改为0000_050(图12中第一个SG-List所存放的地址)即可。
在完成连动程序后,中央处理器接着发送解除暂停状态的通知给该建立控制器间通信信道的接口,使接口解除暂停机制,接续暂停机制前的作动,并于处理完暂停当时的SG-List后,就会接着依照其暂停期间中央处理器所写入的Next-SG-List Addr.去读取新产生的第一个SG-List,且依照新产生的连带关系一一进行所有待处理的SG-List(s)相对应的数据传送。
再请参阅图17,显示另一种插入与接续连动程序的实施例。与图16不同,本实施例所选择的连动插入点是为建立控制器间通信信道的接口尚未处理到的SG-List(s)之间或之后。
如同图16,在中央处理器进行插入连动的程序的第一个步骤仍然是,中央处理器读取寄存器内正在处理的SG-List中的Next-SG-List Addr字段内的地址数据(步骤S612),接着中央处理器会判断寄存器内的地址是否为0000_000,以了解其后是否有需接续处理的SG-List(s)(步骤S616);若该地址被设定为0000_000,则表示其并没有下一个要接续处理的SG-List,故,中央处理器只需将寄存器内的Next-SG-List Addr.改为新产生的SG-List(s)的第一个SG-List所存放的地址(步骤S617),即可完成两组SG-Lists间的连动。
若该寄存器的Next-SG-List Addr.并非为0000_000,则表示其后尚有原本设定好要接续处理但未处理的其它SG-List(s),此时,中央处理器可选定其后一尚未处理的SG-List来进行插入动作。读取内存中所选定的SG-List内的Next-SG-List Addr.,将新产生的最后一个SG-List的Next-SG-ListAddr.设定与前述所读取者一致,接着将内存中该选定的SG-List内的Next-SG-List Addr.改成新产生的第一个SG-List所存放的地址,即完成连动程序(步骤S618)。
例如,中央处理器选择前组SG-Lists中的最后一个SG-List来进行连动,由于,前组最后一个SG-List原始设定的Next-SG-List Addr.与新产生的最后一个SG-List的Next-SG-List Addr.本来就是一致的(皆为0000_000),因此只需更改此前组SG-Lists中的最后一个SG-List的Next-SG-List Addr.为新产生的SG-List(s)所存放的起始内存地址,即完成此两组SG-List的连动。在此种情况下,在解除暂停状态后,建立控制器间通信信道的PCI-E接口在处理传送完前组SG-List(s)后才会自动接续处理新产生的SG-List(s)。也就是采用新产生的SG-List(s)是接续前SG-List(s)之后的插入连动的方式。而要找到前组SG-Lists中的最后一个SG-List,可以利用建立一存有所有SG-List所存放的内存地址的表,利用该表来查询取得,或者依据所读取的寄存器内的Next-SG-List Addr,的地址信息至该地址读取存于该地址内的SG-List的Next-SG-List Addr.,若此Next-SG-List Addr.仍未为0000_000,则再依序向下读取下一SG-List的Next-SG-List Addr.直到该Next-SG-ListAddr.为0000_000为止。
同样以图11与图12为例,同样假设建立控制器间通信信道的接口进行到图11中的某个SG-List时收到中央处理器所传送的暂停请求,寄存器将执行暂停机制,并于完成后传送一暂停认可给中央处理器。接着中央处理器读取寄存器内的Next-SG-List Addr.,若寄存器内的Next-SG-List Addr.为0000_000,如:建立控制器间通信信道的接口正在进行处理图11内的第四个SG-List,则此时,将寄存器内的Next-SG-List Addr.由0000_000改为如图12所示欲连动处理的SG-Lists中第一个SG-List所存放的地址(0000_050),即可将此两组SG-List连动在一起,接着触发建立控制器间通信信道的PCI-E接口解除暂停状态,则该接口接续暂停机制前的动作继续做动,并于处理传送完该前组第四个SG-List内的三笔离散数据后,依寄存器内的Next-SG-List Addr.字段内的地址(0000_050),接着处理图12中新产生的的SG-Lists。
而若所读取到的寄存器内Next-SG-List Addr.非为0000_000,例如:若当建立控制器间通信信道接口正在处理且暂停在图11所示的第二个SG-List,寄存器中Next-SG-List Addr.字段内的信息为0000_040,故中央处理器读取该字段信息可知PCI-E接口尚未处理但接着会处理的SG-List存放的地址为0000_040。接着中央处理器可依状况或系统设定选定欲插入点。举例,选定插入在最后一个SG-List之后。则可利用中央处理器至0000_0400内存地址内取得第三个SG-List的Next-SG-List Addr.为0000_030,因为并非0000_000,因此接着又至0000_0300内存内取得第四个SG-List的Next-SG-List Addr.,因为其为0000_000,表示接下来没有连动的SG-List,在找到此最后一个SG-List后,更改其Next-SG-List Addr.由原本为0000_000改为图12所示的第一个SG-List所存放的地址0000_050,使得该两组SG-Lists产生一连动关系(如图13所示),而后通知建立控制器间通信信道接口解除暂停状态,使得建立控制器间通信信道接口继续依序完成每个SG-List相对应的数据传送动作。亦就是,建立控制器间通信信道接口接续暂停机制前的动作继续做动,在处理完前组SG-Lists中的第二个SG-List后,仍然依序处理前组SG-Lists中第三个SG-List与第四个SG-List,并且在处理完前组SG-Lists的最后一个SG-List(存放地址为0000_0300的第四个SG-List)后,会自动继续处理后组SG-Lists,而无需中央处理器发送任何信息。
或者,选定建立控制器间通信信道接口下一个要处理的SG-List之后插入。则中央处理器亦利用所读取的寄存器内Next-SG-List Addr.(0000_040),至该内存地址0000_0400内取得该Next-SG-List Addr.为0000_030,更改内存中此字段内容为图12所示新产生的SG-Lists的第一个SG-List所存放的地址0000_050,且将图12所示新产生的SG-Lists的最后一个SG-List的Next-SG-List Addr.字段填入前述读取插入处的Next-SG-ListAddr.(0000_030),使得该两组SG-Lists产生一连动关系(如图14所示)。而后同样中央处理器通知建立控制器间通信信道接口解除暂停状态,使得建立控制器间通信信道接口继续依序完成每个SG-List相对应的数据传送动作。亦就是,建立控制器间通信信道接口接续暂停机制前的动作继续做动,并且在处理完原本建立控制器间通信信道接口后面就会接续处理的SG-List(图11中的第三个SG-List)后,将先自动跳处理插入的SG-Lists,而后才会再跳回处理前组的最后一个SG-List(存放地址为0000_0300的第四个SG-List)后,而无需中央处理器发送任何信息。
当然除了最后一个或后一个SG-List可选为插入点,所选定的插入点亦可以是其后待处理的第二个或第三个等等的SG-List,只要不超过最后一个即可。如前等实施例,当产生需传送的新数据时,只要建立控制器间通信信道接口正在处理传送某一群组的数据,利用前述机制即会使新旧数据间产生一连动关系,令中央处理器不用等到建立控制器间通信信道接口回报旧数据已完成传送后再写入新数据的SG-List(s)的起始地址至寄存器进而触发建立控制器间通信信道接口,建立控制器间通信信道接口即会自动处理传送此笔新数据。且由于理论上,在子系统运作上,存储虚拟化控制器会不断有数据需传送给其同伴(另一存储虚拟化控制器)备存,也就是在前一笔甚至是多笔数据尚未完全传送给同伴时就会有新数据产生,因此,就前述机制而言,中央处理器只需建立与维护数据相对应的SG-List(s)以及以系统启动后所产生的第一个SG-List的存放地址写入建立ICC的建立控制器间通信信道接口的寄存器,其后该建立控制器间通信信道接口即持续不断在读取与传送数据,将有效大幅分担中央处理器之工作,进而提升中央处理器的工作效能。
再者,当中央处理器于发生需要整合或修改或删除某SG-List(s),如同前述插入或接续连动程序,中央处理器可藉由读取寄存器内所存放有关Next-SG-List Addr.字段内的信息得知PCI-E接口是否有下一个SG-List要处理或者是下一个要处理的SG-List存放于何处等信息,也就是,中央处理器可藉此了解有那些SG-List是建立控制器间通信信道接口尚未处理。因此,中央处理器可判断其意欲整合或修改或删除的某SG-List(s)是否为建立控制器间通信信道接口尚未处理的SG-List(s),若是的话,则中央处理器可对该SG-List进行整合或修改或删除等动作。
当然,在中央处理器进行前述的修改或删除程序时,在读取寄存器内信息前,同样可利用发送暂停请求要求建立控制器间通信信道接口先暂停手上与传送冗余数据相关的动作,并于收到暂停认可后才进行读取动作,以避免因建立控制器间通信信道接口持续进行传送工作而与中央处理器其后的修改或删除动作发生冲突的情事。而同样的在中央处理器结束完整个修改或删除的程序后要通知建立控制器间通信信道接口解除暂停状态,以使其继续作动。
另外,在中央处理器可依实际状况结合前述的插入或接续连动程序与修改或删除程序,例如:在前述说明插入或接续连动程序的一假设例(图13)中,当中央处理器去更改内存内第四个SG-List的Next-SG-List Addr.字段数据为欲接续处理的新产生的SG-List(s)的起始地址时,可同时以依实际需要(例如:CPU欲设定建立控制器间通信信道接口在整个新连带关系的SG-Lists皆做完时才产生interrupt信号通知CPU),去更改该SG-List的Int字段的设定,而将此字段数据改为0,则建立控制器间通信信道接口在完成此第四个SG-List后将不会发送Interrupt信号至中央处理器。或如:在进行修改该或删除程序时,亦可依当时状况或需求,利用更改尚未被建立控制器间通信信道接口读取处理的SG-Lists的Next-SG-List Addr.即可重新设定这些尚未处理到的SG-Lists之间的连带关系。
而除了前述传送数据至另一存储虚拟化控制器进而存入其内存的方法外,若系统系被设计一存储虚拟化控制器可对冗余配置的另一存储虚拟化控制器的内存进行存取(写入/读取)操作时,则该SG-List内尚有一数据方向(Dir)字段,用以指示执行写入或读取操作,例如:1为写入(Data Out),0为读取(Data In)(请参阅图10)。
因而,中央处理器将存放此SG-List的内存地址写入寄存器,建立控制器间通信信道的接口即依据寄存器所传送的地址信息将该SG-List内的数据读取出,并根据前述所定义的各字段内的指示信息进行作动。
若Dir字段是被设定指示进行写入操作,则该接口是可依前述各例所述依据每一笔离散数据的来源起始地址字段以及该离散数据长度字段内容的指示,依序于读取该笔离散数据,而后将该笔离散数据、该笔离散数据的目标起始地址以及指示进行写入操作的指令一起通过控制器间的通信信道传输给另一存储虚拟化控制器的建立控制器间通信信道接口。
而若为读取操作,在一实施例中,该建立控制器间通信信道接口可将该SG-List内容传送给另一存储虚拟化控制器的建立控制器间通信信道接口,该另一端接口接收并存入寄存器后,依据每一笔离散数据的来源起始地址字段以及该离散数据长度字段内容的指示,依序读取每笔离散数据,而后将离散数据与离散数据相关的信息(如:目标起始地址、数据长度)回传给建立控制器间通信信道接口,该接口再依目标起始地址将数据存入内存中。在另一实施例中,是非将整个SG-List的内容都传送给另一端,而是只传送SG-List内与每笔离散数据相关字段数据,甚且是分批传送每笔离散数据相关字段数据(例如:来源起始地址以及数据长度),传送时可带有一指示进行读取操作的指令,而在收到另一端所回传依照来源起始地址与数据长度取得的离散数据后,再存入该笔离散数据的目标起始地址。最后,就存储虚拟化控制器之间小量数据的传递来说,本发明是提出另一种进行数据传送的方法,使能更为提高存储虚拟化控制器的整体效能。
请参阅图18,显示本发明所提出的另一种在二存储虚拟化控制器间传送数据的方法。当二存储虚拟化控制器间协调建立通信信道后(步骤S702),若其中一存储虚拟化控制器之中央处理器有需传递给另一者的信息时,中央处理器是将直接发送数据传输请求信息至CPU芯片组(步骤S704),此CPU芯片组将响应此信息而将需传递的信息传送给另一存储虚拟化控制器(步骤S706),而由另一存储虚拟化控制器内的CPU芯片组接收并直接处理。
请再配合图5,依据此本发明所提出的方法,当中央处理器242需传送信息给第二存储虚拟化控制器时,其中一种传递数据传输请求信息的实作方式是为中央处理器242将欲传送至另一端的信息通过CPU接口910而至IM BUS950,并由建立控制器间通信信道ICC的PCI-E接口934读取而传送至第二存储虚拟化控制器200’。此外,当一存储虚拟化控制器(例如:第一存储虚拟化控制器)的PCI-E接口934接收到另一存储虚拟化控制器(如第二存储虚拟化控制器)所传送的信息,则通过IM BUS950而送至内存控制器920,进而存入内存280内。
以下提出一实施例来进一步说明。首先,设定就每一存储虚拟化控制器而言,是将冗余配置的另一存储虚拟化控制器的内存视为本身内存的延伸。假设第一存储虚拟化控制器与第二存储虚拟化控制器的内存空间皆为2G时,每一存储虚拟化控制器的物理内存地址设为0000_0000-7FFF_FFFF,而将冗余配置的另一存储虚拟化控制器的内存地址是视为8000_0000-FFFF_FFFF。在本例中是采用将另一存储虚拟化控制器的内存地址直接接续本身内存地址,亦即,一存储虚拟化控制器是将冗余配置的另一存储虚拟化控制器物理内存地址P视为虚拟内存地址2G+P。然实际上亦可采用非直接接续的方式,例如:将另一存储虚拟化控制器物理内存地址P视为虚拟内存地址3G+P,原则上只要与其自己本身的物理内存地址不重复即可。再者,此处虽以二存储虚拟化控制器有相同的存储空间的内存为例,但实务上,可能二控制器的内存空间不同,例如第一存储虚拟化控制器为2G但第二存储虚拟化控制器为1G,且实体或虚拟的内存地址亦依照内存空间而定。并且依据本发明是设定就每一个存储虚拟化控制器而言,冗余配置的另一方有一部分或全部的内存可供其存取。
假设当一存储虚拟化控制器欲将某一数据写入另一存储虚拟化控制器的内存地址2100_0000内时,则CPU242将此写入对象的目标起始地址(A100_0000)与写入数据直接传输至CPU接口910,接着该接口910将此地址(A100_0000)与写入数据传送至IM BUS950上,而由耦接至另一存储虚拟化控制器的PCI-E接口934读取。由于中央处理器910所发出的信息中的目标起始地址是为指向另一存储虚拟化控制器的虚拟内存地址,而CPU芯片组244内各对外接口中是仅有PCI-E接口934是被设计作为与另一存储虚拟话控制器沟通的接口,因此各组件得以判别且仅有此建立控制器间通信信道的接口会去读取并执行数据传输。
在一本实施例中,建立控制器间通信信道的PCI-E接口934读取目标起始地址A100_0000与写入数据后,是先将目标起始地址A100_0000转换为相对应的物理内存地址2100_0000,在与写入数据一同传送给另一存储虚拟化控制器。而当另一存储虚拟化控制器接收到该物理内存地址2100_0000与写入数据等信息时,将数据写入实体地址2100_0000。
而在另一实施例中,此将虚拟内存地址转换为相对应的实体地址的步骤是由接收端的接口来进行。即建立控制器间通信信道的PCI-E接口934进而将该目标起始地址A100_0000与写入数据传输至另一存储虚拟化控制器。而当另一存储虚拟化控制器的PCI-E接口读取到另一端所传送的目标起始地址A100_0000以及写入数据等信息,是将此目标起始地址A100_0000(虚拟内存地址)转换为相对应的实体地址2100_0000,而将数据写入该实体地址2100_0000。
依据本实施例,当二存储虚拟化控制器间建立了通信信道ICC,就每一个存储虚拟化控制器而言,是将冗余配置的另一个存储虚拟化控制器视为一终端装置,故可对其所具有之内存进行存取动作。因而,除了,前述将数据传送写入至另一存储虚拟化控制器外,亦可读取另一存储虚拟化控制器的内存内数据。
若设计一存储虚拟化控制器是可直接对冗余配置的另一方的内存进行写入与读取的操作时,则存储虚拟化控制器的中央处理器所发出的数据传输请求必须包括存取指令,以指示进行写入或读取的操作。
若为进行写入操作,则如前述做法。而若为读取操作,则数据传输请求是尚包括数据来源起始地址以及数据长度。同样地,由于来源起始地址是为指向另一存储虚拟化控制器的虚拟内存地址,因而建立控制器间通信信道的接口会读取此请求,并于处理后转送给冗余配置的另一存储虚拟化控制器,且于收到另一存储虚拟化控制器的回报信息后转给中央处理器。
当CPU芯片组内建立控制器间通信信道接口接收到由另一控制器端所传送的请求时,是解读请求内的存/取指令而进行相对应的写入或者读取数据操作。若为写入操作则如前述。若为读取操作,则将依照来源起始地址与数据长度读取数据并回报给该发出请求者,前述整个存/取过程是由CPU芯片组自行执行。且如前述写入操作一般,数据传输请求内虚拟内存地址转换为相对应的物理内存地址的步骤可以是由发送端或者接收端的建立控制器间通信信道的接口来执行。亦即,本方法主要是采用CPU直接下达传输请求给CPU芯片组,而由建立控制器间通信信道的接口所读取并将其传递至另一端的存储虚拟化控制器,因而CPU无须对这些数据建立相对应的SG-List。
而若一建立控制器间通信信道的接口接收到另一存储虚拟化控制器所传送的数据时,整个数据存/取内存的过程是由该CPU芯片组执行,完全无需动用到其中央处理器。
故而,依据本实施例的结构,一存储虚拟化控制器是可直接对冗余配置的另一存储虚拟化控制器进行存取动作,使当其损坏而由对方接替其工作后,于其复原时,可直接藉由读取对方的内存内容,或者由对方主动传输相关信息,使能获取了解其接替后的工作状态与进度等信息,而能恢复拿回接续处理。其且可将另一存储虚拟化控制器的内存视为该本身内存的延伸。
而由于前述方法,中央处理器并不对数据建立相对应的SG-List,对于小量数据传输时,能显现明显的功效,因为就小量数据来说,例如:一个仅仅1byte的数据,若需依照数据传输协议格式建立相对应的SG-List等动作,中央处理器于内存内建立的SG-Lis可能高达16bytest,且该CPU芯片组仍需读取该SG-List并依其内容处理,因而就显现出非常不经济。而在一较佳实施例中,更可搭配前述具有SG-List特性的传输数据的方式。使存储虚拟化控制器可视欲传送数据量的多寡来决定采用何种方式传送数据给另一存储虚拟化控制器,以使系统效能能达最佳化。
综上,本发明所提出的冗余存储虚拟化计算机系统,二存储虚拟化控制器间的通信信道是直接利用本地总线(如实施例中的PCI-Express)来达成,与传统上所采用的FC-AL,SATA或SCSI等外部连结完全不同,且相比较,本发明无须再通过一中间转介电路,因此,其电路设计不仅较为简化,且成本亦较低。
再者,为了解决二存储虚拟化控制器皆为主动装置而无法真的使二者间的通信信道联机的问题,在本发明的实施例中,是利用本地总线接口在系统开机后会自动发送含有其自身接口设定状态等信息给另一连结端的机能,藉此,各存储虚拟化控制器可了解其另一连结端其建立通信信道接口的模式为何,因此可察觉两者间是否处于可建立联机的状态,若处于无法建立联机的状态,则进入转换程序,转换至少一通信信道端的本地总线接口操作模式,使其可顺利建立联机。
而对于转换程序,除了提出单边转换实施例外,亦提出一自动撮合实施例,利用随机随机数选取的方式决定一等待时间值,在该时间达到后进行转换接口操作模式,由于二者间必定会发生所选定的等待时间值不同的情事,因此其中一者必定先到达,而先行进行转换,因此可成功撮合二存储虚拟化控制器间通信信道二端的接口的操作模式。
又,在如何运用该本地总线所形成的通信信道传送数据的部分,又提出一实施方法,使得中央处理器只需依照一事先定义的数据传输协议格式建立并维护欲传送数据相对应的SG-List,并将第一个SG-List的存放地址写入CPU芯片组内的寄存器即可,其它需执行的读取数据与将这些数据传送的大量动作,将完全由建立控制器间通信信道的接口执行,因此能有效降低冗余存储虚拟化控制器间为了保持相互数据同步与一致性的要求而延伸出影响中央处理器效能的问题。且再进一步的实施例中,更能使在前一笔数据未完成传送前所产生的新数据间产生连动关系,使建立控制器间通信信道的接口可自动接续处理。
最后,为了能使存储虚拟化控制器的效能达到较佳化,针对冗余存储虚拟化控制器间的小量数据传输上,亦提出一种冗余存储虚拟化控制器间的传输信息之方法,主要是利用于二存储虚拟化控制器间建立了通信信道后,采用控制器内中央处理器直接通过ICC传送请求信息至另一端的方式,无须建构SG-List,因而,对小量数据传输上,可增加系统处理效能。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明专利的涵盖范围。
Claims (75)
1.一种计算机系统,包含有:
一主机,用来发出输出入请求;
一组冗余存储虚拟化控制器,是用于执行输出入操作以响应该主机发出的输出入请求,其包括有耦接至该主机的一第一与一第二存储虚拟化控制器,该第一与该第二存储虚拟化控制器间是利用一本地总线进行通信;以及
一组实体存储装置,耦接于这些存储虚拟化控制器,是用来提供该计算机系统存储空间;
其中,当该第一存储虚拟化控制器发生状况时,该第二存储虚拟化控制器将自动地接替该发生状况的第一存储虚拟化控制器原先执行的功能。
2.如权利要求1所述的计算机系统,其中,该本地总线是为下列之一者:
周边组件连结总线、周边组件连结扩充总线及周边组件连结快捷总线
3.如权利要求1所述的计算机系统,其中,该本地总线是采用下列之一的方式连接该二存储虚拟化控制器:外接及背板。
4.如权利要求1所述的计算机系统,其中,该第一与该第二存储虚拟化控制器各包括一本地总线接口,用以建立该第一与第二存储虚拟化控制器间的该本地总线通信信道。
5.如权利要求4所述的计算机系统,其中,该二本地总线接口各位于一中央处理器芯片组,且利用该二中央处理器芯片组的至少一者的接脚设定来使得该二本地总线接口的一者去改变其操作模式,以使这些存储虚拟化控制器的本地总线接口之间得以建立联机。
6.如权利要求4所述的计算机系统,其中,是利用软件来填写该二本地总线接口的一者的寄存器而使得该本地总线接口去改变操作模式,以使这些存储虚拟化控制器的本地总线接口得以建立联机。
7.如权利要求4所述的计算机系统,其中,这些本地总线接口更具有交叉连结的特征。
8.如权利要求7所述的计算机系统,其中,这些本地总线接口的至少一者是执行一自动转换机制,是利用该交叉连结的特征来转换接口的操作模式,以使该第一与第二存储虚拟化控制器间能建立联机。
9.一种存储虚拟化子系统,包含有:
一组冗余存储虚拟化控制器,是用于执行输出入操作以响应一主机发出的输出入请求,其包括有用来耦接至该主机的一第一与一第二存储虚拟化控制器,该第一与该第二存储虚拟化控制器间是利用一本地总线进行通信;以及
一组实体存储装置,耦接于这些存储虚拟化控制器,是用来提供该计算机系统存储空间;
其中,当该第一存储虚拟化控制器发生状况时,则该第二存储虚拟化控制器将自动地接替该发生状况的第一存储虚拟化控制器原先执行的功能。
10.如权利要求9所述的子系统,其中,该本地总线是采用下列之一方式连接该二存储虚拟化控制器:缆线,及背板。
11.如权利要求9所述的子系统,其中,该本地总线是为下列之一者:周边组件连结总线、周边组件连结扩充总线及周边组件连结快捷总线。
12.如权利要求9所述的子系统,其中,该第一与该第二存储虚拟化控制器各包括一本地总线接口,用以建立该第一与第二存储虚拟化控制器间的该本地总线通信信道。
13.如权利要求12所述的子系统,其中,该二本地总线接口各位于一中央处理器芯片组,且利用该二中央处理器芯片组的至少一者的接脚设定来使得该二本地总线接口的一者去改变其操作模式,以使这些存储虚拟化控制器的本地总线接口之间得以建立联机。
14.如权利要求12所述的子系统,其中,是利用软件来填写该二本地总线接口的一者的寄存器而使得该本地总线接口去改变操作模式,以使这些存储虚拟化控制器的本地总线接口之间得以建立联机。
15.如权利要求12所述的子系统,其中,这些本地总线接口更具有交叉连结的特征。
16.如权利要求15所述的子系统,其中,这些本地总线接口的至少一者是执行一自动转换机制,是利用该交叉连结的特征来转换接口的操作模式,以使该第一与第二存储虚拟化控制器间能建立联机。
17.一种存储虚拟化控制器,是包含有:
一中央处理电路,用以执行输出入操作以响应一主机的输出入请求,且可利用一本地总线耦接于另一存储虚拟化控制器;
至少一输出入装置连结控制器,耦接于该中央处理电路;
至少一主机端输出入装置端口,设置在该至少一输出入装置连结控制器的一者中,用来耦接至该主机;
至少一装置端输出入装置端口,设置在该至少一输出入装置连结控制器的一者中,用来耦接至至少一实体存储装置;以及
一内存,是连接于该中央处理电路,是用来缓冲传送于该主机及该实体存储装置之间通过该中央处理电路的数据。
18.如权利要求17所述的存储虚拟化控制器,其中,该中央处理电路包含有:
一中央处理器;以及
一中央处理器芯片组,该中央处理器芯片组是用以做为该中央处理器与其它电子组件间的接口,是包括有:
一第一本地总线接口,是经由该本地总线耦接于该另一存储虚拟化控制器;
一内部主要总线,作为该中央处理器芯片组内各主要电子组件间的通信连结,用以在其间通联数据信号及控制信号;
一中央处理器接口,用以耦接至该中央处理器与该内部主要总线,作为该中央处理器与其它电子组件间的沟通接口;
一内存控制器,用以耦接至该内存与该内部主要总线,当该内存控制器接收到由该内部主要总线传来的数据,会将这些数据存储在该内存中,该内存中的数据亦通过该内存控制器传送至该内部主要总线;以及
至少一第二本地总线接口,用以耦接至该输出入装置连结控制器与该内部主要总线,做为该二者间的沟通接口。
19.如权利要求18所述的存储虚拟化控制器,其中,该中央处理器芯片组更包括一寄存器,该寄存器是归属于该第一本地总线接口,该寄存器内一存储空间是被规划定义作为该中央处理器写入与传输数据给该另一存储虚拟化控制器相关信息之用。
20.如权利要求19所述的存储虚拟化控制器,其中,该寄存器是位于该第一本地总线接口之中。
21.如权利要求19所述的存储虚拟化控制器,其中,该中央处理器芯片组更包括一寄存器阵列,且该寄存器是位于该寄存器阵列之中。
22.如权利要求18所述的存储虚拟化控制器,其中,该第一本地总线接口是为下列之一者:周边组件连结快捷总线接口,周边组件连结扩充总线接口,以及周边组件连结总线接口。
23.如权利要求18所述的存储虚拟化控制器,其中,更包含利用该中央处理器芯片组的接脚设定来使得该第一本地总线接口去改变其操作模式,以使与该另一存储虚拟化控制器相对应而得以建立彼此间的联机。
24.如权利要求18所述的存储虚拟化控制器,其中,更包含利用软件来填写该第一本地总线接口的一寄存器而使得该第一本地总线接口去改变操作模式,以使与该另一存储虚拟化控制器相对应而得以建立彼此间的联机。
25.如权利要求18所述的存储虚拟化控制器,其中,该第一本地总线接口更具有交叉连结的特征。
26.如权利要求25所述的存储虚拟化控制器,其中,该第一本地总线接口是执行一自动转换机制,是利用该交叉连结的特征来转换接口的操作模式,以使与该另一存储虚拟化控制器相对应而得以建立彼此间的联机。
27.一种建立存储虚拟化控制器之间的通信信道的方法,包括以下步骤:
这些存储虚拟化控制器通过作为控制器间通信信道端的本地总线接口发送一包含其操作模式的信息的信息;
这些存储虚拟化控制器中的至少一者于通过该本地总线接口接收到另一该存储虚拟化控制器的操作模式信息时,将所收到的该另一存储虚拟化控制器的操作模式信息与自身的操作模式进行比较以判断是否能建立联机;
若判断能建立联机,则直接依该本地总线接口设定建立该二存储虚拟化控制器间的通信信道;以及
若判断为无法建立联机,则这些存储虚拟化控制器中的至少一者将转换该本地总线接口的操作模式,以使与另一该存储虚拟化控制器的该本地总线接口的操作模式相对应,进而得以建立彼此的联机。
28.如权利要求27所述的方法,其中,这些本地总线接口是周边组件连结快捷总线接口。
29.如权利要求27所述的方法,其中,该本地总线是具有交叉连结的特征,且当该比较判断结果为无法建立联机,则该存储虚拟化控制器是利用该交叉连结的特征来转换接口的操作模式。
30.如权利要求27所述的方法,其中,当比较判断结果为无法建立联机后所执行的步骤中,包括有一撮合机制,以使这些本地总线接口的操作模式彼此相对应,而得以建立联机。
31.如权利要求30所述的方法,其中,该撮合机制系包括以下步骤:
随机选定一计时临界参数值,接着启动计时;
若在时间达到该临界值之前,接收到对方新的操作模式信息显示其已改变操作模式,则完成撮合并建立联机;
若在时间达到该临界值时,且未收到对方操作模式已改变的信息,则执行该转换操作模式步骤,且于转换完成后发送一含有新的操作模式状态信息给对方;以及
重新判断两者间的操作模式型态是否已不相同,若不相同则撮合完成并建立联机,若相同,则重新执行该撮合机制,直到该撮合完成。
32.如权利要求31所述的方法,其中,在该撮合机制中该执行转换操作模式的步骤中更包括以下步骤:若在执行转换操作模式时,接收到对方传送的操作模式信息,则中止转换维持原先所设定的操作模式。
33.如权利要求32所述的方法,其中,在该中止转换前,是先执行比较对方的操作模式是否与转换前本身的操作模式不同,若是,才进行该中止转换等步骤,否则则继续执行转换。
34.一种在一计算机系统中存储虚拟化控制器间进行数据传输的方法,包含以下步骤:
A.一该存储虚拟化控制器的中央处理器依据一事先定义的数据传输协议格式对欲传输给另一存储虚拟化控制器的数据建立至少一相对应的离散聚集表;
B.该中央处理器将该存放该离散聚集表的地址写入一寄存器;以及
C.一本地总线接口依据该写入寄存器内的地址至一内存内读取该离散聚集表,依据该表中所指示的存储该数据的地址至该内存内读取数据,并通过一本地总线传送给另一个存储虚拟化控制器。
35.如权利要求34所述的方法,其中,该本地总线是为下列之一者:周边组件连结总线、周边组件连结扩充总线及周边组件连结快捷总线。
36.如权利要求34所述的方法,其中,当该中央处理器将该存放该离散聚集表的地址写入该寄存器后,该寄存器是将该地址信息传送至该本地总线接口,及触发该本地总线接口执行该步骤C.。
37.如权利要求34所述的方法,其中,该中央处理器是将该存放该离散聚集表的地址写入该寄存器中被定义作为写入该存放离散聚集表地址之用的特定地址的存储空间。
38.如权利要求34所述的方法,其中,该离散聚集表的数据传输协议格式是包括以下字段:
表内数据数量字段,用以指示表中内含的离散聚集数据的数目;
来源起始地址字段,用以指示每笔欲传输数据其所存放的内存起始地址;
数据长度字段,用以指示该每笔欲传输数据的长度;以及
目标起始地址字段,用以指示传输数据欲存放的目标地址。
39.如权利要求38所述的方法,其中,步骤C.中,该本地总线接口执行包括以下步骤:
依据该中央处理器所发送的信息至该内存内将该离散聚集表标头内的控制信息读出,根据控制信息中该表内数据数量字段内所指示的数量依序往下读取该数量的数据;以及
依据所读取到的该每一笔数据中的该来源起始地址字段以及该离散数据长度字段内容的指示,一一读取该笔离散数据,并将该每笔离散数据连同该笔离散数据的该目标起始地址一起通过该本地总线传输给该另一存储虚拟化控制器。
40.如权利要求39所述的方法,其中,该本地总线接口所读取的该离散数据是先暂存于一缓冲器,其后才连同该目标起始地址一起传输出去。
41.如权利要求40所述的方法,其中,该本地总线接口在该读取与传送该笔离散数据时,因应该缓冲器的实际容量将该笔离散数据分批读取与传送。
42.如权利要求39所述的方法,其中,更包括该另一存储虚拟化控制器的本地总线接口接收该笔离散数据与该目标起始地址,将该笔离散数据存于该目标地址的内存内的步骤。
43.如权利要求39所述的方法,其中,该离散聚集表的数据传输协议格式更包括一数据方向字段,用以指示执行写入或读取操作,使得该本地总线接口依据此字段内容进行相对应的存取操作。
44.如权利要求43所述的方法,其中,在步骤C.,在该本地总线接口执行完读取离散聚集表内容的步骤后,更包含有:
依据该数据方向字段的内容执行相对应的写入或读取操作;
若该内容指示为执行写入操作,则执行这些后续的依据离散聚集表各字段读取离散数据与传输离散数据至该另一存储虚拟化控制器的步骤;
若该内容指示执行读取操作,则将该离散数据表内至少部分字段内容通过该本地总线传输给该另一存储虚拟化控制器;以及
在收到该另一存储虚拟化控制器所回传的数据后,再依该数据所相对应的该目标起始地址存入该内存内。
45.如权利要求44所述的方法,其中,该中央处理器芯片组是将该整个离散数据表内容传输给该另一存储虚拟化控制器。
46.如权利要求44所述的方法,其中,更包括该另一存储虚拟化控制器的中央处理器芯片组接收这些离散数据表内容后,依据该来源起始地址字段以及该离散数据长度字段内容的指示,依序读取每笔离散数据,以及回传这些离散数据的步骤。
47.如权利要求38所述的方法,其中,该离散聚集表的数据传输协议格式更包括以下字段:
第一中断字段,用以设定是否于完成此表内所列数据传输后,该中央处理器芯片组需产生一中断信号通知该中央处理器;以及
第二中断字段,用以设定该另一存储虚拟控制器在接收这些数据并完成相对应操作后,产生一中断信号。
48.如权利要求47所述的方法,其中,步骤C.更包括有:
该中央处理器芯片组将该第二中断字段内容传送给该另一存储虚拟化控制器;以及
该中央处理器芯片组于完成该离散聚集表内所指示的数据传输后,依该第一中断字段的指示来决定是否进行产生一中断信号至中央处理器的动作。
49.如权利要求38所述的方法,其中,该离散聚集表的数据传输协议格式更包括下一个离散聚集表地址的字段,用以存放下一个离散聚集表所存放的内存地址,以指示该中央处理器芯片组于完成一离散聚集表内容所指示的数据传输后,依据该下一个离散聚集表地址的字段的内容,读取下一个离散聚集表,进而连动继续处理。
50.如权利要求49所述的方法,其中,更包含有系统规划设定有一表示无下一个离散聚集表存在的数值,当该下一个离散聚集表地址字段的内容为该数值时,即显示无存在其它离散聚集表需要连动处理。
51.如权利要求50所述的方法,其中该数值是为0。
52.如权利要求49所述的方法,在步骤A与B之间更包括以下步骤:
查核是否存在有尚未处理完的离散聚集表;
若有,则进行一连动程序,用以使该新建立的离散聚集表与前述尚未处理完的离散聚集表产生连动;以及
否则,执行步骤B。
53.如权利要求52所述的方法,其中
在该进行连动程序之前更包括以下步骤:
该中央处理器发送出一暂停请求给该本地总线接口,用以请求暂停传输数据至该另一存储虚拟化控制器的相关动作;以及
当该本地总线接口收到该暂停请求,是执行一暂停机制,并在完成该暂停机制后,回复一暂停认可给该中央处理器;以及
在该进行连动程序之后更包括以下步骤:
该中央处理器通知该本地总线接口解除暂停状态;以及
当该本地总线接口收到该解除通知,是恢复所暂停的动作,继续执行处理传送数据。
54.如权利要求53所述的方法,其中,该暂停机制是将正在处理的离散数据完成传送后暂停其后的各笔离散数据的读取传送动作,并纪录暂停点以利取消暂停时恢复接续处理。
55.如权利要求53所述的方法,其中,该暂停机制系为将正在处理的离散数据表内的所有离散数据皆完成传送后暂停进入下一个离散数据表的动作。
56.如权利要求52所述的方法,其中,该连动程序包括:
该中央处理器读取存于该寄存器内的离散聚集表中下一个离散聚集表地址字段内的地址数据;
该中央处理器依据所读取的该寄存器内的地址,判断该本地总线接口其后是否有需接续处理的离散聚集表;
若判断结果为无需接续处理的离散聚集表,则更改该寄存器内所存放下一个离散聚集表地址的字段内容为存放该新建立的第一个离散聚集表的起始地址;以及
若判断结果为具有须接续处理的离散聚集表,则更改这些尚未处理完的离散聚集表的一者的存放下一个离散聚集表地址的字段内容,将其改为存放该新建立的第一个离散聚集表的起始地址,且将该新建立的离散聚集表中最后一者的存放下一个离散聚集表地址字段内容设定与前述尚未处理完的离散聚集表的一者在未更改前的该存放下一个离散聚集表地址字段内容一致。
57.如权利要求56所述的方法,其中,该尚未处理完的离散聚集表的一者是指在该本地总线接口进行暂停机制时,存储在寄存器内的离散聚集表。
58.如权利要求56所述的方法,其中,该尚未处理完的离散聚集表的一者是指这些尚未处理完的连动离散聚集表中的最后一个离散聚集表。
59.如权利要求56所述的方法,其中,更包括建立一纪录有所有离散聚集表所存放内存地址的表,用以供该中央处理器查询该欲更改存放下一个离散聚集表地址的字段内容的尚未处理完的离散聚集表所存放的内存地址。
60.如权利要求56所述的方法,其中,该中央处理器系依据所读取的该寄存器内的下一个离散聚集表地址信息至该地址读取存于该地址内的离散聚集表的下一个离散聚集表地址字段内容,依序重复之,直到读取到该中央处理器所欲更改存放下一个离散聚集表地址的字段内容的尚未处理完的离散聚集表为止。
61.如权利要求34所述的方法,其中,当该中央处理器需对已建立的这些离散聚集表进行调动时,是执行包括以下步骤:
查核目前未处理完的离散聚集表;以及
判断其意欲调动的离散聚集表是否属于这些尚未处理完的离散聚集表之中,若是则进行调动,否则,不进行调动。
62.如权利要求61所述的方法,其中,是利用该中央处理器读取存于该寄存器内的该离散聚集表中下一个离散聚集表地址字段内的地址数据,以知悉数据传输目前进度。
63.如权利要求61所述的方法,其中
在进行调动之前更包括以下步骤:
该中央处理器发送出一暂停请求给该本地总线接口,用以请求暂停传输数据至该另一存储虚拟化控制器的相关动作;以及
当该本地总线接口收到该暂停请求,是执行一暂停机制,并在完成该暂停机制后,回复一暂停认可给该中央处理器;以及
在进行调动之后更包括以下步骤:
该中央处理器通知该本地总线接口解除暂停状态;以及
当该本地总线接口收到该解除通知,是恢复所暂停的动作,继续执行处理传送数据。
64.一种计算机系统中存储虚拟化控制器间传送数据的方法,包含有以下步骤:
一存储虚拟化控制器的中央处理器是发送一数据传输请求给一中央处理器芯片组;
该中央处理器芯片组内的一第一本地总线接口是将该请求转传给另一存储虚拟化控制器;以及
该另一存储虚拟化控制器的一第二本地总线接口在接收到该请求后将进行相对应的处理。
65.如权利要求64所述的方法,其中,这些本地总线接口是为下列之一者:周边组件连结总线接口、周边组件连结扩充总线接口及周边组件连结快捷总线接口。
66.如权利要求64所述的方法,其中,该中央处理器发送数据传输请求的步骤包括:
该中央处理器传送该数据传输请求给该中央处理器芯片组中的一中央处理器接口;
该中央处理器接口将该数据传输请求放置在该中央处理器芯片组中的内部主要总线;以及
由该第一本地总线接口读取该数据传输请求。
67.如权利要求64所述的方法,其中,该数据传输请求内容是包括有一判别信息,使该第一本地总线接口得以判别而读取该数据传输请求。
68.如权利要求67所述的方法,其中,更包含有:该存储虚拟化控制器是定义该另一存储虚拟化控制器的物理内存地址以一虚拟内存地址形式表示,使与其自己本身的物理内存地址不会重复,且该判别信息是为一内存地址,该内存地址并以该虚拟化内存地址形式表示。
69.如权利要求68所述的方法,其中,是采用直接接续本身物理内存地址的方式去定义该虚拟内存地址。
70.如权利要求68所述的方法,更包括该第一及第二本地总线接口中的一者是执行将该内存地址转换为相对应的物理内存地址的步骤。
71.如权利要求64所述的方法,其中,该数据传输请求是包括存取指令,用以指示进行下列之一的操作:写入及读取。
72.如权利要求71所述的方法,其中,该另一存储虚拟化控制器所进行的相对应的处理是包括该第二本地总线接口解读请求内的该存取指令以进行该指示相对应的操作。
73.如权利要求64项及第71所述的方法,其中,该数据传输请求是包括一写入数据,以及一目标起始地址,该目标起始地址是用以指示写入该写入数据的内存地址,且该另一存储虚拟化控制器所进行该相对应的处理是包括:依据该目标起始地址将该写入数据写入内存中。
74.如权利要求73所述的方法,其中,该数据传输请求更包括一数据长度,以及一数据来源起始地址,且该另一存储虚拟化控制器所进行相对应的处理是指依据该数据来源起始地址与该数据长度至该内存内读取数据并将该数据回传给该第一本地总线接口。
75.如权利要求74所述的方法,更包括有:当该第一本地总线接口在收到该另一存储虚拟化控制器的回传数据后是传送给中央处理器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US59342505P | 2005-01-13 | 2005-01-13 | |
US60/593,425 | 2005-01-13 | ||
US60/594,898 | 2005-05-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1804778A true CN1804778A (zh) | 2006-07-19 |
CN100447731C CN100447731C (zh) | 2008-12-31 |
Family
ID=36866821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100036494A Active CN100447731C (zh) | 2005-01-13 | 2006-01-09 | 冗余存储虚拟化计算机系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100447731C (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488104B (zh) * | 2009-02-26 | 2011-05-04 | 北京云快线软件服务有限公司 | 一种实现高效安全存储的系统和方法 |
CN102298507A (zh) * | 2010-06-24 | 2011-12-28 | 宇瞻科技股份有限公司 | 具有虚拟光盘装置的存储装置 |
CN102681951A (zh) * | 2011-03-08 | 2012-09-19 | 擎泰科技股份有限公司 | 内嵌式存储器系统 |
CN103440177A (zh) * | 2013-08-23 | 2013-12-11 | 浪潮电子信息产业股份有限公司 | 一种基于numa多物理层分区的存储控制冗余方法 |
CN108694019A (zh) * | 2017-03-30 | 2018-10-23 | 英特尔公司 | 存储器中的操作的选择性噪声容许模式 |
CN109213702A (zh) * | 2017-06-30 | 2019-01-15 | 伊姆西Ip控股有限责任公司 | 虚拟机环境中的虚拟双控制模块之间的通信 |
CN113568677A (zh) * | 2021-07-14 | 2021-10-29 | 上海淇玥信息技术有限公司 | 一种数据对象解析方法、装置和电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003510683A (ja) * | 1999-09-22 | 2003-03-18 | ネットセル コーポレイション | Ataエミュレーション・ホストインターフェイスを備える、raid記憶装置コントローラーおよび方法。 |
JP3714613B2 (ja) * | 2001-12-12 | 2005-11-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 記憶装置、該記憶装置を含む情報処理装置および情報記憶システムのリカバリ方法 |
US8301809B2 (en) * | 2003-07-02 | 2012-10-30 | Infortrend Technology, Inc. | Storage virtualization computer system and external controller thereof |
-
2006
- 2006-01-09 CN CNB2006100036494A patent/CN100447731C/zh active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488104B (zh) * | 2009-02-26 | 2011-05-04 | 北京云快线软件服务有限公司 | 一种实现高效安全存储的系统和方法 |
CN102298507A (zh) * | 2010-06-24 | 2011-12-28 | 宇瞻科技股份有限公司 | 具有虚拟光盘装置的存储装置 |
CN102681951A (zh) * | 2011-03-08 | 2012-09-19 | 擎泰科技股份有限公司 | 内嵌式存储器系统 |
CN103440177A (zh) * | 2013-08-23 | 2013-12-11 | 浪潮电子信息产业股份有限公司 | 一种基于numa多物理层分区的存储控制冗余方法 |
CN108694019A (zh) * | 2017-03-30 | 2018-10-23 | 英特尔公司 | 存储器中的操作的选择性噪声容许模式 |
CN109213702A (zh) * | 2017-06-30 | 2019-01-15 | 伊姆西Ip控股有限责任公司 | 虚拟机环境中的虚拟双控制模块之间的通信 |
CN109213702B (zh) * | 2017-06-30 | 2022-08-30 | 伊姆西Ip控股有限责任公司 | 虚拟机环境中的虚拟双控制模块之间的通信 |
CN113568677A (zh) * | 2021-07-14 | 2021-10-29 | 上海淇玥信息技术有限公司 | 一种数据对象解析方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN100447731C (zh) | 2008-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1320437C (zh) | 磁盘驱动器组子系统及用于其中的外部模拟控制器 | |
CN1230759C (zh) | 进行最佳数据传送的多总线信息处理系统的总线-总线桥 | |
CN1804778A (zh) | 冗余存储虚拟化计算机系统 | |
CN1308851C (zh) | 数据处理系统中执行远程复制的方法和存储数据的方法 | |
CN1285036C (zh) | 数据处理系统和远程复制方法 | |
CN1230724C (zh) | 显示器的节电方法和装置 | |
CN1100295C (zh) | 计算机系统及其输入输出指令的发送方法 | |
CN1928840A (zh) | 存储装置虚拟化装置的设备控制交接方法 | |
EP1681625A2 (en) | Redundant storage virtualization subsystem and computer system having the same | |
CN1256681C (zh) | 从外围设备向主计算机系统传输中断的方法和装置 | |
CN1794162A (zh) | 储存虚拟化控制器、子系统及系统与方法 | |
CN1722107A (zh) | 计算机系统以及存储装置系统的迁移方法 | |
CN1975654A (zh) | 数据存储系统和数据存储控制装置 | |
CN1811744A (zh) | 通过串行总线互连多个处理节点的装置 | |
CN1222986A (zh) | 执行并飞"异"运算的方法和系统 | |
CN1869914A (zh) | 存储系统及存储系统的运用方法 | |
CN1924785A (zh) | 存储虚拟化控制器的同位引擎及同位引擎产生数据的方法 | |
CN1581877A (zh) | 存储系统 | |
CN1848070A (zh) | 数据存储设备、重构控制设备、重构控制方法与存储介质 | |
CN1633130A (zh) | 基于硬件支持的虚拟接口结构用户层网络通信系统 | |
CN1538282A (zh) | 存储设备控制装置和存储设备控制装置的控制方法 | |
CN1293456C (zh) | 集群型存储系统 | |
CN1690981A (zh) | 使用盘驱动器构成独立盘冗余阵列系统的方法和设备 | |
CN1655111A (zh) | 存储系统 | |
CN1379879A (zh) | 并行计算机体系结构,使用这种体系结构的信息处理单元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |