US20070061518A1 - Storage controller, data processing method and computer program product - Google Patents
Storage controller, data processing method and computer program product Download PDFInfo
- Publication number
- US20070061518A1 US20070061518A1 US11/266,178 US26617805A US2007061518A1 US 20070061518 A1 US20070061518 A1 US 20070061518A1 US 26617805 A US26617805 A US 26617805A US 2007061518 A1 US2007061518 A1 US 2007061518A1
- Authority
- US
- United States
- Prior art keywords
- channel
- data
- channel processor
- cache
- processors
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
- G06F2212/262—Storage comprising a plurality of storage devices configured as RAID
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/263—Network storage, e.g. SAN or NAS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/314—In storage network, e.g. network attached cache
Definitions
- the present invention relates to a storage controller, data processing method and a computer program product.
- a disk array apparatus having a number of disk drives arranged in arrays, provides host systems with storage resources, which together form a RAID (Redundant Arrays of Independent Inexpensive Disks) structure.
- a storage area network (SAN) environment using Fibre Channel (FC) protocol as an interface for network-connecting the host systems and the disk array apparatus has become popular.
- the disk array apparatus connected to the host systems via the SAN is equipped with channel control units for receiving block access requests.
- Each channel control unit includes a plurality of Fibre Channel control processors for controlling the Fibre Channel interfaces used between the channel control unit and the host systems; and a plurality of channel processors for processing I/O requests from the host systems.
- it is essential for a system equipped with a plurality of processors to control and equalize the loads on the respective processors to enhance the system processing efficiency.
- the storage controller has: a plurality of channel processors for processing an I/O request from a host system; a cache memory for temporarily storing, in cache slots, data that is read and written by the channel processors in response to I/O requests from the host system; a local memory assigned to each of the channel processors for storing management information indicating whether or not data read and written by the relevant channel processor exists in the cache slot; and a buffer memory for storing data transmitted between the channel processors.
- a first channel processor from among the channel processors receives an I/O request from the host system, it selects, based on the management information stored in the local memories of the respective channel processors, a second channel processor from among the channel processors, the second channel processor is to execute a part of processing to respond to the I/O request.
- the selected second channel processor checks whether there is a cache hit and if there is a cache hit, it transfers the data from the cache memory to the buffer memory.
- the first channel processor then processes the I/O request using the data transferred to the buffer memory.
- the second channel processor selected to execute a part of the processing to respond to the I/O request is selected based on the management information indicating whether or not the data read and written by the channel processors exists in the cache slots. Accordingly, the cache hit rate of the second channel processor can be enhanced. Accordingly, the channel processor overhead, which is caused by the cache slot management including access to the shared memory as well as the processing to transfer data from the cache memory, can be reduced.
- the storage controller has: a plurality of channel processors for processing an I/O request from a host system; a cache memory for temporarily storing, in cache slots, data that is read and written by the channel processors in response to I/O requests from the host system; and a buffer memory for storing data transmitted between the channel processors.
- a first channel processor from among the channel processors receives the I/O request from the host system, it selects, based on the address of the data requested by the host system or the access pattern of the host system, a second channel processor from among the channel processors, which is to execute a part of processing to respond to the I/O request.
- the selected second channel processor checks whether there is a cache hit and if there is a cache hit, it transfers the data from the cache memory to the buffer memory.
- the first channel processor then processes the I/O request using the data transferred to the buffer memory. Because the second channel processor, that is to execute a part of the processing to respond to the I/O request, is selected, based on the address of data requested by the host system or the access pattern of the host system, the cache hit rate of the second channel processor can be enhanced. Accordingly, the overhead of the channel processors, which is caused by the cache slot management including access to the shared memory as well as the processing to transfer data from the cache memory, can be reduced.
- channel processor overhead can be reduced.
- FIG. 1 shows the structure of a storage system according to an embodiment of the present invention.
- FIG. 2 shows the detailed structure of a channel control unit according to the present invention.
- FIG. 3 illustrates a table structure for an LM directory according to the present invention.
- FIG. 4 illustrates a table for selecting a channel processor as a target for distribution processing according to the present invention.
- FIG. 5 illustrates channel processor distribution processing performed between the channel processors according to the present invention.
- FIG. 6 illustrates another table structure for the LM directory according to the present invention
- FIG. 1 shows the hardware structure of a storage system 600 according to the present embodiment.
- the storage system 600 is mainly composed of a storage controller 100 and a storage apparatus 300 .
- the storage controller 100 controls data input and output to and from the storage apparatus 300 according to, for example, commands from host systems 200 . It also performs various processing, such as setting and changing of structural information for the storage system 600 according to, for example, commands from a management server 410 .
- Host systems 200 are front-end computers such as personal computers, work stations, or mainframe computers, and are used as automated teller machines in banks or flight seat reservation systems.
- the host systems 200 are connected to the storage controller 100 via a SAN 500 to enable communication therebetween.
- the SAN 500 is a network for transmitting data between the host systems 200 and the storage controller 100 in blocks, which are data management units in the storage resources provided by the storage apparatus 300 .
- the communication protocol used between the host systems 200 and the storage controller 100 via the SAN 500 is, for example, Fibre Channel protocol.
- the host systems 200 and the storage controller 100 are not necessarily connected via the SAN 500 ; they may also be connected via a Local Area Network (LAN), or they may be connected directly to each other without involving a network. If they are connected via a LAN, communications are made based on Transmission Control Protocol/Internet Protocol (TCP/IP). If they are connected directly to each other without involving a network, communication may be made based on communication protocols such as Fibre Connection (FICON; registered trademark), Enterprise System Connection (ESCON; registered trademark), Advanced Connection Architecture (ACONARC; registered trademark), and Fibre Connection Architecture (FIBARC; registered trademark).
- FICON Fibre Connection
- ESCON Enterprise System Connection
- ACONARC Advanced Connection Architecture
- FIBARC Fibre Connection Architecture
- the management server 410 is connected to a management terminal 160 via an external LAN 400 .
- the external LAN 400 is configured with, for example, the Internet or a dedicated line. Communication between the management server 410 and the management terminal 160 via the external LAN 400 is made based on a communication protocol such as TCP/IP.
- the storage apparatus 300 has a plurality of physical disk drives 330 .
- the physical disk drives 330 are hard disk drives such as Advanced Technology Attachment (ATA) disk drives, Small Computer System Interface (SCSI) disk drives or Fibre Channel disk drives. By arranging plural disk drives in arrays, a Redundant Arrays of Inexpensive Disks (RAID) structure can be formed.
- the physical disk drives 330 provide physical storage areas, that is, physical volumes, for which logical devices can be set.
- the storage controller 100 and the storage apparatus 300 may be connected via a network or they may be connected directly to each other without involving a network. Alternatively, the storage controller 100 and the storage apparatus 300 may be integrated in one structure.
- the storage controller 100 has channel control units 110 , shared memory 120 , cache memory 130 , disk control units 140 , a management terminal 160 , and a cache switch 150 .
- the storage controller 100 communicates with the host systems 200 via the SAN 500 by means of the channel control units 110 .
- Each channel control unit 110 has a communication interface for communication with the host systems 200 and has a function for transmitting data input/output commands between itself and the host systems 200 .
- the channel control units 110 and the management terminal 160 are connected to each other via an internal LAN (shared bus) 151 . Accordingly, the channel control units 110 can install, from the management terminal 160 , micro programs to run therein.
- the cache switch 150 connects the channel control units 110 , shared memory 120 , cache memory 130 , disk control units 140 , and the management terminal 160 to one another. Transmission of data and commands between them is conducted via the cache switch 150 .
- the cache switch 150 is configured with, for example, a crossbar switch or the like.
- the shared memory 120 and the cache memory 130 are memory apparatuses shared by the respective channel control units 110 and disk control units 140 .
- the shared memory 120 is mainly used for storing resource configuration information and various commands.
- the cache memory 130 is mainly used for temporarily storing data read and written from and to the physical disks 330 .
- a channel control unit 110 If a data input/output request a channel control unit 110 receives from a host system 200 is a write command, the channel control unit 110 writes the write command in the shared memory 120 and writes write data received from the host system 200 in the cache memory 130 .
- the disk control units 140 monitor the shared memory 120 at all times. When a disk control unit 140 detects that a write command has been written in the shared memory 120 , it reads dirty data from the cache memory 130 and destages it in the physical disk drives 300 .
- a channel control unit 110 receives from a host system 200 is a read command, the channel control unit 110 checks whether read target data exists in the cache memory 130 . If the read target data exists in the cache memory 130 , the channel control unit 110 reads it and transmits it to the host system 200 .
- the channel control unit 110 writes a read command in the shared memory 120 .
- the disk control units 140 monitor the shared memory 120 and when a disk control unit 140 detects that the read command has been written in the shared memory 120 , it reads the read target data from the storage apparatus 300 , writes it in the cache memory 130 , and writes a report that effect in the shared memory.
- the relevant control unit 110 detects that the read target data has been written in the cache memory 130 , reads it from the cache memory 130 and transmits it to the host system 200 .
- the channel control units 110 and the disk control units 140 transmit data via the cache memory 130 .
- the cache memory 130 temporarily stores, from among the data stored in the physical disk drives 330 , data read and written by the channel control units 110 and the disk control units 140 .
- one or more virtual storage areas may be set in the cache memory 130 .
- One cache slot is set for one logical volume. Specifically, a cache slot temporarily stores data written in or read from a corresponding logical volume.
- the disk control units 140 being connected to the data-storing physical disk drives 330 to enable communication, control the storage apparatus 300 . For example, they read and write data from and to the physical disk drives 330 according to data input/output requests received by the channel control units 110 from the host systems 200 .
- the disk control units 140 and the management terminal 160 are connected to each other via the internal LAN 151 to enable communication. Accordingly, the disk control units 140 can install, from the management terminal 160 , micro programs to run therein.
- the management terminal 160 is a computer controlling the storage system 600 .
- a system administrator can make settings for the configurations of the physical disk drives 330 and for paths between the host systems 200 and the channel control units 110 , and install micro programs run in the channel control units 110 and the disk control units 140 .
- Setting of the configurations of the physical disk drives 330 refers to increasing or decreasing the number of physical disk drives 330 as well as changing the RAID configuration (for example, from RAID 1 to RAID 5).
- RAID configuration for example, from RAID 1 to RAID 5
- FIG. 2 shows the detailed structure of a channel control unit 110 .
- a channel control unit 110 has a plurality of ports ( 11 , 12 ), a plurality of Fibre Channel (FC) control processors ( 13 , 14 ), a plurality of channel processors (CHP) ( 15 , 16 ), a buffer memory (DXBF) 17 and a bus 22 .
- the Fibre Channel control processors 13 and 14 control the Fibre Channel interface used between the host systems 200 and themselves.
- the channel processors 15 and 16 are dedicated processors for processing I/O requests from the host systems 200 .
- the channel processor 15 has a local memory (LM) 18 for storing a local memory directory (LM directory) 20 or the like.
- LM local memory
- the LM directory 20 is management information (cache management table) indicating whether data read and written by the channel processor 15 exists in the cache slots 131 .
- a cache slot 131 is a data management unit in the cache memory 130 and has a per-track storable data size (256 KB).
- the channel processor 16 has a local memory (LM) 19 for storing LM directory 21 .
- LM local memory
- the buffer memory 17 is used for transmitting data between the channel processors 15 and 16 .
- the bus 22 connects the Fibre Channel control processors 13 and 14 , the channel processors 15 and 16 , the buffer memory 17 , and the cache switch 150 to one another.
- the channel processors 15 and 16 can communicate each other via the bus 22 .
- the channel processor 15 can also refer to the LM directory 21 and write management information for the cache slots 131 in the LM directory 21 via the bus 22 .
- the channel processor 16 can refer to the LM directory 20 and write management information for the cache slots 131 in the LM directory 20 via the bus 22 .
- the shared memory 120 stores a shared memory directory (SM directory) 121 .
- the SM directory 121 is management information indicating whether data read and written by all the channel processors 15 and 16 in all the channel control units 110 exists in the cache slots 131 .
- the aforementioned LM directories 20 and 21 are management information obtained by copying, from the management information of the SM directory, the management information indicating whether data read and written by the channel processor 15 exists in the cache slots 131 , and the management information indicating whether data read and written by the channel processor 16 exists in the cache slots 131 respectively.
- FIG. 3 shows the table structure for the LM directory 20 .
- the LM directory 20 is structured as a hash table.
- the channel processor 15 calculates a hash key based on the management information (slot numbers of the cache slots 131 ) copied from the SM directory 121 and registers the slot numbers in “vacant areas” among areas 1 to N that correspond to the hash key.
- a slot number (slot #) indicates an address of a virtual device (VDEV) and corresponds to an address of a cache slot.
- VDEV virtual device
- a virtual device is structured by grouping four physical disks 330 in one group (3D+1P) or by grouping eight physical disks 330 in one group (7D+1P). In other words, one virtual device is formed by gathering storage areas respectively provided by plural physical disks 330 .
- One virtual device can be divided into plural logical devices (LDEVs) and one logical device can be formed by gathering plural virtual devices.
- a logical device is mapped onto a logical unit (LU), which is a logical storage unit the host systems 200 recognize. For example, if the host systems 200 are UNIX (registered trademark) systems, a logical unit corresponds to a device file. If the host systems 200 are Windows (registered trademark) systems, a logical unit corresponds to a drive letter (drive name).
- a logical unit is assigned a unique logical unit number (LUN).
- An address for a logical device is set by combining a LUN and a logical block address (LBA) (LUN+LBA).
- An address for a virtual device is set by combining a VDED number and a slot number (VDEV number+slot number).
- the address for a logical device, the address for a virtual device, and the address for a cache slot 131 correspond one another and can be converted into one another.
- an address where a VDEV number and a slot number are combined is called a “slot number” for the ease of explanation.
- the Fibre Channel control processor 13 analyzes the command received via the port 11 from the host system 200 and notifies the channel processor 15 of the receipt of the command.
- the channel processor 15 analyzes the command and calculates a slot number based on the address (LUN+LBA) of the read data.
- the channel processor 15 then checks whether the slot number corresponding to the read data address is registered in the LM directory 20 . If the slot number is registered in the LM directory 20 , the channel processor 15 obtains the data in the relevant cache slot 131 in the cache memory 130 and transfers it to the host system 200 .
- the channel processor 15 accesses the shared memory 120 , refers to the SM directory 121 , and checks whether the slot number is registered there. If the slot number is registered in the SM directory 121 , the channel processor 15 obtains the data in the relevant cache slot 131 in the cache memory 130 and transfers it to the host system 200 .
- the channel processor 15 requests staging of the data to the cache memory 130 by the relevant disk control unit 140 .
- the channel processor 15 captures the data from the cache slot 131 in the cache memory 130 via the cache switch 150 and transfers it to the host system 200 . It also registers the slot number corresponding to the cache slot 131 , to which the staging was conducted, in the SM directory 121 and in the LM directory 20 .
- the channel processor 15 when the channel processor 15 does not need the cache slot 131 anymore, it releases it from management by the LM directory 21 .
- a channel processor when a channel processor receives an I/O request from a host system 200 , plural channel processors share the management of the relevant cache slots 131 involving access to the shared memory 120 , and the processing such as data transfer from the cache memory 130 so that the overhead of the channel processors is reduced. Specifically, the overhead caused during cache access is reduced in such a manner that: an I/O request from a host system 200 is received by a first channel processor; a channel processor other than the first channel processor, that is, a second channel processor, transfers the relevant data from the cache memory 130 to the buffer memory 17 ; and the first channel processor transfers the data in the buffer 17 to the host system 200 .
- the second channel processor it is preferable to select a channel processor that is most likely to have the cache slot of the host system 200 -requested data registered therein.
- the overhead caused during cache access and reference to the SM directory can be reduced.
- I/O distribution processing method 1 performed between the channel processors 15 and 16 when the channel processor 15 receives a read access from a host system 200 is explained.
- the Fibre Channel control processor 13 analyzes the command received via the port 11 from the host system 200 and notifies the channel processor 15 of the receipt of the command.
- the channel processor 15 analyzes the command and calculates a slot number based on the address (LUN+LBA) of the read data address.
- the channel processor 15 creates a distribution processing request message, which is a massage requesting distribution processing, and transmits it to the channel processor 16 .
- the distribution processing request message includes transmitter identification information (for example, the identification number of the channel processor 15 ), a message ID for identifying the message, the address (LUN+LBA) of the read data, the data size of the read data, and the like.
- the channel processor 16 When the channel processor 16 receives the distribution processing request message, it calculates a slot number based on the address (LUN+LBA) of the read data. The channel processor 16 then refers to the LM directory 21 and checks whether the slot number is registered in the LM directory 21 . If it is registered in the LM directory 21 , the channel processor 16 accesses the cache memory 130 via the cache switch 150 and transfers the data in the relevant cache slot 131 to the buffer memory 17 .
- the buffer memory 17 has a plurality of storage areas, each being assigned to a channel processor to write data therein.
- the channel processor 16 transmits a data transfer completion message to the channel processor 15 .
- the data transfer completion message includes transmitter identification information (for example, the identification number of the channel processor 16 ), a message ID for identifying the message, the address of the buffer 17 in which the data has been written, a transmission result (success or failure) and the like.
- the channel processor 15 When the channel processor 15 receives the data transfer completion message from the channel processor 16 , it transmits a command to read the data from the buffer memory 17 to the Fibre Channel control processor 13 . The Fibre Channel control processor 13 then reads the data from the buffer memory 17 and transfers it to the host system 200 .
- the channel processor 16 accesses the shared memory 120 , refers to the SM directory 121 , and checks whether the slot number is registered in the SM directory. If it is registered in the SM directory 121 , the channel processor 16 obtains the data in the relevant cache slot 131 in the cache memory 130 and transfers it to the buffer memory 17 .
- the channel processor 16 requests staging of the data to the cache memory 130 by the relevant disk control unit 140 .
- the channel processor 16 captures the data from the relevant cache slot 131 in the cache memory 130 via the cache switch 150 and transfers it to the buffer memory 17 . It also registers the slot number corresponding to the cache slot 131 , to which the staging was conducted, in the SM directory 121 and in the LM directory 21 .
- the channel processor 15 may perform other processing (such as processing to respond to I/O requests transmitted from the host systems 200 in order).
- processing such as processing to respond to I/O requests transmitted from the host systems 200 in order.
- the above description is about the processing performed when the channel processor 15 receives a read access from a host system 200
- the processing to write write data in the cache memory 130 can also be distributed between the channel processors 15 and 16 .
- the channel processor 16 which is not the channel processor 15 that received the I/O request from a host system 200 , is in charge of managing the cache slots 131 , the management involving access to the shared memory 120 and performing processing such as data transfer from the cache memory 130 , the processing of the I/O request from the host system 200 can be distributed among the channel processors, thereby reducing the overhead on the channel processors.
- FIG. 5 shows an example where four channel processors 15 , 16 , 23 , and 24 are connected to each other via the bus 22 in one channel control unit 110 .
- the Fibre channel control processors and the buffer memory are omitted.
- the channel processors 15 , 16 , 23 , and 24 may sometimes be called CHP_A, CHP_B, CHP_C, and CHP_D respectively.
- the channel processor 15 checks its own processor usage rate (rate of time spent on I/O processing within a fixed time period) periodically and if the processor usage rate exceeds a predetermined threshold value, it judges that the channel processor 15 itself is a bottleneck for I/O processing, and executes the I/O distribution processing.
- processor usage rate rate of time spent on I/O processing within a fixed time period
- the channel processor 15 then checks the processor usage rates of the channel processors 16 , 23 and 24 . If their processor usage rates are below the predetermined threshold value, the processors are judged as candidate targets for distribution processing. In the selection of processors to be candidate targets for distribution processing, it is possible to select them based on the presence or absence of I/O to their channel processors instead of based on their processor usage rates. Ideally, the channel processors 15 , 16 , 23 and 24 write, in their local memory 18 , 19 , 25 and 26 , information such as their own processor usage rates or the presence or absence of I/O so that they can refer to each other's information. The example explained now assumes that only the channel processor 15 receives a read access from a host system 200 , so the rest of the channel processors 16 , 23 and 24 are candidate targets for distribution processing.
- the channel processor 15 calculates a slot number based on the address (LUN+LBA) of the read data, and selects a channel processor as a target for the distribution processing according to the value calculated by a predetermined calculation method based on the slot number.
- a predetermined calculation method There may be various possible calculation methods. For example, as shown in the table 30 in FIG. 4 , the target may be selected by establishing correspondence relationships between the CHP_B, CHP_C and CHP_D and the remainder of the read data's slot number divided by 3.
- a distribution processing request message is transmitted to the CHP_B so that the CHP_B takes charge of managing the cache slots 131 , the management involving access to the shared memory 120 , and performing processing such as data transfer from the cache memory 130 .
- the remainder of the slot number divided by 3 is 1, the message is transmitted to the CHP_C, while if the remainder is 2, the message is transmitted to CHP_D.
- the channel processor that receives the distribution request message performs the same processing as in the distribution processing method 1 .
- the table 30 is stored in the local memory 18 of the channel processor 15 .
- the same channel processor always processes access to the same data; therefore, the relevant cache slot 131 is more likely to be registered in the LM directory of the channel processor, thereby enhancing the processing speed-ups.
- a target channel processor may be selected by establishing correspondence relationships in advance between the channel processors and the remainders of each read data's slot number divided by N.
- Data processing using the distribution processing method 2 includes: a step where a first channel processor among plural channel processors receives an I/O request from a host system; a step where a second channel processor is selected from the channel processors according to the value obtained by a predetermined calculation based on the address of data requested by the host system, the second channel processor executing a part of the processing to respond to the I/O request; a step where the second channel processor checks whether there is a cache hit and if there is a cache hit, it transfers the data from the cache memory to the buffer memory; and a step where the first channel processor processes the I/O request using the data transferred to the buffer memory.
- I/O distribution processing method 3 performed between the channel processors 15 , 16 , 23 and 24 when the channel processor 15 receives a read access from a host system 200 is explained.
- the channel processor 15 checks its own processor usage rate and decides whether or not to perform the distribution processing. If the processor usage rate exceeds a predetermined threshold value, the channel processor 15 checks the processor usage rates or the presence/absence of I/O in the channel processors 16 , 23 and 24 and selects channel processors to become candidate targets for distribution processing.
- the channel processor 15 receives a read access from a host system 200 , therefore the rest of the channel processors 16 , 23 and 24 are candidate targets for distribution processing.
- the channel processor 15 then refers to the LM directories 21 , 27 and 28 of the channel processors 16 , 23 and 24 via the bus 22 and searches for a channel processor having the cache slot 131 of the read data registered therein. If there is a channel processor having the cache slot of the read data registered, a distribution processing request message is transmitted to that channel processor. The channel processor that receives the message performs the same processing as in the distribution processing method 1 . If there is no channel processor having the cache slot 131 of the read data registered, the channel processor 15 selects a channel processor with a light I/O load and transmits the message to that channel processor.
- application of the distribution processing method 3 is premised on the table structures of the LM directories 21 , 27 , and 28 of the channel processors 16 , 23 and 24 being the same as that of the LM directory 20 of the channel processor 15 .
- Data processing using the distribution processing method 3 includes: a step where a first channel processor among plural channel processors receives an I/O request from a host system; a step where a second channel processor is selected from the channel processors based on management information indicating whether data read and written by the channel processors exists in the cache slots, the second channel processor executing a part of the processing to respond to the I/O request; a step where the second channel processor checks whether there is a cache hit and if there is a cache hit, it transfers the data from the cache memory to the buffer memory; and a step where the first channel processor processes the I/O request using the data transferred to the buffer memory.
- I/O distribution processing method 4 performed between the channel processors 15 , 16 , 23 and 24 when the channel processor 15 receives a read access from a host system 200 is explained. It is the same as in the distribution processing method 2 in that the processor usage rates of the channel processors 16 , 23 and 24 are checked in order to select, in advance, channel processors to become candidate targets for the distribution processing.
- each of the LM directories 20 , 21 , 27 and 28 of the channel processors 15 , 16 , 23 and 24 has the same table structure as the LM directory 40 shown in FIG. 6 .
- reference number 41 indicates an LM directory that manages the management information for the cache slots 131 of the channel processor 15 .
- Reference number 42 indicates an LM directory that manages the management information for the cache slots 131 of the channel processor 16 .
- Reference number 43 indicates an LM directory that manages the management information for the cache slots 131 of the channel processor 23 .
- Reference number 44 indicates an LM directory that manages the management information for the cache slots 131 of the channel processor 24 .
- the channel processor 15 updates the LM directory 41 stored in its local memory 18 , it updates the LM directories stored in the local memory 19 , 25 and 26 of the other channel processors 16 , 23 and 24 .
- the channel processor 16 , 23 or 24 updates the LM directory stored in its local memory, it updates the LM directories of the other channel processors.
- the channel processors 15 , 16 , 23 and 24 refer to their own local memory 18 , 19 , 25 and 26 , to find which channel processor has the relevant cache slot registered therein.
- the channel processor 15 transmits a distribution processing request message to the channel processor having the relevant cache slot registered in its LM directory. After receiving the distribution processing request message, the channel processor executes the same processing as in the distribution processing method 1 .
- I/O distribution processing method 5 performed between the channel processors 15 , 16 , 23 and 24 when the channel processor 15 receives a read access from a host system 200 is explained.
- the processor usage rates of the channel processors 16 , 23 and 24 are checked to select channel processors to become candidate targets for the distribution processing.
- the channel processor 15 which has received the I/O request from the host system 200 , can know the access pattern of the host system 200 . For example, if the access pattern is sequential access, the channel processor 15 selects a fixed channel processor (for example, the channel processor 16 ) and if the access pattern is random access, it selects a channel processor by an appropriate method (for example, any of the aforementioned distribution processing methods). The channel processor 15 then transmits a distribution processing request message to the selected channel processor.
- a fixed channel processor for example, the channel processor 16
- an appropriate method for example, any of the aforementioned distribution processing methods
- a channel processor can perform prefetch processing to prefetch data from the physical disks 330 ; accordingly, it is preferable to determine a fixed channel processor to become a distribution target in advance. Prefetched data is accumulated in the buffer memory 17 in order. Whether the access pattern is sequential access or not is determined by whether the number of successive accesses is more than a predetermined number.
- the data prefetch processing can be performed efficiently by knowing the access pattern of the host system 200 , thereby enhancing the I/O processing performance.
- Data processing using the distribution processing method 5 includes: a step where a first channel processor among plural channel processors receives an I/O request from a host system; a step where a second channel processor is selected from the channel processors based on the access pattern of the host system, the second channel processor executing a part of the processing to respond to the I/O request; a step where the second channel processor checks whether there is a cache hit, and if there is a cache hit, it transfers the data from the cache memory to the buffer memory; and a step where the first channel processor processes the I/O request using the data transferred to the buffer memory.
- I/O distribution processing method 6 performed between the channel processors 15 , 16 , 23 and 24 when the channel processor 15 receives a read access from a host system 200 is explained.
- the channel processor 15 refers to load information written in the local memories 19 , 25 and 26 of the channel processors 16 , 23 and 24 and selects a channel processor to become a target for the distribution processing. Examples of the load information are as follows.
- the distribution processing method 6 it is possible not only to select the channel processor most appropriate as a distribution target based on the load information for the respective channel processors, but also to adjust the frequency of the distribution processing so that the processing performance of the entire channel control unit can be optimized.
- Data processing using the distribution processing method 6 includes: a step where a first channel processor among plural channel processors receives an I/O request from a host system; a step where a second channel processor is selected from the channel processors based on the load information of the respective channel processors, the second channel processor executing a part of the processing to respond to the I/O request; a step where the second channel processor checks whether there is a cache hit, and if there is a cache hit, it transfers the data from the cache memory to the buffer memory; and a step where the first channel processor processes the I/O request using the data transferred to the buffer memory.
- Each of the distribution processing methods explained above is executed by a computer program loaded in channel processors in channel control units.
- the computer program may also be stored on media instead of being provided in the channel processors as above.
- the media include: optical media (media that can optically read data, such as CD-RAMs, CD-ROMs, DVD-RWs, DVD-ROMs, DVD-Rs, PD disks, MD disks, and MO disks); magnetic media (media that can magnetically read data, such as flexible disks, magnetic cards and magnetic tapes); and memory elements (such as semiconductor memory elements such as DRAM and ferroelectric memory elements such as FRAM).
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
When a first channel processor from among a plurality of channel processors receives an I/O request from a host system, a second channel processor, which is to execute a part of the processing to respond to the I/O request, is selected from among the channel processors based on the LM directories of the respective channel processors. The selected second channel processor checks whether there is a cache hit. If there is a cache hit, it transfers the data from the cache memory to the buffer memory. The first channel processor then processes the I/O request using the data transferred to the buffer memory.
Description
- This application relates to and claims priority from Japanese Patent Application No. 2005-267184, filed on Sep. 14, 2005, the entire disclosure of which is incorporated herein by reference.
- The present invention relates to a storage controller, data processing method and a computer program product.
- Lately, disk array apparatuses have been used as storage systems for managing large amounts of data. A disk array apparatus, having a number of disk drives arranged in arrays, provides host systems with storage resources, which together form a RAID (Redundant Arrays of Independent Inexpensive Disks) structure. A storage area network (SAN) environment using Fibre Channel (FC) protocol as an interface for network-connecting the host systems and the disk array apparatus has become popular. The disk array apparatus connected to the host systems via the SAN is equipped with channel control units for receiving block access requests. Each channel control unit includes a plurality of Fibre Channel control processors for controlling the Fibre Channel interfaces used between the channel control unit and the host systems; and a plurality of channel processors for processing I/O requests from the host systems. As mentioned in Japanese Patent Laid-Open (Kokai) Publication No. 1997-160889, it is essential for a system equipped with a plurality of processors to control and equalize the loads on the respective processors to enhance the system processing efficiency.
- However, in a conventional disk array apparatus, although there are plural channel processors provided in a channel control unit, an I/O request received via a port from a host system is processed by only one channel processor, therefore, resources of the rest of the channel processors are not utilized effectively. In order to achieve a speed-up of the Fibre Channel interface, reducing channel processor overhead is important and what is particularly ideal is efficient cache slot management including access to shared memory, and efficient processing to transfer data from the cache memory.
- It is an object of the present invention to solve the above problem and reduce channel processor overhead.
- In order to achieve the object the storage controller according to the present invention has: a plurality of channel processors for processing an I/O request from a host system; a cache memory for temporarily storing, in cache slots, data that is read and written by the channel processors in response to I/O requests from the host system; a local memory assigned to each of the channel processors for storing management information indicating whether or not data read and written by the relevant channel processor exists in the cache slot; and a buffer memory for storing data transmitted between the channel processors. When a first channel processor from among the channel processors receives an I/O request from the host system, it selects, based on the management information stored in the local memories of the respective channel processors, a second channel processor from among the channel processors, the second channel processor is to execute a part of processing to respond to the I/O request. The selected second channel processor checks whether there is a cache hit and if there is a cache hit, it transfers the data from the cache memory to the buffer memory. The first channel processor then processes the I/O request using the data transferred to the buffer memory. Because the second channel processor selected to execute a part of the processing to respond to the I/O request is selected based on the management information indicating whether or not the data read and written by the channel processors exists in the cache slots, the cache hit rate of the second channel processor can be enhanced. Accordingly, the channel processor overhead, which is caused by the cache slot management including access to the shared memory as well as the processing to transfer data from the cache memory, can be reduced.
- The storage controller according to another aspect of the present invention has: a plurality of channel processors for processing an I/O request from a host system; a cache memory for temporarily storing, in cache slots, data that is read and written by the channel processors in response to I/O requests from the host system; and a buffer memory for storing data transmitted between the channel processors. When a first channel processor from among the channel processors receives the I/O request from the host system, it selects, based on the address of the data requested by the host system or the access pattern of the host system, a second channel processor from among the channel processors, which is to execute a part of processing to respond to the I/O request. The selected second channel processor checks whether there is a cache hit and if there is a cache hit, it transfers the data from the cache memory to the buffer memory. The first channel processor then processes the I/O request using the data transferred to the buffer memory. Because the second channel processor, that is to execute a part of the processing to respond to the I/O request, is selected, based on the address of data requested by the host system or the access pattern of the host system, the cache hit rate of the second channel processor can be enhanced. Accordingly, the overhead of the channel processors, which is caused by the cache slot management including access to the shared memory as well as the processing to transfer data from the cache memory, can be reduced.
- According to the present invention, channel processor overhead can be reduced.
-
FIG. 1 shows the structure of a storage system according to an embodiment of the present invention. -
FIG. 2 shows the detailed structure of a channel control unit according to the present invention. -
FIG. 3 illustrates a table structure for an LM directory according to the present invention. -
FIG. 4 illustrates a table for selecting a channel processor as a target for distribution processing according to the present invention. -
FIG. 5 illustrates channel processor distribution processing performed between the channel processors according to the present invention. -
FIG. 6 illustrates another table structure for the LM directory according to the present invention - An embodiment of the present invention is described below with reference to the attached drawings.
-
FIG. 1 shows the hardware structure of astorage system 600 according to the present embodiment. Thestorage system 600 is mainly composed of astorage controller 100 and astorage apparatus 300. Thestorage controller 100 controls data input and output to and from thestorage apparatus 300 according to, for example, commands fromhost systems 200. It also performs various processing, such as setting and changing of structural information for thestorage system 600 according to, for example, commands from amanagement server 410. -
Host systems 200 are front-end computers such as personal computers, work stations, or mainframe computers, and are used as automated teller machines in banks or flight seat reservation systems. Thehost systems 200 are connected to thestorage controller 100 via a SAN 500 to enable communication therebetween. The SAN 500 is a network for transmitting data between thehost systems 200 and thestorage controller 100 in blocks, which are data management units in the storage resources provided by thestorage apparatus 300. The communication protocol used between thehost systems 200 and thestorage controller 100 via the SAN 500 is, for example, Fibre Channel protocol. - Incidentally, the
host systems 200 and thestorage controller 100 are not necessarily connected via the SAN 500; they may also be connected via a Local Area Network (LAN), or they may be connected directly to each other without involving a network. If they are connected via a LAN, communications are made based on Transmission Control Protocol/Internet Protocol (TCP/IP). If they are connected directly to each other without involving a network, communication may be made based on communication protocols such as Fibre Connection (FICON; registered trademark), Enterprise System Connection (ESCON; registered trademark), Advanced Connection Architecture (ACONARC; registered trademark), and Fibre Connection Architecture (FIBARC; registered trademark). - The
management server 410 is connected to amanagement terminal 160 via anexternal LAN 400. Theexternal LAN 400 is configured with, for example, the Internet or a dedicated line. Communication between themanagement server 410 and themanagement terminal 160 via theexternal LAN 400 is made based on a communication protocol such as TCP/IP. - The
storage apparatus 300 has a plurality ofphysical disk drives 330. Thephysical disk drives 330 are hard disk drives such as Advanced Technology Attachment (ATA) disk drives, Small Computer System Interface (SCSI) disk drives or Fibre Channel disk drives. By arranging plural disk drives in arrays, a Redundant Arrays of Inexpensive Disks (RAID) structure can be formed. The physical disk drives 330 provide physical storage areas, that is, physical volumes, for which logical devices can be set. Thestorage controller 100 and thestorage apparatus 300 may be connected via a network or they may be connected directly to each other without involving a network. Alternatively, thestorage controller 100 and thestorage apparatus 300 may be integrated in one structure. - The
storage controller 100 haschannel control units 110, sharedmemory 120,cache memory 130,disk control units 140, amanagement terminal 160, and acache switch 150. - The
storage controller 100 communicates with thehost systems 200 via the SAN 500 by means of thechannel control units 110. Eachchannel control unit 110 has a communication interface for communication with thehost systems 200 and has a function for transmitting data input/output commands between itself and thehost systems 200. Thechannel control units 110 and themanagement terminal 160 are connected to each other via an internal LAN (shared bus) 151. Accordingly, thechannel control units 110 can install, from themanagement terminal 160, micro programs to run therein. - The
cache switch 150 connects thechannel control units 110, sharedmemory 120,cache memory 130,disk control units 140, and themanagement terminal 160 to one another. Transmission of data and commands between them is conducted via thecache switch 150. Thecache switch 150 is configured with, for example, a crossbar switch or the like. - The shared
memory 120 and thecache memory 130 are memory apparatuses shared by the respectivechannel control units 110 anddisk control units 140. The sharedmemory 120 is mainly used for storing resource configuration information and various commands. Thecache memory 130 is mainly used for temporarily storing data read and written from and to thephysical disks 330. - If a data input/output request a
channel control unit 110 receives from ahost system 200 is a write command, thechannel control unit 110 writes the write command in the sharedmemory 120 and writes write data received from thehost system 200 in thecache memory 130. - The
disk control units 140 monitor the sharedmemory 120 at all times. When adisk control unit 140 detects that a write command has been written in the sharedmemory 120, it reads dirty data from thecache memory 130 and destages it in the physical disk drives 300. - Meanwhile, if a data input/output request a
channel control unit 110 receives from ahost system 200 is a read command, thechannel control unit 110 checks whether read target data exists in thecache memory 130. If the read target data exists in thecache memory 130, thechannel control unit 110 reads it and transmits it to thehost system 200. - If the read target data does not exist in the
cache memory 130, thechannel control unit 110 writes a read command in the sharedmemory 120. Thedisk control units 140 monitor the sharedmemory 120 and when adisk control unit 140 detects that the read command has been written in the sharedmemory 120, it reads the read target data from thestorage apparatus 300, writes it in thecache memory 130, and writes a report that effect in the shared memory. Therelevant control unit 110 then detects that the read target data has been written in thecache memory 130, reads it from thecache memory 130 and transmits it to thehost system 200. - As explained, the
channel control units 110 and thedisk control units 140 transmit data via thecache memory 130. Thecache memory 130 temporarily stores, from among the data stored in thephysical disk drives 330, data read and written by thechannel control units 110 and thedisk control units 140. - Incidentally, one or more virtual storage areas (hereinafter called the “cache slots”) may be set in the
cache memory 130. One cache slot is set for one logical volume. Specifically, a cache slot temporarily stores data written in or read from a corresponding logical volume. - The
disk control units 140, being connected to the data-storingphysical disk drives 330 to enable communication, control thestorage apparatus 300. For example, they read and write data from and to thephysical disk drives 330 according to data input/output requests received by thechannel control units 110 from thehost systems 200. - The
disk control units 140 and themanagement terminal 160 are connected to each other via theinternal LAN 151 to enable communication. Accordingly, thedisk control units 140 can install, from themanagement terminal 160, micro programs to run therein. - The
management terminal 160 is a computer controlling thestorage system 600. By operating themanagement terminal 160, a system administrator can make settings for the configurations of thephysical disk drives 330 and for paths between thehost systems 200 and thechannel control units 110, and install micro programs run in thechannel control units 110 and thedisk control units 140. Setting of the configurations of the physical disk drives 330 refers to increasing or decreasing the number ofphysical disk drives 330 as well as changing the RAID configuration (for example, fromRAID 1 to RAID 5). With themanagement terminal 160, it is also possible to check the operational condition of thestorage system 600, specify faulty sections, and install operating systems run in thechannel control units 110. These various settings and controls can be performed via a user interface provided in themanagement terminal 160. -
FIG. 2 shows the detailed structure of achannel control unit 110. Achannel control unit 110 has a plurality of ports (11, 12), a plurality of Fibre Channel (FC) control processors (13, 14), a plurality of channel processors (CHP) (15, 16), a buffer memory (DXBF) 17 and abus 22. The FibreChannel control processors host systems 200 and themselves. Thechannel processors host systems 200. Thechannel processor 15 has a local memory (LM) 18 for storing a local memory directory (LM directory) 20 or the like. TheLM directory 20 is management information (cache management table) indicating whether data read and written by thechannel processor 15 exists in thecache slots 131. Acache slot 131 is a data management unit in thecache memory 130 and has a per-track storable data size (256 KB). Likewise, thechannel processor 16 has a local memory (LM) 19 for storingLM directory 21. - The
buffer memory 17 is used for transmitting data between thechannel processors bus 22 connects the FibreChannel control processors channel processors buffer memory 17, and thecache switch 150 to one another. Thechannel processors bus 22. Thechannel processor 15 can also refer to theLM directory 21 and write management information for thecache slots 131 in theLM directory 21 via thebus 22. Likewise, thechannel processor 16 can refer to theLM directory 20 and write management information for thecache slots 131 in theLM directory 20 via thebus 22. - Incidentally, for ease of explanation, the case where the number of ports, Fibre Channel control processors and channel processors provided in the
channel control unit 110 is two has been described; however, the present invention is not limited to that case. Accordingly, those elements can also number three or more. - The shared
memory 120 stores a shared memory directory (SM directory) 121. TheSM directory 121 is management information indicating whether data read and written by all thechannel processors channel control units 110 exists in thecache slots 131. Theaforementioned LM directories channel processor 15 exists in thecache slots 131, and the management information indicating whether data read and written by thechannel processor 16 exists in thecache slots 131 respectively. -
FIG. 3 shows the table structure for theLM directory 20. TheLM directory 20 is structured as a hash table. Thechannel processor 15 calculates a hash key based on the management information (slot numbers of the cache slots 131) copied from theSM directory 121 and registers the slot numbers in “vacant areas” amongareas 1 to N that correspond to the hash key. A slot number (slot #) indicates an address of a virtual device (VDEV) and corresponds to an address of a cache slot. - A virtual device is structured by grouping four
physical disks 330 in one group (3D+1P) or by grouping eightphysical disks 330 in one group (7D+1P). In other words, one virtual device is formed by gathering storage areas respectively provided by pluralphysical disks 330. One virtual device can be divided into plural logical devices (LDEVs) and one logical device can be formed by gathering plural virtual devices. A logical device is mapped onto a logical unit (LU), which is a logical storage unit thehost systems 200 recognize. For example, if thehost systems 200 are UNIX (registered trademark) systems, a logical unit corresponds to a device file. If thehost systems 200 are Windows (registered trademark) systems, a logical unit corresponds to a drive letter (drive name). A logical unit is assigned a unique logical unit number (LUN). - An address for a logical device is set by combining a LUN and a logical block address (LBA) (LUN+LBA). An address for a virtual device, on the other hand, is set by combining a VDED number and a slot number (VDEV number+slot number). The address for a logical device, the address for a virtual device, and the address for a
cache slot 131 correspond one another and can be converted into one another. In this specification, an address where a VDEV number and a slot number are combined is called a “slot number” for the ease of explanation. - Now, the flow of processing performed when a
channel processor 15 receives a read access from ahost system 200 is explained below. The FibreChannel control processor 13 analyzes the command received via theport 11 from thehost system 200 and notifies thechannel processor 15 of the receipt of the command. Thechannel processor 15 analyzes the command and calculates a slot number based on the address (LUN+LBA) of the read data. Thechannel processor 15 then checks whether the slot number corresponding to the read data address is registered in theLM directory 20. If the slot number is registered in theLM directory 20, thechannel processor 15 obtains the data in therelevant cache slot 131 in thecache memory 130 and transfers it to thehost system 200. - If the slot number is not registered in the
LM directory 20, thechannel processor 15 accesses the sharedmemory 120, refers to theSM directory 121, and checks whether the slot number is registered there. If the slot number is registered in theSM directory 121, thechannel processor 15 obtains the data in therelevant cache slot 131 in thecache memory 130 and transfers it to thehost system 200. - If the slot number is not registered in the
SM directory 121, thechannel processor 15 requests staging of the data to thecache memory 130 by the relevantdisk control unit 140. When the staging of the data to thecache slot 131 in thecache memory 130 is complete, thechannel processor 15 captures the data from thecache slot 131 in thecache memory 130 via thecache switch 150 and transfers it to thehost system 200. It also registers the slot number corresponding to thecache slot 131, to which the staging was conducted, in theSM directory 121 and in theLM directory 20. - Incidentally, when the
channel processor 15 does not need thecache slot 131 anymore, it releases it from management by theLM directory 21. - In the present embodiment, when a channel processor receives an I/O request from a
host system 200, plural channel processors share the management of therelevant cache slots 131 involving access to the sharedmemory 120, and the processing such as data transfer from thecache memory 130 so that the overhead of the channel processors is reduced. Specifically, the overhead caused during cache access is reduced in such a manner that: an I/O request from ahost system 200 is received by a first channel processor; a channel processor other than the first channel processor, that is, a second channel processor, transfers the relevant data from thecache memory 130 to thebuffer memory 17; and the first channel processor transfers the data in thebuffer 17 to thehost system 200. In the selection of the second channel processor, it is preferable to select a channel processor that is most likely to have the cache slot of the host system 200-requested data registered therein. By transmitting a distribution processing request message from the first channel processor to the second channel processor while the second channel processor being most likely to have the cache slot registered in its LM directory), the overhead caused during cache access and reference to the SM directory can be reduced. Each method of distribution processing by the channel processors is explained below. -
Distribution Processing Method 1 - First, with reference to
FIG. 2 , I/Odistribution processing method 1 performed between thechannel processors channel processor 15 receives a read access from ahost system 200 is explained. The FibreChannel control processor 13 analyzes the command received via theport 11 from thehost system 200 and notifies thechannel processor 15 of the receipt of the command. Thechannel processor 15 analyzes the command and calculates a slot number based on the address (LUN+LBA) of the read data address. - The
channel processor 15 creates a distribution processing request message, which is a massage requesting distribution processing, and transmits it to thechannel processor 16. The distribution processing request message includes transmitter identification information (for example, the identification number of the channel processor 15), a message ID for identifying the message, the address (LUN+LBA) of the read data, the data size of the read data, and the like. - When the
channel processor 16 receives the distribution processing request message, it calculates a slot number based on the address (LUN+LBA) of the read data. Thechannel processor 16 then refers to theLM directory 21 and checks whether the slot number is registered in theLM directory 21. If it is registered in theLM directory 21, thechannel processor 16 accesses thecache memory 130 via thecache switch 150 and transfers the data in therelevant cache slot 131 to thebuffer memory 17. Thebuffer memory 17 has a plurality of storage areas, each being assigned to a channel processor to write data therein. - After the data transfer to the
buffer memory 17 is completed, thechannel processor 16 transmits a data transfer completion message to thechannel processor 15. The data transfer completion message includes transmitter identification information (for example, the identification number of the channel processor 16), a message ID for identifying the message, the address of thebuffer 17 in which the data has been written, a transmission result (success or failure) and the like. - When the
channel processor 15 receives the data transfer completion message from thechannel processor 16, it transmits a command to read the data from thebuffer memory 17 to the FibreChannel control processor 13. The FibreChannel control processor 13 then reads the data from thebuffer memory 17 and transfers it to thehost system 200. - If the slot number is not registered in the
LM directory 21, thechannel processor 16 accesses the sharedmemory 120, refers to theSM directory 121, and checks whether the slot number is registered in the SM directory. If it is registered in theSM directory 121, thechannel processor 16 obtains the data in therelevant cache slot 131 in thecache memory 130 and transfers it to thebuffer memory 17. - If the slot number is not registered in the
SM directory 121, thechannel processor 16 requests staging of the data to thecache memory 130 by the relevantdisk control unit 140. When the staging of the data to therelevant cache slot 131 in thecache memory 130 is completed, thechannel processor 16 captures the data from therelevant cache slot 131 in thecache memory 130 via thecache switch 150 and transfers it to thebuffer memory 17. It also registers the slot number corresponding to thecache slot 131, to which the staging was conducted, in theSM directory 121 and in theLM directory 21. - Incidentally, after the
channel processor 15 transmits the distribution processing request message to thechannel processor 16, it may perform other processing (such as processing to respond to I/O requests transmitted from thehost systems 200 in order). Although the above description is about the processing performed when thechannel processor 15 receives a read access from ahost system 200, when thechannel processor 15 receives a write access from ahost system 200, the processing to write write data in thecache memory 130 can also be distributed between thechannel processors - As explained, with the
distribution processing method 1, because thechannel processor 16, which is not thechannel processor 15 that received the I/O request from ahost system 200, is in charge of managing thecache slots 131, the management involving access to the sharedmemory 120 and performing processing such as data transfer from thecache memory 130, the processing of the I/O request from thehost system 200 can be distributed among the channel processors, thereby reducing the overhead on the channel processors. -
Distribution Processing Method 2 - Now, with reference to
FIGS. 4 and 5 , I/Odistribution processing method 2 performed between thechannel processors channel processor 15 receives a read access from ahost system 200 is explained.FIG. 5 shows an example where fourchannel processors bus 22 in onechannel control unit 110. For ease of explanation, the Fibre channel control processors and the buffer memory are omitted. Incidentally, thechannel processors - First, the
channel processor 15 checks its own processor usage rate (rate of time spent on I/O processing within a fixed time period) periodically and if the processor usage rate exceeds a predetermined threshold value, it judges that thechannel processor 15 itself is a bottleneck for I/O processing, and executes the I/O distribution processing. - The
channel processor 15 then checks the processor usage rates of thechannel processors channel processors local memory channel processor 15 receives a read access from ahost system 200, so the rest of thechannel processors - The
channel processor 15 then calculates a slot number based on the address (LUN+LBA) of the read data, and selects a channel processor as a target for the distribution processing according to the value calculated by a predetermined calculation method based on the slot number. There may be various possible calculation methods. For example, as shown in the table 30 inFIG. 4 , the target may be selected by establishing correspondence relationships between the CHP_B, CHP_C and CHP_D and the remainder of the read data's slot number divided by 3. For example, if the remainder of the slot number of the read data divided by 3 is 0, a distribution processing request message is transmitted to the CHP_B so that the CHP_B takes charge of managing thecache slots 131, the management involving access to the sharedmemory 120, and performing processing such as data transfer from thecache memory 130. If the remainder of the slot number divided by 3 is 1, the message is transmitted to the CHP_C, while if the remainder is 2, the message is transmitted to CHP_D. The channel processor that receives the distribution request message performs the same processing as in thedistribution processing method 1. The table 30 is stored in thelocal memory 18 of thechannel processor 15. - Because a channel processor that becomes the target for the distribution processing is selected as above, the same channel processor always processes access to the same data; therefore, the
relevant cache slot 131 is more likely to be registered in the LM directory of the channel processor, thereby enhancing the processing speed-ups. - Incidentally, if the number of candidate target channel processors for the distribution processing is N, a target channel processor may be selected by establishing correspondence relationships in advance between the channel processors and the remainders of each read data's slot number divided by N.
- Data processing using the
distribution processing method 2 includes: a step where a first channel processor among plural channel processors receives an I/O request from a host system; a step where a second channel processor is selected from the channel processors according to the value obtained by a predetermined calculation based on the address of data requested by the host system, the second channel processor executing a part of the processing to respond to the I/O request; a step where the second channel processor checks whether there is a cache hit and if there is a cache hit, it transfers the data from the cache memory to the buffer memory; and a step where the first channel processor processes the I/O request using the data transferred to the buffer memory. -
Distribution Processing Method 3 - Now, with reference to
FIG. 5 , I/Odistribution processing method 3 performed between thechannel processors channel processor 15 receives a read access from ahost system 200 is explained. - Just as in the
distribution processing method 2, thechannel processor 15 checks its own processor usage rate and decides whether or not to perform the distribution processing. If the processor usage rate exceeds a predetermined threshold value, thechannel processor 15 checks the processor usage rates or the presence/absence of I/O in thechannel processors channel processor 15 receives a read access from ahost system 200, therefore the rest of thechannel processors - The
channel processor 15 then refers to theLM directories channel processors bus 22 and searches for a channel processor having thecache slot 131 of the read data registered therein. If there is a channel processor having the cache slot of the read data registered, a distribution processing request message is transmitted to that channel processor. The channel processor that receives the message performs the same processing as in thedistribution processing method 1. If there is no channel processor having thecache slot 131 of the read data registered, thechannel processor 15 selects a channel processor with a light I/O load and transmits the message to that channel processor. - With this method, enhancement of the I/O processing performance can be expected when a desired
cache slot 131 is registered in the LM directory of a channel processor with a light I/O load. - Incidentally, application of the
distribution processing method 3 is premised on the table structures of theLM directories channel processors LM directory 20 of thechannel processor 15. - Data processing using the
distribution processing method 3 includes: a step where a first channel processor among plural channel processors receives an I/O request from a host system; a step where a second channel processor is selected from the channel processors based on management information indicating whether data read and written by the channel processors exists in the cache slots, the second channel processor executing a part of the processing to respond to the I/O request; a step where the second channel processor checks whether there is a cache hit and if there is a cache hit, it transfers the data from the cache memory to the buffer memory; and a step where the first channel processor processes the I/O request using the data transferred to the buffer memory. -
Distribution Processing Method 4 - Now, with reference to
FIGS. 5 and 6 , I/Odistribution processing method 4 performed between thechannel processors channel processor 15 receives a read access from ahost system 200 is explained. It is the same as in thedistribution processing method 2 in that the processor usage rates of thechannel processors - In the
distribution processing method 4, each of theLM directories channel processors LM directory 40 shown inFIG. 6 . InFIG. 6 ,reference number 41 indicates an LM directory that manages the management information for thecache slots 131 of thechannel processor 15.Reference number 42 indicates an LM directory that manages the management information for thecache slots 131 of thechannel processor 16.Reference number 43 indicates an LM directory that manages the management information for thecache slots 131 of thechannel processor 23.Reference number 44 indicates an LM directory that manages the management information for thecache slots 131 of thechannel processor 24. When thechannel processor 15 updates theLM directory 41 stored in itslocal memory 18, it updates the LM directories stored in thelocal memory other channel processors channel processor channel processors local memory channel processor 15 then transmits a distribution processing request message to the channel processor having the relevant cache slot registered in its LM directory. After receiving the distribution processing request message, the channel processor executes the same processing as in thedistribution processing method 1. - With the
distribution processing method 4, searching for a channel processor having the relevant cache slot registered in its LM directory can be performed more speedily. - Distribution Processing Method 5
- Now, with reference to
FIG. 5 , I/O distribution processing method 5 performed between thechannel processors channel processor 15 receives a read access from ahost system 200 is explained. Just as in thedistribution processing method 2, the processor usage rates of thechannel processors - With the distribution processing method 5, the
channel processor 15, which has received the I/O request from thehost system 200, can know the access pattern of thehost system 200. For example, if the access pattern is sequential access, thechannel processor 15 selects a fixed channel processor (for example, the channel processor 16) and if the access pattern is random access, it selects a channel processor by an appropriate method (for example, any of the aforementioned distribution processing methods). Thechannel processor 15 then transmits a distribution processing request message to the selected channel processor. - In the case of sequential access, a channel processor can perform prefetch processing to prefetch data from the
physical disks 330; accordingly, it is preferable to determine a fixed channel processor to become a distribution target in advance. Prefetched data is accumulated in thebuffer memory 17 in order. Whether the access pattern is sequential access or not is determined by whether the number of successive accesses is more than a predetermined number. - With the distribution processing method 5, the data prefetch processing can be performed efficiently by knowing the access pattern of the
host system 200, thereby enhancing the I/O processing performance. - Data processing using the distribution processing method 5 includes: a step where a first channel processor among plural channel processors receives an I/O request from a host system; a step where a second channel processor is selected from the channel processors based on the access pattern of the host system, the second channel processor executing a part of the processing to respond to the I/O request; a step where the second channel processor checks whether there is a cache hit, and if there is a cache hit, it transfers the data from the cache memory to the buffer memory; and a step where the first channel processor processes the I/O request using the data transferred to the buffer memory.
- Distribution Processing Method 6
- Now, with reference to
FIG. 5 , I/O distribution processing method 6 performed between thechannel processors channel processor 15 receives a read access from ahost system 200 is explained. - The
channel processor 15 refers to load information written in thelocal memories channel processors - (1) IOPS: the number of executions of I/O processing per unit of time
- (2) Transfer rate: data transfer amount per unit of time
- (3) Response time: the time between a channel processor's receipt of an I/O request from a host system and it's response
- (4) IO processing time: the time required for the channel processor to perform the I/O processing
- (5) Distribution IO processing time: the time between a first channel processor's transmission of a distribution processing request message to a second channel processor and the second channel processor's completion of the processing
- (6) Distribution IO processing response time: the time between a channel processor's receipt of an I/O request and it's response
- (7) LM directory hit rate: probability of cache slot registration in an LM directory
- With the distribution processing method 6, it is possible not only to select the channel processor most appropriate as a distribution target based on the load information for the respective channel processors, but also to adjust the frequency of the distribution processing so that the processing performance of the entire channel control unit can be optimized.
- Data processing using the distribution processing method 6 includes: a step where a first channel processor among plural channel processors receives an I/O request from a host system; a step where a second channel processor is selected from the channel processors based on the load information of the respective channel processors, the second channel processor executing a part of the processing to respond to the I/O request; a step where the second channel processor checks whether there is a cache hit, and if there is a cache hit, it transfers the data from the cache memory to the buffer memory; and a step where the first channel processor processes the I/O request using the data transferred to the buffer memory.
- Each of the distribution processing methods explained above is executed by a computer program loaded in channel processors in channel control units. The computer program may also be stored on media instead of being provided in the channel processors as above. Preferable examples of the media include: optical media (media that can optically read data, such as CD-RAMs, CD-ROMs, DVD-RWs, DVD-ROMs, DVD-Rs, PD disks, MD disks, and MO disks); magnetic media (media that can magnetically read data, such as flexible disks, magnetic cards and magnetic tapes); and memory elements (such as semiconductor memory elements such as DRAM and ferroelectric memory elements such as FRAM).
Claims (6)
1. A storage controller comprising:
a plurality of channel processors for processing an I/O request from a host system;
a cache memory for temporarily storing, in cache slots, data that is read and written by the channel processors in response to I/O requests from the host system;
a local memory assigned to each of the channel processors for storing management information indicating whether or not data read and written by the relevant channel processor exists in the cache slot; and
a buffer memory for storing data transmitted between the channel processors,
wherein, when a first channel processor from among the channel processors receives an I/O request from the host system, it selects, based on the management information stored in the local memories of the respective channel processors, a second channel processor from among the channel processors, which is to execute a part of the processing to respond to the I/O request; the second channel processor checks whether there is a cache hit, and if there is a cache hit, it transfers the data from the cache memory to the buffer memory; and the first channel processor processes the I/O request using the data transferred to the buffer memory.
2. A storage controller comprising:
a plurality of channel processors for processing an I/O request from a host system;
a cache memory for temporarily storing, in cache slots, data that is read and written by the channel processors in response to I/O requests from the host system; and
a buffer memory for storing data transmitted between the channel processors,
wherein, when a first channel processor from among the channel processors receives an I/O request from the host system, it selects, based on the address of the data requested by the host system or the access pattern of the host system, a second channel processor from among the channel processors, which is to execute a part of processing to respond to the I/O request; the second channel processor checks whether there is a cache hit, and if there is a cache hit, it transfers the data from the cache memory to the buffer memory; and the first channel processor processes the I/O request using the data transferred to the buffer memory.
3. A data processing method comprising:
a step where a first channel processor from among a plurality of channel processors receives an I/O request from a host system;
a step where a second channel processor is selected from among the channel processors based on management information indicating whether data read and written by the channel processors exist in cache slots, the second channel processor being one to execute a part of processing to respond to the I/O request;
a step where the second channel processor checks whether there is a cache hit, and if there is a cache hit, it transfers the data from a cache memory to a buffer memory; and
a step where the first channel processor processes the I/O request using the data transferred to the buffer memory.
4. A data processing method comprising:
a step where a first channel processor from among a plurality of channel processors receives an I/O request from a host system;
a step where a second channel processor is selected from among the channel processors based on the address of data requested by the host system or the access pattern of the host system, the second channel processor being one to execute a part of processing to respond to the I/O request;
a step where the second channel processor checks whether there is a cache hit, and if there is a cache hit, it transfers the data from a cache memory to a buffer memory; and
a step where the first channel processor processes the I/O request using the data transferred to the buffer memory.
5. A computer program product having a computer program for making a storage controller execute the data processing according to claim 3 .
6. A computer program product having a computer program for making a storage controller execute the data processing according to claim 4.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/213,919 US7886114B2 (en) | 2005-09-14 | 2008-06-26 | Storage controller for cache slot management |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005-267184 | 2005-09-14 | ||
JP2005267184A JP2007079958A (en) | 2005-09-14 | 2005-09-14 | Storage controller, data processing method and computer program |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/213,919 Continuation US7886114B2 (en) | 2005-09-14 | 2008-06-26 | Storage controller for cache slot management |
Publications (1)
Publication Number | Publication Date |
---|---|
US20070061518A1 true US20070061518A1 (en) | 2007-03-15 |
Family
ID=37856649
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/266,178 Abandoned US20070061518A1 (en) | 2005-09-14 | 2005-11-04 | Storage controller, data processing method and computer program product |
US12/213,919 Expired - Fee Related US7886114B2 (en) | 2005-09-14 | 2008-06-26 | Storage controller for cache slot management |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/213,919 Expired - Fee Related US7886114B2 (en) | 2005-09-14 | 2008-06-26 | Storage controller for cache slot management |
Country Status (2)
Country | Link |
---|---|
US (2) | US20070061518A1 (en) |
JP (1) | JP2007079958A (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080184255A1 (en) * | 2007-01-25 | 2008-07-31 | Hitachi, Ltd. | Storage apparatus and load distribution method |
US20090265517A1 (en) * | 2008-04-18 | 2009-10-22 | Ncr Corporation | Scattered storage |
US20100083120A1 (en) * | 2008-09-30 | 2010-04-01 | Hitachi, Ltd. | Storage System, Control Program and Storage System Conttrol Method |
US20100251015A1 (en) * | 2009-03-27 | 2010-09-30 | Osanori Fukuyama | Disk array device, disk control device and load distribution method in disk array device |
WO2010131373A1 (en) * | 2009-05-15 | 2010-11-18 | Hitachi,Ltd. | Storage subsystem |
US9740404B2 (en) | 2013-05-31 | 2017-08-22 | Hitachi, Ltd. | Control apparatus and control method |
US10198373B2 (en) * | 2016-11-30 | 2019-02-05 | International Business Machines Corporation | Uniform memory access architecture |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2764440B1 (en) * | 2011-10-07 | 2021-02-17 | Hitachi, Ltd. | Storage system |
US10157060B2 (en) | 2011-12-29 | 2018-12-18 | Intel Corporation | Method, device and system for control signaling in a data path module of a data stream processing engine |
JP5250143B2 (en) * | 2012-07-23 | 2013-07-31 | 株式会社日立製作所 | Storage system and storage system control method |
EP2760181A1 (en) * | 2013-01-25 | 2014-07-30 | ARXCEO Corporation | Methods and systems for providing redundancy in data network communications |
US9396128B2 (en) | 2013-06-13 | 2016-07-19 | Samsung Electronics Co., Ltd. | System and method for dynamic allocation of unified cache to one or more logical units |
US10331583B2 (en) * | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
WO2015111135A1 (en) * | 2014-01-21 | 2015-07-30 | 株式会社日立製作所 | Storage system and processing method |
GB2529425A (en) | 2014-08-19 | 2016-02-24 | Ibm | Data processing apparatus and method |
US10402168B2 (en) | 2016-10-01 | 2019-09-03 | Intel Corporation | Low energy consumption mantissa multiplication for floating point multiply-add operations |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10572376B2 (en) | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
US10474375B2 (en) | 2016-12-30 | 2019-11-12 | Intel Corporation | Runtime address disambiguation in acceleration hardware |
US10416999B2 (en) | 2016-12-30 | 2019-09-17 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10445234B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features |
US10387319B2 (en) | 2017-07-01 | 2019-08-20 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features |
US10469397B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods with configurable network-based dataflow operator circuits |
US10515046B2 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10467183B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods for pipelined runtime services in a spatial array |
US10515049B1 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
US10445451B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features |
US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
US10496574B2 (en) | 2017-09-28 | 2019-12-03 | Intel Corporation | Processors, methods, and systems for a memory fence in a configurable spatial accelerator |
US10445098B2 (en) | 2017-09-30 | 2019-10-15 | Intel Corporation | Processors and methods for privileged configuration in a spatial array |
US10380063B2 (en) | 2017-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator |
US10565134B2 (en) | 2017-12-30 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for multicast in a configurable spatial accelerator |
US10417175B2 (en) | 2017-12-30 | 2019-09-17 | Intel Corporation | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator |
US10445250B2 (en) | 2017-12-30 | 2019-10-15 | Intel Corporation | Apparatus, methods, and systems with a configurable spatial accelerator |
US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator |
US11307873B2 (en) | 2018-04-03 | 2022-04-19 | Intel Corporation | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
US10459866B1 (en) | 2018-06-30 | 2019-10-29 | Intel Corporation | Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator |
US10853073B2 (en) | 2018-06-30 | 2020-12-01 | Intel Corporation | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator |
US10678724B1 (en) | 2018-12-29 | 2020-06-09 | Intel Corporation | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
US10965536B2 (en) | 2019-03-30 | 2021-03-30 | Intel Corporation | Methods and apparatus to insert buffers in a dataflow graph |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
US11029927B2 (en) | 2019-03-30 | 2021-06-08 | Intel Corporation | Methods and apparatus to detect and annotate backedges in a dataflow graph |
US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
US11907713B2 (en) | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
CN113360432B (en) * | 2020-03-03 | 2024-03-12 | 瑞昱半导体股份有限公司 | Data transmission system |
US12086080B2 (en) | 2020-09-26 | 2024-09-10 | Intel Corporation | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5325505A (en) * | 1991-09-04 | 1994-06-28 | Storage Technology Corporation | Intelligent storage manager for data storage apparatus having simulation capability |
US6622214B1 (en) * | 1996-09-16 | 2003-09-16 | Intel Corporation | System and method for maintaining memory coherency in a computer system having multiple system buses |
US20040006669A1 (en) * | 2002-07-05 | 2004-01-08 | Fujitsu Limited | Cache memory device and memory allocation method |
US20040039880A1 (en) * | 2002-08-23 | 2004-02-26 | Vladimir Pentkovski | Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system |
US20040059875A1 (en) * | 2002-09-20 | 2004-03-25 | Vivek Garg | Cache sharing for a chip multiprocessor or multiprocessing system |
US20050114615A1 (en) * | 2003-11-26 | 2005-05-26 | Hiroshi Ogasawara | Disk array system |
US7197547B1 (en) * | 1999-05-11 | 2007-03-27 | Andrew Karl Miller | Load balancing technique implemented in a data network device utilizing a data cache |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09160889A (en) | 1995-12-11 | 1997-06-20 | Hitachi Ltd | Control method for multiprocessor system |
JP4803983B2 (en) * | 2004-09-14 | 2011-10-26 | パナソニック株式会社 | Arithmetic processing unit |
-
2005
- 2005-09-14 JP JP2005267184A patent/JP2007079958A/en active Pending
- 2005-11-04 US US11/266,178 patent/US20070061518A1/en not_active Abandoned
-
2008
- 2008-06-26 US US12/213,919 patent/US7886114B2/en not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5325505A (en) * | 1991-09-04 | 1994-06-28 | Storage Technology Corporation | Intelligent storage manager for data storage apparatus having simulation capability |
US6622214B1 (en) * | 1996-09-16 | 2003-09-16 | Intel Corporation | System and method for maintaining memory coherency in a computer system having multiple system buses |
US7197547B1 (en) * | 1999-05-11 | 2007-03-27 | Andrew Karl Miller | Load balancing technique implemented in a data network device utilizing a data cache |
US20040006669A1 (en) * | 2002-07-05 | 2004-01-08 | Fujitsu Limited | Cache memory device and memory allocation method |
US20040039880A1 (en) * | 2002-08-23 | 2004-02-26 | Vladimir Pentkovski | Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system |
US20040059875A1 (en) * | 2002-09-20 | 2004-03-25 | Vivek Garg | Cache sharing for a chip multiprocessor or multiprocessing system |
US20050114615A1 (en) * | 2003-11-26 | 2005-05-26 | Hiroshi Ogasawara | Disk array system |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8863145B2 (en) | 2007-01-25 | 2014-10-14 | Hitachi, Ltd. | Storage apparatus and load distribution method |
US20080184255A1 (en) * | 2007-01-25 | 2008-07-31 | Hitachi, Ltd. | Storage apparatus and load distribution method |
US8161490B2 (en) * | 2007-01-25 | 2012-04-17 | Hitachi, Ltd. | Storage apparatus and load distribution method |
US20090265517A1 (en) * | 2008-04-18 | 2009-10-22 | Ncr Corporation | Scattered storage |
US10642692B2 (en) * | 2008-04-18 | 2020-05-05 | Ncr Corporation | System of method of storing data in a self-service terminal |
US20100083120A1 (en) * | 2008-09-30 | 2010-04-01 | Hitachi, Ltd. | Storage System, Control Program and Storage System Conttrol Method |
US8484424B2 (en) | 2008-09-30 | 2013-07-09 | Hitachi, Ltd. | Storage system, control program and storage system control method |
US8656119B2 (en) | 2008-09-30 | 2014-02-18 | Hitachi, Ltd. | Storage system, control program and storage system control method |
US20100251015A1 (en) * | 2009-03-27 | 2010-09-30 | Osanori Fukuyama | Disk array device, disk control device and load distribution method in disk array device |
US8356205B2 (en) * | 2009-03-27 | 2013-01-15 | Nec Corporation | Disk array device, disk control device and load distribution method in disk array device |
WO2010131373A1 (en) * | 2009-05-15 | 2010-11-18 | Hitachi,Ltd. | Storage subsystem |
US8954666B2 (en) * | 2009-05-15 | 2015-02-10 | Hitachi, Ltd. | Storage subsystem |
US20110153954A1 (en) * | 2009-05-15 | 2011-06-23 | Hitachi, Ltd. | Storage subsystem |
US9740404B2 (en) | 2013-05-31 | 2017-08-22 | Hitachi, Ltd. | Control apparatus and control method |
US10198373B2 (en) * | 2016-11-30 | 2019-02-05 | International Business Machines Corporation | Uniform memory access architecture |
US10599590B2 (en) | 2016-11-30 | 2020-03-24 | International Business Machines Corporation | Uniform memory access architecture |
Also Published As
Publication number | Publication date |
---|---|
US20080270689A1 (en) | 2008-10-30 |
JP2007079958A (en) | 2007-03-29 |
US7886114B2 (en) | 2011-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7886114B2 (en) | Storage controller for cache slot management | |
US7555599B2 (en) | System and method of mirrored RAID array write management | |
US6968425B2 (en) | Computer systems, disk systems, and method for controlling disk cache | |
US8099551B2 (en) | Storage device controller with a plurality of I/O processors requesting data from a plurality of stripe units of a logical volume | |
US6965979B2 (en) | Methods and systems of host caching | |
EP1837751B1 (en) | Storage system, storage extent release method and storage apparatus | |
US8135905B2 (en) | Storage system and power consumption reduction method for switching on/off the power of disk devices associated with logical units in groups configured from the logical units | |
US7660946B2 (en) | Storage control system and storage control method | |
US10372345B1 (en) | High performance logical device | |
US7188166B2 (en) | Storage system, storage control device, and control method for storage system | |
KR20120050891A (en) | Latency reduction associated with a response to a request in a storage system | |
US7774571B2 (en) | Resource allocation unit queue | |
US9619285B2 (en) | Managing operation requests using different resources | |
JP2010049502A (en) | Storage subsystem and storage system having the same | |
US8799573B2 (en) | Storage system and its logical unit management method | |
US20090228672A1 (en) | Remote copy system and check method | |
US7437511B1 (en) | Secondary level cache for storage area networks | |
JP2009295045A (en) | Storage system, storage subsystem and storage control method | |
US8285943B2 (en) | Storage control apparatus and method of controlling storage control apparatus | |
US20160019145A1 (en) | Storage system and cache control method | |
US10235053B1 (en) | Method and system for using host driver for flexible allocation fast-sideways data movements | |
US7694079B2 (en) | Tagged sequential read operations | |
US11467930B2 (en) | Distributed failover of a back-end storage director | |
JP2005346426A (en) | Data sharing disk device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: HITACHI, LTD., JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GOTOH, YOUICHI;REEL/FRAME:018349/0828 Effective date: 20051022 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |