[go: up one dir, main page]

CN100447731C - Redundant Storage Virtualization Computer System - Google Patents

Redundant Storage Virtualization Computer System Download PDF

Info

Publication number
CN100447731C
CN100447731C CNB2006100036494A CN200610003649A CN100447731C CN 100447731 C CN100447731 C CN 100447731C CN B2006100036494 A CNB2006100036494 A CN B2006100036494A CN 200610003649 A CN200610003649 A CN 200610003649A CN 100447731 C CN100447731 C CN 100447731C
Authority
CN
China
Prior art keywords
storage virtualization
discrete
local bus
data
virtualization controller
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.)
Active
Application number
CNB2006100036494A
Other languages
Chinese (zh)
Other versions
CN1804778A (en
Inventor
周德成
黄威舜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infortrend Technology Inc
Original Assignee
Infortrend Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Infortrend Technology Inc filed Critical Infortrend Technology Inc
Publication of CN1804778A publication Critical patent/CN1804778A/en
Application granted granted Critical
Publication of CN100447731C publication Critical patent/CN100447731C/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

The invention provides a redundant storage virtualization computer system, which comprises: a host for sending out input/output request; a set of redundant storage virtualization controllers coupled to the host for performing IO operations in response to IO requests issued by the host; and a plurality of physical storage devices for providing storage space to the computer system. Each physical storage device is coupled to the set of redundant storage virtualization controllers, the set of redundant storage virtualization controllers comprises a first storage virtualization controller and a second storage virtualization controller, the first storage virtualization controller and the second storage virtualization controller are coupled to the host, the first storage virtualization controller and the second storage virtualization controller are communicated through a PCI-Express link, and in the set of redundant storage virtualization controllers, when one storage virtualization controller is offline, the other storage virtualization controller replaces functions originally executed by the offline storage virtualization controller.

Description

冗余存储虚拟化计算机系统 Redundant Storage Virtualization Computer System

技术领域 technical field

本发明涉及一种冗余存储虚拟化计算机系统(redundant storagevirtualization computer system),特别涉及一种利用本地总线(local bus)作为二存储虚拟化控制器间连结的冗余存储虚拟化计算机系统。The present invention relates to a redundant storage virtualization computer system (redundant storage virtualization computer system), in particular to a redundant storage virtualization computer system using a local bus as a connection between two storage virtualization controllers.

背景技术 Background technique

所谓存储虚拟化(storage virtualization)是一种将实体存储空间虚拟化的技术,其是将实体存储装置(PSD,physical storage devices)的不同区段结合成可供一主机系统存取使用的逻辑存储体(logical storage entity)-在此称为「逻辑媒体单元」(LMU,logical media unit)。该技术主要用于磁盘阵列(RAID)存储虚拟化,经由此磁盘阵列的技术,可将较小实体存储装置结合成为容量较大、可容错、高效能的逻辑媒体单元。The so-called storage virtualization (storage virtualization) is a technology that virtualizes physical storage space, which combines different sections of physical storage devices (PSD, physical storage devices) into logical storage that can be accessed by a host system. Body (logical storage entity)-herein referred to as "logical media unit" (LMU, logical media unit). This technology is mainly used for disk array (RAID) storage virtualization. Through this disk array technology, smaller physical storage devices can be combined into larger capacity, fault-tolerant, and high-performance logical media units.

存储虚拟化控制器(SVC,storage virtualization controller)的主要目的是将实体存储媒体的各区段的组合映像(map)形成一主机系统可见的逻辑媒体单元。由该主机系统发出的输出入(IO)请求在接收之后会先被剖析并解译,且相关的操作及数据会被编译成实体存储装置的输出入请求。这个过程可以是间接地,例如运用快取、延迟(如:回写(write-back))、预期(anticipate)(如:先读(read-ahead))、群集(group)等操作来加强效能及其它的操作特性,因而一主机输出入请求并不一定是以一对一的方式直接对应于实体存储装置输出入请求。The main purpose of the storage virtualization controller (SVC, storage virtualization controller) is to form a combined image (map) of each section of the physical storage medium into a logical media unit visible to the host system. The input/output (IO) request sent by the host system will be analyzed and interpreted after being received, and related operations and data will be compiled into an I/O request of the physical storage device. This process can be indirect, such as using cache, delay (such as: write-back (write-back)), anticipate (such as: read-ahead (read-ahead)), cluster (group) and other operations to enhance performance And other operating characteristics, so a host I/O request does not necessarily directly correspond to a physical storage device I/O request in a one-to-one manner.

外部(或可称为独立式(stand-alone))存储虚拟化控制器是一种经由输出入接口连接于主机系统的存储虚拟化控制器,且其可连接至位于主机系统外部的装置,一般而言,外部存储虚拟化控制器通常是独立于主机进行运作。An external (or stand-alone) storage virtualization controller is a storage virtualization controller connected to the host system via an I/O interface, and it can be connected to a device located outside the host system, generally In general, external storage virtualization controllers usually operate independently of the host.

将一对存储虚拟化控制器配置成一冗余对的主要动机是为了即使是在单一个存储虚拟化控制器发生故障或是失效的情形下,主机依旧可以连续不中断地执行数据存取工作,此是可利用在此等存储虚拟化控制器中加入一功能以使得其中一个控制器发生障碍或完全失能的情形下另一个控制器可接管其工作而实现。The main motivation for configuring a pair of storage virtualization controllers as a redundant pair is to allow the host to continue to perform data access tasks without interruption even if a single storage virtualization controller fails or fails. This can be achieved by adding a function to the storage virtualization controllers so that in the event that one controller malfunctions or fails completely, the other controller can take over its work.

冗余存储虚拟化控制器对的组态的分为两类,第一类是主动-待命模式(active-standby),在此模式中,其中一个存储虚拟化控制器(一般称为主要存储虚拟化控制器)对存储虚拟化子系统中的所有逻辑媒体单元的所有输出入请求进行呈现、管理及处理,而另一存储虚拟化控制器(一般称作次要存储虚拟化控制器)将仅是处于待命状态(stand by),而于主要存储虚拟化控制器发生障碍或失能时,随时接替主要存储虚拟化控制器。第二种是主动-主动模式(active-active),在此模式中,此两个存储虚拟化控制器同时对此存储虚拟化子系统中的各种逻辑媒体单元的输出入请求进行呈现、管理及处理。在主动-主动模式中,上述二存储虚拟化控制器一直都准备在另一个存储虚拟化控制器因故障(malfunction)而导致发生障碍或失能的情况下接管对方。主动-主动模式,通常提供较好的效能,因为其两个存储虚拟化控制器的资源(例如:中央处理器(CPU,central processing unit)时间、内部总线频宽...等)与单一存储虚拟化控制器相比可负荷较多的输出入请求服务。The configuration of redundant storage virtualization controller pairs is divided into two categories. The first type is active-standby mode (active-standby). In this mode, one of the storage virtualization One storage virtualization controller) presents, manages, and processes all I/O requests for all logical media units in the storage virtualization subsystem, while another storage virtualization controller (commonly referred to as a secondary storage virtualization controller) will only It is in a standby state (standby), and when the main storage virtualization controller fails or fails, it can take over the main storage virtualization controller at any time. The second is the active-active mode (active-active), in this mode, the two storage virtualization controllers simultaneously present and manage the input and output requests of various logical media units in the storage virtualization subsystem and processing. In the active-active mode, the two storage virtualization controllers are always ready to take over the other if the other storage virtualization controller malfunctions or becomes disabled due to a malfunction. Active-active mode, usually provides better performance, because the resources of its two storage virtualization controllers (such as: central processing unit (CPU, central processing unit) time, internal bus bandwidth, etc.) The virtualization controller can load more I/O request services than it does.

然不论是主动-被动模式或者是主动-主动模式,冗余存储虚拟化计算机系统的一个基本功能就是在一存储虚拟化控制器发生状况时,另一个存储虚拟化控制器得以接替(Take Over)发生状况的存储虚拟化控制器的工作,例如:继续完成存取直接存取存储装置中的数据。因此要能建构冗余存储虚拟化计算机系统,其存储虚拟化控制器间首先必须要能建立一个控制器间通信信道(ICC,inter-controller communications channel),藉由此通信信道得以传送信息;再者,每个存储虚拟化控制器亦必须得以随时知悉其同伴的存储虚拟化控制器的目前工作信息,也就是说两控制器间其数据几乎必须是同步且一致,如此才能于其同伴发生状况时得以接替其工作而实现冗余之效。Regardless of whether it is an active-passive mode or an active-active mode, a basic function of a redundant storage virtualization computer system is that when a storage virtualization controller fails, another storage virtualization controller can take over (Take Over) The work of the storage virtualization controller in which the situation occurs, for example: continue to complete the access to the data in the direct access storage device. Therefore, in order to be able to construct a redundant storage virtualization computer system, an inter-controller communications channel (ICC, inter-controller communications channel) must first be established between its storage virtualization controllers, and information can be transmitted through this communication channel; Or, each storage virtualization controller must also be able to know the current working information of its companion's storage virtualization controller at any time, that is to say, the data between the two controllers must be almost synchronized and consistent, so that the situation with its companion can occur Time can take over its work to achieve the effect of redundancy.

而对于建立控制器间通信信道此部分,目前一般是采用光纤信道仲裁循环(FC-AL)或小型计算机系统接口(SCSI,parallel small computer systeminterface)或序列先进技术接取接口(SATA,serial advanced technologyattachment)等通信连结,采用这些连结的主要因素是在于这些连结所具有的支持长距离与可外接缆线而利于二独立装置间联机等特性。For the part of establishing the communication channel between controllers, Fiber Channel Arbitrated Loop (FC-AL) or Small Computer System Interface (SCSI, parallel small computer system interface) or serial advanced technology access interface (SATA, serial advanced technology attachment) are generally used at present. ) and other communication links, the main factor for using these links is that these links have the characteristics of supporting long distances and being able to connect external cables to facilitate the connection between two independent devices.

请参阅图1,主要显示一种现有冗余存储虚拟化系统的存储虚拟化控制器的方块图。其中,第一存储虚拟化控制器100内是具有一冗余控制器通信(RCC,redundant controller communication)连结控制器136,用以建立与第二存储虚拟化控制器100’间的通信信道ICC。Please refer to FIG. 1 , which mainly shows a block diagram of a storage virtualization controller of an existing redundant storage virtualization system. Wherein, the first storage virtualization controller 100 has a redundant controller communication (RCC, redundant controller communication) connection controller 136 for establishing a communication channel ICC with the second storage virtualization controller 100'.

由于二控制器100,100’间的通信信道ICC是采用光纤信道仲裁循环(FC-AL)或SCSI或SATA等通信连结,与控制器内电路所采用的本地总线(local bus)不同,因此,在该控制器间通信信道(ICC)两端在这些控制器中势必得设置一作为转换内部总线与该ICC外部连结接口或缓冲的RCC连接控制器136,因此使得整体电路相形复杂,成本亦高。Since the communication channel ICC between the two controllers 100, 100' adopts communication links such as Fiber Channel Arbitrated Loop (FC-AL) or SCSI or SATA, it is different from the local bus (local bus) adopted by the circuit in the controller, therefore, In these controllers at both ends of the inter-controller communication channel (ICC), an RCC connection controller 136 as a conversion internal bus and the external connection interface or buffer of the ICC must be arranged, so that the overall circuit is complicated and the cost is also high. .

再者,对解决每个存储虚拟化控制器必须随时知悉其同伴(另一存储虚拟化控制器)的目前工作信息以及维持两外部存储虚拟化控制器间数据同步且一致的问题,原则上当存储虚拟化控制器的数据有所变化时,此变化就得让其同伴知道,使二存储虚拟化控制器几乎可维持同步,进而一存储虚拟化控制器发生状况时,另一存储虚拟化控制器得以在几乎没有数据时间差的情况下完全成功接管。因此,在某些情况下在通信信道ICC上的数据传输系相当频繁,无疑的将可能会加重存储虚拟化控制器内中央处理器的工作量,使得其效能大幅受到影响,因此,如何处理通信信道ICC上的数据传输亦成为一个很重要的课题。Furthermore, to solve the problem that each storage virtualization controller must know the current working information of its companion (another storage virtualization controller) at any time and maintain data synchronization and consistency between the two external storage virtualization controllers, in principle, when the storage When the data of the virtualization controller changes, this change must be made known to its peers, so that the two storage virtualization controllers can almost maintain synchronization, and then when a situation occurs in one storage virtualization controller, the other storage virtualization controller A complete successful takeover was possible with almost no data time lag. Therefore, in some cases, the data transmission system on the communication channel ICC is quite frequent, which undoubtedly may increase the workload of the central processing unit in the storage virtualization controller, so that its performance is greatly affected. Therefore, how to deal with communication The data transmission on the channel ICC has also become a very important subject.

发明内容 Contents of the invention

本发明的主要目的,在于提供一种得以简化电路、降低成本的冗余存储虚拟化计算机系统。The main purpose of the present invention is to provide a redundant storage virtualization computer system with simplified circuits and reduced costs.

本发明是揭露一种计算机系统,包含有:一主机,用来发出输出入请求;一组冗余存储虚拟化控制器,是用于执行输出入操作以响应主机发出的输出入请求,其包括有耦接至主机的一第一与一第二存储虚拟化控制器,此第一与第二存储虚拟化控制器间是利用一本地总线(local bus)进行通信;以及一组实体存储装置,耦接于这些存储虚拟化控制器,是用来提供此计算机系统存储空间;其中,当第一存储虚拟化控制器发生状况时,第二存储虚拟化控制器将自动地接替发生状况的第一存储虚拟化控制器原先执行的功能。The present invention discloses a computer system, which includes: a host, used to issue I/O requests; a set of redundant storage virtualization controllers, used to perform I/O operations in response to the I/O requests sent by the host, including There are a first and a second storage virtualization controller coupled to the host, and a local bus (local bus) is used for communication between the first and second storage virtualization controllers; and a set of physical storage devices, Coupled to these storage virtualization controllers, it is used to provide the storage space of the computer system; wherein, when the first storage virtualization controller has a situation, the second storage virtualization controller will automatically take over from the first storage virtualization controller where the situation occurs Functions originally performed by storage virtualization controllers.

本发明亦揭露一种存储虚拟化子系统,包含有:一组冗余存储虚拟化控制器,是用于执行输出入操作以响应一主机发出的输出入请求,其包括有用来耦接至主机的一第一与一第二存储虚拟化控制器,此第一与第二存储虚拟化控制器间是利用一本地总线(local bus)进行通信;以及一组实体存储装置,耦接于这些存储虚拟化控制器,是用来提供计算机系统存储空间;其中,当第一存储虚拟化控制器发生状况时,则第二存储虚拟化控制器将自动地接替发生状况的第一存储虚拟化控制器原先执行的功能。The present invention also discloses a storage virtualization subsystem, which includes: a set of redundant storage virtualization controllers, which are used to perform I/O operations in response to an I/O request from a host, and include a set of redundant storage virtualization controllers for coupling to the host a first and a second storage virtualization controller, and a local bus (local bus) is used for communication between the first and second storage virtualization controllers; and a set of physical storage devices coupled to these storage virtualization controllers The virtualization controller is used to provide computer system storage space; wherein, when a situation occurs in the first storage virtualization controller, the second storage virtualization controller will automatically take over from the first storage virtualization controller in which the situation occurs function that was previously performed.

依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中第一与第二存储虚拟化控制器是位于同一电路板。依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中本地总线连接二存储虚拟化控制器的方式是为外接缆线或背板。According to a feature of the embodiment, the first and second storage virtualization controllers in the aforementioned computer system or storage virtualization subsystem of the present invention are located on the same circuit board. According to a feature of the embodiment, the local bus in the computer system or the storage virtualization subsystem of the present invention is connected to the two storage virtualization controllers by means of an external cable or a backplane.

依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中本地总线是周边组件连结(PCI)总线、周边组件连结扩充(PCI-X)总线或周边组件连结快捷(PCI-Express)总线。依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中第一与第二存储虚拟化控制器各包括一本地总线接口,用以建立第一与第二存储虚拟化控制器间的本地总线通信信道。According to a feature of the embodiment, the local bus in the aforementioned computer system or storage virtualization subsystem of the present invention is a Peripheral Component Link (PCI) bus, a Peripheral Component Link Expansion (PCI-X) bus or a Peripheral Component Link Express (PCI-Express) bus. )bus. According to a feature of the embodiment, the first and second storage virtualization controllers in the aforementioned computer system or storage virtualization subsystem of the present invention each include a local bus interface for establishing the first and second storage virtualization controllers local bus communication channel between them.

依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中前述的本地总线接口各位于一中央处理器芯片组,且利用二中央处理器芯片组的至少一者的接脚设定来使得其中一本地总线接口去改变其操作模式,以使二存储虚拟化控制器的本地总线接口之间得以建立联机。According to a feature of the embodiment, the aforementioned local bus interfaces in the aforementioned computer system or storage virtualization subsystem of the present invention are each located in a central processing unit chipset, and are set up by pins of at least one of the two central processing unit chipsets. It is determined that one of the local bus interfaces changes its operation mode, so that a connection can be established between the local bus interfaces of the two storage virtualization controllers.

依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中是利用软件来填写前述其中一本地总线接口的寄存器而使得该本地总线接口去改变操作模式,以使这些存储虚拟化控制器的本地总线接口之间得以建立联机。According to a feature of the embodiment, in the aforementioned computer system or storage virtualization subsystem of the present invention, software is used to fill in the register of one of the aforementioned local bus interfaces so that the local bus interface can change the operation mode, so that these storage virtualization A connection is established between the local bus interfaces of the controllers.

依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中前述的本地总线接口更具有交叉连结的特征。According to a feature of the embodiment, the aforementioned local bus interface in the aforementioned computer system or storage virtualization subsystem of the present invention further has the feature of cross-connection.

依据实施例的一特色,前述本发明的计算机系统或存储虚拟化子系统中前述其中至少一本地总线接口执行一自动转换机制,是利用交叉连结的特征来转换接口的操作模式,以使第一与第二存储虚拟化控制器间能建立联机。According to a feature of the embodiment, in the computer system or the storage virtualization subsystem of the present invention, at least one of the local bus interfaces implements an automatic switching mechanism, which uses the feature of cross-connection to switch the operation mode of the interface, so that the first A connection can be established with the second storage virtualization controller.

另,本发明揭露有一种存储虚拟化控制器,包含有:一中央处理电路,用以执行输出入操作以响应一主机的输出入请求,且可利用一本地总线耦接于另一存储虚拟化控制器;至少一输出入装置连结控制器,耦接于中央处理电路;至少一主机端输出入装置端口,设置在前述至少一输出入装置连结控制器的一者中,用来耦接至主机;至少一装置端输出入装置端口,设置在前述至少一输出入装置连结控制器的一者中,用来耦接至至少一实体存储装置;以及一内存,是连接于中央处理电路,是用来缓冲传送于主机及实体存储装置之间通过中央处理电路的数据。In addition, the present invention discloses a storage virtualization controller, which includes: a central processing circuit for performing I/O operations in response to an I/O request from a host, and can be coupled to another storage virtualization device using a local bus Controller; at least one I/O device connection controller, coupled to the central processing circuit; at least one host-side I/O device port, set in one of the aforementioned at least one I/O device connection controller, for coupling to the host ; at least one device-side input-output device port is provided in one of the aforementioned at least one input-output device connection controller for coupling to at least one physical storage device; and a memory is connected to the central processing circuit and is used for To buffer the data transmitted between the host and the physical storage device through the central processing circuit.

依据实施例的一特色,前述本发明存储虚拟化控制器中,中央处理电路包含有一中央处理器以及一中央处理器芯片组。此中央处理器芯片组是用以做为该中央处理器与其它电子组件间的接口,包括有:一第一本地总线接口,是经由该本地总线耦接于该另一存储虚拟化控制器;一内部主要总线,作为该中央处理器芯片组内各主要电子组件间的通信连结,用以在其间通联数据信号及控制信号;一中央处理器接口,用以耦接至该中央处理器与该内部主要总线,作为该中央处理器与其它电子组件间的沟通接口;一内存控制器,用以耦接至该内存与该内部主要总线,当该内存控制器接收到由该内部主要总线传来的数据,会将这些数据存储在该内存中,该内存中的数据亦通过该内存控制器传送至该内部主要总线;以及至少一第二本地总线接口,用以耦接至该输出入装置连结控制器与该内部主要总线,做为该二者间的沟通接口。According to a feature of the embodiment, in the aforementioned storage virtualization controller of the present invention, the central processing circuit includes a central processing unit and a central processing unit chipset. The CPU chipset is used as an interface between the CPU and other electronic components, including: a first local bus interface coupled to the other storage virtualization controller via the local bus; An internal main bus, used as a communication link between the main electronic components in the CPU chipset, for communicating data signals and control signals therebetween; a CPU interface, used to couple to the CPU and the The internal main bus is used as the communication interface between the central processing unit and other electronic components; a memory controller is used to couple to the memory and the internal main bus. The data will be stored in the internal memory, and the data in the internal memory will also be transmitted to the internal main bus through the memory controller; and at least one second local bus interface for coupling to the I/O device connection The controller and the internal main bus serve as a communication interface between the two.

依据实施例的一特色,前述本发明存储虚拟化控制器中,前述的中央处理器芯片组更包括一寄存器,此寄存器归属于第一本地总线接口,且寄存器内一存储空间是被规划定义作为该中央处理器写入与传输数据给另一存储虚拟化控制器相关信息之用。According to a feature of the embodiment, in the aforementioned storage virtualization controller of the present invention, the aforementioned central processing unit chipset further includes a register, which belongs to the first local bus interface, and a storage space in the register is planned and defined as The CPU writes and transmits data to another storage virtualization controller for related information.

依据实施例的一特色,前述本发明存储虚拟化控制器中,前述寄存器是位于第一本地总线接口或一位于该中央处理器芯片组的寄存器阵列之中。According to a feature of the embodiment, in the aforementioned storage virtualization controller of the present invention, the aforementioned register is located in the first local bus interface or a register array located in the CPU chipset.

依据实施例的一特色,前述本发明存储虚拟化控制器中,前述的第一本地总线接口是周边组件连结快捷总线接口、周边组件连结扩充总线接口或周边组件连结总线接口。According to a feature of the embodiment, in the aforementioned storage virtualization controller of the present invention, the aforementioned first local bus interface is a peripheral component connection express bus interface, a peripheral component connection expansion bus interface or a peripheral component connection bus interface.

依据实施例的一特色,前述本发明存储虚拟化控制器中,是利用前述中央处理器芯片组的接脚设定来使得前述的第一本地总线接口去改变其操作模式,以使与另一存储虚拟化控制器相对应而得以建立彼此间的联机。According to a feature of the embodiment, in the aforementioned storage virtualization controller of the present invention, the pin setting of the aforementioned central processing unit chipset is used to make the aforementioned first local bus interface change its operation mode, so as to communicate with another Correspondingly, the storage virtualization controllers can establish connections with each other.

