1460708683-6d289913-b732-40b2-be42-9fff8032d571

1. A storage system management apparatus for managing a storage system, the storage system including a pool comprising storage tiers with respectively different performances, and a virtual logical volume formed by logical storage areas, to be provided to a host computer, and configured to allocate a logical storage area to an instructed prescribed storage tier of the storage tiers, the storage system management apparatus comprising:
a non-transient memory storing a storage management program, and
a processing unit configured to execute the storage management program to:
(1) collect prescribed information from the storage system;
(2) produce an evaluation of an access load for each of the logical storage areas based on the prescribed information;
(3) calculate allocation time information, which is a ratio between a time at which each of the logical storage areas is allocated to a highest performance storage tier and a prescribed allocation reference period;
(4) determine a storage tier for each of the logical storage areas based on the access load of the logical storage areas and the allocation time information; and
(5) provide a reallocation instruction to the storage system based on a result of the determining of the storage tier.
2. The storage system management apparatus according to claim 1, wherein the processing unit is further configured to execute the storage management program to:
select a monitoring mode from a plurality of monitoring modes; and
processing the evaluation of the access load based on the selected monitoring mode.
3. The storage system management apparatus according to claim 2, wherein the selection of the monitoring mode is processed based on the allocation time information.
4. The storage system management apparatus according to claim 3, wherein the selection of the monitoring mode is processed by comparing the allocation time information and preconfigured monitoring mode selection reference information.
5. The storage system management apparatus according to claim 4, wherein the selection of the monitoring mode comprises:
for each of the logical storage areas, selecting a candidate for the monitoring mode; and
selecting a most numerous monitoring mode from the candidates, as the selected monitoring mode.
6. The storage system management apparatus according to claim 4, wherein the selection of the monitoring mode comprises:
for each of the logical storage areas, selecting a candidate of the monitoring mode;
selecting a monitoring mode from candidates differing from a current monitoring mode, as the selected monitoring mode.
7. The storage system management apparatus according to claim 4, wherein the processing unit is further configured to execute the storage management program to:
(6) select a user-selected monitoring mode as the selected monitoring mode.
8. The storage system management apparatus according to claim 7, wherein the processing unit is further configured to execute the storage management program to:
(7) display the access load, the allocation time information, and the result of the determination in a setting screen for selection by a user.
9. The storage system monitoring apparatus according to claim 4, wherein the processing unit is further configured to execute the storage management program to:
(8) in the setting screen, accept the prescribed allocation reference period.
10. The storage system management apparatus according to claim 2, wherein the monitoring mode is selected for each of the virtual logical volumes.
11. The storage system management apparatus according to claim 2, wherein the selection of the monitoring mode is processed based on a type of an application program executed by the host computer.
12. The storage system monitoring apparatus according to claim 1, wherein:
the monitoring modes include at least a first monitoring mode and a second monitoring mode,
a second monitoring period of the second monitoring mode is set so as to be longer than a first monitoring period of the first monitoring mode, and
the evaluation is processed based on a number of access requests issued from the host computer to the virtual logical volume within a selected period which is the first monitoring period or the second monitoring period.
13. A computer system comprising:
a host computer;
a storage system which includes a pool comprising storage tiers with respectively different performances, and a virtual logical volume formed by logical storage areas, to be provided to a host computer, and which is configured to allocate a logical storage area to an instructed prescribed storage tier of the storage tiers; and
a storage system management apparatus configured to
(1) collect prescribed information from the storage system;
(2) produce an evaluation of an access load for each of the logical storage areas based on the prescribed information;
(3) calculate allocation time information, which is a ratio between a time at which each of the logical storage areas is allocated to a highest performance storage tier and a prescribed allocation reference period;
(4) determine a storage tier for each of the logical storage areas based on the access load of the logical storage areas and the allocation time information; and
(5) provide a reallocation instruction to the storage system based on a result of the determination.
14. The computer system according to claim 13, wherein the storage system management apparatus is configured to:
select a monitoring mode from a plurality of monitoring modes; and
process the evaluation based on the selected monitoring mode.
15. The computer system according to claim 14, wherein the selection of the monitoring mode is processed based on the allocation time information.
16. The storage system management apparatus according to claim 15, wherein the selection of the monitoring mode is processed by comparing the allocation time information and preconfigured monitoring mode selection reference information.
17. The storage system management apparatus according to claim 16, wherein the selection of the monitoring mode is processed by:
for each of the logical storage areas, selecting a candidate of the monitoring mode;
selecting a most numerous monitoring mode from candidates for the monitoring mode as the selected monitoring mode.
18. The storage system management apparatus according to claim 16, wherein the selection of the monitoring mode is processed by:
for each of the logical storage areas, selecting a candidate of the monitoring mode;
selecting the monitoring mode from candidates differing from a current monitoring mode, as the selected monitoring mode.
19. A storage system monitoring apparatus according to claim 16, wherein the processing unit is further configured to:
(8) in the setting screen, accept the prescribed allocation reference period.
20. The storage system management apparatus according to claim 14, wherein the selection of the monitoring mode is processed based on a type of an application program executed by the host computer.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. For use in a computer system comprising a plurality of master agents, a memory controller comprising:
a bus interface capable of being coupled to an internal bus of said computer system;
a memory interface capable of being coupled to a main memory of said computer system; and
a plurality of pre-fetch queues, wherein each pre-fetch queue is coupled to said bus interface to receive data from said bus interface, and wherein each pre-fetch queue is coupled to said memory interface to send data to said memory interface;
wherein said bus interface, upon identifying a pre-fetch request, is further capable of selecting a pre-fetch queue of said plurality of pre-fetch queues using a selection algorithm; and
wherein said bus interface is capable of sending said pre-fetch request to the selected pre-fetch queue.
2. A memory controller as claimed in claim 1 wherein each of said plurality of pre-fetch queues is assigned to a corresponding master agent of said plurality of master agents of said computer system.
3. A memory controller as claimed in claim 1 further comprising:
a write queue coupled to said bus interface and to said memory interface; and
a read line coupled to said bus interface and to said memory interface.
4. A memory controller as claimed in claim 3 wherein said bus interface is capable of receiving through said internal bus a memory request from a bus master associated with a master agent; and
wherein said bus interface is capable of determining whether said memory request is one of: a memory read request, a memory write request, or a pre-fetch request.
5. A memory controller as claimed in claim 4 wherein said bus interface, upon identifying a memory read request, is capable of determining if a pre-fetch flag is set in said memory read request, and in response to determining that said pre-fetch flag is set, is capable of sending said memory read request to a pre-fetch queue as a pre-fetch request.
6. A memory controller as claimed in claim 4 wherein said bus interface, upon identifying a memory read request, is capable of determining whether data requested by said memory read request is located in a pre-fetch queue of said plurality of pre-fetch queues, and in response to determining that said requested data is located in said pre-fetch queue, is capable of retrieving said requested data from said pre-fetch queue.
7. A memory controller as claimed in claim 6 wherein said bus interface, in response to determining that said requested data is not located in said pre-fetch queue, is capable of sending said memory read request to said memory interface; and
wherein said memory interface is capable of retrieving said requested data from said main memory.
8. A memory controller as claimed in claim 1 wherein said selected pre-fetch queue is capable of sending said pre-fetch request to said memory interface;
wherein said memory interface is capable of retrieving from said main memory data requested by said pre-fetch request; and
wherein said memory interface is capable of sending said data to said selected pre-fetch queue that requested said data.
9. A memory controller as claimed in claim 1 wherein said selection algorithm comprises:
selecting a pre-fetch queue that contains requested data from said plurality of pre-fetch queues;
selecting an empty pre-fetch queue if none of said plurality of pre-fetch queues contains said requested data;
selecting a pre-fetch queue that has gone the longest time without being accessed if there are no empty pre-fetch queues; and
discarding data from a pre-fetch queue that is selected.
10. A memory controller as claimed in claim 1 wherein one of said plurality of pre-fetch queues is dynamically assigned to one of a plurality of master agents of said computer system when a number of master agents of said computer system is greater than a number of pre-fetch queues in said memory controller.
11. A memory controller as claimed in claim 10 further comprising:
a write queue coupled to said bus interface and to said memory interface; and
a read line coupled to said bus interface and to said memory interface.
12. A memory controller as claimed in claim 11 wherein said bus interface is capable of receiving through said internal bus a memory request from a bus master associated with a master agent; and
wherein said bus interface is capable of determining whether said memory request is one of: a memory read request or a memory write request.
13. A memory controller as claimed in claim 12 wherein said bus interface, upon identifying a memory read request, is capable of determining if whether data requested by said memory read request is located in a pre-fetch queue of said plurality of pre-fetch queues, and in response to determining that said requested data is located in said pre-fetch queue, is capable of retrieving said requested data from said pre-fetch queue.
14. A memory controller as claimed in claim 13 wherein said bus interface, in response to determining that said requested data is not located in said pre-fetch queue, is capable of sending said memory read request to said memory interface; and
wherein said memory interface is capable of retrieving said requested data from said main memory.
15. A memory controller as claimed in claim 12 wherein said bus interface is capable of determining if a pre-fetch flag of a current memory read request is set, and in response to determining that said pre-fetch flag is set, is capable of sending said current memory read request to a current pre-fetch queue with a next address.
16. A memory controller as claimed in claim 14 wherein said bus interface is capable of determining if a pre-fetch flag of a current memory read request is set, and wherein said bus interface is capable of sending to said pre-fetch queue selected by said selection algorithm said current memory read request with a next address.
17. A memory controller as claimed in claim 12 wherein said memory interface in response to determining that there is a memory read request on said read line, is capable of determining whether there is data in said write queue that has a same address as said memory read request.
18. A memory controller as claimed in claim 17 wherein said memory interface in response to determining that there is data in said write queue that has a same address as said memory read request, is capable of writing said data in said write queue to said main memory, and
wherein said memory interface in response to determining that there is no data in said write queue that has a same address as said memory read request, is capable of accessing said main memory to obtain data to complete said memory read request.
19. A memory controller as claimed in claim 12 wherein said memory interface in response to determining that there is no memory read request on said read line, is capable of determining whether said write queue is empty; and
wherein in response to determining that said write queue is not empty, said memory interface is capable of writing data in said write queue to said main memory.
20. A memory controller as claimed in claim 19 wherein said memory interface in response to determining that said write queue is empty, is capable of determining whether there is a pending pre-fetch request in said plurality of pre-fetch queues; and
wherein said memory interface in response to determining that there is a pending pre-fetch request, is capable of determining whether there is a pre-fetch request located in a currently opened page of said main memory.
21. A memory controller as claimed in claim 20 wherein said memory interface in response to determining that there is a pre-fetch request located in a currently opened page of said main memory, is capable of accessing said main memory to obtain data to send to a matched pre-fetch queue; and
wherein said memory interface in response to determining that there is no pre-fetch request located in a currently opened page of said main memory, is capable of randomly selecting a pre-fetch queue and accessing said main memory to obtain data to send to said randomly selected pre-fetch queue.
22. A method for providing a memory controller in a computer system comprising a plurality of master agents, said method comprising:
providing a bus interface that is capable of being coupled to an internal bus;
providing a memory interface that is capable of being coupled to a main memory;
providing a plurality of pre-fetch queues, wherein each pre-fetch queue is coupled to said bus interface to receive data from said bus interface, and wherein each pre-fetch queue is coupled to said memory interface to send data to said memory interface;
receiving a memory request at the bus interface:
when said memory request is determined to be a pre-fetch request:
selecting a pre-fetch queue of said plurality of pre-fetch queues using a selection algorithm; and
sending said pre-fetch request to the selected pre-fetch queue.
23. A method as claimed in claim 22 further comprising:
assigning each of said plurality of pre-fetch queues to one master agent of said plurality of master agents of said computer system.
24. A method as claimed in claim 22 further comprising:
providing a write queue coupled to said bus interface and to said memory interface; and
providing a read line coupled to said bus interface and Co said memory interface.
25. A method as claimed in claim 22 further comprising:
when said memory request is determined to be a memory read request:
determining in said bus interface whether a pre-fetch flag is set in said memory read request;
in response to determining that said pre-fetch flag is set, sending said pre-fetch request to a pre-fetch queue as a pre-fetch request.
26. A method as claimed in claim 22 further comprising:
when said memory request is determined to be a memory read request:
determining in said bus interface whether data requested by said memory read request is located in a pre-fetch queue of said plurality of pre-fetch queues; and
in response to determining that said requested data is located in said pre-fetch queue, retrieving said requested data from said pre-fetch queue.
27. A method as claimed in claim 26 further comprising:
in response to determining that said requested data is not located in said pre-fetch queue, sending said memory read request to said memory interface; and
retrieving said requested data into said memory interface from said main memory.
28. A method as claimed in claim 22 further comprising:
when said memory request is determined to be a pre-fetch request:
sending said pre-fetch request from said selected pre-fetch queue to said memory interface;
retrieving in said memory interface from said main memory data requested by said pre-fetch request; and
sending said data from said memory interface to said selected pre-fetch queue that requested said data.
29. A method as claimed in claim 22 wherein said selection algorithm comprises:
selecting a pre-fetch queue that contains requested data from said plurality of pre-fetch queues;
selecting an empty pre-fetch queue if none of said plurality of pre-fetch queues contains said requested data;
selecting a pre-fetch queue that has gone the longest time without being accessed if there are no empty pre-fetch queues; and
discarding data from a pre-fetch queue that is selected.
30. A method as claimed in claim 22 further comprising:
determining in said bus interface that said memory request is a memory write request;
sending said memory write request from said bus interface to a write queue;
sending said memory write request from said write queue to said memory interface; and
sending said write request from said memory interface to said main memory.
31. A method as claimed in claim 22 further comprising:
dynamically assigning one of said plurality of pre-fetch queues to one of a plurality of master agents of said computer system when a number of master agents of said computer system is greater than a number of pre-fetch queues in said memory controller.
32. A method as claimed in claim 31 further comprising:
providing a write queue coupled to said bus interface and to said memory interface; and
providing a read line coupled to said bus interface and to said memory interface.
33. A method as claimed in claim 32 further comprising:
receiving in said bus interface through said internal bus a memory request from a bus master associated with a master agent; and
determining in said bus interface whether said memory request is one of: a memory read request and a memory write request.
34. A method as claimed in claim 33 further comprising:
determining in said bus interface whether data requested by said memory read request is located in a pre-fetch queue of said plurality of pre-fetch queues; and
in response to determining that said requested data is located in said pre-fetch queue, retrieving said requested data from said pre-fetch queue.
35. A method as claimed in claim 34 further comprising:
in response to determining that said requested data is not located in said pre-fetch queue, sending said memory read request to said memory interface; and
retrieving said requested data into said memory interface from said main memory.
36. A method as claimed in claim 33 further comprising:
determining in said bus interface whether a pre-fetch flag of a current memory read request is set; and
in response to determining that said pre-fetch flag is set, sending said current memory read request to a current pre-fetch queue with a next address.
37. A method as claimed in claim 35 further comprising:
determining in said bus interface whether a pre-fetch flag of a current memory read request is set;
in response to determining that said pre-fetch flag is set, selecting a pre-fetch queue of said plurality of pre-fetch queues using a selection algorithm; and
sending to said pre-fetch queue selected by said selection algorithm said current memory read request with a next address.
38. A method as claimed in claim 33 further comprising:
in response to determining in said memory interface that there is a memory read request on said read line, determining whether there is data in said write queue that has a same address as said memory read request.
39. A method as claimed in claim 38 further comprising:
in response to determining in said memory interface that there is data in said write queue that has a same address as said memory read request, writing said data in said write queue to said main memory; and
in response to determining in said memory interface that there is no data in said write queue that has a same address as said memory read request, accessing said main memory to obtain data to complete said memory read request.
40. A method as claimed in claim 33 further comprising:
in response to determining in said memory interface that there is no memory read request on said read line, determining whether said write queue is empty; and
in response to determining in said memory interface that said write queue is not empty, writing data in said write queue to said main memory.
41. A method as claimed in claim 40 further comprising:
in response to determining in said memory interface Chat said write queue is empty, determining whether there is a pending pre-fetch request in said plurality of pre-fetch queues; and
in response to determining in said memory interface that there is a pending pre-fetch request, determining whether there is a pre-fetch request located in a currently opened page of said main memory.
42. A method as claimed in claim 41 further comprising:
in response to determining in said memory interface that there is a pre-fetch request located in a currently opened page of said main memory, accessing said main memory to obtain data to send to a matched pre-fetch queue; and
in response to determining in said memory interface that there is no pre-fetch request located in a currently opened page of said main memory, randomly selecting a pre-fetch queue; and
accessing said main memory to obtain data to send to said randomly selected pre-fetch queue.
43. A memory controller comprising:
a bus interface capable of being coupled to an internal bus of said computer system;
a memory interface capable of being coupled to a main memory of said computer system; and
a plurality of pre-fetch queues, wherein each pre-fetch queue is coupled to said bus interface to receive data from said bus interface, and wherein each pre-fetch queue is coupled to said memory interface to send data to said memory interface;
wherein said bus interface, upon identifying a memory read request, is capable of determining if a pre-fetch flag is set in said memory read request, and in response to determining that said pre-fetch flag is set, is capable of sending said memory read request to a pre-fetch queue as a pre-fetch request.