Information
-
Patent Grant
-
6260126
-
Patent Number
6,260,126
-
Date Filed
Friday, June 5, 199828 years ago
-
Date Issued
Tuesday, July 10, 200125 years ago
-
Inventors
-
Original Assignees
-
Examiners
Agents
- Ohlandt, Greeley, Ruggiero & Perle, LLP
- Krall Esq.; Noreen
-
CPC
-
US Classifications
Field of Search
US
- 711 140
- 711 154
- 711 167
- 711 169
-
International Classifications
-
Abstract
The invention implements a method for enabling overlapped performance of data processing actions during data transfers between a DSS and a host processor. The DSS includes a state queue which holds a plurality of states, each state comprising a self-contained procedure which, upon execution, determines a readiness to execute of an associated task. The method initially determines an amount of available time during a data transfer wherein a front-end processor of the DSS would otherwise be idle. The method then causes the front-end processor to extract and execute a first state from the state queue during the data transfer, if available time during the data transfer exceeds or is equal to an estimated execution time of the first state. Then, if a task associated with the first state is found to be ready to execute, that task is listed on a task work queue for execution subsequent to the data transfer. If, after execution of the first state, additional time remains, further states may be executed, in each instance, however, care being taken to assure that the front-end processor is ready to accommodate a new input/output operation when the current input/output operation ends.
Description
FIELD OF THE INVENTION
This invention relates to data storage subsystems and, more particularly, to a method and apparatus for enabling a data storage subsystem to perform housekeeping data processing functions during an input/output data transfer.
BACKGROUND OF THE INVENTION
Currently, data storage subsystems (DSSs) are configured as arrays of disk drives which provide high capacity storage for one or more attached host processors. Each host processor is coupled to the DSS via a high capacity communication channel and a dedicated front-end processor at the DSS. The front-end processor performs the command and protocol processing to facilitate the data transfers. However, when the actual data transfer occurs, it often by-passes the front-end processor and is performed as a “direct memory access” (DMA). Under such circumstances, the input data flows directly from the host processor to a cache memory in the DSS or from the cache memory in the DSS to the host processor, in both cases bypassing any buffering by the front-end processor. During a DMA, the front end processor is idle.
The prior art has suggested that such front end processors be applied to other functions during a DMA input/output data transfer action. U.S. Pat. No. 4,400,772 to Broyles et al., entitled “Method and Apparatus for Direct Memory Access in a Data Processing System” suggests that during a DMA, the central processing unit be placed in an idle state, without disturbing the central processing unit registers. This enables the central processing unit to then carry out secondary functions. One such suggested secondary function is to continue the refreshing of dynamic memory used in the system.
When a DSS processor, in a system such as described above by Broyles et al. remains idle, typically, the operating system relinquishes control of the DSS processor and makes it available for a new task. However, there is no guarantee how long the new task will take to execute. In such a case, if the DSS processor is occupied with the new task and the host processor's input/output operation finishes, the system remains in a wait state until the DSS processor again becomes available to perform an input/output function. This action may slow the system's primary function, i.e., input/output of data from/to the host processor. Only when the DSS processor becomes available to process the necessary command and interface data can an input/output action be accommodated.
Accordingly, it is an object of this invention to provide a method and apparatus for control of a DSS which enables a front end processor to be utilized for other tasks during an input/output data transfer.
It is another object of this invention to assure that the front-end processor of a DSS is available for use with an input/output action at the end of an input/output data transfer, irrespective of what other tasks have been assigned to it to be carried out.
SUMMARY OF THE INVENTION
The invention implements a method for enabling overlapped performance of data processing actions during data transfers between a DSS and a host processor. The DSS includes a state queue which holds a plurality of states, each state comprising a self-contained procedure which, upon execution, determines a readiness to execute of an associated task. The method initially determines an amount of available time during a data transfer wherein a front-end processor of the DSS would otherwise be idle. The method then causes the front-end processor to extract and execute a first state from the state queue during the data transfer, if available time during the data transfer exceeds or is equal to an estimated execution time of the first state. Then, if a task associated with the first state is found to be ready to execute, that task is listed on a task work queue for execution subsequent to the data transfer. If, after execution of the first state, additional time remains, further states may be executed, in each instance, however, care being taken to assure that the front-end processor is ready to accommodate a new input/output operation when the current input/output operation ends.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1
is a high level block diagram of a DSS adapted to perform the invention.
FIG. 2
schematically illustrates a state entry in a state queue.
FIG. 3
schematically illustrates a state queue.
FIG. 4
schematically illustrates a work queue that is maintained by the front-end processor of FIG.
1
.
FIGS. 5 and 6
comprise a logical flow diagram illustrating the method of the invention.
DETAILED DESCRIPTION OF THE INVENTION
Referring to
FIG. 1
, DSS
10
includes a plurality of disk drive units
14
,
16
, etc. which are coupled to a bus system
18
via device controllers
20
,
22
, respectively. The front end of DSS
10
comprises a plurality of host director processors
24
,
26
each of which is, respectively, coupled to a host processor. Host director processors
24
are, in turn, coupled via a bus
28
to a controller
30
. Controller
30
is coupled between buses
18
and
28
and controls input and output of data from a cache memory
32
.
Each host director processor
24
,
26
, . . . etc. includes a state execution procedure which, in conjunction with the associated host director processor, implements the invention hereof. Each host director processor further includes a table memory
34
, within which two queues are maintained, a state queue
36
and a work queue
38
.
As used herein, a “state” is a self-contained procedure which enables determination of the readiness to execute of an associated task within DSS
10
. As an example, a state may be a procedure which checks to see if the following functions are ready to execute: a periodic determination of “time-out” checks; a check for missing interrupts, logical device disable polling, etc. More precisely, a state procedure determines if a task is ready to run and, if yes, places the task on work queue
38
, to be described in detail below.
A state procedure is one, by definition, which can be performed by a host director processor
24
,
26
, during an input/output data transfer. More precisely, a state procedure is one which can be executed when a DMA data transfer is in process, either from or to a host processor. Note, that while not shown in
FIG. 1
, a DMA transfer of data between cache memory
32
and a host processor is not buffered by an intermediate host director processor
24
,
26
, but rather is fed directly to/from cache memory
32
. Accordingly, the respective host director processor is otherwise idle under these conditions.
As shown in
FIG. 3
, each state queue
36
comprises a list of state procedures
40
,
42
, with one or more interspersed “set time stamp” procedures
44
. When a “set time stamp” procedure
44
reaches the top of a state queue
36
and is executed, it causes entry into a register (not shown) of a current machine time “Ts”. As will be hereafter understood, time stamp value “Ts” is utilized by a “time out” task
46
in a work queue
38
(see
FIG. 4
) to determine when all states in state queue
36
must be executed, irrespective of a pending input/output request from a host processor. A set time stamp task is never removed from state queue
36
, but rather recirculates thereon to assure that a set time stamp action is periodically executed.
Each work queue
38
further includes a series of tasks
48
,
50
, etc. which have been found ready to execute as a result of execution of an associated state in state queue
36
. Time out task
46
is never removed from work queue
38
, but rather recirculates thereon to assure that a time out function is periodically executed.
FIG. 2
illustrates the data values present in a state entry on a state queue
36
. Each state entry includes a pointer to a next state, a pointer to a previous state, and an estimated worst case execution time for the particular state procedure. In general, the worst case execution time denotes the maximum possible time which the execution of the specific state procedure can consume. Clearly, the execution of the state can consume less time than the worst case value. Finally, each state entry includes a substate value which defines further parameters that are to be utilized by the state procedure during its execution, e.g., a logical path to be followed, a logical device to be accessed, etc.
Turning now to
FIGS. 5 and 6
, the method of the invention will be described, as executed under control of a state execution procedure
31
. Initially, assume that a host processor requests a data access input/output action from DSS
10
. In the known manner, the host processor provides the address of the data to be accessed and the number of bytes to be transferred (step
100
). Thereafter, DSS
10
is set up to perform a direct memory access (DMA) and commences the DMA (step
102
). Such set up involves the accessing of the specified data from a disk storage unit and the buffering thereof in-cache memory
32
, under control of controller
30
. Thereafter a DMA transfer occurs, between cache memory
32
and a host processor.
At this point, a host director processor (e.g.
24
) calculates a time dT available during the DMA input/output access action. Time dT is calculated based upon the “number of bytes” parameter received from the host processor (step
104
). Instead of remaining idle during the DMA action, host director processor
24
is actuated to select a top state from a state queue
36
in its table memory
34
(step
106
). Host director processor
24
then determines if the top state is a “set time stamp” state (decision step
108
). If yes, the time stamp parameter Ts is reset to the current time indicated by a time keeping function within host director processor
24
.
Next, a “worst case execution time” parameter is derived from the state entry in state queue
36
. That parameter is compared with the available time parameter dT calculated in step
104
to determine if it is less than or equal to dT (decision step
112
). If yes, it is concluded that sufficient time is available to execute the top state in state queue
36
. Note, that the time available parameter dT is not set equal to the total calculated time to be taken by the DMA access action but rather is set to a somewhat shorter time so as to enable host director processor
24
to be reset and ready to accept a next I/O access upon the completion of the current DMA access.
As shown in step
114
, host director processor then proceeds to execute the top state in state queue
36
. As above indicated, execution of a state involves the examination of a potential task to see if it is ready to execute. If the task is found ready to execute (i.e., a task “hit”) (decision step
116
), the task is placed on work queue
38
(step
118
). Thereafter, the procedure moves to step
120
, wherein host director processor
24
calculates the actual execution time “Te” taken by the just executed state. Then, a new available time parameter dT′ is calculated in accord with the expression: dT′=dT—Te (step
122
).
The procedure then recycles back to decision step
108
and if the top state is not a “set time stamp” task, moves to step
112
to determine if the top state in state queue
36
exhibits a worst case run time parameter that is less than or equal to dT′. If yes, the procedure moves down the right-hand series of steps from decision step
112
. If no, the procedure waits until the DMA action is finished (decision step
124
) and then determines if a host processor request for an input/output action is pending (decision step
126
). If yes, the procedure moves back to step
102
and recycles; and if no, the procedure moves to execute a task on work queue
38
(step
128
). Here it is to be understood that the DMA action has finished and that the execution of a task on work queue
38
results in overhead “expense” for DSS
10
.
Further details of the actions which occur during step
128
are shown in FIG.
6
. Initially, it is determined if the top task in work queue
38
is a “time out” task (decision step
130
). If yes, the procedure moves to decision step
132
where it is determined if the current machine time less Ts is greater than or equal to a threshold value. That threshold value sets a time duration, at the expiration of which, all states in state queue
36
must be executed to assure that the necessary housekeeping actions are carried out for DSS
10
.
If a no response issues from decisions step
132
, the procedure moves to step
138
where the task is executed. Thereafter, the procedure moves through decision step
140
where, if no input/output request is pending, the procedure recycles back to decision step
130
. Otherwise, the procedure moves back to step
102
(FIG.
5
).
Returning to decision step
132
, if it is determined that the calculation shown therein indicates that the threshold value has been equaled or exceeded, any input/output access request is placed on a queue (i.e., temporarily inhibited) (step
134
), as is any resulting calculation of the parameter dT. Then, host director processor
24
executes all states on state queue
36
(including the next listed set time stamp task) (step
136
) and places on work queue
38
any associated tasks found to be ready to execute. Thereafter, the procedure moves to decision step
140
and proceeds as shown. In such manner, it is assured that, periodically, all states are executed and any associated ready-to-execute tasks are queued for execution during overhead time of host director processor
24
.
Accordingly, it can be seen that DSS
10
is enabled to perform processing functions during an input/output access from a host processor, while assuring that the housekeeping tasks will not interfere with host processor access actions. Further, tasks which are found to be ready to execute are placed on a work queue to be immediately ready for execution during “overhead” time within DSS
10
. Further, DSS
10
is forced, periodically, to execute all states on state queue
36
so as to assure that all housekeeping actions are accomplished, at least periodically.
It should be understood that the foregoing description is only illustrative of the invention. Various alternatives and modifications can be devised by those skilled in the art without departing from the invention. For instance, while state execution procedure
31
is shown as already loaded in a host director processor, it may be configured on a storage media which is selectively loaded as needed. Accordingly, the present invention is intended to embrace all such alternatives, modifications and variances which fall within the scope of the appended claims.
Claims
- 1. A method for enabling overlapped performance of data processing actions during data transfers between a memory system and a host processor, said memory system including a memory processor which enables said data transfers and a state queue which holds a plurality of states, each state comprising a self contained procedure for determining a readiness to execute of an associated task, said method comprising:determining an amount of available time during a data transfer; causing said memory processor to execute a first state from said state queue during said data transfer if said available time exceeds or is equal to an estimated execution time of said first state; if a task associated with said first state is found to be ready to execute, listing said task on a task work queue for execution subsequent to said data transfer. after execution of said first state, determining remaining time from said available time; and causing said memory processor to execute a second state from said state queue during said data transfer if said remaining time exceeds or is equal to an estimated execution time of said second state, wherein said remaining time is determined by subtracting actual execution time for said first task from said available time.
- 2. The method as recited in claim 1, wherein said memory processor is inhibited from executing said first state during said data transfer if said available time is less than said estimated execution time of said first state.
- 3. The method as recited in claim 1, further comprising:subsequent to said data transfer, accessing a first task on said task work queue; and if said first task is a task requiring execution of states listed on said state queue, comparing a current machine time value and a time stamp and if a difference therebetween exceeds or equals a threshold value, inhibiting further data transfers and causing said memory processor to execute all states listed on said state queue.
- 4. The method as recited in claim 3, wherein said memory processor causes a set time stamp state to be listed on said state queue and said step for causing said memory processor to execute a first state, upon encountering said set time stamp state, resets a time value associated with said time stamp in response thereto.
- 5. A memory media including a procedure for enabling a memory processor to overlap performance of data processing actions during data transfers between a memory system and a host processor, said memory system including said memory processor and a state queue which holds a plurality of states, each state comprising a self contained procedure for determining a readiness to execute of an associated task, said memory media comprising:means for controlling said memory processor to determine an amount of available time during a data transfer; means for controlling said memory processor to cause said memory processor to execute a first state from said state queue during said data transfer if said available time exceeds or is equal to an estimated execution time of said first state; means for controlling said memory processor to list a task associated with said first state on a task work queue for execution subsequent to said data transfer, if a said task associated with said first state is found to be ready to execute. means for controlling said memory processor, after execution of said first state, to determine remaining time from said available time; and means for controlling said memory processor to cause said memory processor to execute a second state from said state queue during said data transfer if said remaining time exceeds or is equal to an estimated execution time of said second state wherein said remaining time is determined by subtracting actual execution time for said first task from said available time.
- 6. The memory media as recited in claim 5, wherein said means for controlling said memory processor to cause said memory processor to execute a first state inhibits said memory processor from executing said first state during said data transfer if said available time is less than said estimated execution time of said first state.
- 7. The memory media as recited in claim 5, further comprising:means for controlling said memory processor to access a first task on said task work queue subsequent to said data transfer; and means responsive to said first task being a task which requires execution of states listed on said state queue, for controlling said memory processor to compare a current machine time value and a time stamp and if a difference therebetween exceeds or equals a threshold value, for controlling said memory processor to inhibit further data transfers and to cause execution of all states listed on said state queue.
- 8. The memory media as recited in claim 7, wherein said memory processor causes a set time stamp state to be listed on said state queue and said means for controlling said memory processor to cause said memory processor to execute a first state, upon encountering said set time stamp state, resets a time value associated with said time stamp in response thereto.
US Referenced Citations (12)