依据实施例的一特色,前述本发明存储虚拟化控制器中,是利用软件来填写前述的第一本地总线接口的一寄存器而使得第一本地总线接口去改变操作模式,以使与另一存储虚拟化控制器相对应而得以建立彼此间的联机。According to a feature of the embodiment, in the aforementioned storage virtualization controller of the present invention, software is used to fill in a register of the aforementioned first local bus interface so that the first local bus interface changes the operation mode so as to communicate with another storage The virtualization controllers are corresponding to establish connections with each other.

依据实施例的一特色,前述本发明存储虚拟化控制器中,前述的第一本地总线接口更具有交叉连结的特征。According to a feature of the embodiment, in the aforementioned storage virtualization controller of the present invention, the aforementioned first local bus interface further has the feature of a cross connection.

依据实施例的一特色,前述本发明存储虚拟化控制器中,前述的第一本地总线接口是执行一自动转换机制,是利用交叉连结的特征来转换接口的操作模式,以使与另一存储虚拟化控制器相对应而得以建立彼此间的联机。According to a feature of the embodiment, in the aforementioned storage virtualization controller of the present invention, the aforementioned first local bus interface implements an automatic switching mechanism, which uses the feature of cross-connection to switch the operation mode of the interface, so that it can communicate with another storage The virtualization controllers are corresponding to establish connections with each other.

本发明进一步揭露一种建立存储虚拟化控制器之间的通信信道的方法,包括以下步骤:存储虚拟化控制器通过作为控制器间通信信道端的本地总线接口发送一包含其操作模式的信息的信息;存储虚拟化控制器中的至少一者于通过本地总线接口接收到另一该存储虚拟化控制器的操作模式信息时,将此所收到的操作模式信息与自己的操作模式进行比较以判断是否能建立联机;若判断能建立联机,则建立二存储虚拟化控制器间的通信信道,而若判断为无法建立联机,则存储虚拟化控制器中的至少一者将转换本地总线接口的操作模式,以使与另一该存储虚拟化控制器的本地总线接口的操作模式相对应,进而得以建立彼此的联机。The present invention further discloses a method for establishing a communication channel between storage virtualization controllers, comprising the following steps: the storage virtualization controller sends a message containing information about its operation mode through a local bus interface serving as an end of the inter-controller communication channel ; When at least one of the storage virtualization controllers receives the operation mode information of another storage virtualization controller through the local bus interface, it compares the received operation mode information with its own operation mode to determine Whether the connection can be established; if it is determined that the connection can be established, then establish a communication channel between the two storage virtualization controllers, and if it is determined that the connection cannot be established, then at least one of the storage virtualization controllers will switch the operation of the local bus interface The mode is corresponding to the operation mode of the local bus interface of another storage virtualization controller, so as to establish mutual connection.

依据实施例的一特色,前述本发明的方法中本地总线接口是PCI-Express总线接口。According to a feature of the embodiment, the local bus interface in the aforementioned method of the present invention is a PCI-Express bus interface.

依据实施例的一特色,前述本发明的方法中本地总线是具有交叉连结的特征,且当该比较判断结果为无法建立联机,则存储虚拟化控制器是利用此交叉连结的特征来转换通信接口的操作模式。According to a feature of the embodiment, in the method of the present invention, the local bus has the feature of cross-connection, and when the comparison judges that the connection cannot be established, the storage virtualization controller uses the feature of the cross-connection to switch the communication interface mode of operation.

依据实施例的一特色,前述本发明的方法中,比较判断结果为无法建立联机后所执行的步骤中,包括有一撮合机制,以使这些存储虚拟化控制器间通信信道两端的通信接口的操作模式彼此相对应,而得以建立联机。According to a feature of the embodiment, in the above-mentioned method of the present invention, the step executed after the result of comparison and judgment is that the connection cannot be established includes a matching mechanism, so that the operation of the communication interfaces at both ends of the communication channel between these storage virtualization controllers The modes correspond to each other, so that connections can be established.

依据实施例的一特色,前述本发明的方法中前述撮合机制是包括以下步骤:随机选定一计时临界参数值,接着启动计时;若在时间达到该临界值之前,接收到对方新的操作模式信息显示其已改变操作模式,则完成撮合并建立联机;若在时间达到该临界值时,且未收到对方操作模式已改变的信息,则执行该转换操作模式步骤,且在转换完成后发送一含有新的操作模式状态信息给对方;以及重新判断两者间的操作模式型态是否已不相同,若不相同则撮合完成并建立联机,若相同,则重新执行该撮合机制,直到该撮合完成。According to a feature of the embodiment, the aforementioned matching mechanism in the aforementioned method of the present invention includes the following steps: randomly select a timing critical parameter value, and then start timing; If the information shows that the operation mode has been changed, the matching is completed and the connection is established; if the time reaches the critical value and no information has been received that the other party’s operation mode has changed, the step of switching the operation mode will be executed, and the message will be sent after the conversion is completed. One contains new operating mode status information to the other party; and re-judging whether the operating mode types between the two are different. If not, the matching is completed and the connection is established. If they are the same, the matching mechanism is re-executed until the matching Finish.

依据实施例的一特色,前述本发明的方法中前述撮合机制所执行转换操作模式的步骤中更包括以下步骤:若在执行转换操作模式时,接收到对方传送的操作模式信息,则中止转换维持原先所设定的操作模式。According to a feature of the embodiment, the step of switching the operation mode performed by the matching mechanism in the method of the present invention further includes the following steps: if the operation mode information sent by the other party is received when switching the operation mode, the switching is suspended and maintained The previously set operating mode.

依据实施例的一特色,前述本发明的方法中在前述中止转换前是先比较对方的操作模式是否与转换前本身的操作模式不同,若是,才进行该中止转换等步骤,否则则继续执行转换。According to a feature of the embodiment, in the aforementioned method of the present invention, before the aforesaid abort conversion, it is first compared whether the operation mode of the other party is different from its own operation mode before the conversion, and if so, steps such as the abort conversion are performed; .

本发明又更一步揭露一种在一计算机系统中存储虚拟化控制器间进行数据传输的方法,包含以下步骤:A.一存储虚拟化控制器的中央处理器依据一事先定义的数据传输协议格式(data-transfer-protocol format)对欲传输给另一存储虚拟化控制器的离散数据(scattered data)建立至少一相对应的离散聚集表(SG-list);B.中央处理器将存放离散聚集表的地址写入一寄存器;以及C.一本地总线接口依据写入寄存器内的地址至一内存内读取离散聚集表,并依据表中一离散聚集数据(scatter-gather data)所指示的地址至内存内读取该离散数据,且通过一本地总线传送该离散数据给另一个存储虚拟化控制器。The present invention further discloses a method for data transmission between storage virtualization controllers in a computer system, comprising the following steps: A. A central processing unit of a storage virtualization controller according to a pre-defined data transmission protocol format (data-transfer-protocol format) establishes at least one corresponding discrete aggregation table (SG-list) for the discrete data (scattered data) to be transmitted to another storage virtualization controller; B. The central processing unit will store the discrete aggregation The address of the table is written into a register; and C. a local bus interface reads the scatter-gather table in a memory according to the address written in the register, and according to the address indicated by a scatter-gather data (scatter-gather data) in the table Read the discrete data into the memory, and transmit the discrete data to another storage virtualization controller through a local bus.

依据实施例的一特色,前述本发明的方法中本地总线是周边组件连结总线、周边组件连结扩充总线或周边组件连结快捷总线。According to a feature of the embodiment, the local bus in the aforementioned method of the present invention is a peripheral device connection bus, a peripheral device connection expansion bus or a peripheral device connection express bus.

依据实施例的一特色,前述本发明的方法中当中央处理器将存放离散聚集表的地址写入寄存器后,寄存器是将地址信息传送至本地总线接口,并触发本地总线接口执行该步骤C.。According to a feature of the embodiment, in the aforementioned method of the present invention, after the central processing unit writes the address storing the discrete aggregation table into the register, the register transmits the address information to the local bus interface, and triggers the local bus interface to execute step C. .

依据实施例的一特色,前述本发明的方法中,中央处理器是将存放离散聚集表的地址写入寄存器中被定义作为写入存放离散聚集表地址之用的特定地址的存储空间。According to a feature of the embodiment, in the aforementioned method of the present invention, the central processing unit writes the address of the discrete aggregation table into the register and is defined as a storage space for writing a specific address for storing the address of the discrete aggregation table.

依据实施例的一特色,前述本发明的方法中离散聚集表的数据传输协议格式是包括以下字段:表内数据数量字段,用以指示表中内含的离散聚集数据的数目;来源起始地址字段,用以指示每笔欲传输离散数据其所存放的内存起始地址;数据长度字段,用以指示该每笔欲传输离散数据的长度;以及目标起始地址字段,用以指示传输离散数据欲存放的目标地址。According to a characteristic of the embodiment, the data transmission protocol format of the discrete aggregation table in the aforementioned method of the present invention includes the following fields: the data quantity field in the table, which is used to indicate the number of discrete aggregation data contained in the table; the source starting address field, used to indicate the memory start address where each piece of discrete data to be transmitted is stored; the data length field is used to indicate the length of each piece of discrete data to be transmitted; and the target start address field is used to indicate the transmission of discrete data The target address to be stored.

依据实施例的一特色,前述本发明的方法的步骤C.中本地总线接口执行包括以下步骤:依据中央处理器所发送的信息至内存内将离散聚集表标头内的控制信息读出,根据该离散聚集数据的数量依序往下读取该数量的该离散聚集数据的控制信息;以及依据所读取到的每一笔离散数据中的来源起始地址字段以及离散数据长度字段内容的指示,一一读取该笔离散数据,并将每笔离散数据连同该笔离散数据的目标起始地址一起通过本地总线传输给另一存储虚拟化控制器。According to a feature of the embodiment, the execution of the local bus interface in step C. of the method of the present invention includes the following steps: read out the control information in the discrete aggregation table header in the memory according to the information sent by the central processing unit, according to The quantity of the discrete aggregated data reads down the control information of the discrete aggregated data in sequence; and according to the indication of the source start address field and the discrete data length field content in each piece of discrete data read , read the pieces of discrete data one by one, and transmit each piece of discrete data together with the target start address of the piece of discrete data to another storage virtualization controller through the local bus.

依据实施例的一特色,前述本发明的方法中本地总线接口所读取的离散数据是先暂存于一缓冲器,其后才连同目标起始地址一起传输出去。According to a feature of the embodiment, the discrete data read by the local bus interface in the method of the present invention is first temporarily stored in a buffer, and then transmitted together with the target start address.

依据实施例的一特色,前述本发明的方法中本地总线接口在读取与传送离散数据时,可因应缓冲器的实际容量将离散数据分批读取与传送。According to a feature of the embodiment, when the local bus interface reads and transmits the discrete data in the method of the present invention, it can read and transmit the discrete data in batches according to the actual capacity of the buffer.

依据实施例的一特色,前述本发明的方法中更包括另一存储虚拟化控制器的本地总线接口接收离散数据与目标起始地址,将离散数据存于目标地址的内存内的步骤。According to a feature of the embodiment, the aforementioned method of the present invention further includes a step of receiving the discrete data and the target start address by the local bus interface of another storage virtualization controller, and storing the discrete data in the memory of the target address.

依据实施例的一特色,前述本发明的方法中离散聚集表的数据传输协议格式更包括一数据方向字段,用以指示执行写入或读取操作,使得本地总线接口依据此字段内容进行相对应的存取操作。According to a feature of the embodiment, the data transmission protocol format of the discrete aggregation table in the aforementioned method of the present invention further includes a data direction field, which is used to indicate the execution of a write or read operation, so that the local bus interface performs corresponding operations according to the content of this field. access operations.

依据实施例的一特色,前述本发明的方法中在步骤C.的在该本地总线接口执行完读取离散聚集表内容的步骤后,更包含有:依据数据方向字段的内容执行相对应的写入或读取操作;若内容指示为执行写入操作,则执行前述后续的依据离散聚集表各字段读取该离散数据与传输离散数据至该另一存储虚拟化控制器的步骤;若内容指示执行读取操作,则将离散聚集表内至少部分字段内容通过本地总线传输给另一存储虚拟化控制器;以及在收到另一存储虚拟化控制器所传的该离散数据后,再依离散数据所相对应的目标起始地址存入内存内。According to a characteristic of the embodiment, in the aforementioned method of the present invention, after the step of reading the contents of the discrete aggregation table in the local bus interface in step C., further includes: performing corresponding writing according to the content of the data direction field input or read operation; if the content indicates that the write operation is performed, then perform the subsequent steps of reading the discrete data and transmitting the discrete data to the other storage virtualization controller according to each field of the discrete aggregation table; if the content indicates When performing a read operation, at least part of the field content in the discrete aggregation table is transmitted to another storage virtualization controller through the local bus; and after receiving the discrete data transmitted by another storage virtualization controller, the discrete The target starting address corresponding to the data is stored in the memory.

依据实施例的一特色,前述本发明的方法中的中央处理器芯片组是将整个离散聚集表内容传输给另一存储虚拟化控制器。According to a feature of the embodiment, the CPU chipset in the method of the present invention transmits the entire discrete aggregation table content to another storage virtualization controller.

依据实施例的一特色,前述本发明的方法中更包括另一存储虚拟化控制器的中央处理器芯片组接收离散聚集表内容后,依据来源起始地址字段以及数据长度字段内容的指示,依序读取每笔离散数据,以及回传离散数据的步骤。According to a feature of the embodiment, the above-mentioned method of the present invention further includes another CPU chipset of the storage virtualization controller receiving the content of the discrete aggregation table, according to the indication of the source start address field and the content of the data length field, according to Steps to sequentially read each piece of discrete data and return the discrete data.

依据实施例的一特色,前述本发明的方法中离散聚集表的数据传输协议格式更包括以下字段:第一中断字段,用以设定是否于完成此表内所列数据传输后,中央处理器芯片组需产生一中断信号通知中央处理器;以及第二中断字段,用以设定另一存储虚拟控制器在接收离散数据并完成相对应操作后,产生一中断信号。According to a feature of the embodiment, the data transmission protocol format of the discrete aggregation table in the aforementioned method of the present invention further includes the following fields: a first interrupt field, which is used to set whether after completing the data transmission listed in this table, the central processing unit The chipset needs to generate an interrupt signal to notify the CPU; and the second interrupt field is used to set another storage virtual controller to generate an interrupt signal after receiving the discrete data and completing the corresponding operation.

依据实施例的一特色,前述本发明的方法中的步骤C.更包括有:中央处理器芯片组将前述第二中断字段内容传送给另一存储虚拟化控制器;以及中央处理器芯片组在完成离散聚集表内所指示的数据传输后,依第一中断字段的指示来决定是否进行产生一中断信号至中央处理器的动作。According to a feature of the embodiment, step C. in the aforementioned method of the present invention further includes: the CPU chipset transmits the content of the aforementioned second interrupt field to another storage virtualization controller; After the data transmission indicated in the discrete gathering table is completed, it is determined whether to generate an interrupt signal to the central processing unit according to the indication of the first interrupt field.

依据实施例的一特色,前述本发明的方法中离散聚集表的数据传输协议格式更包括下一个离散聚集表地址的字段,用以存放下一个离散聚集表所存放的内存地址,以指示中央处理器芯片组在完成一离散聚集表内容所指示的数据传输后,可依据该下一个离散聚集表地址的字段的内容,读取下一个离散聚集表,进而连动继续处理。According to a characteristic of the embodiment, the data transmission protocol format of the discrete aggregation table in the aforementioned method of the present invention further includes a field of the address of the next discrete aggregation table, which is used to store the memory address stored in the next discrete aggregation table, so as to indicate the central processing After completing the data transmission indicated by the contents of a discrete gathering table, the processor chipset can read the next discrete gathering table according to the content of the field of the address of the next discrete gathering table, and then continue processing in conjunction.

依据实施例的一特色,前述本发明的方法中包含有系统规划设定有一表示无下一个离散聚集表存在的数值,当该下一个离散聚集表地址字段的内容为该数值时,即显示无存在其它离散聚集表需要连动处理。According to a feature of the embodiment, the aforementioned method of the present invention includes a system planning setting that indicates that there is no value for the next discrete aggregation table, and when the content of the address field of the next discrete aggregation table is the value, it will display no There are other discrete aggregation tables that need linkage processing.

依据实施例的一特色,前述本发明的方法中前述的表示无下一个离散聚集表存在的数值是为0。According to a feature of the embodiment, in the aforementioned method of the present invention, the aforementioned value indicating that there is no next discrete aggregation table is 0.

依据实施例的一特色,前述本发明的方法中,在步骤A与B之间更包括以下步骤:查核是否存在有尚未处理完的离散聚集表;若有,则进行一连动程序,是将新建立的离散聚集表与前述尚未处理完的离散聚集表产生连动;以及否则,执行步骤B。According to a characteristic of the embodiment, in the above-mentioned method of the present invention, the following steps are further included between steps A and B: check whether there is an unprocessed discrete aggregation table; The newly created discrete aggregate table is linked with the previously unprocessed discrete aggregate table; and otherwise, step B is performed.

依据实施例的一特色,前述本发明的方法中,在进行连动程序之前更包括以下步骤:中央处理器发送出一暂停请求给本地总线接口,用以请求暂停传输数据至另一存储虚拟话控制器的相关动作;以及当本地总线接口收到该暂停请求,是执行一暂停机制,并在完成暂停机制后,回复一暂停认可给中央处理器;以及在进行连动程序之后更包括以下步骤:中央处理器通知本地总线接口解除暂停状态;以及当本地总线接口收到该解除通知,是恢复所暂停的动作,继续执行处理传送数据。According to a characteristic of the embodiment, in the above-mentioned method of the present invention, the following steps are further included before performing the linkage program: the central processing unit sends a suspend request to the local bus interface to request suspend transmission of data to another storage virtual machine The related actions of the controller; and when the local bus interface receives the suspend request, it executes a suspend mechanism, and after completing the suspend mechanism, replies a suspend approval to the central processing unit; and further includes the following steps after performing the linkage procedure : The central processing unit notifies the local bus interface to release the suspension state; and when the local bus interface receives the cancellation notification, it resumes the suspended action and continues to process and transmit data.

依据实施例的一特色,前述本发明的方法中前述的暂停机制为将正在处理的离散数据完成传送后暂停其后的各笔离散数据的读取传送动作,并纪录暂停点以利取消暂停时可恢复接续处理。According to a feature of the embodiment, the above-mentioned pause mechanism in the method of the present invention is to suspend the reading and transmission of each piece of discrete data after the discrete data being processed is completed, and record the pause point to facilitate the cancellation of the pause. Continuation processing can be resumed.

依据实施例的一特色,前述本发明的方法中前述的暂停机制为将正在处理的离散数据表内的所有离散数据皆完成传送后暂停进入下一个离散聚集表的动作。According to a feature of the embodiment, the aforementioned suspending mechanism in the aforementioned method of the present invention is an action of suspending entry into the next discrete aggregation table after all the discrete data in the discrete data table being processed have been transmitted.

依据实施例的一特色,前述本发明的方法中前述的连动程序系包括:中央处理器读取存于寄存器内的离散聚集表中下一个离散聚集表地址字段内的地址数据;中央处理器依据所读取的寄存器内的地址,判断本地总线接口其后是否有需接续处理的离散聚集表;若判断结果为无需接续处理的离散聚集表,则更改寄存器内所存放下一个离散聚集表地址的字段内容为存放新建立的第一个离散聚集表的起始地址;以及若判断结果为具有须接续处理的离散聚集表,则更改这些尚未处理完的离散聚集表的一者的存放下一个离散聚集表地址的字段内容,将其改为存放该新建立的第一个离散聚集表的起始地址,且将新建立的离散聚集表中最后一者的存放下一个离散聚集表地址字段内容设定与前述尚未处理完的离散聚集表的一者于未更改前的该存放下一个离散聚集表地址字段内容一致。依据实施例的一特色,前述本发明的方法中前述尚未处理完的离散聚集表的一者是指在该本地总线接口进行暂停机制时,存储于寄存器内的离散聚集表。According to a feature of the embodiment, the aforementioned linkage program in the aforementioned method of the present invention comprises: the central processing unit reads the address data in the next discrete gathering table address field in the discrete gathering table stored in the register; According to the address in the read register, it is judged whether the local bus interface has a discrete aggregation table that needs continuous processing thereafter; The content of the field is the starting address for storing the newly created first discrete aggregation table; Gathering table address field content, change it to store the start address of the newly created first discrete gathering table, and set the content of the next discrete gathering table address field of the last one in the newly created discrete gathering table to It must be consistent with the content of the address field of the next discrete aggregation table stored in one of the previously unprocessed discrete aggregation tables before being changed. According to a feature of the embodiment, one of the unprocessed discrete gather tables in the aforementioned method of the present invention refers to a discrete gather table stored in a register when the local bus interface is performing a suspend mechanism.

依据实施例的一特色,前述本发明的方法中前述尚未处理完的离散聚集表的一者是指这些尚未处理完的连动离散聚集表中的最后一个离散聚集表。According to a feature of the embodiment, one of the aforementioned unprocessed discrete aggregate tables in the aforementioned method of the present invention refers to the last discrete aggregate table among the unprocessed linked discrete aggregate tables.

依据实施例的一特色,前述本发明的方法中包括建立一纪录有所有离散聚集表所存放内存地址的表,用以供中央处理器查询欲更改存放下一个离散聚集表地址的字段内容的尚未处理完的离散聚集表所存放的内存地址。依据实施例的一特色,前述本发明的方法中中央处理器依据所读取的寄存器内的下一个离散聚集表地址信息读取存于该地址内的离散聚集表的下一个离散聚集表地址字段内容,依序重复之,直到读取到中央处理器欲更改存放下一个离散聚集表地址的字段内容的尚未处理完的离散聚集表为止。According to a feature of the embodiment, the aforementioned method of the present invention includes setting up a table that records the memory addresses stored in all discrete gathering tables, and is used for the central processing unit to inquire about not yet to change the content of the field that stores the address of the next discrete gathering table. The memory address where the processed discrete aggregation table is stored. According to a feature of the embodiment, in the aforementioned method of the present invention, the central processor reads the next discrete aggregation table address field of the discrete aggregation table stored in the address according to the address information of the next discrete aggregation table in the read register The content is repeated in sequence until the unprocessed discrete gathering table that the central processor intends to change the field content storing the address of the next discrete gathering table is read.

依据实施例的一特色,前述本发明的方法中当中央处理器需对已建立的离散聚集表进行调动时,是执行包括以下步骤:查核目前未处理完的离散聚集表;以及判断其意欲调动的离散聚集表是否属于尚未处理完的离散聚集表之中,若是则进行调动,否则,不进行调动。According to a characteristic of the embodiment, when the central processing unit needs to transfer the established discrete aggregation table in the aforementioned method of the present invention, the execution includes the following steps: checking the discrete aggregation table that has not been processed at present; and judging that it intends to transfer Whether the discrete aggregation table belongs to the discrete aggregation table that has not been processed, if so, it will be transferred, otherwise, it will not be transferred.

依据实施例的一特色,前述本发明的方法中是利用中央处理器读取存于寄存器内的离散聚集表中下一个离散聚集表地址字段内的地址数据,以知悉数据传输目前进度。According to a characteristic of the embodiment, in the aforementioned method of the present invention, the central processing unit is used to read the address data stored in the address field of the next discrete aggregation table in the discrete aggregation table in the register, so as to know the current progress of data transmission.

依据实施例的一特色,前述本发明的方法终于进行调动之前更包括以下步骤:中央处理器发送出一暂停请求给本地总线接口,用以请求暂停传输数据至另一存储虚拟化控制器的相关动作;以及当本地总线接口收到该暂停请求,是执行一暂停机制,并于完成暂停机制后,回复一暂停认可给中央处理器;以及于进行调动之后更包括以下步骤:中央处理器通知本地总线接口解除暂停状态;以及当本地总线接口收到该解除通知,是恢复所暂停的动作,继续执行处理传送数据。According to a feature of the embodiment, the above-mentioned method of the present invention further includes the following steps before finally mobilizing: the central processing unit sends a suspend request to the local bus interface for requesting suspend transmission of data to another storage virtualization controller action; and when the local bus interface receives the suspend request, it executes a suspend mechanism, and after completing the suspend mechanism, replies a suspend approval to the central processing unit; The bus interface releases the suspended state; and when the local bus interface receives the release notification, it resumes the suspended action and continues to execute processing and transmitting data.

本发明又再进一步揭露另一种在计算机系统中存储虚拟化控制器间进行数据传输的方法,包含以下步骤:一存储虚拟化控制器的中央处理器是发送一数据传输请求给一中央处理器芯片组;中央处理器芯片组内的一第一本地总线接口是将请求转传给另一存储虚拟化控制器;以及另一存储虚拟化控制器的中央处理器芯片组内的一第二本地总线接口接收到请求后进行相对应的处理。The present invention further discloses another method for data transmission between storage virtualization controllers in a computer system, including the following steps: a central processing unit of a storage virtualization controller sends a data transmission request to a central processing unit chipset; a first local bus interface in the CPU chipset forwards requests to another storage virtualization controller; and a second local bus interface in the CPU chipset of another storage virtualization controller The bus interface performs corresponding processing after receiving the request.

依据实施例的一特色,前述本发明的方法中本地总线是周边组件连结总线接口、周边组件连结扩充总线接口或周边组件连结快捷总线接口。According to a characteristic of the embodiment, the local bus in the aforementioned method of the present invention is a peripheral component connection bus interface, a peripheral component connection expansion bus interface or a peripheral component connection express bus interface.

依据实施例的一特色,前述本发明的方法中的中央处理器发送数据传输请求的步骤包括:中央处理器传送数据传输请求给中央处理器芯片组中的一中央处理器接口;中央处理器接口将数据传输请求放置在中央处理器芯片组中的内部主要总线;以及由第一本地总线接口读取该数据传输请求。According to a feature of the embodiment, the step of the central processor sending the data transmission request in the method of the present invention includes: the central processing unit sends the data transmission request to a central processing unit interface in the central processing unit chipset; the central processing unit interface placing the data transfer request on an internal main bus in the CPU chipset; and reading the data transfer request by the first local bus interface.

依据实施例的一特色,前述本发明的方法中数据传输请求是包括一写入数据,以及一目标起始地址,该目标起始地址是为用以指示写入该写入数据的内存地址,且该另一存储虚拟化控制器所进行的相对应的处理系包括:依据该目标起始地址将该写入数据写入内存中。According to a feature of the embodiment, the data transmission request in the aforementioned method of the present invention includes a write data and a target start address, the target start address is used to indicate the memory address for writing the write data, And the corresponding processing performed by the other storage virtualization controller includes: writing the write data into the memory according to the target start address.

依据实施例的一特色,前述本发明的方法中数据传输请求内容包括有一判别信息,使第一本地总线接口得以判别而读取该数据传输请求。According to a feature of the embodiment, the content of the data transmission request in the method of the present invention includes identification information, so that the first local bus interface can identify and read the data transmission request.

依据实施例的一特色,前述本发明的方法中包含有:存储虚拟化控制器是定义另一存储虚拟化控制器的实体内存地址以一虚拟内存地址形式表示,使与其自己本身的实体内存地址不会重复,且该判别信息是为一内存地址,该内存地址并以该虚拟化内存地址形式表示。According to a feature of the embodiment, the aforementioned method of the present invention includes: the storage virtualization controller defines the physical memory address of another storage virtualization controller as a virtual memory address, so that it is different from its own physical memory address It will not be repeated, and the identification information is a memory address, and the memory address is expressed in the form of the virtualized memory address.

依据实施例的一特色,前述本发明的方法中是采用直接接续本身实体内存地址的方式去定义虚拟内存地址。According to a characteristic of the embodiment, in the aforementioned method of the present invention, the address of the virtual memory is defined by directly following the address of the physical memory itself.

依据实施例的一特色,前述本发明的方法中数据传输请求是包括一内存地址,此内存地址是以虚拟化内存地址表示,以作为该判别信息。According to a feature of the embodiment, the data transmission request in the method of the present invention includes a memory address, and the memory address is represented by a virtualized memory address as the identification information.

依据实施例的一特色,前述本发明的方法中包括第一或第二本地总线接口接口是执行将前述内存地址转换为相对应的实体内存地址的步骤。According to a feature of the embodiment, the aforementioned method of the present invention includes the step of converting the aforementioned memory address into a corresponding physical memory address by the first or second local bus interface.

依据实施例的一特色,前述本发明的方法中数据传输请求是包括存取指令,用以指示进行写入或读取操作。According to a feature of the embodiment, the data transmission request in the aforementioned method of the present invention includes an access command for instructing to perform a write or read operation.

依据实施例的一特色,前述本发明的方法中另一存储虚拟化控制器所进行的相对应的处理是包括第二建立本地总线接口解读请求内的存取指令以进行所指示相对应的操作。According to a feature of the embodiment, the corresponding processing performed by another storage virtualization controller in the method of the present invention includes the second establishment of a local bus interface to interpret the access instruction in the request to perform the indicated corresponding operation .

依据实施例的一特色,前述本发明的方法中数据传输请求是更包括一数据长度,以及一数据来源起始地址,且另一存储虚拟化控制器所进行相对应的处理是指依据此数据来源起始地址与数据长度至内存内读取数据并将数据回传给第一本地总线接口。According to a feature of the embodiment, the data transmission request in the aforementioned method of the present invention further includes a data length and a data source start address, and the corresponding processing performed by another storage virtualization controller refers to The source start address and data length are read into the memory to read the data and send the data back to the first local bus interface.

依据实施例的一特色,前述本发明的方法中更包括有:当第一本地总线接口在收到另一存储虚拟化控制器的回传数据后是传送给中央处理器。According to a feature of the embodiment, the aforementioned method of the present invention further includes: when the first local bus interface receives the returned data from another storage virtualization controller, it transmits it to the central processing unit.

附图说明 Description of drawings

图1为一传统冗余外部存储虚拟化控制器的方块图。FIG. 1 is a block diagram of a conventional redundant external storage virtualization controller.

图2为依据本发明的一存储虚拟化计算机系统的方块图。FIG. 2 is a block diagram of a storage virtualization computer system according to the present invention.

图3为依据本发明的一存储虚拟化控制器的方块图。FIG. 3 is a block diagram of a storage virtualization controller according to the present invention.

图4为图3中所示的中央处理电路的一实施例的方块图。FIG. 4 is a block diagram of an embodiment of the central processing circuit shown in FIG. 3 .

图5为图4中所示的中央处理芯片组/同位引擎的一实施例的方块图。FIG. 5 is a block diagram of an embodiment of the CPU chipset/parity engine shown in FIG. 4 .

图6为一存储虚拟化子系统自动转换机制的流程图。FIG. 6 is a flowchart of an automatic conversion mechanism of a storage virtualization subsystem.

图7为一种单边自动转换机制的流程图。Fig. 7 is a flowchart of a unilateral automatic switching mechanism.

图8为另一种自动转换机制中存储虚拟化控制器端的流程图。FIG. 8 is a flow chart of the storage virtualization controller in another automatic conversion mechanism.

图9为依据本发明的一种进行数据传送方法的流程图。FIG. 9 is a flowchart of a data transmission method according to the present invention.

图10为一种分散聚集表格式。Figure 10 is a scatter-gather table format.

图11为一进行数据传送的假设例。FIG. 11 is a hypothetical example of data transmission.

图12为另一进行数据传送的假设例。FIG. 12 is another hypothetical example of data transmission.

图13为再一进行数据传送的假设例。FIG. 13 is yet another hypothetical example of data transmission.

图14为又一进行数据传送的假设例。FIG. 14 is yet another hypothetical example of data transmission.

图15为另一种中央处理器进行数据传送的流程图。FIG. 15 is another flow chart of data transmission performed by the central processing unit.

图16为图15中插入或接续连动程序的一实施例流程图。FIG. 16 is a flow chart of an embodiment of the insertion or continuation program in FIG. 15 .

图17为图15中插入或接续连动程序的另一实施例流程图。FIG. 17 is a flow chart of another embodiment of the insertion or continuation program in FIG. 15 .

图18为一本发明存储虚拟化控制器间传输小量数据的流程图。FIG. 18 is a flow chart of transferring a small amount of data between storage virtualization controllers according to the present invention.

具体实施方式 Detailed ways

随着科技发展,本地总线(local bus)从周边组件连结(PCI,peripheralcomponent interconnect)总线发展出周边组件连结扩充(PCI-X,peripheralcomponent interconnect extended)总线,以及周边组件连结快捷(PCI-Express)总线。With the development of science and technology, the local bus (local bus) has developed from the peripheral component interconnect (PCI, peripheral component interconnect) bus to the peripheral component interconnect extended (PCI-X, peripheral component interconnect extended) bus, and the peripheral component interconnect express (PCI-Express) bus .

而PCI-Express不同于其它的本地总线之处在于,其突破了以往本地总线不能或有限制的于背板(backplane)上拉线,以及其电气特性所能传输的距离有限等种种限制,PCI-Express接口不仅可外接揽线,以缆线方式进行联机通信,且其电气特性亦可使传输距离达7公尺之远。The PCI-Express is different from other local buses in that it breaks through the limitations of the previous local bus that cannot or is limited on the backplane (backplane), and the limited transmission distance of its electrical characteristics. PCI-Express The Express interface can not only connect external cables, but also communicate online through cables, and its electrical characteristics can also make the transmission distance up to 7 meters.

请参阅图2,图2是为本发明的一实施例的方块示意图,此系统包含有一主机10以及一存储虚拟化子系统20(SVS,redundant storagevirtualization subsystem)。存储虚拟化子系统20包含有一组存储虚拟化控制器(包括第一与第二存储虚拟化控制器(SVC1,SVC2)200,200’,与多个实体存储装置420。其中存储虚拟化控制器200,200’可为一磁盘阵列控制器或是一个JBOD仿真器。Please refer to FIG. 2. FIG. 2 is a schematic block diagram of an embodiment of the present invention. The system includes a host 10 and a storage virtualization subsystem 20 (SVS, redundant storagevirtualization subsystem). The storage virtualization subsystem 20 includes a set of storage virtualization controllers (including first and second storage virtualization controllers (SVC1, SVC2) 200, 200', and a plurality of physical storage devices 420. The storage virtualization controller 200, 200' can be a disk array controller or a JBOD emulator.

虽然图2中所示仅有一主机10与一存储虚拟化子系统20相互连接,实际应用时可用多个主机10连接一个存储虚拟化子系统20,或是一主机10连接多个存储虚拟化子系统20,或是多个主机10连接多个存储虚拟化子系统20。主机10可为一主机计算机,如一服务器系统、工作站、个人计算机系统或是其它相关计算机等,而且主机10也可为另一存储虚拟化控制器。Although only one host 10 is connected to a storage virtualization subsystem 20 as shown in FIG. The system 20 , or multiple hosts 10 are connected to multiple storage virtualization subsystems 20 . The host 10 can be a host computer, such as a server system, workstation, personal computer system or other related computers, and the host 10 can also be another storage virtualization controller.

此存储虚拟化子系统发结构,两个存储虚拟化控制器200,200’间设有一控制器间通信信道ICC,用来互相交换信息。而此控制器间通信信道ICC系为PCI-Express,在本实施利中采用PCI-Express的原因主要在于PCI-Express其除可走背板外亦可外接缆线传输以及支持较远传输距离等特征之故,因此就采用外部存储虚拟化控制器的设计来说是较为适用,使其一存储虚拟化控制器发生问题(如:故障或失效)时,可在另一正常运作发存储虚拟化控制器仍提供服务的状态下,对此发生问题的存储虚拟化控制器进行维修或替换。然本发明应不受限于此,依据控制器发设计,凡控制器内电路所采用的本地总线皆可适用,例如:就二控制器位于同一电路板的设计来说,即可采用PCI或PCI-X等。The storage virtualization subsystem has a structure, and an inter-controller communication channel ICC is provided between the two storage virtualization controllers 200, 200' for exchanging information with each other. The communication channel ICC between the controllers is PCI-Express. The reason why PCI-Express is adopted in this implementation is that PCI-Express can not only walk on the backplane, but also can be connected to an external cable for transmission and supports longer transmission distances. Therefore, it is more suitable for the design of external storage virtualization controller, so that when a storage virtualization controller has a problem (such as: failure or failure), storage virtualization can be carried out in another normal operation Repair or replace a faulty storage virtualization controller while the controller is still in service. However, the present invention should not be limited thereto. According to the design of the controller, any local bus used by the circuit in the controller can be applied. For example, for the design that the two controllers are located on the same circuit board, PCI or PCI-X, etc.

在一实施方案中,在此存储虚拟化子系统20中的所有的实体存储装置420可组合形成一实体存储装置阵列400。In one embodiment, all the physical storage devices 420 in the storage virtualization subsystem 20 can be combined to form a physical storage device array 400 .

图3为本发明中连接至主机10及实体存储装置阵列400的存储虚拟化控制器200,200’的一实施例方块图。在此处,是以第一存储虚拟化控制器(SVC1)200为例说明,然实际上,第二存储虚拟化控制器200’亦相同之。此实施例中,第一存储虚拟化控制器(SVC1)200包含有一主机端输出入装置连结控制器220、一中央处理电路(CPC,central processing circuit)240、一内存280以及一装置端输出入装置连结控制器300。此处虽以分开的功能方块描述,但于实际应用时,部份甚至全部的功能方块(functional block)皆可整合在一单一芯片上。Fig. 3 is a block diagram of an embodiment of the storage virtualization controller 200, 200' connected to the host 10 and the physical storage device array 400 in the present invention. Here, the first storage virtualization controller (SVC1) 200 is taken as an example for illustration, but in fact, the second storage virtualization controller 200' is also the same. In this embodiment, the first storage virtualization controller (SVC1) 200 includes a host-side I/O device connection controller 220, a central processing circuit (CPC, central processing circuit) 240, a memory 280, and a device-side I/O The device is connected to the controller 300 . Although described here as separate functional blocks, in practical applications, some or even all of the functional blocks can be integrated on a single chip.

主机端输出入装置连结控制器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)。The host-side I/O device connection controller 220 is connected to the host 10 and the central processing circuit 240, and is used as an interface and buffer between the first storage virtualization controller (SVC1) 200 and the host 10, and can receive data transmitted from the host 10. Incoming I/O requests and related data are converted and/or mapped to the central processing circuit 240 . The host-side I/O device connection controller 220 may include one or more host-side ports for coupling to the host 10 . The types of ports referred to herein may be: fiber channel supporting fabric, point-to-point, public loop and/or dedicated loop in target mode, parallel small computer system interface operating in target mode (parallel SCSI, parallel small computer system interface), Ethernet network that supports Internet SCSI (iSCSI, internet SCSI) protocol and operates in target mode, serial attached SCSI (SAS, serial-attached SCSI) operating in target mode, and operates in Serial advanced technology access interface (SATA, serial advanced technology attachment) in target mode.

装置端输出入装置连结控制器300是为介于中央处理电路240及实体存储装置阵列400间,用来作为存储虚拟化控制器200及实体存储装置阵列400间的接口及缓冲。装置端输出入装置连结控制器300接收由中央处理电路240传入的输出入请求及相关数据,并将其映像及/或传送至实体存储装置阵列400。装置端输出入装置连结控制器300可以包含有一或多个用来耦接于实体存储装置阵列400的装置端端口。此处所提及的端口的类型是配合系统所采用的实体存储装置可以为:FC-AL、SCSI、序列附加SCSI(SAS,serial-attached SCSI)以及序列先进技术接取接口(SATA,serial advancedtechnology attachment)。The device-side I/O device connection controller 300 is interposed between the central processing circuit 240 and the physical storage device array 400 and used as an interface and buffer between the storage virtualization controller 200 and the physical storage device array 400 . The device-side I/O device connection controller 300 receives I/O requests and related data from the central processing circuit 240 , and maps and/or transmits them to the physical storage device array 400 . The device-side I/O device connection controller 300 may include one or more device-side ports for coupling to the physical storage device array 400 . The type of port mentioned here is to cooperate with the physical storage device used by the system, which can be: FC-AL, SCSI, serial-attached SCSI (SAS, serial-attached SCSI) and serial advanced technology access interface (SATA, serial advanced technology 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。当该写入请求为一回写请求(writeback 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)。Moreover, although here is an example where the corresponding I/O device connection controllers 220, 300 are respectively provided at the host end and the device end, in another embodiment of the present invention, there may be only one I/O device connection controller device, so that the host-side port coupled to the host 10 and the device-side port coupled to the physical storage device array 400 are both set in the I/O device connection controller. When the central processing circuit 240 receives a host I/O request from the host-side I/O device connection controller 220, the central processing circuit 240 will analyze the I/O request, and perform some operations in response to the I/O request, and send all The requested data and/or reports and/or information are transmitted from the first storage virtualization controller 200 to the host 10 via the host-side I/O device connection controller 220 . After analyzing the incoming I/O request of the host computer 10, if the received request is a read request and one or more operations are executed as a response, the central processing circuit 240 will internally or from the memory 280 or through this There are two ways to obtain the requested data and send the data to the host 10 . If the requested data cannot be obtained internally or does not exist in the internal memory 280, the read request will be sent to the physical storage device array 400 via the device-side I/O device connection controller 300, and then the requested data will be stored by the physical The device array 400 is transmitted to the memory 280 , and then transmitted to the host 10 via the host-side I/O device connection controller 220 . When the write request (write request) imported by the host 10 is transmitted to the central processing circuit 240, after the write request is analyzed and one or more operations are performed, the central processing circuit 240 is connected to the controller through the host-side I/O device 220 receives incoming data from host 10 and stores it in memory 280 . For both synchronous or asynchronous device operation, data is transferred via central processing circuit 240 to physical storage device array 400 . When the write request is a writeback request, the IO complete report will be sent to the host 10 first, and then the central processing circuit 240 will perform the actual write operation; If the write request is a write through request, the I/O completion report will be sent to the host 10 after the data has actually been written into the physical storage device array 400 . The memory 280 is connected to the central processing circuit 240 and serves as a buffer for buffering data transmitted between the host 10 and the physical storage device array 400 through the central processing circuit 240 . In actual application, the memory 280 may be dynamic random access memory (DRAM, dynamic random access memory), or more specifically, the DRAM may also be synchronous dynamic random access memory (SDRAM, synchronous dynamic random access memory).

而在本实施例中,是将第一存储虚拟化控制器(SVC1)200的中央处理电路240直接连接到第二存储虚拟化控制器(SVC2)200’的中央处理电路(图中未示),即建构出第一存储虚拟化控制器(SVC1)200与第二存储虚拟化控制器(SVC2)200’间的通信信道(ICC)。In this embodiment, the central processing circuit 240 of the first storage virtualization controller (SVC1) 200 is directly connected to the central processing circuit (not shown in the figure) of the second storage virtualization controller (SVC2) 200' , that is to construct a communication channel (ICC) between the first storage virtualization controller (SVC1) 200 and the second storage virtualization controller (SVC2) 200'.

除此之外,装置端输出入装置连结控制器300是耦接至实体存储装置阵列400,实体存储装置阵列400亦耦接至第二存储虚拟化控制器(SVC2)200’。In addition, the device-side I/O device connection controller 300 is coupled to the physical storage device array 400, and the physical storage device array 400 is also coupled to the second storage virtualization controller (SVC2) 200'.

在此一结构中,第二存储虚拟化控制器(SVC2)200’可附接于第一存储虚拟化控制器(SVC1)200,且实体存储装置阵列400可被此两个存储虚拟化控制器200所存取。更甚者,由主机10发出的控制/数据信号可从中央处理电路240传送给第二存储虚拟化控制器(SVC2)200或更进一步地传送给一第二实体存储装置阵列(图中未示)。In this configuration, the second storage virtualization controller (SVC2) 200' can be attached to the first storage virtualization controller (SVC1) 200, and the physical storage device array 400 can be controlled by the two storage virtualization controllers. 200 accesses. What's more, the control/data signal sent by the host 10 can be transmitted from the central processing circuit 240 to the second storage virtualization controller (SVC2) 200 or further transmitted to a second physical storage device array (not shown in the figure ).

请续参阅图3,在本实施例中,可在中央处理电路240上附接一箱体管理服务电路360(EMS circuitry,enclosure management servicecircuitry),作为一容置实体存储装置阵列400箱体的管理电路,箱体管理服务电路360用来控制该实体存储装置阵列的电源及进行其它的管理,以及一液晶显示模块350(liquid crystal display module,LCD module),用来显示子系统的操作状态。然而存储虚拟化子系统20亦有其它的配置方式,例如可依各种不同产品的功能设计而定,而将箱体管理服务箱体管理服务电路360或该LCD模块350省略,或是将箱体管理服务箱体管理服务电路360整合在中央处理电路240中。Please continue to refer to FIG. 3 , in this embodiment, an enclosure management service circuit 360 (EMS circuit, enclosure management service circuit) can be attached to the central processing circuit 240 as a management system for accommodating the entity storage device array 400 enclosures. circuit, the cabinet management service circuit 360 is used to control the power supply of the physical storage device array and perform other management, and a liquid crystal display module 350 (liquid crystal display module, LCD module) is used to display the operating status of the subsystem. However, the storage virtualization subsystem 20 also has other configurations. For example, depending on the functional design of various products, the cabinet management service circuit 360 or the LCD module 350 can be omitted, or the cabinet management service circuit 360 or the LCD module 350 can be omitted. Body Management Service The box management service circuit 360 is integrated in the central processing circuit 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芯片组与同位引擎可分开设置于不同的芯片上。See also Fig. 4, be an embodiment of central processing circuit 240, wherein include CPU chipset/parity engine 244 (CPU chipset/parity engine), a central processing unit 242 (CPU), read-only memory 246 (ROM, read only memory) and a non-volatile random access memory 248 (NVRAM, non-volatile random access memory). Wherein the CPU 242 may be, for example, a Power PC CPU, and the ROM 246 may be a flash memory for storing basic input/output system (BIOS) and/or other system programs to be executed to control subsystems when booting operation. The NVRAM 248 is used to store relevant information about the execution state of the I/O operation of the physical storage device array, and is used for inspection when an abnormal power supply shutdown occurs before the I/O operation is completed. ROM 246, NVRAM 248, LCD module 350 and cabinet management service circuit 360 are all connected to CPU chipset/parity engine 244 via an X-bus (X-bus). Again, the NVRAM 248 is an optional item, which can be omitted in another configuration of the present invention. Moreover, although the CPU chipset/parity engine 244 is described here as an integrated functional block, in actual application, the CPU chipset and the parity engine can be separately arranged on different chips.

请续参阅图4,中央处理器242必须通过此CPU芯片组/同位引擎244才得以与其它电子组件(如内存280等)相耦接。Please continue to refer to FIG. 4 , the CPU 242 must be coupled with other electronic components (such as memory 280 , etc.) through the CPU chipset/parity engine 244 .

而图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上,用以在其间通联数据信号及控制信号。FIG. 5 shows an embodiment of the CPU chipset/parity engine 244 in the present invention. Wherein CPU chipset/parity engine 244 includes parity engine 260, CPU interface 910, memory controller 920, peripheral component connection fast (PCI Express) interface 930,932,934, X-Bus interface 940, transmission control protocol and Internet protocol (TCP/IP, transmission control protocol/internetprotocol) direct memory access (DMA, direct memory access) 980, arbitrator (Arbiter) 982, internal local bus (IL, internal local) 990 and internal main (IM, internal main) The bus 950, wherein the IM bus 950 is connected to the parity engine 260, the CPU interface 910, the memory controller 920, and the PCI-E interfaces 930, 932, 934 for communicating data signals and control signals therebetween.

由主机端输出入装置连结控制器220所发出的数据及控制信号经由PCI-E接口930而进入CPU芯片组/同位引擎244。其中连结至主机端输出入装置连结控制器220的PCI-E接口930的传输速率可为,举例而言,1.5Gbit/sec。当PCI-E接口930拥有IM总线950(IM Bus)时,该数据及控制信号将被传送至内存控制器920或是CPU接口910。The data and control signals sent by the host-side I/O device connection controller 220 enter the CPU chipset/parity engine 244 through the PCI-E interface 930 . The transmission rate of the PCI-E interface 930 connected to the host-side I/O device connection controller 220 may be, for example, 1.5 Gbit/sec. When the PCI-E interface 930 has an IM bus 950 (IM Bus), the data and control signals will be sent to the memory controller 920 or the CPU interface 910.

当CPU接口910接收到由IM总线950传来的数据及控制信号,将会传送至CPU 242进行进一步的处理,而CPU接口910及CPU 242间的沟通管道则可为,举例而言,64-bit数据传输线及32-bit地址线来进行。When the CPU interface 910 receives data and control signals from the IM bus 950, it will be sent to the CPU 242 for further processing, and the communication pipeline between the CPU interface 910 and the CPU 242 can be, for example, 64- bit data transmission lines and 32-bit address lines.

在内存控制器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)等功能。In the memory controller 920, there is an error correction code circuit (ECC circuit, error correction code circuit) (not shown in the figure), which is used to generate an ECC code, and the way it is generated can be, for example, 8- After the bit data is operated with exclusive OR (XOR), a single-bit ECC code is generated. Next, the memory controller 920 stores the data and the ECC code in the memory 280 . The memory 280 can be, for example, SDRAM. And the data in the memory 280 can also be sent to the IM bus 950 . And the memory controller 920 can be designed such that when data is transmitted from the memory 280 to the IM bus 950, the memory controller 920 will perform single-bit auto-correction (1-bit auto-correction) and multi-bit error detection (multi-bit error detection) on the data. error detecting) and other functions.

