US20070061518A1 - Storage controller, data processing method and computer program product - Google Patents

Storage controller, data processing method and computer program product Download PDF

Info

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
Application number
US11/266,178
Inventor
Youichi Gotoh
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Assigned to HITACHI, LTD. reassignment HITACHI, LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GOTOH, YOUICHI
Publication of US20070061518A1 publication Critical patent/US20070061518A1/en
Priority to US12/213,919 priority Critical patent/US7886114B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/314In 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

    CROSS REFERENCES TO RELATED APPLICATIONS
  • 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.
  • BACKGROUND OF THE INVENTION
  • 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.
  • SUMMARY OF THE INVENTION
  • 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.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • 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
  • DETAILED DESCRIPTION OF THE INVENTION
  • An embodiment of the present invention is described below with reference to the attached drawings.
  • 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.
  • Incidentally, 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).
  • 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.
  • 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.
  • Meanwhile, if a data input/output request 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.
  • If the read target data does not exist in the cache memory 130, 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 then 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.
  • As explained, 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.
  • 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-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. By operating the management terminal 160, 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). With the management terminal 160, it is also possible to check the operational condition of the storage system 600, specify faulty sections, and install operating systems run in the channel control units 110. These various settings and controls can be performed via a user interface provided in the management terminal 160.
  • 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. 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). Likewise, the channel processor 16 has a local memory (LM) 19 for storing LM directory 21.
  • 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. Likewise, 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.
  • 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. 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.
  • 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, 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 a host system 200 is explained below. 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.
  • If the slot number is not registered in the LM directory 20, 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.
  • If the slot number is not registered in the SM directory 121, the channel processor 15 requests staging of the data to the cache memory 130 by the relevant disk control unit 140. When the staging of the data to the cache slot 131 in the cache memory 130 is complete, 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.
  • Incidentally, when the channel processor 15 does not need the cache slot 131 anymore, it releases it from management by the LM 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 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. 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/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.
  • 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.
  • After the data transfer to the buffer memory 17 is completed, 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.
  • 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.
  • If the slot number is not registered in the LM directory 21, 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.
  • If the slot number is not registered in the SM directory 121, the channel processor 16 requests staging of the data to the cache memory 130 by the relevant disk control unit 140. When the staging of the data to the relevant cache slot 131 in the cache memory 130 is completed, 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.
  • Incidentally, after the channel processor 15 transmits the distribution processing request message to the channel processor 16, it may perform other processing (such as processing to respond to I/O requests transmitted from the host systems 200 in order). Although the above description is about the processing performed when the channel processor 15 receives a read access from a host system 200, when the channel processor 15 receives a write 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.
  • As explained, with the distribution processing method 1, because 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.
  • Distribution Processing Method 2
  • Now, with reference to FIGS. 4 and 5, I/O distribution processing method 2 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. 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. For ease of explanation, the Fibre channel control processors and the buffer memory are omitted. Incidentally, the channel processors 15, 16, 23, and 24 may sometimes be called CHP_A, CHP_B, CHP_C, and CHP_D respectively.
  • 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 the channel 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 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 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 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. 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 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. 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 the distribution processing method 1. The table 30 is stored in the local memory 18 of the channel 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/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.
  • Just as in the distribution processing method 2, 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 example explained now assumes that only 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.
  • 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 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.
  • Distribution Processing Method 4
  • Now, with reference to FIGS. 5 and 6, 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.
  • In the distribution processing method 4, 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. 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. When 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. Likewise, when 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. In this method, 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 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 the distribution 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 the channel processors 15, 16, 23 and 24 when the channel processor 15 receives a read access from a host system 200 is explained. Just as in the distribution processing method 2, 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.
  • With the distribution processing method 5, 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.
  • 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 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.
  • 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 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.
    • (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.
US11/266,178 2005-09-14 2005-11-04 Storage controller, data processing method and computer program product Abandoned US20070061518A1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (7)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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