Input/output device managed timer process
Granted 15 Jul 2003 · 2 office actions
Current assignee: Hewlett Packard Enterprise Development LP · originally SILICON GRAPHICS, INC.
Law firm: Law firm · Log in to unlock
Attorney: Attorney · Log in to unlock
Inventors: Gregory L. Chesson · Examiner: Scott Baderman · AU 2184 · TC 2100
Life of the application
21 dated eventsAbstract
A system and method thereof for monitoring elapsed time for a transaction. A computer system executes an application to initiate a transaction. An input/output device communicatively coupled to the computer system receives the transaction from the computer system. The input/output device is adapted to have a timer for measuring time until, for example, a response to the transaction is generated. The input/output device monitors the timer to identify when a time period allotted for the response to the transaction is exceeded (e.g., a timeout condition). The input/output device generates a signal to indicate the timeout condition.
Description
8 parts›FIELD OF THE INVENTION
The present invention relates to an input/output (I/O) device managed timeout process.
›BACKGROUND OF THE INVENTION
Computers are becoming ever more powerful, faster, and versatile. Correspondingly, the software being developed to harness the power of the newer computers are becoming more complex and sophisticated. With the advent of the Internet and vast improvements in the networking, telecommunications, and database fields, computer software is becoming even larger and more complex. For instance, an operating system can multi-task several different software applications, each of which can have multiple tasks, processes, and threads all running at the same time. Furthermore, devices such as modems, network interface cards, scanners, printers, graphics subsystems, audio cards, digital cameras, hard disks, CD ROM drives, etc., greatly add to the software complexity of monitoring, instructing, and otherwise communicating with these additional devices.
The potential downside to these enhanced capabilities and devices is that software glitches may periodically occur. Even a relatively minor software error can crash the entire system, resulting in lengthy, aggravating, and costly downtimes. In worst case scenarios, software glitches might cause critical data to be lost or corrupted.
In an effort to improve the reliability of software, developers have commonly relied upon the use of timers. Typically, a timer is used to monitor certain events to ensure that they function properly. A timeout condition is set to expire after a certain amount of time has elapsed. For example, suppose that a certain task is initiated and it is expected to be completed after a certain period of time. A timer can be set to elapse after that period of time. If the task is successfully completed within the allotted time, the timeout is canceled. Otherwise, if there happens to be a malfunction, the elapsed time expires and a timeout condition is generated. Thereupon, the system now knows that an error has occurred.
At this point, there are several options: an error condition can be generated and reported to a human operator who may then take appropriate corrective action; a separate piece of software may be notified of the error and initiated to correct the error condition; or the original piece of software may be re-executed with the hope that it will properly function the second time around. Hence, rather than trusting that a job, process, activity, communication, or some other operation will finish successfully, a timer can be used to bound the operation at issue. This facilitates a smoother running system and improves overall system reliability.
For larger computer systems, timers can be implemented in hardware. A separate processor can be dedicated to handling timers and timeout conditions. However, larger computer systems are more expensive to design and manufacture. Consequently, timers are most often implemented in software—specifically, as part of the kernel facility of the computer's operating system (O/S), such as UNIX, Windows, NT, Linux, etc.
Unfortunately, timers have a fair degree of associated overhead. First, the timer has to be initiated. Next, the timer has to be monitored while it is running. If the task successfully completes, the timer has to be canceled. Otherwise, the operating system has to detect and respond to any potential timeouts.
The incremental cost of implementing a single timer is slight compared to the benefit attained. However, a single O/S can have many, multiple tasks running at any given time. This is especially the case with client/server, Internet/Web, and network/communications applications. The large number of activities, each of which may be covered by one or more timers, can dramatically impact and eventually overwhelm the computer's processing capability. Thus, computer system designers are faced with a dilemma: either pare back the number of timers and suffer the risk of potentially unstable software, or improve the overall reliability of the system by implementing more timers at the expense of degraded performance.
Accordingly, what is needed is a system or method for implementing timers such that timer overhead to the O/S is minimized, so that the robustness of a computer system is enhanced by implementing timers while the impact associated with operating these timers is substantially minimized. The present invention provides a novel solution to the above needs.
These and other objects and advantages of the present invention will become obvious to those of ordinary skill in the art after having read the following detailed description of the preferred embodiments which are illustrated in the various drawing figures.
›SUMMARY OF THE INVENTION
The present invention provides a novel solution for using timers in such a way that they can be implemented with minimal overhead to the O/S. With the present invention, the robustness of a computer system is enhanced by implementing timers while the impact associated with operating these timers is substantially minimized.
The present invention pertains to a system and method thereof managed by an input/output device for monitoring elapsed time for a transaction. In the present embodiment, a computer system executes an application to initiate a transaction. The input/output device is communicatively coupled to the computer system and receives the transaction from the computer system. The input/output device is adapted to have a timer for measuring time until, for example, a response to the transaction is generated. The input/output device cancels the timer provided a cancellation condition is satisfied and otherwise identifies a timeout condition.
In the present embodiment, the input/output device can have a plurality of timers that each monitor one of a plurality of multiple concurrent transactions.
In the present embodiment, the input/output device generates a signal to indicate the timeout condition. In one embodiment, the signal is sent from the input/output device to the computer system's operating system. In another embodiment, the transaction is sent from the application to the input/output system bypassing the computer system's operating system, and the signal from the input/output device is sent to the application also bypassing the operating system.
In one embodiment, the cancellation condition is a time period allotted for the response to the transaction. The input/output device cancels the timer provided the response to the transaction occurs within the time period allotted and identifies a timeout condition when the time period allotted is exceeded.
In one embodiment, the time period allotted for the response is specified in a control command associated with the transaction received by the input/output device from the computer system.
In one embodiment, an expected response to the transaction is specified. The input/output device uses the expected response to recognize the response to the transaction.
In one embodiment, the input/output device is a peripheral device (e.g., a graphics adapter, video adapter, etc.) that executes the transaction in response to the application. In another embodiment, the input/output device is a communication device (e.g., a network interface card, network adapter, etc.) that couples the computer system to an external device that executes the transaction in response to the application.
›BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention:
FIG. 1A is a block diagram of one embodiment of an input/output device and computer system in accordance with the present invention.
FIG. 1B is a block diagram of another embodiment of an input/output device and computer system in accordance with the present invention.
FIG. 2 illustrates data flow paths for transactions between an application and an input/output device in accordance with the present invention.
FIG. 3 is a flowchart of a process wherein a transaction is sent from an application to an input/output device in accordance with one embodiment of the present invention.
FIG. 4 is a flowchart of a process in which an input/output device receives a timed event from an application in accordance with one embodiment of the present invention.
›DETAILED DESCRIPTION · 1 of 4
A timer process managed by an input/output (I/O) device is described. Reference will now be made in detail to the preferred embodiments of the invention, examples of which are illustrated in the accompanying drawings. While the invention will be described in conjunction with the preferred embodiments, it will be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications and equivalents, which may be included within the spirit and scope of the invention as defined by the appended claims. Furthermore, in the following detailed description of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be obvious to one of ordinary skill in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the present invention.
Some portions of the detailed descriptions which follow are presented in terms of procedures, logic blocks, processing, and other symbolic representations of operations on data bits within a computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. In the present application, a procedure, logic block, process (e.g., the processes of FIGS. 3 and 4 ), or the like, is conceived to be a self-consistent sequence of steps or instructions leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, although not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as transactions, bits, values, elements, symbols, characters, fragments, pixels, or the like.
As used herein, a transaction refers to the transmission or receipt of data or other such message information. The transaction may consist of all data associated with a particular computer system operation (e.g., a request or command). A transaction may also consist of a block of data associated with a particular operation; for example, a transfer of data may be broken down into several blocks of data, each block transferred prior to the transfer of a subsequent block, and each block making up a transaction. A transaction may also consist of an operation or a sequence of operations, or a sequence of smaller transactions.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present invention, discussions utilizing terms such as “initiating,” “sending,” “activating,” “monitoring,” “generating,” or the like, refer to actions and processes of a computer system or similar electronic computing device. The computer system or similar electronic computing device manipulates and transforms data represented as physical (electronic) quantities within the computer system memories, registers or other such information storage, transmission or display devices. The present invention is well suited to the use of other computer systems.
FIGS. 1A and 1B show different embodiments of exemplary computer systems upon which the present invention may be practiced. In general, computer system 190 comprises a bus 100 for communicating information, a central processor 101 coupled with bus 100 for processing information and instructions, a random access memory 102 coupled with bus 100 for storing information and instructions for central processor 101 , a read-only memory 103 coupled with bus 100 for storing static information and instructions for central processor 101 , a data storage device 104 such as a magnetic or optical disk and disk drive coupled with bus 100 for storing information and instructions, an optional display device 105 coupled to bus 100 for displaying information to the computer user, an optional alphanumeric input device 106 including alphanumeric and function keys coupled to bus 100 for communicating information and command selections to central processor 101 , and an optional cursor control device 107 coupled to bus 100 for communicating user input information and command selections to central processor 101 . Computer system 190 is also coupled to an input/output (I/O) device 108 .
Optional display device 105 utilized with computer system 190 of the present invention may be a liquid crystal device, cathode ray tube, or other display device suitable for creating graphic images and alphanumeric characters recognizable to the user. Optional cursor control device 107 allows the computer user to dynamically signal the two-dimensional movement of a visible symbol (pointer) on a display screen of display device 105 . Many implementations of the cursor control device are known in the art including a trackball, mouse, joystick or special keys on alphanumeric input device 106 capable of signaling movement of a given direction or manner of displacement. It is to be appreciated that the cursor control device 107 also may be directed and/or activated via input from the keyboard using special keys and key sequence commands. Alternatively, the cursor may be directed and/or activated via input from a number of specially adapted cursor directing devices.
With reference to FIG. 1A, in one embodiment, I/O device 108 can be any of the various types of devices known in the art and used to communicatively couple computer system 190 to one or more external devices (not shown). In this embodiment, I/O device 108 is exemplified by a modem, a network interface card (NIC), a network adapter, or the like. The external device(s) can be another computer system (e.g., a server computer system), an audio device, a video device, or the like. Input/output device 108 may also incorporate a processor (not shown).
›DETAILED DESCRIPTION · 2 of 4
With reference to FIG. 1B, in another embodiment, I/O device 108 can be any of the various types of external (peripheral) devices known in the art and used with a computer system to implement an application initiated by the computer system. In this embodiment, I/O device 108 is a hardware device such as a graphics adapter, a video adapter, an audio device, a video device, or the like. It is appreciated that multiple and different types of I/O devices 108 can be coupled to computer system 190 and utilized in accordance with the present invention. Input/output device 108 may also incorporate a processor (not shown).
With reference to FIGS. 1A and 1B, in accordance with the present invention, input/output device. 108 incorporates timer 120 . It is appreciated that input/output device 108 can include more than one timer. In accordance with the present invention, timer 120 may be implemented as a hardware component within input/output device 108 . Timer 120 may also be implemented in software or firmware executed by input/output device 108 , or as a combination of software, firmware and hardware. The present embodiment of the present invention integrates the timer and its functions within the operational environment of an input/output device. Thus, in the present embodiment, the processing overhead is shifted from processor 101 to input/output device 108 , thereby reducing the processing overhead for computer system 190 . As will be seen from the discussion below, this can also reduce the overall amount of processing overhead associated with implementing timers and timeout conditions.
In the present embodiment, timer 120 is used to monitor the elapsed time beginning when a control command associated with a transaction is received by input/output device 108 (for those transactions that are to be timed). Input/output device 108 uses timer 120 to implement a process (e.g., processes 300 and 400 of FIGS. 3 and 4, respectively) for monitoring elapsed time until a timer cancellation condition is satisfied; for example, timer 120 measures time until a response to a transaction is generated. If the cancellation condition is satisfied before an allotted time period is exceeded, timer 120 is canceled; otherwise, a timeout condition is identified.
FIG. 2 illustrates data flow paths for transactions (e.g., including a control command) between application 210 (implemented on computer system 190 ) and input/output device 108 . One path that can be taken by a transaction is from application 210 through operating system (O/S) 220 to input/output device 108 . For example, application makes a system call to O/S 220 and communicates with a device driver, a protocol stack, a file system or the like.
A second path that can be taken by a transaction is to bypass O/S 220 and travel directly to input/output device 108 via a queue (e.g., “O/S bypass”). A queue is in place from application 210 to input/output device 108 , and a queue is in place from input/output device 108 to application 210 . The control surface of input/output device 108 is mapped into application 210 so that application 210 can control or program input/output device 108 directly, without a system call to O/S 220 . In turn, input/output device 108 responds directly to application 210 . O/S bypass is a technique known in the art in order to reduce latency, first used with graphics applications and extended to communications and networking applications. The present embodiment of the present invention is described primarily in the context of O/S bypass, although it is appreciated that the present invention is not limited to implementation with O/S bypass.
The control command associated with a transaction sent by application 210 to an I/O device (e.g., input/output device 108 ) triggers a timer in order to monitor and regulate the elapsed time allowed for the transaction; for example, the timer is used to limit the amount of time allotted for a response to a command. As described above, in accordance with the present invention, one or more timers (e.g., timer 120 ) are incorporated into input/output device 108 ; each timer monitors the elapsed time for a single transaction.
Input/output device 108 monitors each timer and generates a notification of a timeout condition when the time allocated for a response to a transaction is exceeded. In accordance with the present invention, a timeout condition is added to the list of events (e.g., read data, error, interrupt, etc.) that can be communicated by input/output device 108 to application 210 over the queue that is in place between input/output device 108 and application 210 . In one embodiment, the timeout condition is a command code sent from input/output device 108 to application 210 via the queue. In another embodiment, a transaction (e.g., a response) sent via the queue from input/output device 108 to application 210 contains a bit flag that is set to indicate a timeout condition. In one aspect of this other embodiment, the bit flag can be used to cause an interrupt in the operating system corresponding to the timeout condition. Thus, in accordance with the present invention, the application of interest (e.g., application 210 ) is directly notified of the timeout condition, and it is not necessary for the operating system to seek out which application is affected by the timeout condition. Hence, processing overhead previously associated with identifying which application is affected by a timeout condition can be reduced.
In one embodiment, what would constitute a response to a transaction can be specified to input/output device 108 either in the transaction or beforehand (in which case the expected response can be stored in input/output device 108 using a lookup table or various other means). When input/output device 108 recognizes the expected response, timer 120 is canceled. For example, if an output message of “thanks” should generate a response of “you're welcome,” then input/output device 108 would cancel timer 120 when the “you're welcome” message is recognized (and would initiate a timeout condition if the timer expires beforehand). In this manner, by using the response to cancel the timer, the processing overhead previously associated with canceling a timer can be reduced or eliminated.
›DETAILED DESCRIPTION · 3 of 4
FIG. 3 is a flowchart of a process 300 wherein a transaction (e.g., including a control command) is sent from an application (e.g., application 210 of FIG. 2) to input/output device 108 (FIG. 2) in accordance with one embodiment of the present invention.
With reference to FIGS. 2 and 3, in step 305 , a transaction is initiated by application 210 . In one embodiment, the transaction is flagged if it is a timed event (that is, an event for which a timer should be activated). In accordance with the present invention, the length of time before the timer expires (that is, for example, the time period allotted for a response to be sent to the transaction) is also specified, either in the transaction or in the control command.
In step 310 , the transaction is sent to input/output device 108 . In one embodiment, the O/S bypass technique is implemented, although it is appreciated that the present invention is not limited to implementation with O/S bypass.
In step 315 , in the present embodiment, input/output device 108 detects whether or not the transaction is a timed event. If not, a timer is not activated (step 320 ).
In step 325 , for a timed event, timer 120 is activated by the control command. In the present embodiment, timer 120 begins a countdown using the specified time period from step 305 .
In step 330 , the process is repeated for subsequent transactions. In accordance with the present invention, a plurality of different timers can be used for multiple concurrent transactions involving either the same application or different applications.
FIG. 4 is a flowchart of a process 400 in which input/output device 108 (FIG. 2) receives a timed event from an application (e.g., application 210 of FIG. 2) in accordance with one embodiment of the present invention.
With reference to FIGS. 2 and 4, in step 405 , a timed event (e.g., a transaction) is received by input/output device 108 and timer 120 is activated by the associated control command.
In step 410 , in the present embodiment, an expected response to the transaction is specified to input/output device 108 . It is appreciated that in another embodiment an expected response is not specified. In one embodiment, the expected response is communicated to input/output device 108 in the transaction (e.g., in the associated control command). In another embodiment, expected responses as a function of the type of transaction are specified beforehand and stored in input/output device 108 , for example, in a lookup table. It is appreciated that other embodiments may utilize other techniques for specifying and recognizing an expected response to a transaction.
If the expected response is recognized by input/output device 108 , then timer 120 is canceled (step 415 ) and, consequently, a timeout condition is not initiated. If an expected response is not recognized, then process 400 proceeds to step 420 .
In step 420 , if a timer cancellation condition is satisfied, then timer 120 is canceled (step 415 ) and a timeout condition is not initiated. In the present embodiment, the timer cancellation condition is an allotted time period for responding to a transaction. If the response is provided within the allotted time period, timer 120 is canceled. If the cancellation condition is not satisfied (e.g., if the allotted time period expires), then a timeout condition is identified by input/output device 108 (step 425 ).
Continuing with step 425 , in the present embodiment, input/output device generates a signal to indicate to application 210 that a timeout condition exists. In one embodiment, the signal can be a timeout command code indicating the timeout condition and initiating steps that are to be taken in response. For example, the command code may cause application 210 to re-execute the original transaction, or it may initiate another software element (e.g., another application) to rectify the timeout condition. In another embodiment, the signal can be a bit flag to alert application 210 or the operating system of the timeout condition. Application 210 or the operating system may then initiate remedial actions in response.
With O/S bypass, application 210 can be notified directly of the timeout condition by input/output device 108 via the queue between the device and the application. Without O/S bypass, the operating system is notified of the timeout condition; in turn, the operating system identifies the affected application and notifies the application of the timeout condition.
Thus, in accordance with the present invention, input/output device 108 is used to manage the timer and timer functions. Specifically, input/output device 108 integrated with timer 120 is used to recognize whether the timer should be activated, whether an expected response is received, and whether the allotted time period for the response is exceeded. Input/output device 108 is also used to cancel a timer, or identify a timeout condition and initiate certain actions in response. Thus, computer system 190 (specifically, processor 101 ) of FIG. 1 is required only to perform actions in response to a timeout condition. In other words, in accordance with the present invention, instead of managing timer functions for every timed transaction, the timer functions for computer system 190 are limited to responding only to those fraction of all transactions that result in a timeout condition (typically, this is a small percentage of the total transactions). Consequently, the processing overhead associated with managing timer and timeout functions can be reduced for computer system 190 by shifting this overhead to the input/output devices.
The input/output devices (e.g., input/output device 108 ), by virtue of the queues in place between each device and each application, are capable of efficiently communicating a timeout condition to the affected application, in particular in the case of O/S bypass. For example, a transaction is received by input/output device 108 over a queue from application 210 and timer 120 is activated. If a timeout condition exists, only the affected application (e.g., application 210 ) is notified via the queue between that application and input/output device 108 . Thus, processing overhead does not have to be expended to determine which application is affected. Therefore, in accordance with the present invention, the shift of processing overhead from computer system 190 to input/output device 108 not only can reduce the processing overhead of the computer system, but the overall processing overhead associated with the timer and timeout functions can be reduced by shifting these functions to the input/output devices.
›DETAILED DESCRIPTION · 4 of 4
In summary, the present invention provides a novel solution for using timers in such a way that they can be implemented with minimal overhead to the operating system. In accordance with the present invention, the robustness of a computer system is enhanced by implementing timers while the impact associated with operating these timers is substantially minimized.
The foregoing descriptions of specific embodiments of the present invention have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the Claims appended hereto and their equivalents.
Claims as granted
55 claimsLog in to read the claims of this application.
Log in to unlockClassifications
4 codes- G06F11/00
- G06F11/30
Claim changes
SoonSee which claims were amended, added or cancelled during examination, with every added and removed word marked.
The published claims of this application are not paired with the granted ones in what we hold.
File wrapper
See the full prosecution history — every USPTO and applicant action on this file, in order.
Log in to unlockDocuments
Log in to open the documents of this file: the application as filed, every office action and response, the notice of allowance.
Log in to unlockChain of title
See the full assignment history — every owner this patent has passed through, with recordation dates and reel/frame numbers.
Log in to unlock