同位引擎260会响应于CPU 242的指示,来执行一特定磁盘阵列型态的同位功能。当然,在一些特定的条件下,比如说RAID0,同位引擎260可以关掉而不执行同位功能。The parity engine 260 will respond to the instructions of the CPU 242 to perform a parity function of a specific disk array type. Of course, under some specific conditions, such as RAID0, the parity engine 260 can be turned off without performing the parity function.

IL总线990(IL Bus)是连接于CPU接口910以及其它低速装置接口。The IL bus 990 (IL Bus) is connected to the CPU interface 910 and other low-speed device interfaces.

寄存器阵列984(Reg.array)是用来暂存CPU芯片/同位引擎244的状态,及控制IM Bus 950中的数据流动。此外,一对通用异步收发器(UART,universal asynchronous receiver and transmitter,)功能方块986则是用作CPU芯片/同位引擎244对外的接口,且该接口规格为RS232。The register array 984 (Reg.array) is used to temporarily store the state of the CPU chip/parity engine 244, and control the data flow in the IM Bus 950. In addition, a pair of Universal Asynchronous Receiver and Transmitter (UART, universal asynchronous receiver and transmitter,) functional block 986 is used as an external interface of the CPU chip/parity engine 244, and the interface specification is RS232.

而此CPU芯片组/同位引擎244则是藉由PCI-E接口932而与装置端输出入装置连结控制器300连结。The CPU chipset/parity engine 244 is connected to the device-side I/O device connection controller 300 through the PCI-E interface 932 .

TCP/IPDMA980则用以执行总合检查(checksum)计算以及DMA操作的功能。而仲裁者982则用以对IM总线950的使用权进行仲裁。The TCP/IPDMA980 is used to perform the functions of checksum calculation and DMA operation. The arbitrator 982 is used to arbitrate the right to use the IM bus 950 .

而在本实施例中,若要从内存280传输数据至第二存储虚拟化控制器200’时,则经由IM总线950进入PCI-E接口934后,藉由一PCI-E通信信道,如:外部缆线(cable)或背板(backplane),即可直接与第二存储虚拟化控制器200’中的PCI-E接口934’相耦接,其中无须像现有技术需再通过任何中间转换缓冲接口(如:冗余通信连结控制器)。In this embodiment, if data is to be transferred from the memory 280 to the second storage virtualization controller 200′, after entering the PCI-E interface 934 through the IM bus 950, a PCI-E communication channel is used, such as: An external cable (cable) or a backplane (backplane) can be directly coupled to the PCI-E interface 934' in the second storage virtualization controller 200', without any intermediate conversion as in the prior art Buffer interface (eg: redundant communication link controller).

在实际应用时,PCI-E界面930,932可代换为周边组件连结扩充(PCI-X,peripheral component interconnect extended)接口,或者是以周边组件连结(PCI)接口取代。In actual application, the PCI-E interfaces 930, 932 can be replaced by peripheral component interconnect extended (PCI-X, peripheral component interconnect extended) interfaces, or replaced by peripheral component interconnect (PCI) interfaces.

而在子系统20启动电源时,每一存储虚拟化控制器的CPU芯片组会通过其各PCI-E接口来进行了解外接于该控制器的装置为何以及是否正确建立联机。而二装置间若要利用PCI-E接口建立PCI-E传输信道,则该二装置相连的PCI-E接口的实体层模式(PHY-mode)必须分别操作于下游(down stream)模式以及上游(up stream)模式,否则二者间将无法建立联机进行数据传输。When the subsystem 20 is powered on, the CPU chip set of each storage virtualization controller will know why and whether the connection is established correctly for the device externally connected to the controller through each PCI-E interface. And if the PCI-E interface is to be used to establish a PCI-E transmission channel between the two devices, the physical layer mode (PHY-mode) of the PCI-E interface connected to the two devices must be operated in the downstream (down stream) mode and the upstream ( up stream) mode, otherwise it will not be possible to establish a connection between the two for data transmission.

一般而言,存储虚拟化控制器为主动组件,因此,其PCI-E接口的PHY-mode是设定为down stream。Generally speaking, the storage virtualization controller is an active component, so the PHY-mode of its PCI-E interface is set to down stream.

但是,如前所述,二存储虚拟化控制器设置是为一致,也就是说,对二存储虚拟化控制器而言,其建立二控制器间控制器间通信信道ICC的PCI-E接口的PHY-mode皆被设定为down stream,如此一来,二控制器根本无法成功建立联机。为解决此问题,在本实施例中,提出了一种转换机制使其中一控制器可转为up stream,以能成功建立联机传输数据。However, as mentioned above, the settings of the two storage virtualization controllers are consistent, that is to say, for the two storage virtualization controllers, it establishes the PCI-E interface of the inter-controller communication channel ICC between the two controllers Both PHY-modes are set to down stream, so the two controllers cannot successfully establish a connection at all. In order to solve this problem, in this embodiment, a conversion mechanism is proposed so that one of the controllers can be converted to upstream, so as to successfully establish an online data transmission.

请参阅图6,是为一种存储虚拟化子系统自动转换机制的流程图。其中此自动转换机制是由存储虚拟化控制器内CPU芯片组的PCI-E接口执行。Please refer to FIG. 6 , which is a flowchart of an automatic conversion mechanism for a storage virtualization subsystem. The automatic conversion mechanism is executed by the PCI-E interface of the CPU chipset in the storage virtualization controller.

首先,二存储虚拟化控制器200,200’分别皆通过控制器间通信信道ICC两端的PCI-E接口934发送一包含其PHY-mode信息的信息,因此该二存储虚拟化控制器200,200’的PCI-E接口934可收到对方的PHY-mode信息(步骤S810);First, the two storage virtualization controllers 200, 200' send information including their PHY-mode information through the PCI-E interfaces 934 at both ends of the inter-controller communication channel ICC, so the two storage virtualization controllers 200, 200 The PCI-E interface 934 of ' can receive the PHY-mode information of the other side (step S810);

比较二者的PHY-mode是否不同而能建立联机(步骤S820);Compare whether the PHY-mode of the two is different and can establish connection (step S820);

若比较结果为另一存储虚拟化控制器的信息显示其PHY-mode与自己的PHY-mode相同时,则将利用PCI-Express的cross link的特征改变PHY-mode,并撮合使第一与第二存储虚拟化控制器间通信信道ICC两端的PCI-E接口的PHY-mode,是分别操作于down stream以及up stream而得以建立联机(步骤S830及步骤S840)。If the result of the comparison is that the information of another storage virtualization controller shows that its PHY-mode is the same as its own PHY-mode, then the PHY-mode will be changed using the characteristics of the cross link of PCI-Express, and the first and the second will be matched. The PHY-modes of the PCI-E interfaces at both ends of the communication channel ICC between two storage virtualization controllers operate in down stream and up stream respectively to establish a connection (step S830 and step S840).

前述的撮合方式可藉由只允许其中一端的PCI-E接口可改变PHY-mode来达成,也就是,当发生PCI-E接口所接收的信息显示另一端的PHY-mode与自己相同时,只有其中一端的PCI-E会改变其PHY-mode。The aforementioned matching method can be achieved by only allowing the PCI-E interface at one end to change the PHY-mode, that is, when the information received by the PCI-E interface shows that the PHY-mode at the other end is the same as itself, only The PCI-E at one end will change its PHY-mode.

假设前述只允许单边转换是设定由第二存储虚拟化控制器来执行。当子系统启动电源时,二存储虚拟化控制器分别皆通过控制器间通信信道ICC两端的PCI-E接口发送一包含其PHY-mode信息的信息,因此,控制器间通信信道ICC于第二存储虚拟化控制器的PCI-E接口将收到位于第一存储虚拟化控制器内PCI-E接口的PHY-mode信息。请配合参阅图7,为第二存储虚拟化控制器端的流程图。It is assumed that only one-sided conversion is allowed to be performed by the second storage virtualization controller. When the subsystem is powered on, the two storage virtualization controllers respectively send a message including their PHY-mode information through the PCI-E interfaces at both ends of the inter-controller communication channel ICC. Therefore, the inter-controller communication channel ICC is at the second The PCI-E interface of the storage virtualization controller will receive the PHY-mode information of the PCI-E interface in the first storage virtualization controller. Please refer to FIG. 7 , which is a flow chart of the second storage virtualization controller.

当第二存储虚拟化控制器的PCI-E接口收到第一存储虚拟化控制器PCI-E的PHY-mode信息后,通过所接收的PHY-mode信息进而判断是否可建立联机(步骤S410,S420);After the PCI-E interface of the second storage virtualization controller receives the PHY-mode information of the first storage virtualization controller PCI-E, it is judged whether the connection can be established by the received PHY-mode information (step S410, S420);

若第二存储虚拟化控制器的PCI-E接口在前述判断程序(步骤S420)中察觉另一存储虚拟化控制器的信息显示其PHY-mode与自己的PHY-mode相同时,则藉由PCI-Express的交叉连结(cross link)的特征改变其存储虚拟化控制器之PHY-mode,并在转换后发送新的PHY-mode信息给第一存储虚拟化控制器(步骤S430),进而进入建立联机程序(步骤S440)。If the PCI-E interface of the second storage virtualization controller detects that the information of another storage virtualization controller shows that its PHY-mode is the same as its own PHY-mode in the aforementioned determination procedure (step S420), then the -The feature of the cross link (cross link) of Express changes the PHY-mode of its storage virtualization controller, and sends new PHY-mode information to the first storage virtualization controller (step S430) after conversion, and then enters the establishment Online program (step S440).

而第一存储虚拟化控制器的控制器间通信信道ICC端的PCI-E接口则在传送含有其PHY-mode为down stream等设定信息后,即等待直到接收到第二存储虚拟化控制器的PCI-E接口通过ICC传送显示其PHY-mode为up stream的信息,再根据这些信息内容建立二控制器间的联机。The PCI-E interface at the ICC side of the inter-controller communication channel of the first storage virtualization controller waits until it receives the second storage virtualization controller's message after transmitting the setting information including its PHY-mode as down stream. The PCI-E interface transmits the information showing that its PHY-mode is up stream through ICC, and then establishes the connection between the two controllers according to the content of the information.

综前所述,此实施方案在该存储虚拟化控制器对中当发生有通信信道两端的PHY-mode相同时,仅有一存储虚拟化控制器会利用cross-link转换其PHY-mode,另外一存储虚拟化控制器并不会进行任何作动。即,此实施例中该二存储虚拟化控制器的设计是不相同,故,二者所采用的CPU芯片组的IC将会不同。To sum up, in this implementation solution, when the PHY-modes at both ends of the communication channel are the same among the storage virtualization controllers, only one storage virtualization controller will use the cross-link to convert its PHY-mode, and the other The storage virtualization controller does not perform any actions. That is, the designs of the two storage virtualization controllers in this embodiment are different, so the ICs of the CPU chipsets used by the two will be different.

亦即,前述的做法,该控制器必须得配对使用,以使得其间的通信信道ICC得以正常联机。That is to say, in the aforementioned method, the controllers must be used in pairs so that the communication channel ICC therebetween can be connected normally.

但是,在一些环境或状况下,会期望或要求形成该存储虚拟化控制器对的二个存储虚拟化控制器所采用的立ICC通信接口其软硬件要一致。在此,提出另一种自动转换机制,其中二存储虚拟化控制器的建立ICC的PCI-E接口所执行的流程是相同,使能因应前述状况,图8即显示存储虚拟化控制器端PCI-E接口所执行的一种实作方案流程图。However, in some environments or situations, it is expected or required that the software and hardware of the ICC communication interface adopted by the two storage virtualization controllers forming the storage virtualization controller pair should be the same. Here, another automatic conversion mechanism is proposed, wherein the procedures performed by the two storage virtualization controllers to establish the PCI-E interface of the ICC are the same, enabling the aforementioned situation. Figure 8 shows the storage virtualization controller side PCI A flowchart of an implementation scheme implemented by the -E interface.

首先,当存储虚拟化控制器的PCI-E接口接收另一连结端的信息时,将解析以了解该连结端的状态(步骤S510),First, when the PCI-E interface of the storage virtualization controller receives the information of another connection end, it will analyze to understand the state of the connection end (step S510),

接着,比较该连结端PHY-mode与自身是否相同(步骤S520),若不同,则直接进行建立联机程序(步骤S530);Then, compare whether the PHY-mode of the connection end is the same as itself (step S520), if not, directly proceed to establish a connection procedure (step S530);

若,二者的PHY-mode相同,则进入一撮合程序S540;If the PHY-modes of the two are the same, enter a matching procedure S540;

首先会随机(random)选定一参数T值(计时临界值),接着启动计时,以了解是否达到该T值(步骤S542);First, a parameter T value (timing critical value) will be selected at random (random), and then start timing to know whether the T value is reached (step S542);

其后,若在时间为达到该T值之前,接收到对方新的PHY-mode信息显示其已改变PHY-mode(步骤S544),则结束撮合程序,进入建立联机程序(步骤S530);Thereafter, if before the time reaches the T value, receiving the new PHY-mode information of the other party shows that it has changed the PHY-mode (step S544), then end the matching procedure and enter the online procedure of setting up (step 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状态信息给对方;And when the information that the other party's PHY-mode has changed has not been received for a long time, and the time reaches the T value, as shown in the figure, step S546 judges whether the time t has reached the T value, if t<T, then go back to step S544, Otherwise, carry out a conversion PHY-mode procedure (step S548), is to utilize cross-link to convert PHY-mode from the type that is set originally to another type, as: originally be down stream then change to upstream or up The stream is converted to a down stream, and after the conversion is completed, a new PHY-mode status message is sent to the other party;

其后,回到步骤S520,确定两者间的PHY-mode型态是否已不相同而可建立联机,若相同,则重新进到撮合程序S540,此时会再重新随机随机数选取设定参数T。Afterwards, return to step S520, determine whether the PHY-mode types between the two are different and can establish a connection, if they are the same, then enter the matchmaking procedure S540 again, and then randomly select the setting parameters again at this time T.

其中,在步骤S548执行完毕后尚须再回去进入步骤S520的原因,是在于虽于执行转换前已判断两者PHY-mode是相同,但由于二存储虚拟化控制器有可能发生同时执行cross-link改变PHY-mode的情况发生,在此种状况下,二者间仍无法建立联机,因此,当转换完成后仍需判断二者间的PHY-mode是否已不相同,确定撮合完成以确保可建立联机。而若发生二者同时执行改变PHY-mode状况时,由于双方改变完后会发送显示新的PHY-mode状态信息给对方,因此仍可藉此并经由步骤S520比较得知撮合未成功,因此得重新再撮合一次。Among them, the reason why it is necessary to go back to step S520 after the execution of step S548 is that although it has been determined that the PHY-modes of the two are the same before the conversion, the two storage virtualization controllers may execute cross-mode at the same time. When the link changes the PHY-mode, in this case, the connection between the two still cannot be established. Therefore, after the conversion is completed, it is still necessary to judge whether the PHY-mode between the two is different, and confirm that the matching is completed to ensure that Establish a connection. And if both change the PHY-mode status at the same time, since the two parties will send and display new PHY-mode status information to the other party after the change, it can still be learned that the matchmaking is not successful through comparison in step S520, so it can be obtained Match again.

另外更可设计,在步骤S548执行转换过程中,加入,若接收到对方传送的PHY-mode信息,则中止转换维持原先所设定的PHY-mode且跳至建立联机程序(S530)的步骤。In addition, it can be designed that during the conversion process in step S548, if the PHY-mode information sent by the other party is received, the conversion is stopped to maintain the originally set PHY-mode and jump to the step of establishing a connection procedure (S530).

或者是,在步骤S548执行转换过程中,若接收到对方传送的PHY-mode信息,则暂停转换,先了解对方的PHY-mode状态是否与本身执行转换步骤S548前的PHY-mode不同,若是,则中止转换程序维持本身转换前的设定,且直接跳至步骤S530建立联机程序,而若察觉对方的PHY-mode仍与自己转换前相同,则继续完成转换。以避免在对方完成转换而与自己已不相同后,自己又转换为与该对方一致而仍无法建立联机之情事。Or, in step S548, during the conversion process, if the PHY-mode information transmitted by the other party is received, the conversion is suspended, and whether the PHY-mode state of the other party is different from the PHY-mode before the conversion step S548 is performed by itself, if so, Then stop the conversion process to maintain the settings before the conversion, and directly jump to step S530 to establish a connection process, and if it is found that the PHY-mode of the other party is still the same as before the conversion, continue to complete the conversion. In order to avoid the situation that after the other party completes the conversion and is no longer the same as yourself, you are converted to the same party as the other party and still cannot establish a connection.

现举一实例进行说明,首先,在子系统启动电源时,二存储虚拟化控制器其PCI-E接口皆会发送出一包含显示其PHY-mode为down stream等操作状态的信息,其中当然包括用以建立控制器间通信信道ICC的PCI-E接口。Here is an example for illustration. First, when the subsystem is powered on, the PCI-E interfaces of the two storage virtualization controllers will both send out a message showing the operating status of the PHY-mode as down stream, etc., which of course includes The PCI-E interface used to establish the communication channel ICC between controllers.

而当二存储虚拟化控制器的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。When the PCI-E interface of the second storage virtualization controller receives the information sent by the other party, it will analyze it to understand its PHY-mode, and when it finds that its PHY-mode is also down stream, both will enter the matching process, and each Randomly select a T value (assuming that the first storage virtualization controller is selected as T1, and the second storage virtualization controller is selected as T2), and start timing. When the T value is reached, the cross-link is performed, because The T value is randomly selected, so there is a high probability that the two controllers will select different T values, that is, T1≠T2, and the side that selects the smaller T value will enter the conversion program first, and the PHY-mode Convert to up stream, and send information containing the new PHY-mode to the other party after conversion, and because the T value selected by the other party is relatively large, when receiving the new PHY-mode sent by the other party information, it may not have reached the selected T value, or it has just reached the T value and is executing the conversion PHY-mode procedure. If it is the former, after receiving the information that the other party has converted to the up stream, it will directly enter the connection procedure of establishing the communication channel ICC between the two controllers. If it is the latter, it will stop the conversion and maintain the PHY of the original down stream -mode, and then successfully establish the inter-controller communication channel ICC between the two. For example: assuming T1<T2, the first storage virtualization controller will first enter the conversion program, and convert the PHY-mode to up stream, and send information including the new PHY-mode (up stream) to The second storage virtualization controller, and because the T2 value selected by the second storage virtualization controller is larger, after the first storage virtualization controller completes the conversion process, the second storage virtualization controller has not yet started The conversion is halfway through the conversion, so the second storage virtualization controller known by the first storage virtualization controller is still in the down-stram mode, so it will consider that the matching is completed and enter the online program, and the second storage virtualization controller That is, if the selected T2 value has not been reached when receiving the new PHY-mode information transmitted by the first storage virtualization controller, since the second storage virtualization controller is in the down stream, it will also Enter the online program, therefore, the inter-controller communication channel ICC can be correctly established between the two, or the second storage virtualization controller receives the new PHY-mode information of the first storage virtualization controller and knows that it is changed to upstream When the value of T2 is just reached and the PHY-mode conversion program is being executed, the second storage virtualization controller will stop the conversion and maintain the original PHY-mode of the down stream, and then successfully establish the inter-controller communication channel ICC between the two .

而若不巧,两者所选定的T值相同,则可能发生二者同时完成转换程序并传送新的PHY-mode信息,亦即在转换完成后双方都会收到对方PHY-mode为up stream的信息,因此经过比较将得知双方的PHY-mode又相同,因此二者将查觉撮合未成功,会再重新进入撮合程序,双方重新随机随机数选定T值,只要所选定T值不同就可依前述成功建立联机。而由于每次协调撮合的时间极短,加上由于T值是随机数选定因此二控制器持续不断皆选定相同T值的机率几乎为零,因此,二存储虚拟化控制器在一短时间内必定可协调为一个为down stream,另一个为up stream,成功建立控制器间通信信道ICC。And if unfortunately, the T value selected by the two is the same, it may happen that the two complete the conversion process and transmit the new PHY-mode information at the same time, that is, after the conversion is completed, both parties will receive that the other party’s PHY-mode is up stream Therefore, after comparison, it will be known that the PHY-modes of the two parties are the same, so the two will detect that the matching is not successful, and will re-enter the matching procedure, and both parties will re-select the T value randomly, as long as the selected T value If it is different, the connection can be established successfully according to the above. And because the time of each coordination and matching is extremely short, and because the T value is selected by a random number, the probability that the two controllers continuously select the same T value is almost zero. Within a certain period of time, one must be coordinated as a down stream and the other as an up stream, and the inter-controller communication channel ICC is successfully established.

请注意,本实施例中第一与第二存储虚拟化控制器所采用的操作流程是相同(如图8所示),也就是说第一存储虚拟化控制器所采用的设计是与该第二存储虚拟化控制器相同,因此本实施例是可使设计完全一致的二存储虚拟化控制器间成功建立控制器间通信信道ICC。Please note that the operation processes adopted by the first and second storage virtualization controllers in this embodiment are the same (as shown in FIG. 8 ), that is to say, the design adopted by the first storage virtualization controller is the same as that of the second storage virtualization controller The two storage virtualization controllers are the same, so in this embodiment, the inter-controller communication channel ICC can be successfully established between the two storage virtualization controllers whose designs are completely consistent.

当然,二存储虚拟化控制器间要利用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接口)的实施例中,是较为适用。Of course, the two storage virtualization controllers need to use the PCI-Express connection to establish the inter-controller communication channel ICC. In addition to the aforementioned mechanism of automatically switching and establishing the connection through the PCI-E interface, other mechanisms that are not automatically established by the PCI-E interface can also be used. finished mechanism. For example: use the pin (pin) setting of the CPU chipset/colocation engine 244 to make (select or force) the PCI-E interface 934 to become upstream; or, utilize software to fill in the CPU chipset/colocation engine 244 The register of the PCI-E interface 934 makes (selects or forces) the PHY-mode of the PCI-E interface 934 to become upstream. However, in these two methods, the former needs to be manually set on site, and the latter needs to be set by software detection, which may cause a waste of time, so it is not ideal. However, it is more suitable for other embodiments of the present invention that adopt local bus interfaces without cross link features (such as PCI interfaces).

由于,存储虚拟化控制器在电源启动时即会利用对外的各连结接口发送信息至外接于该控制器的各装置,并等待各装置的响应,以了解是否已顺利建立联机以及各连结上所连接的装置为何。而原则上,整个系统于设计上,除冗余存储虚拟化控制器对间的通信信道,其它控制器对外的通信信道所连接的是为被动装置,因此其PHY-mode为up stream,因此存储虚拟化控制器亦可利用在开机检测各连结接口联机状态时,藉由当得知所连结装置亦操作于down stream时,判断该连结通道是为控制器间通信信道ICC。Because, when the power is turned on, the storage virtualization controller will use the external connection interfaces to send information to each device connected to the controller, and wait for the response of each device to know whether the connection has been successfully established and the information on each connection. What is the connected device. In principle, in the design of the entire system, except for the communication channel between redundant storage virtualization controller pairs, the external communication channels of other controllers are connected to passive devices, so their PHY-mode is up stream, so storage The virtualization controller can also use it to detect the connection status of each connection interface when starting up, and judge that the connection channel is an inter-controller communication channel ICC when it knows that the connected device is also operating in the down stream.

为了提高存储虚拟化控制器之中央处理器效能,请续参阅图9,本发明提出一种进行数据传送的方法,包括:In order to improve the performance of the central processing unit of the storage virtualization controller, please continue to refer to FIG. 9, the present invention proposes a method for data transmission, including:

中央处理器是依据一事先定义的数据传输协议格式(data-transfer-protocol format)对欲传送给另一存储虚拟化控制器的数据,建立一相对应的离散聚集表(Scatter-Gather(SG)-list)(步骤S910);The central processing unit establishes a corresponding discrete aggregation table (Scatter-Gather (SG)) for data to be transmitted to another storage virtualization controller according to a pre-defined data-transfer-protocol format -list) (step S910);

中央处理器发送一内含存放该SG-List地址的信息写至归属于此建立控制器间通信信道的PCI-E接口的寄存器(register)(步骤S920);以及The central processing unit sends a message containing the address of the SG-List to write to the register (register) belonging to the PCI-E interface that establishes the communication channel between the controllers (step S920); and

该PCI-E接口依据该寄存器的地址信息,读取该SG-List,并依据该SG-List的内容至内存内读取欲传输的离散数据(scattered data),并将这些离散数据通过控制器间通信信道ICC传送至另一个存储虚拟化控制器(步骤S930)。The PCI-E interface reads the SG-List according to the address information of the register, and reads the scattered data (scattered data) to be transmitted in the memory according to the content of the SG-List, and passes the scattered data through the controller The inter-communication channel ICC is transmitted to another storage virtualization controller (step S930).

上述归属于建立控制器通信信道的接口的寄存器,可设计为位于PCI-E接口之中,亦可设计于一寄存器功能区块(如寄存器阵列)之中。The above-mentioned registers belonging to the interface for establishing the controller communication channel can be designed to be located in the PCI-E interface, or can be designed in a register functional block (such as a register array).

在中央处理器对寄存器进行写入动作时,由于此寄存器是被设计归属于该建立控制器间通信信道的PCI-E接口,因此该寄存器即会将该地址信息传送给该建立控制器间通信信道的PCI-E接口,并且触发(trigger)该接口。When the central processing unit writes to the register, since this register is designed to belong to the PCI-E interface of the communication channel between the establishment controllers, the register will send the address information to the establishment of communication between the controllers The PCI-E interface of the channel, and trigger (trigger) the interface.

在一实施例中,是规划定义此寄存器内某些特定地址空间,作为写入存放SG-List的内存地址之用。如此设计,将使得当中央处理器对这些特定寄存器地址写入存放此SG-List的内存地址时,此写入动作等同一个触发信号,使寄存器得以去触发PCI-E接口内的引擎(engine)去执行数据传输相关程序。依此种方式,中央处理器仅需将存放SG-List的内存地址写入这些特定寄存器地址即可。In one embodiment, some specific address spaces in the register are planned and defined for writing the memory address storing the SG-List. Such a design will make when the central processing unit writes the memory address storing the SG-List to these specific register addresses, this writing action is equivalent to a trigger signal, so that the register can trigger the engine in the PCI-E interface To execute data transfer related procedures. In this way, the central processing unit only needs to write the memory address storing the SG-List into these specific register addresses.

请参阅图10,是提出本发明中有关SG-List格式的一个实施例。依照此实施例,SG-List内容包含有:表内数据数量字段(list-entry-count),用以指示表中内含的离散聚集数据(SG data)的数目;来源起始地址字段(Source-base-Addr),指示每笔欲传输离散数据其所存放的内存起始地址;数据长度字段(Data-Length),指示前述内存起始地址所存放的该笔欲传输离散数据的长度;以及目标起始地址字段(Destination-Base-Addr),指示该笔传输离散数据欲存放的目标地址;等等。Please refer to FIG. 10 , which is an embodiment of the SG-List format in the present invention. According to this embodiment, the SG-List content includes: the data quantity field (list-entry-count) in the table, in order to indicate the number of discrete aggregated data (SG data) contained in the table; the source starting address field (Source -base-Addr), indicating the memory start address where each piece of discrete data to be transmitted is stored; the data length field (Data-Length), indicating the length of the piece of discrete data to be transmitted stored in the aforementioned memory start address; and Destination-Base-Addr field (Destination-Base-Addr), indicating the destination address of the transmission discrete data to be stored; and so on.

当中央处理器将存放此SG-List的内存地址写入寄存器时,PCI-E接口依据寄存器所指示的内存地址将该SG-List内的离散聚集数据读取出,并根据该SG-List内前述所定义的各字段内的离散聚集数据进行作动,例如:依据该中央处理器所写入寄存器的地址信息至该内存地址将标头内的控制信息读出后,根据标头中表内数量字段内所指示的数量依序往下读取该数量的离散聚集数据,而整个SG-List的信息将存于寄存器内,接着建立控制器间通信信道的PCI-E接口依据每一笔离散数据的来源起始地址字段以及该离散数据长度字段内容的指示,依序于读取该笔离散数据后连同该笔离散数据的目标起始地址一起通过ICC传输给另一存储虚拟化控制器的建立控制器间通信信道的PCI-E接口,当另一存储虚拟化控制器的建立控制器间通信信道的PCI-E接口收到这些信息时,将依内容把这些离散数据存于目标地址内。When the central processing unit writes the memory address storing the SG-List into the register, the PCI-E interface reads out the discrete aggregation data in the SG-List according to the memory address indicated by the register, and The discrete aggregated data in each field defined above is operated, for example: after reading the control information in the header according to the address information of the register written by the central processing unit to the memory address, according to the table in the header The quantity indicated in the quantity field reads down the discrete aggregation data of that quantity sequentially, and the information of the entire SG-List will be stored in the register, and then establishes the PCI-E interface of the inter-controller communication channel according to each discrete The source start address field of the data and the indication of the content of the discrete data length field are sequentially transmitted to another storage virtualization controller through the ICC together with the target start address of the discrete data after reading the discrete data The PCI-E interface that establishes the communication channel between the controllers, when the PCI-E interface of another storage virtualization controller that establishes the communication channel between the controllers receives the information, it will store the discrete data in the target address according to the content .

且在SG-List内亦可再包括第一中断(INT)字段,用以设定是否于完成此表内所列数据传输后,建立控制器间通信信道的接口需产生中断(interrupt)信号;以及第二中断(Ints)字段,用以设定是否目的端(另一存储虚拟化控制器)完成这些离散数据写入存储于各离散数据相对应的目标地址时,产生中断(interrupt)信号通知自身(另一存储虚拟化控制器)的中央处理器。And the first interrupt (INT) field can also be included in the SG-List, which is used to set whether after the data transmission listed in this table is completed, the interface establishing the communication channel between the controllers needs to generate an interrupt (interrupt) signal; And the second interrupt (Ints) field is used to set whether the destination end (another storage virtualization controller) completes writing these discrete data to the target address corresponding to each discrete data, and generates an interrupt (interrupt) signal notification CPU of itself (another storage virtualization controller).

若系统事先定义的SG-List具有此等字段,则建立控制器间通信信道的接口是会传送此第二中断字段内容,以使另一存储虚拟化控制器的建立控制器间通信信道接口得依该字段之设定来作动,如:1为产生interrupt信号给自身的中央处理器、0为不产生。且此建立控制器间通信信道的接口于完成该SG-List内所指示的数据传输后,将依SG-List的第一中断字段的指示来决定是否进行产生一interrupt信号至中央处理器的动作,如:1为产生、0为不产生。If the SG-List defined in advance by the system has these fields, the interface for establishing the inter-controller communication channel will transmit the content of the second interrupt field, so that the interface for establishing the inter-controller communication channel of another storage virtualization controller can be obtained. Act according to the setting of this field, for example: 1 is to generate an interrupt signal to its own CPU, 0 is not to generate it. And after the interface for establishing the communication channel between controllers completes the data transmission indicated in the SG-List, it will determine whether to generate an interrupt signal to the central processing unit according to the indication of the first interrupt field of the SG-List , such as: 1 means generate, 0 means not generate.

此外,由于因为内存内空间配置等因素,可能发生无法使用单一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。In addition, due to factors such as memory space configuration, it may happen that a single SG-List cannot be used to list all the discrete aggregation data. In this case, several SG-Lists can be used to list and solve the problem. Please refer to FIG. 10 again. In this preferred embodiment, the format of the aforementioned SG-List still has a field (Next-SG-List Addr.) of the next SG-List address to indicate the next SG - The memory address stored in the List, so when the interface that establishes the communication channel between controllers reads the content of a certain SG-List, it can know where the next SG-List to be processed is stored according to the content of this field, and then Read the next SG-List according to the address, so that these SG-Lists can automatically generate a joint relationship, and when there is no next SG-List, this field will be set to 0, so that the SG-List can be known List is the last list. Therefore, the central processing unit does not need to write the address stored in the SG-List into the register for each SG-List, as long as the address of the first SG-List is written into the register, the communication between the controllers should be established. The interface of the channel will automatically complete all related SG-Lists.

请参图11,显示一假设例。假设中央处理器接受一主机端所传送的请求,该请求相关信息与数据通过CPU芯片组分散存放于内存中各处,中央处理器依据这些信息与数据存放的内存地址与长度等,根据前述格式产生了四个SG-List。Please refer to FIG. 11 , which shows a hypothetical example. Assuming that the central processing unit accepts a request sent by a host, the request-related information and data are scattered and stored in various parts of the memory through the CPU chipset, and the central processing unit is based on the memory address and length of these information and data storage. Four SG-Lists are generated.

如图所示,假设第一个SG-List所存放的地址为0000_0100。当建立好这些SG-Lists后,CPU只需发送包含地址0000_0100的信息写至CPU芯片组内被设定归属于该建立控制器间通信信道的接口的寄存器,,该建立控制器间通信信道的PCI-E接口至内存地址0000-0100内读取SG-List内的信息,取得控制信息(包括第一中断(INT)、下一个SG-List地址(Next-SG-List-Addr.)、表内数据数量(list-entry-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的数据已完成传送。As shown in the figure, suppose the address stored in the first SG-List is 0000_0100. After these SG-Lists are established, the CPU only needs to send the information containing the address 0000_0100 to write to the register in the CPU chipset that is set to belong to the interface for establishing the communication channel between controllers. Read the information in the SG-List from the PCI-E interface to the memory address 0000-0100, and obtain the control information (including the first interrupt (INT), the next SG-List address (Next-SG-List-Addr.), table The number of data in the table (list-entry-count) and other fields), and then read the information stored in the address 0000_0110 and 0000_0120 according to the number of data "2" displayed in the data number field in the table (including Source start address (Source-base-Addr), data length (Data-Length), target start address (Destination-Base-Addr) and other fields), and after reading all the contents of the first SG-List, Then read the discrete data into the buffer according to the initial address (1000_0000) and length (0000_0010) of the first discrete data stored in the memory, together with the target initial address ( A100_0000) are transmitted to another storage virtualization controller. When reading and transmitting the discrete data, the discrete data can be read and transmitted in batches according to the actual capacity of the buffer. Then complete the reading and transmission of each following discrete data in sequence according to the aforementioned method (such as: read the second discrete data in the memory according to the starting address (1100_0000) and data length (0000_0020) for storing the second discrete data) The first piece of discrete data is sent to the buffer (buffer), and the target starting address (A200_0000) to be stored for the second piece of discrete data is also sent to another storage virtualization controller). After completing the reading and transmission of all the discrete data listed in the first SG-List, and since the first interrupt (INT) field of the first SG-List is 0, the inter-controller communication is established The PCI-E interface of the channel will not send an interrupt signal to notify the central processing unit, that is, to read the second SG according to the information (0000_020) in the field of the next SG-List address (Next-SG-List Addr) to the memory address 0000_0200 -List, also obtain the content in the second SG-List according to the above method, and also complete the transmission of each discrete data listed in the list according to the above method, and then also according to Next-SG-List Addr. The internal information reads the third SG-List, and repeats each SG-List one by one until the Next-SG-List Addr address in the SG-List is set to 0000_000 (the fourth SG-List). In this example, since only the first interrupt (INT) field content of the fourth SG-List is 1, after completing the transmission action of the fourth SG-List, the PCI- The E interface will generate an interrupt signal to the CPU, so the CPU can know that the data of the four SG-Lists has been transmitted.

利用前述方法,在执行冗余传输数据动作时,中央处理器只需维护SG-List以及传送存放第一个SG-List Addr至CPU芯片组即可,而后所有读取离散数据以及传送离散数据的动作将由CPU芯片组执行,几乎无需占用到中央处理器的工作资源。Using the aforementioned method, when performing redundant data transmission actions, the central processing unit only needs to maintain the SG-List and transmit and store the first SG-List Addr to the CPU chipset, and then all read discrete data and transmit discrete data Actions will be performed by the CPU chipset, requiring little or no CPU work.

再者,当建立控制器间通信信道接口于完成各传输数据操作后依照SG-list内的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就先回复,因此内存空间可实时被腾出,使得在记忆空间的配置运用上提供较好的弹性与效能。至于要采用何种回报方式是可由中央处理器依系统实际状况决定。Furthermore, when the inter-controller communication channel interface is established, after completing each transmission data operation, it reports to the central processor according to the INT field setting in the SG-list, so that the central processor can know that these discrete data have been successfully transmitted to Another storage virtualization controller can release the memory space for storing the transferred SG-List. At this time, the method of replying to the central processing unit every time an SG-List is completed can be adopted, that is, the INT field of each SG-List is all set to 1; The address of the next SG-List Addr is 0000_0) before replying to the CPU. As in the previous example, only the INT field of the last SG-List is set to 1, and the INT fields of other SG-Lists are all set to 0. The advantage of the former is that the memory space can be vacated in real time because the SG-List is restored every time a single SG-List is completed, which provides better flexibility and performance in the configuration and use of the memory space. As for which return method to adopt, it can be determined by the central processing unit according to the actual situation of the system.

另外,一般而言,在冗余存储虚拟化计算机系统内,由于二存储虚拟化控制器间必须维持几乎同步,故当一存储虚拟化控制器一有变化就须告知另一存储虚拟化控制器,加上通常系统在运转时该IO操作是非常繁复的,因此可能会持续有新的数据或信息需传送给另一存储虚拟化控制器的情事发生。In addition, generally speaking, in a redundant storage virtualization computer system, because the two storage virtualization controllers must maintain almost synchronization, when a storage virtualization controller has a change, it must notify the other storage virtualization controller , and usually the IO operation is very complicated when the system is running, so there may be a situation that new data or information needs to be transmitted to another storage virtualization controller continuously.

以下提出一更佳的实施方法,是在前述再加入以下步骤:A better implementation method is proposed below, which is to add the following steps to the foregoing:

当建立控制器间通信信道的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接口自动连动处理。When the PCI-E interface that establishes the communication channel between controllers is processing a certain SG-List, the CPU chipset receives new information or data, and then the central processing unit establishes a corresponding new SG-List based on these information or data. (s), then the central processing unit can insert or connect the new SG-List(s) to the old unfinished SG-List(s), for example: by changing the ongoing connection of the PCI-E interface The data in the Next-SG-list Addr field of a SG-list that has not been processed in the memory of SG-lists or the data in the Next-SG-List Addr. field to be performed in the register, change it to The initial address of the newly established SG-List(s) is stored, so that there is also a linkage relationship between the SG-List(s) before and after, so that the PCI-E interface is automatically linked.

进一步说明如下,请配合参阅图15,CPU芯片组在接收到新的数据并将此新数据存入内存后通知中央处理器,中央处理器将对此等新的数据建立了数个相互连带的新的SG-Lists(步骤S602)。Further description is as follows, please refer to Figure 15, the CPU chipset notifies the central processing unit after receiving new data and storing the new data in the memory, and the central processing unit will establish several associated New SG-Lists (step S602).

接着中央处理器判断是否存有旧的SG-List(s)尚未处理完(步骤S604),此步骤可藉由建立控制器间通信信道的PCI-E接口是否发送Interrupt信号给中央处理器而得知,若中央处理并未收到Interrupt信号的话,中央处理器知道其尚未完成传送前已触发待传送的离散数据。假设,若未存有尚未处理完毕的旧SG-List,则将存放新建立的SG-List(s)的起始地址写入归属于建立控制器间通信信道之接口的寄存器以启动建立控制器间通信信道的PCI-E接口进行新数据的传送流程(步骤S606);Then the central processing unit judges whether there is an old SG-List(s) that has not been processed (step S604), and this step can be obtained by setting up the PCI-E interface of the inter-controller communication channel to send an Interrupt signal to the central processing unit It is known that if the central processing unit does not receive the Interrupt signal, the central processing unit knows that it has triggered the discrete data to be transmitted before completing the transmission. Assuming that if there is no old SG-List that has not been processed yet, write the start address of the newly established SG-List(s) into the register belonging to the interface for establishing the communication channel between the controllers to start the establishment of the controller The PCI-E interface of inter-communication channel carries out the transmission process of new data (step S606);

而若尚有未处理完已存在的SG-List(s)时,中央处理器发送出一暂停请求(Pause Req.)给建立控制器间通信信道的PCI-E接口,请求接口先暂停作动(步骤S608)。当该接口收到该请求,将会于一适当时机执行一暂停机制,暂停手上的动作,并于暂停后回复一暂停认可(Pause Gnt)给中央处理器。其中暂停机制可例如:将正在处理的离散数据完成传送后暂停其后的各笔离散数据的读取传送动作,并纪录暂停点以利取消暂停时可恢复接续处理,或者将正在处理的SG-List内的所有离散数据皆完成传送后暂停进入下一个SG-List的动作。And if there are still existing SG-List(s) that have not been processed, the central processing unit sends a pause request (Pause Req.) to the PCI-E interface that establishes the communication channel between the controllers, requesting the interface to pause the action first (step S608). When the interface receives the request, it will execute a pause mechanism at an appropriate time, suspend the action at hand, and reply a pause approval (Pause Gnt) to the central processing unit after the pause. The suspension mechanism can be, for example: suspend the reading and transmission of subsequent discrete data after the discrete data being processed is completed, and record the suspension point so that the continuous processing can be resumed when the suspension is cancelled, or the SG- After all the discrete data in the List have been transmitted, the action to enter the next SG-List is paused.

在收到暂停认可回复后,中央处理器开始进行插入或接续连动程序(步骤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间发生连动。After receiving the suspension approval reply, the central processing unit starts to insert or connect the continuous program (step S610), mainly to select a register or a certain unprocessed SG-List in the previous group of SG-Lists, and newly generate The Next-SG-List Addr. setting of the last SG-List in SG-Lists is consistent with the original setting of Next-SG-List Addr. , and change the Next-SG-List Addr. in the register or the unprocessed SG-List of the selected previous group in the memory to the starting address stored in the newly generated SG-Lists (store the first SG-List List address), that is, to complete the action of inserting the newly generated SG-Lists into the previous group of SG-Lists, so that the two groups of SG-Lists are linked.

当使新产生的SG-List(s)与已存在待处理的SG-List间完成连带关系后,接着通知建立控制器间通信信道的PCI-E接口解除暂停状态,则建立控制器间通信信道的接口会恢复所暂停的动作,并继续依照新的连带关系自动连动处理。(步骤S620)After completing the joint relationship between the newly generated SG-List(s) and the existing SG-List to be processed, then notify the PCI-E interface that establishes the communication channel between the controllers to release the suspension state, and then establish the communication channel between the controllers The interface will resume the paused action, and continue to automatically link and process according to the new joint relationship. (step S620)

前述在中央处理器进行两组SG-Lists连动前,需发送暂停请求的原因是在于防止中央处理器在更改内存内某一SG-List或寄存器内Next-SG-ListAddr.字段内的信息的同时,该建立控制器间通信信道的PCI-E接口亦读取该SG-List的内容而发生冲突引发错误。The reason why the aforementioned pause request needs to be sent before the central processor performs two sets of SG-Lists linkage is to prevent the central processor from changing the information in a certain SG-List in the memory or in the Next-SG-ListAddr. field in the register. At the same time, the PCI-E interface that establishes the communication channel between the controllers also reads the content of the SG-List, and a conflict occurs and an error occurs.

以下就插入或接续连动程序(S610)进行说明。请参阅图16,为一种插入或接续连动程序的实施例。在此实施例中,是采用新产生的SG-List(s)直接插入寄存器正在处理的SG-List之后的方式。The insertion or connection sequence (S610) will be described below. Please refer to FIG. 16 , which is an embodiment of an insertion or connection program. In this embodiment, the newly generated SG-List(s) is inserted directly after the SG-List being processed by the register.

由于建立控制器间通信信道的接口在要执行某一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)存在。Since the interface for establishing a communication channel between controllers will first obtain the content of the SG-List when a certain SG-List is to be executed, so when the aforementioned situation occurs, the central processing unit can read the relevant Next-List stored in the register. The information in the SG-List Addr. field can be used to know whether the PCI-E interface has the next SG-List to be processed or where the next SG-List to be processed is stored. Therefore, as shown in Figure 16, the first step in the program of inserting or connecting the continuous operation at the central processing unit is that the central processing unit first reads the Next-SG-List Addr field in the SG-List being processed in the register Address data in (step S612), and after obtaining the Next-SG-List Addr. information that this PCI-E interface would have carried out originally, it directly adds the Next-SG-List of the last SG-List in the newly generated SG-Lists. The setting of SG-List Addr. is consistent with the original setting of Next-SG-List Addr. in the previously read register, and the Next-SG-List Addr. in this register is changed to the newly generated SG-List Addr. The starting address (the address of storing the first SG-List) stored in the Lists is to complete the action of inserting the newly generated SG-Lists into the previous group of SG-Lists, so that the two groups of SG-Lists are linked (step S614 ). That is to say, insert the newly generated SG-Lists directly before the SG-List to be processed after the SG-List being processed by the interface, and after completing the data transmission corresponding to the newly generated SG-Lists , it will jump back to continue the unfinished SG-List(s) of the previous group that would have been continued at the insertion point. Of course, if the insertion point is just after the last SG-List of the previous group of SG-List(s) (the Next-SG-List Addr. in the read register is 0000_000), then it will not jump back to continue The unfinished SG-List(s) of the previous group, because there is no unfinished SG-List(s) of the previous group.

以前述图11为例,并请再配合参阅图12。首先如图11所示,中央处理器依所欲传送给另一个存储虚拟化控制器(同伴)的离散数据的存放地址建立有相互连动的四个的SG-Lists,且将含有存放第一个SG-List的地址信息写入作为控制器间通信信道的PCI-E接口的寄存器,该接口依寄存器的地址信息读取该SG-List内容,并执行读取与传送数据等动作。Take the aforementioned FIG. 11 as an example, and refer to FIG. 12 again. First, as shown in Figure 11, the central processing unit establishes four interlinked SG-Lists according to the storage address of the discrete data that the central processing unit wants to transmit to another storage virtualization controller (companion), and will contain the first The address information of each SG-List is written into the register of the PCI-E interface as the communication channel between the controllers, and the interface reads the content of the SG-List according to the address information of the register, and performs operations such as reading and transmitting data.

另外,CPU芯片组又接收到新的数据并将此新数据存入内存后通知中央处理器,中央处理器同样对此等新的数据建立了数个相互连动的新的SG-Lists(请参图12),以使此数据可传送给其同伴备存时,请注意,与图11一样,此处虽以产生多的SG-List以及多笔离散数据为例,但同样的实际上因数据量与内存空间配置等因素亦可能只产生一个新的SG-List或单笔离散数据内容。In addition, the CPU chipset receives new data and stores the new data into the memory to notify the central processing unit, and the central processing unit also establishes several new SG-Lists linked to each other for these new data (please Refer to Fig. 12), so that this data can be transmitted to its companions for storage, please note that, as in Fig. 11, although the example of generating many SG-Lists and multiple discrete data is used here, the same actual reason Factors such as data volume and memory space configuration may only generate a new SG-List or a single discrete data content.

若在中央处理器建立好新数据相对应的SG-Lists(如图12所示)时,该建立控制器间通信信道的PCI-E接口尚未处理完图11的四个SG-Lists,此时,中央处理器发送出一暂停请求(Pause Req.)给此接口,请求先暂停进入处理下一个SG-List的动作,当该接口收到该请求,将会执行一暂停机制,暂停手上的所有动作,并回复一暂停认可(Pause Gnt)给中央处理器。在收到暂停认可回复后,中央处理器开始进行连动程序,中央处理器读取寄存器内有关Next-SG-List Addr.字段内的信息。If when the central processing unit sets up the SG-Lists corresponding to the new data (as shown in Figure 12), the PCI-E interface of the communication channel between the controllers has not yet processed the four SG-Lists of Figure 11, at this time , the central processing unit sends a pause request (Pause Req.) to this interface, requesting to pause and enter the action of processing the next SG-List first, when the interface receives the request, it will execute a pause mechanism to suspend the SG-List in hand All actions, and reply a pause approval (Pause Gnt) to the central processing unit. After receiving the suspension approval reply, the central processing unit starts to carry out the linkage program, and the central processing unit reads the information in the relevant Next-SG-List Addr. field in the register.

假设,此时该接口是正在处理图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之间的动作。Assuming that the interface is processing the second SG-List in FIG. 11 at this time, the address information read by the CPU will be 0000_040. Then the central processing unit sets the Next-SG-List Addr. field of the last SG-List in Fig. 12 to 0000_040, and changes the Next-SG-List Addr. in this register to 0000_050 (the first one in Fig. 12 address stored in the SG-List), then complete the action of inserting the newly generated SG-List (as shown in Figure 12) between the second and third SG-List shown in Figure 11.

而若前述在收到中央处理器发送的暂停请求时,建立控制器间通信信道的接口正好处理图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所存放的地址)即可。And if the aforementioned interface that establishes a communication channel between controllers just in time handles the fourth (last) SG-List in Fig. 11 when receiving the suspension request sent by the central processing unit, the register read by the central processing unit The Next-SG-List Addr. in the SG-List will be 0000_000, then the Next-SG-List Addr. in the last SG-List shown in Fig. The Next-SG-List Addr. in the read register is consistent), and the Next-SG-List Addr. in the register is changed to 0000_050 (the address stored in the first SG-List in Figure 12) That's it.

在完成连动程序后,中央处理器接着发送解除暂停状态的通知给该建立控制器间通信信道的接口,使接口解除暂停机制,接续暂停机制前的作动,并于处理完暂停当时的SG-List后,就会接着依照其暂停期间中央处理器所写入的Next-SG-List Addr.去读取新产生的第一个SG-List,且依照新产生的连带关系一一进行所有待处理的SG-List(s)相对应的数据传送。After completing the interlocking procedure, the central processing unit then sends a notification of releasing the suspension state to the interface that establishes the communication channel between the controllers, so that the interface cancels the suspension mechanism, continues the action before the suspension mechanism, and handles the SG at the time of the suspension -List, it will then read the newly generated first SG-List according to the Next-SG-List Addr written by the CPU during the pause period, and perform all pending Data transfer corresponding to the processed SG-List(s).

再请参阅图17,显示另一种插入与接续连动程序的实施例。与图16不同,本实施例所选择的连动插入点是为建立控制器间通信信道的接口尚未处理到的SG-List(s)之间或之后。Please refer to FIG. 17 again, which shows another embodiment of the interlocking program of insertion and connection. Different from FIG. 16, the linkage insertion point selected in this embodiment is between or after the SG-List(s) that have not yet been processed to establish the interface of the inter-controller communication channel.

如同图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间的连动。As in Fig. 16, the first step of inserting the linked program at the central processing unit is still that the central processing unit reads the address data in the Next-SG-List Addr field in the SG-List being processed in the register (step S612), then the central processing unit can judge whether the address in the register is 0000_000, to know whether there is an SG-List(s) (step S616) that needs to be processed subsequently; if the address is set to 0000_000, it means that There is no next SG-List to be processed next, so the central processing unit only needs to change the Next-SG-List Addr. in the register to the first SG-List of the newly generated SG-List(s). address (step S617), the linkage between two sets of SG-Lists can be completed.

若该寄存器的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)。If the Next-SG-List Addr. of this register is not 0000_000, it means that there are other SG-List(s) that are originally set to be processed but have not been processed. At this time, the central processing unit can select other SG-List(s) The next unprocessed SG-List is inserted. Read the Next-SG-List Addr. in the selected SG-List in the memory, set the Next-SG-ListAddr. Next-SG-List Addr. in the selected SG-List is changed to the address stored in the first SG-List that is newly generated, which completes the linkage program (step 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为止。For example, the central processing unit selects the last SG-List in the SG-Lists of the previous group for linkage, because the Next-SG-List Addr. -The Next-SG-List Addr. of the List is originally the same (0000_000), so you only need to change the Next-SG-List Addr. of the last SG-List in the previous group of SG-Lists to the newly generated SG- The initial memory address stored in List(s) is to complete the linkage of these two sets of SG-Lists. In this case, after the suspension state is released, the PCI-E interface that establishes the communication channel between controllers will automatically continue to process the newly generated SG-List(s) after processing and transmitting the previous group of SG-List(s) . That is to say, the newly generated SG-List(s) is inserted and linked after the previous SG-List(s). And to find the last SG-List in the previous group of SG-Lists, you can use to set up a table that stores the memory addresses of all SG-Lists, and use this table to query and obtain, or according to the address in the read register Next-SG-List Addr, the address information to the address to read the Next-SG-List Addr. of the SG-List stored in the address, if the Next-SG-List Addr. is not yet 0000_000, then follow Sequentially read the Next-SG-List Addr of the next SG-List until the Next-SG-ListAddr is 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。Also take Figure 11 and Figure 12 as an example, also assume that when the interface for establishing the communication channel between the controllers proceeds to a certain SG-List in Figure 11 and receives a pause request sent by the central processor, the register will execute the pause mechanism, and Send a pause acknowledgment to the CPU upon completion. Then the central processing unit reads the Next-SG-List Addr. in the register, if the Next-SG-List Addr. in the register is 0000_000, as: the interface of establishing the communication channel between the controllers is processing the fourth in Fig. 11 SG-List, then at this time, change the Next-SG-List Addr. in the register from 0000_000 to the address (0000_050) stored in the first SG-List among the SG-Lists to be processed as shown in Figure 12 ), the two sets of SG-Lists can be linked together, and then the PCI-E interface that establishes the communication channel between the controllers is triggered to release the suspension state, then the interface will continue to perform the action before the suspension mechanism, and will process the transmission After completing the three discrete data in the fourth SG-List of the previous group, according to the address (0000_050) in the Next-SG-List Addr. field in the register, then process the newly generated SG-Lists in Figure 12.

而若所读取到的寄存器内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,而无需中央处理器发送任何信息。And if the Next-SG-List Addr. in the read register is not 0000_000, for example: if the inter-controller communication channel interface is being established and is being processed and suspended in the second SG-List shown in Figure 11, in the register The information in the Next-SG-List Addr. field is 0000_040, so the CPU reads the field information and knows that the address of the SG-List that has not been processed by the PCI-E interface but will be processed next is 0000_040. Then the central processing unit can select the desired insertion point according to the situation or system setting. For example, the selection is inserted after the last SG-List. Then you can use the central processing unit to obtain the Next-SG-List Addr of the third SG-List in the memory address of 0000_0400. SG-List Addr., because it is 0000_000, it means that there is no linked SG-List next. After finding the last SG-List, change its Next-SG-List Addr. from 0000_000 to that shown in Figure 12 The address 0000_050 stored in the first SG-List shown makes the two groups of SG-Lists generate a linkage relationship (as shown in Figure 13), and then notifies the establishment of the communication channel interface between the controllers to release the suspension state, so that the establishment of the control The inter-device communication channel interface continues to complete the data transmission actions corresponding to each SG-List in sequence. That is to say, the actions before the inter-controller communication channel interface continuation pause mechanism continue to operate, and after the second SG-List in the previous group of SG-Lists is processed, the third SG-List in the previous group of SG-Lists is still processed sequentially. The first SG-List and the fourth SG-List, and after processing the last SG-List of the previous group of SG-Lists (the fourth SG-List whose storage address is 0000_0300), it will automatically continue to process the second group of SG-Lists Lists without sending any information from the CPU.

或者,选定建立控制器间通信信道接口下一个要处理的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)后,而无需中央处理器发送任何信息。Or, it is inserted after the next SG-List to be processed is selected to establish the communication channel interface between controllers. Then the CPU also utilizes the Next-SG-List Addr. (0000_040) in the read register to obtain the Next-SG-List Addr. in the memory address 0000_0400 as 0000_030, and change the content of this field in the memory as shown in Figure 12 The address 0000_050 stored in the first SG-List of the newly generated SG-Lists shown in Figure 12, and fill in the Next-SG-List Addr. field of the last SG-List of the newly generated SG-Lists shown in Figure 12 The aforementioned reading of the Next-SG-ListAddr.(0000_030) at the insertion place makes the two sets of SG-Lists generate a linkage relationship (as shown in FIG. 14 ). Then the same central processing unit notifies the establishment of the inter-controller communication channel interface to release the suspended state, so that the establishment of the inter-controller communication channel interface continues to complete the data transmission action corresponding to each SG-List in sequence. That is to say, the action before establishing the inter-controller communication channel interface continues the pause mechanism, and after processing the original establishment of the inter-controller communication channel interface, the processing SG-List will be continued (the third SG in Figure 11 -List), it will automatically jump to process the inserted SG-Lists first, and then jump back to process the last SG-List of the previous group (the fourth SG-List whose storage address is 0000_0300), without central processing sender any information.

当然除了最后一个或后一个SG-List可选为插入点,所选定的插入点亦可以是其后待处理的第二个或第三个等等的SG-List,只要不超过最后一个即可。如前等实施例,当产生需传送的新数据时,只要建立控制器间通信信道接口正在处理传送某一群组的数据,利用前述机制即会使新旧数据间产生一连动关系,令中央处理器不用等到建立控制器间通信信道接口回报旧数据已完成传送后再写入新数据的SG-List(s)的起始地址至寄存器进而触发建立控制器间通信信道接口,建立控制器间通信信道接口即会自动处理传送此笔新数据。且由于理论上,在子系统运作上,存储虚拟化控制器会不断有数据需传送给其同伴(另一存储虚拟化控制器)备存,也就是在前一笔甚至是多笔数据尚未完全传送给同伴时就会有新数据产生,因此,就前述机制而言,中央处理器只需建立与维护数据相对应的SG-List(s)以及以系统启动后所产生的第一个SG-List的存放地址写入建立ICC的建立控制器间通信信道接口的寄存器,其后该建立控制器间通信信道接口即持续不断在读取与传送数据,将有效大幅分担中央处理器之工作,进而提升中央处理器的工作效能。Of course, in addition to the last or the last SG-List can be selected as the insertion point, the selected insertion point can also be the second or third SG-List to be processed, as long as it does not exceed the last one. Can. As in the previous embodiments, when new data to be transmitted is generated, as long as the communication channel interface between the controllers is established and the data of a certain group is being processed and transmitted, a linkage relationship between the old and new data will be generated by using the aforementioned mechanism, so that the central The processor does not need to wait until the interface of the inter-controller communication channel is established to report that the old data has been transmitted, and then writes the start address of the SG-List(s) of the new data to the register and then triggers the establishment of the inter-controller communication channel interface. The communication channel interface will automatically process and transmit this new data. And because in theory, in the operation of the subsystem, the storage virtualization controller will constantly have data to be sent to its companion (another storage virtualization controller) for storage, that is, the previous or even multiple data has not been completely New data will be generated when it is sent to peers. Therefore, as far as the aforementioned mechanism is concerned, the central processing unit only needs to establish the SG-List(s) corresponding to the maintenance data and the first SG-List(s) generated after the system starts. The storage address of the List is written into the register of the establishment of the communication channel interface between the controllers of the ICC, and then the interface of the communication channel between the establishment of the controllers is continuously reading and transmitting data, which will effectively and greatly share the work of the central processing unit, and then Improve the working performance of the central processing unit.

再者,当中央处理器于发生需要整合或修改或删除某SG-List(s),如同前述插入或接续连动程序,中央处理器可藉由读取寄存器内所存放有关Next-SG-List Addr.字段内的信息得知PCI-E接口是否有下一个SG-List要处理或者是下一个要处理的SG-List存放于何处等信息,也就是,中央处理器可藉此了解有那些SG-List是建立控制器间通信信道接口尚未处理。因此,中央处理器可判断其意欲整合或修改或删除的某SG-List(s)是否为建立控制器间通信信道接口尚未处理的SG-List(s),若是的话,则中央处理器可对该SG-List进行整合或修改或删除等动作。Furthermore, when the central processing unit needs to integrate or modify or delete a certain SG-List(s), as the aforementioned insertion or continuous continuous program, the central processing unit can read the relevant Next-SG-List stored in the register The information in the Addr. field tells whether the PCI-E interface has the next SG-List to be processed or where the next SG-List to be processed is stored, that is, the central processing unit can use this to know which SG-List is an interface for establishing an inter-controller communication channel that has not yet been processed. Therefore, the central processing unit can determine whether a certain SG-List(s) that it intends to integrate or modify or delete is an SG-List(s) that has not yet been processed by establishing an inter-controller communication channel interface, and if so, the central processing unit can The SG-List is integrated or modified or deleted.

当然,在中央处理器进行前述的修改或删除程序时,在读取寄存器内信息前,同样可利用发送暂停请求要求建立控制器间通信信道接口先暂停手上与传送冗余数据相关的动作,并于收到暂停认可后才进行读取动作,以避免因建立控制器间通信信道接口持续进行传送工作而与中央处理器其后的修改或删除动作发生冲突的情事。而同样的在中央处理器结束完整个修改或删除的程序后要通知建立控制器间通信信道接口解除暂停状态,以使其继续作动。Of course, when the central processing unit performs the aforementioned modification or deletion program, before reading the information in the register, it is also possible to send a pause request to request the establishment of an inter-controller communication channel interface to first suspend the actions related to the transmission of redundant data. The reading action is performed after receiving the suspension approval, so as to avoid conflicts with the subsequent modification or deletion actions of the central processing unit due to the establishment of the inter-controller communication channel interface for continuous transmission work. And similarly, after the central processing unit completes the entire modification or deletion program, it will notify the establishment of the inter-controller communication channel interface to release the suspended state, so that it can continue to operate.

另外,在中央处理器可依实际状况结合前述的插入或接续连动程序与修改或删除程序,例如:在前述说明插入或接续连动程序的一假设例(图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之间的连带关系。In addition, the central processing unit can combine the above-mentioned insertion or continuation of the continuous program and the modification or deletion program according to the actual situation, for example: in a hypothetical example (Fig. To change the Next-SG-List Addr. field data of the fourth SG-List in the memory to the start address of the newly generated SG-List(s) to be processed continuously, you can use it according to actual needs (for example: CPU) If you want to set the communication channel interface between the controllers to generate an interrupt signal to notify the CPU when all the SG-Lists of the new joint relationship are completed), change the setting of the Int field of the SG-List, and change the data in this field to If it is 0, the inter-controller communication channel interface will not send an Interrupt signal to the central processing unit after completing the fourth SG-List. Or such as: when modifying or deleting the program, according to the current situation or needs, you can use the Next-SG-List Addr. of the SG-Lists that have not been established for the inter-controller communication channel interface to read and process to reset. Determine the joint relationship between these unprocessed SG-Lists.

而除了前述传送数据至另一存储虚拟化控制器进而存入其内存的方法外,若系统系被设计一存储虚拟化控制器可对冗余配置的另一存储虚拟化控制器的内存进行存取(写入/读取)操作时,则该SG-List内尚有一数据方向(Dir)字段,用以指示执行写入或读取操作,例如:1为写入(Data Out),0为读取(Data In)(请参阅图10)。In addition to the aforementioned method of transferring data to another storage virtualization controller and then storing it in its memory, if the system is designed, one storage virtualization controller can store data in the memory of another storage virtualization controller in a redundant configuration. When fetching (write/read) operations, there is a data direction (Dir) field in the SG-List to indicate the execution of write or read operations, for example: 1 for write (Data Out), 0 for Read (Data In) (see Figure 10).

因而,中央处理器将存放此SG-List的内存地址写入寄存器,建立控制器间通信信道的接口即依据寄存器所传送的地址信息将该SG-List内的数据读取出,并根据前述所定义的各字段内的指示信息进行作动。Therefore, the central processing unit writes the memory address storing the SG-List into the register, and the interface to establish the communication channel between the controllers reads out the data in the SG-List according to the address information transmitted by the register, and according to the aforementioned The instruction information in each defined field operates.

若Dir字段是被设定指示进行写入操作,则该接口是可依前述各例所述依据每一笔离散数据的来源起始地址字段以及该离散数据长度字段内容的指示,依序于读取该笔离散数据,而后将该笔离散数据、该笔离散数据的目标起始地址以及指示进行写入操作的指令一起通过控制器间的通信信道传输给另一存储虚拟化控制器的建立控制器间通信信道接口。If the Dir field is set to indicate the write operation, then the interface can follow the indications of the source start address field of each piece of discrete data and the content of the discrete data length field as described in the foregoing examples, sequentially following the read operation. Fetch the piece of discrete data, and then transmit the piece of discrete data, the target start address of the piece of discrete data, and the instruction to perform the write operation to the establishment control of another storage virtualization controller through the communication channel between the controllers Inter-device communication channel interface.

而若为读取操作,在一实施例中,该建立控制器间通信信道接口可将该SG-List内容传送给另一存储虚拟化控制器的建立控制器间通信信道接口,该另一端接口接收并存入寄存器后,依据每一笔离散数据的来源起始地址字段以及该离散数据长度字段内容的指示,依序读取每笔离散数据,而后将离散数据与离散数据相关的信息(如:目标起始地址、数据长度)回传给建立控制器间通信信道接口,该接口再依目标起始地址将数据存入内存中。在另一实施例中,是非将整个SG-List的内容都传送给另一端,而是只传送SG-List内与每笔离散数据相关字段数据,甚且是分批传送每笔离散数据相关字段数据(例如:来源起始地址以及数据长度),传送时可带有一指示进行读取操作的指令,而在收到另一端所回传依照来源起始地址与数据长度取得的离散数据后,再存入该笔离散数据的目标起始地址。最后,就存储虚拟化控制器之间小量数据的传递来说,本发明是提出另一种进行数据传送的方法,使能更为提高存储虚拟化控制器的整体效能。And if it is a read operation, in one embodiment, the interface for establishing an inter-controller communication channel can transmit the content of the SG-List to the interface for establishing an inter-controller communication channel of another storage virtualization controller, and the other end interface After receiving and storing in the register, read each piece of discrete data sequentially according to the source start address field of each piece of discrete data and the content of the length field of the discrete data, and then store the information related to the discrete data and the discrete data (such as : Target start address, data length) is sent back to the interface for establishing a communication channel between controllers, and the interface stores the data in the memory according to the target start address. In another embodiment, the whole SG-List content is sent to the other end, but only the field data related to each discrete data in the SG-List is sent, and even the fields related to each discrete data are sent in batches Data (for example: source start address and data length) can be transmitted with an instruction indicating the read operation, and after receiving the discrete data obtained from the other end according to the source start address and data length, then The start address of the target to store the discrete data. Finally, regarding the transmission of a small amount of data between storage virtualization controllers, the present invention proposes another method for data transmission, which can further improve the overall performance of storage virtualization controllers.

请参阅图18,显示本发明所提出的另一种在二存储虚拟化控制器间传送数据的方法。当二存储虚拟化控制器间协调建立通信信道后(步骤S702),若其中一存储虚拟化控制器之中央处理器有需传递给另一者的信息时,中央处理器是将直接发送数据传输请求信息至CPU芯片组(步骤S704),此CPU芯片组将响应此信息而将需传递的信息传送给另一存储虚拟化控制器(步骤S706),而由另一存储虚拟化控制器内的CPU芯片组接收并直接处理。Please refer to FIG. 18 , which shows another method for transferring data between two storage virtualization controllers proposed by the present invention. After the two storage virtualization controllers coordinate to establish a communication channel (step S702), if the central processing unit of one of the storage virtualization controllers has information that needs to be transmitted to the other, the central processing unit will directly send the data transmission The request information is sent to the CPU chipset (step S704), and the CPU chipset will respond to the information and transmit the information to be delivered to another storage virtualization controller (step S706), and the storage virtualization controller in another storage virtualization controller The CPU chipset receives and processes directly.

请再配合图5,依据此本发明所提出的方法,当中央处理器242需传送信息给第二存储虚拟化控制器时,其中一种传递数据传输请求信息的实作方式是为中央处理器242将欲传送至另一端的信息通过CPU接口910而至IM BUS950,并由建立控制器间通信信道ICC的PCI-E接口934读取而传送至第二存储虚拟化控制器200’。此外,当一存储虚拟化控制器(例如:第一存储虚拟化控制器)的PCI-E接口934接收到另一存储虚拟化控制器(如第二存储虚拟化控制器)所传送的信息,则通过IM BUS950而送至内存控制器920,进而存入内存280内。Please cooperate with FIG. 5, according to the method proposed by the present invention, when the central processing unit 242 needs to transmit information to the second storage virtualization controller, one of the implementation methods for transmitting the data transmission request information is for the central processing unit 242 sends the information to be sent to the other end to the IM BUS 950 through the CPU interface 910, and is read by the PCI-E interface 934 establishing the inter-controller communication channel ICC and sent to the second storage virtualization controller 200'. In addition, when the PCI-E interface 934 of a storage virtualization controller (for example: the first storage virtualization controller) receives information transmitted by another storage virtualization controller (for example, the second storage virtualization controller), Then it is sent to the memory controller 920 through the IM BUS950, and then stored in the memory 280.

以下提出一实施例来进一步说明。首先,设定就每一存储虚拟化控制器而言,是将冗余配置的另一存储虚拟化控制器的内存视为本身内存的延伸。假设第一存储虚拟化控制器与第二存储虚拟化控制器的内存空间皆为2G时,每一存储虚拟化控制器的实体内存地址设为0000_0000-7FFF_FFFF,而将冗余配置的另一存储虚拟化控制器的内存地址是视为8000_0000-FFFF_FFFF。在本例中是采用将另一存储虚拟化控制器的内存地址直接接续本身内存地址,亦即,一存储虚拟化控制器是将冗余配置的另一存储虚拟化控制器实体内存地址P视为虚拟内存地址2G+P。然实际上亦可采用非直接接续的方式,例如:将另一存储虚拟化控制器实体内存地址P视为虚拟内存地址3G+P,原则上只要与其自己本身的实体内存地址不重复即可。再者,此处虽以二存储虚拟化控制器有相同的存储空间的内存为例,但实务上,可能二控制器的内存空间不同,例如第一存储虚拟化控制器为2G但第二存储虚拟化控制器为1G,且实体或虚拟的内存地址亦依照内存空间而定。并且依据本发明是设定就每一个存储虚拟化控制器而言,冗余配置的另一方有一部分或全部的内存可供其存取。An embodiment is proposed below for further description. First, it is set that for each storage virtualization controller, the memory of another storage virtualization controller in redundant configuration is regarded as an extension of its own memory. Assuming that the memory spaces of the first storage virtualization controller and the second storage virtualization controller are both 2G, the physical memory address of each storage virtualization controller is set to 0000_0000-7FFF_FFFF, and another storage The memory address of the virtualization controller is considered as 8000_0000-FFFF_FFFF. In this example, the memory address of another storage virtualization controller is directly connected to its own memory address. It is virtual memory address 2G+P. However, indirect connection can also be used in practice. For example, the physical memory address P of another storage virtualization controller is regarded as the virtual memory address 3G+P, as long as it does not overlap with its own physical memory address in principle. Furthermore, although the two storage virtualization controllers have the same storage space as an example here, in practice, the memory space of the two controllers may be different. For example, the first storage virtualization controller is 2G but the second storage virtualization controller is 2G. The virtualization controller is 1G, and the physical or virtual memory address also depends on the memory space. And according to the present invention, it is assumed that for each storage virtualization controller, the other side of the redundant configuration has a part or all of the memory available for it to access.

假设当一存储虚拟化控制器欲将某一数据写入另一存储虚拟化控制器的内存地址2100_0000内时,则CPU242将此写入对象的目标起始地址(A100_0000)与写入数据直接传输至CPU接口910,接着该接口910将此地址(A100_0000)与写入数据传送至IM BUS950上,而由耦接至另一存储虚拟化控制器的PCI-E接口934读取。由于中央处理器910所发出的信息中的目标起始地址是为指向另一存储虚拟化控制器的虚拟内存地址,而CPU芯片组244内各对外接口中是仅有PCI-E接口934是被设计作为与另一存储虚拟话控制器沟通的接口,因此各组件得以判别且仅有此建立控制器间通信信道的接口会去读取并执行数据传输。Assuming that when a storage virtualization controller intends to write certain data into the memory address 2100_0000 of another storage virtualization controller, the CPU 242 directly transmits the target start address (A100_0000) of the write object and the write data to the CPU interface 910, and then the interface 910 transmits the address (A100_0000) and write data to the IM BUS950, and is read by the PCI-E interface 934 coupled to another storage virtualization controller. Because the target starting address in the information sent by the central processing unit 910 is to point to the virtual memory address of another storage virtualization controller, and among the external interfaces in the CPU chipset 244, only the PCI-E interface 934 is used. Designed as an interface to communicate with another storage virtual machine controller, so that each component can be identified and only the interface that establishes the communication channel between the controllers will read and perform data transfer.

在一本实施例中,建立控制器间通信信道的PCI-E接口934读取目标起始地址A100_0000与写入数据后,是先将目标起始地址A100_0000转换为相对应的实体内存地址2100_0000,在与写入数据一同传送给另一存储虚拟化控制器。而当另一存储虚拟化控制器接收到该实体内存地址2100_0000与写入数据等信息时,将数据写入实体地址2100_0000。In one embodiment, after the PCI-E interface 934 establishing the inter-controller communication channel reads the target start address A100_0000 and writes data, it first converts the target start address A100_0000 into the corresponding physical memory address 2100_0000, It is sent to another storage virtualization controller together with the written data. When another storage virtualization controller receives information such as the physical memory address 2100_0000 and write data, it writes the data into the physical address 2100_0000.

而在另一实施例中,此将虚拟内存地址转换为相对应的实体地址的步骤是由接收端的接口来进行。即建立控制器间通信信道的PCI-E接口934进而将该目标起始地址A100_0000与写入数据传输至另一存储虚拟化控制器。而当另一存储虚拟化控制器的PCI-E接口读取到另一端所传送的目标起始地址A100_0000以及写入数据等信息,是将此目标起始地址A100_0000(虚拟内存地址)转换为相对应的实体地址2100_0000,而将数据写入该实体地址2100_0000。In another embodiment, the step of converting the virtual memory address into the corresponding physical address is performed by the interface of the receiving end. That is, the PCI-E interface 934 establishing the inter-controller communication channel transmits the target start address A100_0000 and the write data to another storage virtualization controller. And when the PCI-E interface of another storage virtualization controller reads information such as the target start address A100_0000 and write data transmitted by the other end, it converts the target start address A100_0000 (virtual memory address) into the corresponding The corresponding physical address is 2100_0000, and the data is written into the physical address 2100_0000.

依据本实施例,当二存储虚拟化控制器间建立了通信信道ICC,就每一个存储虚拟化控制器而言,是将冗余配置的另一个存储虚拟化控制器视为一终端装置,故可对其所具有之内存进行存取动作。因而,除了,前述将数据传送写入至另一存储虚拟化控制器外,亦可读取另一存储虚拟化控制器的内存内数据。According to this embodiment, when the communication channel ICC is established between two storage virtualization controllers, as far as each storage virtualization controller is concerned, another storage virtualization controller with redundant configuration is regarded as a terminal device, so It can access the memory it has. Therefore, in addition to the aforementioned data transmission and writing to another storage virtualization controller, data in the memory of another storage virtualization controller may also be read.

若设计一存储虚拟化控制器是可直接对冗余配置的另一方的内存进行写入与读取的操作时,则存储虚拟化控制器的中央处理器所发出的数据传输请求必须包括存取指令,以指示进行写入或读取的操作。If a storage virtualization controller is designed to directly write and read the memory of the other side of the redundant configuration, the data transmission request issued by the central processing unit of the storage virtualization controller must include access command to indicate a write or read operation.

若为进行写入操作,则如前述做法。而若为读取操作,则数据传输请求是尚包括数据来源起始地址以及数据长度。同样地,由于来源起始地址是为指向另一存储虚拟化控制器的虚拟内存地址,因而建立控制器间通信信道的接口会读取此请求,并于处理后转送给冗余配置的另一存储虚拟化控制器,且于收到另一存储虚拟化控制器的回报信息后转给中央处理器。If it is to perform a write operation, it is as described above. And if it is a read operation, the data transmission request still includes the starting address of the data source and the data length. Likewise, since the source start address is a virtual memory address pointing to another storage virtualization controller, the interface that establishes the inter-controller communication channel will read the request and forward it to another storage virtualization controller in the redundant configuration after processing. The storage virtualization controller, and transfers to the central processing unit after receiving the report information from another storage virtualization controller.

当CPU芯片组内建立控制器间通信信道接口接收到由另一控制器端所传送的请求时,是解读请求内的存/取指令而进行相对应的写入或者读取数据操作。若为写入操作则如前述。若为读取操作,则将依照来源起始地址与数据长度读取数据并回报给该发出请求者,前述整个存/取过程是由CPU芯片组自行执行。且如前述写入操作一般,数据传输请求内虚拟内存地址转换为相对应的实体内存地址的步骤可以是由发送端或者接收端的建立控制器间通信信道的接口来执行。亦即,本方法主要是采用CPU直接下达传输请求给CPU芯片组,而由建立控制器间通信信道的接口所读取并将其传递至另一端的存储虚拟化控制器,因而CPU无须对这些数据建立相对应的SG-List。When the inter-controller communication channel interface established in the CPU chipset receives a request sent by another controller, it interprets the storage/fetch instructions in the request and performs corresponding write or read data operations. If it is a write operation, it is as described above. If it is a read operation, the data will be read according to the source start address and data length and reported to the requester. The entire storage/retrieval process is executed by the CPU chipset itself. And like the aforementioned write operation, the step of converting the virtual memory address in the data transmission request into the corresponding physical memory address can be performed by the interface establishing the communication channel between the controllers at the sending end or the receiving end. That is to say, this method mainly uses the CPU to directly issue transmission requests to the CPU chipset, and the interface that establishes the inter-controller communication channel reads it and transmits it to the storage virtualization controller at the other end, so the CPU does not need to perform these requests. The data establishes the corresponding SG-List.

而若一建立控制器间通信信道的接口接收到另一存储虚拟化控制器所传送的数据时,整个数据存/取内存的过程是由该CPU芯片组执行,完全无需动用到其中央处理器。And if an interface establishing a communication channel between controllers receives data transmitted by another storage virtualization controller, the entire data storage/retrieval process is executed by the CPU chipset without using its central processing unit at all. .

故而,依据本实施例的结构,一存储虚拟化控制器是可直接对冗余配置的另一存储虚拟化控制器进行存取动作,使当其损坏而由对方接替其工作后,于其复原时,可直接藉由读取对方的内存内容,或者由对方主动传输相关信息,使能获取了解其接替后的工作状态与进度等信息,而能恢复拿回接续处理。其且可将另一存储虚拟化控制器的内存视为该本身内存的延伸。Therefore, according to the structure of this embodiment, one storage virtualization controller can directly perform access operations to another storage virtualization controller in redundant configuration, so that when it is damaged and the other side takes over its work, it can recover In this case, it is possible to directly read the contents of the other party's memory, or the other party actively transmits relevant information, so that information such as the working status and progress after taking over can be obtained, and the subsequent processing can be resumed. It can also treat the memory of another storage virtualization controller as an extension of its own memory.

而由于前述方法,中央处理器并不对数据建立相对应的SG-List,对于小量数据传输时,能显现明显的功效,因为就小量数据来说,例如:一个仅仅1byte的数据,若需依照数据传输协议格式建立相对应的SG-List等动作,中央处理器于内存内建立的SG-Lis可能高达16bytest,且该CPU芯片组仍需读取该SG-List并依其内容处理,因而就显现出非常不经济。而在一较佳实施例中,更可搭配前述具有SG-List特性的传输数据的方式。使存储虚拟化控制器可视欲传送数据量的多寡来决定采用何种方式传送数据给另一存储虚拟化控制器,以使系统效能能达最佳化。And because of the aforementioned method, the central processing unit does not establish a corresponding SG-List for the data, and it can show obvious effects when transmitting a small amount of data, because for a small amount of data, for example: a data of only 1 byte, if you need According to the data transmission protocol format to establish the corresponding SG-List and other actions, the SG-List created by the CPU in the memory may be as high as 16bytes, and the CPU chipset still needs to read the SG-List and process it according to its content, so It appears to be very uneconomical. In a preferred embodiment, the aforementioned data transmission method with SG-List characteristics can be used. The storage virtualization controller can decide which method to use to transmit data to another storage virtualization controller according to the amount of data to be transmitted, so that the system performance can be optimized.

综上,本发明所提出的冗余存储虚拟化计算机系统,二存储虚拟化控制器间的通信信道是直接利用本地总线(如实施例中的PCI-Express)来达成,与传统上所采用的FC-AL,SATA或SCSI等外部连结完全不同,且相比较,本发明无须再通过一中间转介电路,因此,其电路设计不仅较为简化,且成本亦较低。In summary, in the redundant storage virtualization computer system proposed by the present invention, the communication channel between the two storage virtualization controllers is directly achieved by using a local bus (such as PCI-Express in the embodiment), which is different from the conventionally used External connections such as FC-AL, SATA or SCSI are completely different, and compared, the present invention does not need to go through an intermediate referral circuit, therefore, its circuit design is not only comparatively simplified, and cost is also lower.

再者,为了解决二存储虚拟化控制器皆为主动装置而无法真的使二者间的通信信道联机的问题,在本发明的实施例中,是利用本地总线接口在系统开机后会自动发送含有其自身接口设定状态等信息给另一连结端的机能,藉此,各存储虚拟化控制器可了解其另一连结端其建立通信信道接口的模式为何,因此可察觉两者间是否处于可建立联机的状态,若处于无法建立联机的状态,则进入转换程序,转换至少一通信信道端的本地总线接口操作模式,使其可顺利建立联机。Moreover, in order to solve the problem that the two storage virtualization controllers are active devices and cannot really connect the communication channel between the two, in the embodiment of the present invention, the local bus interface is used to automatically send the The function of including its own interface setting status and other information to the other connection end, whereby each storage virtualization controller can understand the mode of its other connection end to establish a communication channel interface, so it can detect whether the two are in a reliable state In the state of establishing the connection, if it is in the state of being unable to establish the connection, then enter the switching program to switch the operation mode of the local bus interface of at least one communication channel end so that the connection can be successfully established.

而对于转换程序,除了提出单边转换实施例外,亦提出一自动撮合实施例,利用随机随机数选取的方式决定一等待时间值,在该时间达到后进行转换接口操作模式,由于二者间必定会发生所选定的等待时间值不同的情事,因此其中一者必定先到达,而先行进行转换,因此可成功撮合二存储虚拟化控制器间通信信道二端的接口的操作模式。For the conversion program, in addition to proposing the implementation of unilateral conversion, an automatic matching embodiment is also proposed, which uses random random number selection to determine a waiting time value, and switches the interface operation mode after the time is reached. It will happen that the selected waiting time values are different, so one of them must arrive first and be converted first, so the operation modes of the interfaces at the two ends of the communication channel between the two storage virtualization controllers can be successfully matched.

又,在如何运用该本地总线所形成的通信信道传送数据的部分,又提出一实施方法,使得中央处理器只需依照一事先定义的数据传输协议格式建立并维护欲传送数据相对应的SG-List,并将第一个SG-List的存放地址写入CPU芯片组内的寄存器即可,其它需执行的读取数据与将这些数据传送的大量动作,将完全由建立控制器间通信信道的接口执行,因此能有效降低冗余存储虚拟化控制器间为了保持相互数据同步与一致性的要求而延伸出影响中央处理器效能的问题。且再进一步的实施例中,更能使在前一笔数据未完成传送前所产生的新数据间产生连动关系,使建立控制器间通信信道的接口可自动接续处理。In addition, in the part of how to use the communication channel formed by the local bus to transmit data, an implementation method is proposed, so that the central processing unit only needs to establish and maintain the SG corresponding to the data to be transmitted according to a pre-defined data transmission protocol format. List, and write the storage address of the first SG-List into the registers in the CPU chipset. Other operations to read data and transfer these data will be completely determined by the controller who establishes the communication channel between the controllers. The interface is executed, so it can effectively reduce the problem of affecting the performance of the central processing unit caused by the requirements of the redundant storage virtualization controllers to maintain mutual data synchronization and consistency. And in a further embodiment, it is possible to create a linkage relationship between the new data generated before the transmission of the previous data is completed, so that the interface establishing the communication channel between the controllers can be automatically continued for processing.

最后,为了能使存储虚拟化控制器的效能达到较佳化,针对冗余存储虚拟化控制器间的小量数据传输上,亦提出一种冗余存储虚拟化控制器间的传输信息之方法,主要是利用于二存储虚拟化控制器间建立了通信信道后,采用控制器内中央处理器直接通过ICC传送请求信息至另一端的方式,无须建构SG-List,因而,对小量数据传输上,可增加系统处理效能。Finally, in order to optimize the performance of storage virtualization controllers, a method for transmitting information between redundant storage virtualization controllers is also proposed for the small amount of data transmission between redundant storage virtualization controllers , which is mainly used after the communication channel is established between the two storage virtualization controllers, the central processing unit in the controller directly transmits the request information to the other end through the ICC, without the need to construct the SG-List, therefore, for a small amount of data transmission In addition, the system processing performance can be increased.

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明专利的涵盖范围。The above descriptions are only preferred embodiments of the present invention, and all equivalent changes and modifications made according to the scope of the patent application of the present invention shall fall within the scope of the patent of the present invention.

Claims (61)

1. computer system includes:
One main frame is used for sending output and goes into request;
One group of redundant storage virtualization controller, being used to carry out output goes into operation and goes into request with the output that responds this main frame and send, it includes one first and one second storage virtualization controller that is coupled to this main frame, this first and this second storage virtualization controller between be to utilize a local bus to communicate; And
One group object memory storage is coupled to these storage virtualization controllers, is used to provide this computer system stores space;
Wherein, when this first storage virtualization controller situation occurred, this second storage virtualization controller will automatically be taken over the original function of carrying out of first storage virtualization controller of this situation occurred;
Wherein this local bus is to adopt the mode of cable or backboard to be connected in this two to deposit virtualization controller, this first with this second storage virtualization controller respectively include a local bus interface, in order to set up the local bus communication channel between this first and second storage virtualization controller, and one by this two local bus interface is gone to change its operator scheme, so that set up online between the local interface of these storage virtualization controllers.
2. computer system as claimed in claim 1, wherein, this local bus is one of following:
Perimeter component links bus, perimeter component links expansion bus or perimeter component links quick bus.
3. computer system as claimed in claim 1, wherein, this two local bus interface is each positioned at a central processing unit chipset, and at least one the pin that utilizes this two central processing units chipset is set and is made this described one local bus interface of this two central processing units chipset go to change its operator scheme, so that set up online between the local bus interface of these storage virtualization controllers.
4. computer system as claimed in claim 1, wherein, be to utilize software to fill in one register of this two local bus interface and make described one of this two local bus interface to go to change operator scheme, so that the local bus interface of these storage virtualization controllers is set up is online.
5. computer system as claimed in claim 1, wherein, these local bus interface also have the feature that intersection links.
6. computer system as claimed in claim 5, wherein, at least one of these local bus interface carried out an automatic transfer machine system, the feature of utilizing this intersection to link is changed described one operator scheme of these local bus interface, so that can set up online between this first and second storage virtualization controller.
7. Storage Virtualization subsystem includes:
One group of redundant storage virtualization controller, being used to carry out output goes into operation and goes into request with the output that responds a main frame and send, it includes one first and one second storage virtualization controller that is used for being coupled to this main frame, this first and this second storage virtualization controller between utilize a local bus to communicate; And
One group object memory storage is coupled to these storage virtualization controllers, is used to provide this Storage Virtualization subsystem stores space;
Wherein, when this first storage virtualization controller situation occurred, then this second storage virtualization controller will automatically be taken over the original function of carrying out of first storage virtualization controller of this situation occurred;
Wherein this local bus is to adopt the mode of cable or backboard to be connected in this two to deposit virtualization controller, this first with this second storage virtualization controller respectively include a local bus interface, in order to set up the local bus communication channel between this first and second storage virtualization controller, and one by this two local bus interface is gone to change its operator scheme, so that set up online between the local interface of these storage virtualization controllers.
8. subsystem as claimed in claim 7, wherein, this local bus is one of following: perimeter component links bus, perimeter component links expansion bus or perimeter component links quick bus.
9. subsystem as claimed in claim 7, wherein, this two local bus interface is each positioned at a central processing unit chipset, and at least one the pin that utilizes this two central processing units chipset is set and is made this described one local bus interface of this two central processing units chipset go to change its operator scheme, so that set up online between the local bus interface of these storage virtualization controllers.
10. subsystem as claimed in claim 7, wherein utilize software to fill in one register of this two local bus interface and make described one of this two local bus interface to go to change operator scheme, so that set up online between the local bus interface of these storage virtualization controllers.
11. subsystem as claimed in claim 7, wherein, these local bus interface also have the feature that intersection links.
12. subsystem as claimed in claim 11, wherein, at least one of these local bus interface is to carry out an automatic transfer machine system, the feature of utilizing this intersection to link is changed described one operator scheme of these local bus interface, so that can set up online between this first and second storage virtualization controller.
13. a method of setting up the communication channel between the storage virtualization controller may further comprise the steps:
These storage virtualization controllers are by comprising the information of its operator scheme as the local bus interface transmission one of communication channel end between controller;
In these storage virtualization controllers at least one compares to judge whether to set up the operation mode information of this another storage virtualization controller of being received and the operator scheme of self online when receiving the operation mode information of another this storage virtualization controller by this local bus interface;
If it is online that judgement can be set up, then directly set the communication channel of setting up between this two storage virtualization controller according to this local bus interface; And
If be judged as can't set up online, then at least one in these storage virtualization controllers will be changed the operator scheme of this local bus interface, so that corresponding, and then set up each other online with the operator scheme of this local bus interface of another this storage virtualization controller;
Be to utilize a local bus to communicate between one first and one second storage virtualization controller in these storage virtualization controllers wherein, this local bus is to adopt the mode of cable or backboard to be connected in this two to deposit virtualization controller, this first with this second storage virtualization controller respectively include this local bus interface, in order to set up the local bus communication channel between this first and second storage virtualization controller, and one by this two local bus interface is gone to change its operator scheme, so that set up online between the local interface of this storage virtualization controller.
14. method as claimed in claim 13, wherein, these local bus interface are that perimeter component links quick bus interface.
15. method as claimed in claim 13, wherein, this local bus is to have the feature that intersect to link, and online for setting up when this comparison judged result, and then this storage virtualization controller is an operator scheme of utilizing the feature of this intersection binding to come translation interface.
16. method as claimed in claim 13, wherein, when judged result relatively for setting up in the step performed after online, include one and bring mechanism together so that the operator scheme of these local bus interface corresponds to each other, and set up online.
17. method as claimed in claim 16, wherein, this match mechanism system may further comprise the steps:
A selected at random timing critical parameters value then starts timing;
If before the time reaches this critical value, receive the new operation mode information of the other side and show that it has changed operator scheme, then finish bring together and set up online;
If when the time reaches this critical value, and do not receive the information that the other side's operator scheme has changed, then carry out this conversion operations mode step, and contain new operational mode status information to the other side in converting back transmission one; And
Whether the operator scheme kenel that rejudges between the two is inequality, if inequality then brining together finished and set up online, if identical, then re-executes this match mechanism, brings together up to this and finishes.
18. method as claimed in claim 17, wherein, in this match mechanism, more may further comprise the steps in the step of this execution conversion operations pattern: if when carrying out the conversion operations pattern, receive the operation mode information that the other side transmits, then end conversion and keep the operator scheme that originally set.
19. method as claimed in claim 18 wherein, before this ends conversion, is whether the operator scheme of carrying out the other side relatively earlier is different with itself operator scheme before the conversion, if just carry out this terminations switch process, otherwise continue execution conversion.
20. a method of carrying out data transmission in a computer system between storage virtualization controller comprises following steps:
A. the central processing unit of this storage virtualization controller one discrete data of another storage virtualization controller is defeated by in tendency to develop according to the Data Transport Protocol form of a predefined is set up at least one corresponding discrete gathering table;
B. this central processing unit address that will deposit this discrete gathering table writes a register; And
C. a local bus interface writes in address to an internal memory in the register according to this and reads this discrete gathering table, this discrete data is read in a address according to indicated this discrete data of storage of discrete aggregate data in this table to this internal memory, and transmits this discrete data by a local bus and give another storage virtualization controller;
Be to utilize a local bus to communicate between one first and one second storage virtualization controller in these storage virtualization controllers wherein, this local bus is to adopt the mode of cable or backboard to be connected in this two to deposit virtualization controller, this first with this second storage virtualization controller respectively include this local bus interface, in order to set up the local bus communication channel between this first and second storage virtualization controller, and one by this two local bus interface is gone to change its operator scheme, so that set up online between the local interface of this storage virtualization controller.
21. method as claimed in claim 20, wherein, this local bus is for one of following: perimeter component links bus, perimeter component links expansion bus and perimeter component links quick bus.
22. method as claimed in claim 20, wherein, after the address that this discrete gathering table deposited this by this central processing unit write this register, this register was that this address information is sent to this local bus interface, and triggered this local bus interface and carry out this step C.
23. method as claimed in claim 20, wherein, this central processing unit is that this address of depositing this discrete gathering table is write the storage space that is defined in this register as the particular address that writes this usefulness of depositing discrete gathering table address.
24. method as claimed in claim 20, wherein, the Data Transport Protocol form of this discrete gathering table is to comprise following field:
Data bulk field in the table is in order to the number of the discrete aggregate data that includes in the indicating gauge;
The source origing address field (OAF) is failed its stored internal memory start address of discrete data in order to indicate every tendency to develop;
Data length field is in order to indicate the length of the defeated discrete data of this every tendency to develop; And
The target origing address field (OAF) is in order to the destination address of indicating the transmitting discrete data to desire to deposit.
25. method as claimed in claim 24, wherein, among the step C, this local bus interface is carried out and be may further comprise the steps:
Read according to the control information that information that this central processing unit sent will disperse to this internal memory in the gathering table header, according to the quantity of this discrete aggregate data down read in regular turn this quantity should discrete aggregate data control information; And
According to this source origing address field (OAF) in this each discrete data that is read and the indication of this data length field content, read this discrete data one by one, and will this every discrete data be transferred to this another storage virtualization controller together with this target start address of this discrete data by this local bus.
26. method as claimed in claim 25, wherein, this discrete data that this local bus interface read is to be temporary in an impact damper earlier, just transfers out together with this target start address thereafter.
27. method as claimed in claim 26 wherein, when this local bus interface reads and transmit this discrete data at this, reads this discrete data and transmits according to the actual capacity of this impact damper in batches.
28. method as claimed in claim 25 wherein, comprises that more the local bus interface of this another storage virtualization controller receives this discrete data and this target start address, this discrete data is stored in the step in the internal memory of this destination address.
29. method as claimed in claim 25, wherein, the Data Transport Protocol form that is somebody's turn to do discrete gathering table more comprises a data direction field, carries out writing or read operation in order to indication, makes this local bus interface carry out corresponding accessing operation according to this field contents.
30. method as claimed in claim 29, wherein, at step C, execute the step that reads discrete gathering table content in this local bus interface after, more include:
Content according to this data direction field is carried out corresponding writing or read operation;
If this content is designated as the execution write operation, then carries out the discrete gathering of these follow-up foundations and show each field and read this discrete data and transmitting discrete data step to this another storage virtualization controller;
If read operation is carried out in the indication of this content, in the gathering table that then should disperse at least the part field contents be transferred to this another storage virtualization controller by this local bus; And
After receiving this discrete data that this another storage virtualization controller passes, deposit in this internal memory according to corresponding this target start address of this discrete data again.
31. method as claimed in claim 30, wherein, the chipset of this central processing unit is to give this another storage virtualization controller with this whole discrete gathering table content delivery.
32. method as claimed in claim 30, wherein, after the central processing unit chipset that more comprises this another storage virtualization controller receives these discrete gathering table contents, indication according to this source origing address field (OAF) and this data length field content, read every discrete data in regular turn, and the step that returns these discrete datas.
33. method as claimed in claim 24, wherein, the Data Transport Protocol form of this discrete gathering table more comprises following field:
First break field, whether in order to set in finishing this table after the listed data transmission, the chipset of this central processing unit need produce a look-at-me and notify this central processing unit; And
Second break field in order to set this another storage virtualization controller after receiving these discrete datas and finishing corresponding operation, produces a look-at-me.
34. method as claimed in claim 33, wherein, step C more includes:
This central processing unit chipset sends this second break field content to this another storage virtualization controller; And
The chipset of this central processing unit determines whether producing the action of a look-at-me to central processing unit according to the indication of this first break field in finishing this discrete gathering table after the indicated data transmission.
35. method as claimed in claim 24, wherein, the Data Transport Protocol form that is somebody's turn to do discrete gathering table more comprises next discrete field of assembling table address, show stored memory address in order to deposit next discrete gathering, with the chipset of indicating this central processing unit after finishing the indicated data transmission of a discrete gathering table content, according to the discrete content of assembling the field of table address of this next one, read next discrete gathering table, and then interlock continues to handle.
36. method as claimed in claim 35, wherein, more include systems organization and be set with the numerical value that an expression does not have next discrete gathering table existence, when the discrete content of assembling the table address field of this next one is this numerical value, show that promptly not having other discrete gathering table of existence needs interlock to handle.
37. method as claimed in claim 36, wherein, this numerical value is to be 0.
38. method as claimed in claim 35 more may further comprise the steps between steps A and B:
Check and whether have the discrete gathering table that still has been untreated;
If have, then carry out an interlock program, use so that newly-established discrete gathering table and the aforementioned discrete gathering table that still has been untreated produce interlock; And
Otherwise, execution in step B.
39. method as claimed in claim 38, wherein:
Carry out more may further comprise the steps before the interlock program at this:
This central processing unit sends out one and suspends request to this local bus interface, suspends the relevant action that transfers data to this another storage virtualization controller in order to request; And
Receiving this time-out request when this local bus interface, is to carry out one to suspend mechanism, and after finishing this time-out mechanism, answer one suspends approval and gives this central processing unit; And
After carrying out the interlock program, this more may further comprise the steps:
This central processing unit notifies this local bus interface to remove halted state; And
Receiving this releasing notice when this local bus interface, is the action that recovery is suspended, and continues to carry out to handle and transmits data.
40. method as claimed in claim 39, wherein, this time-out mechanism is the discrete data of handling to be finished the reading of suspending thereafter the transmission back of each discrete data transmit action, and notes down and recover to continue processing when the breakpoint is suspended in order to cancellation.
41. method as claimed in claim 39, wherein, this time-out mechanism is that all discrete datas in the discrete data table that will handle are all finished the action that transmission back time-out enters next discrete gathering table.
42. method as claimed in claim 38, wherein, this interlock program comprises:
This central processing unit reads the next discrete address date of assembling in the table address field in the discrete gathering table that is stored in this register;
This central processing unit judges according to the address in this register that is read whether this local bus interface has the discrete gathering table that need continue and handle thereafter;
If judged result is the discrete gathering table that need not to continue and handle, then changing the field contents of depositing next discrete gathering table address in this register is the start address of depositing this newly-established first discrete gathering table; And
If judged result is to have the discrete gathering table that must continue and handle, then change one the field contents of depositing next discrete gathering table address of these discrete gathering tables that still have been untreated, change it into deposit this newly-established first discrete gathering table start address, and the next discrete table address field contents of assembling of depositing of last sets that to deposit the next gathering table address field contents that disperses consistent with one of the aforementioned discrete gathering table that still has been untreated before change not this in will this newly-established discrete gathering table.
43. method as claimed in claim 42, wherein, one of the discrete gathering table that this still has been untreated is meant when this local bus interface is suspended mechanism, is stored in the discrete gathering table in the register.
44. method as claimed in claim 42, wherein, last discrete gathering table that is meant in the discrete gathering table of these interlocks that still have been untreated of the discrete gathering table that this still has been untreated.
45. method as claimed in claim 42, wherein, comprise that more setting up a record has the table of all discrete gathering memory addresss that table is deposited, use and inquire about the discrete gathering of still being untreated that this desire change deposits the field contents of next discrete gathering table address for this central processing unit and show stored memory address.
46. method as claimed in claim 42, wherein, this central processing unit system reads the discrete table address field contents of assembling of the next one that is stored in the discrete gathering table in this address according to the discrete table address information of assembling of the next one in this register that is read to this address, repeat it in regular turn, up to reading till desire change of this central processing unit institute deposits the discrete gathering table that still has been untreated of the next discrete field contents of assembling table address.
47. method as claimed in claim 20 wherein, when this central processing unit need be transferred these discrete gathering tables of having set up, is to carry out may further comprise the steps:
Check the discrete gathering table that has been untreated at present; And
Judge whether its discrete gathering table that is intended to transfer belongs among these discrete gathering tables that still have been untreated, if then transfer, otherwise, do not transfer.
48. method as claimed in claim 47 wherein, is to utilize this central processing unit to read to be stored in the address date in the next discrete gathering table address field in the interior gathering table that should disperse of this register, to know the present progress of data transmission.
49. method as claimed in claim 47, wherein
Before transferring, more may further comprise the steps:
This central processing unit sends out one and suspends request to this local bus interface, suspends the relevant action that transfers data to this another storage virtualization controller in order to request; And
Receiving this time-out request when this local bus interface, is to carry out one to suspend mechanism, and after finishing this time-out mechanism, answer one suspends approval and gives this central processing unit; And
After transferring, more may further comprise the steps:
This central processing unit notifies this local bus interface to remove halted state; And
Receiving this releasing notice when this local bus interface, is the action that recovery is suspended, and continues to carry out to handle and transmits data.
50. transmit the method for data in the computer system between storage virtualization controller, include following steps:
The central processing unit of one storage virtualization controller is to send a data transfer request to a central processing unit chipset;
One first local bus interface in this central processing unit chipset is this request to be changeed pass to another storage virtualization controller; And
One second local bus interface of this another storage virtualization controller will be carried out corresponding processing after receiving this request;
Be to utilize a local bus to communicate between one first and one second storage virtualization controller in these storage virtualization controllers wherein, this local bus is to adopt the mode of cable or backboard to be connected in this two to deposit virtualization controller, this first with this second storage virtualization controller respectively include this local bus interface, in order to set up the local bus communication channel between this first and second storage virtualization controller, and one by this two local bus interface is gone to change its operator scheme, so that set up online between the local interface of this storage virtualization controller.
51. method as claimed in claim 50, wherein, these local bus interface are for one of following: perimeter component links bus interface, perimeter component links expansion bus interface and perimeter component links quick bus interface.
52. method as claimed in claim 50, wherein, the step that this central processing unit sends data transfer request comprises:
This central processing unit transmits this data transfer request to the central processing unit interface in this central processing unit chipset;
This central processing unit interface is placed on the main bus in inside in this central processing unit chipset with this data transfer request; And
Read this data transfer request by this first local bus interface.
53. method as claimed in claim 50, wherein, this data transfer request content is to include a discriminant information, this first local bus interface is differentiated and is read this data transfer request.
54. method as claimed in claim 53, wherein, more include: this storage virtualization controller is that the physical memory address of this another storage virtualization controller of definition is represented with a virtual memory address form, make with its own physical memory address own and can not repeat, and this discriminant information is to be a memory address, and this memory address is also represented with this virtual memory address form.
55. method as claimed in claim 54 wherein, is to adopt the mode of the physical memory address of directly continuing own to go to define this virtual memory address.
56. method as claimed in claim 54 comprises that more in this first and second local bus interface is to carry out the step that this memory address is converted to corresponding physical memory address.
57. method as claimed in claim 50, wherein, this data transfer request is to comprise access instruction, carries out one of following operation in order to indication: write and read.
58. method as claimed in claim 57, wherein, the corresponding processing that this another storage virtualization controller carried out is to comprise that this access instruction that this second local bus interface is separated in the read request indicates corresponding operation to carry out this.
59. as claim 50 or 57 described methods, wherein, this data transfer request is to comprise that one writes data, an and target start address, this target start address is to write the memory address that this writes data in order to indication, and this another storage virtualization controller to carry out this corresponding processing be to comprise: according to this target start address this is write in the data write memory.
60. method as claimed in claim 59, wherein, this data transfer request more comprises a data length, and a Data Source start address, and corresponding processing that this another storage virtualization controller carries out is meant according to this Data Source start address and this data length reading of data and these data are returned to this first local bus interface to this internal memory.
61. method as claimed in claim 60 more includes: receiving after the passback data of this another storage virtualization controller it is to send central processing unit to when this first local bus interface.
CNB2006100036494A 2005-01-13 2006-01-09 Redundant Storage Virtualization Computer System Active CN100447731C (en)

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 CN1804778A (en) 2006-07-19
CN100447731C true CN100447731C (en) 2008-12-31

Family

ID=36866821

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100036494A Active CN100447731C (en) 2005-01-13 2006-01-09 Redundant Storage Virtualization Computer System

Country Status (1)

Country Link
CN (1) CN100447731C (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101488104B (en) * 2009-02-26 2011-05-04 北京云快线软件服务有限公司 System and method for implementing high-efficiency security memory
CN102298507A (en) * 2010-06-24 2011-12-28 宇瞻科技股份有限公司 Storage device with virtual optical disk device
US20120233401A1 (en) * 2011-03-08 2012-09-13 Skymedi Corporation Embedded memory system
CN103440177A (en) * 2013-08-23 2013-12-11 浪潮电子信息产业股份有限公司 Storage control redundancy method based on multiple NUMA physical layer partitions
US20180285732A1 (en) * 2017-03-30 2018-10-04 Intel Corporation Selective noise tolerance modes of operation in a memory
CN109213702B (en) * 2017-06-30 2022-08-30 伊姆西Ip控股有限责任公司 Communication between virtual dual control modules in a virtual machine environment
CN113568677A (en) * 2021-07-14 2021-10-29 上海淇玥信息技术有限公司 Data object analysis method and device and electronic equipment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1391672A (en) * 1999-09-22 2003-01-15 网孔公司 Raid controller system and method with ATA emulation host interface
US20030110330A1 (en) * 2001-12-12 2003-06-12 Fujie Yoshihiro H. System and method of transferring data from a secondary storage controller to a storage media after failure of a primary storage controller
CN1553346A (en) * 2003-07-02 2004-12-08 普安科技股份有限公司 Redundant external storage virtualized computer system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1391672A (en) * 1999-09-22 2003-01-15 网孔公司 Raid controller system and method with ATA emulation host interface
US20030110330A1 (en) * 2001-12-12 2003-06-12 Fujie Yoshihiro H. System and method of transferring data from a secondary storage controller to a storage media after failure of a primary storage controller
CN1553346A (en) * 2003-07-02 2004-12-08 普安科技股份有限公司 Redundant external storage virtualized computer system
US20050005062A1 (en) * 2003-07-02 2005-01-06 Ling-Yi Liu Redundant external storage virtualization computer system

Also Published As

Publication number Publication date
CN1804778A (en) 2006-07-19

Similar Documents

Publication Publication Date Title
US7676614B2 (en) Redundant storage virtualization computer system
US7093043B2 (en) Data array having redundancy messaging between array controllers over the host bus
CN100334567C (en) Redundant external storage virtualization computer system
US10191669B2 (en) Redundant SAS storage virtualization subsystem and system using the same and method therefor
US10896105B2 (en) SAS storage virtualization controller, subsystem and system using the same, and method therefor
KR101455016B1 (en) Method and apparatus to provide a high availability solid state drive
US7536508B2 (en) System and method for sharing SATA drives in active-active RAID controller system
US6985994B2 (en) Storage control apparatus and method thereof
US7818485B2 (en) IO processor
CN100447731C (en) Redundant Storage Virtualization Computer System
JP2000056931A (en) Storage management system
EP1200896A2 (en) Intelligent splitter, system, and methods of use
US7774514B2 (en) Method of transmitting data between storage virtualization controllers and storage virtualization controller designed to implement the method
US7185157B2 (en) Method, system, and article of manufacture for generating a copy of a first and a second set of volumes in a third set of volumes
US20110282963A1 (en) Storage device and method of controlling storage device
US10503440B2 (en) Computer system, and data migration method in computer system
JP2009053946A (en) Block device controller with duplex controller configuration
US8799549B2 (en) Method for transmitting data between two computer systems
CN100356310C (en) Storage virtualization controller, subsystem, system and method
JP5102917B2 (en) Storage apparatus and access command transmission method
US20060265523A1 (en) Data transfer circuit and data transfer method
CN201444642U (en) A device for redundant switching of transmission data link
CN114579047B (en) Data storage system architecture with controller and data access method thereof
CN113342257B (en) Server and related control method

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