Software architecture which maintains system performance while pipelining data to an MFP and uses shared DLL
First Claim
1. A method of apportioning system resources of a host between a first image data processing process and a second image data processing process in the host by a data storage and retrieval unit in the host, the host comprising a processor and a memory, the first process involving a transfer of image data from a first service to a second service, and the second process involving a transfer of image data from a third service to a fourth service, the method comprising the steps of:
- (a) the data storage and retrieval unit identifying an available number of face buffers in the memory, the face buffers each comprising a working region of the memory for temporarily storing a face of image data;
(b) the data storage and retrieval unit receiving a plurality of requests for face buffers in an unpredictable order, the requests comprising;
(i) the first service requesting a empty face buffer from the data storage and retrieval unit;
(ii) the second service requesting a filled face buffer from the data storage and retrieval unit;
(iii) the third service requesting a empty face buffer from the data storage and retrieval unit;
(iv) the fourth service requesting a filled face buffer from the data storage and retrieval unit;
(c) if one of the first service or the third service requests an empty face buffer, then;
(i) the data storage and retrieval unit identifying an available number of empty face buffers;
(ii) if at least one empty face buffer is available, then the data retrieval and storage unit returning a first location of one available empty face buffer to the requesting service for the requesting service to fill;
(iii) if no empty face buffers are available, then the data retrieval and storage unit delaying until at least one empty face buffer becomes available and then the data retrieval and storage unit returning a second location of one available empty face buffer to the requesting service for the requesting service to fill;
(d) if the second service requests a filled face buffer, then;
(i) the data storage and retrieval unit determining whether there are any face buffers filled by the first service;
(ii) if at least one face buffer filled by the first service is available, then returning a third location of one face buffer filled by the first service to the second service for the second service to use;
(iii) if no face buffers filled by the first service are available, then the data retrieval and storage unit delaying until at least one face buffer filled by the first service becomes available and then returning a fourth location of one face buffer filled by the first service to the second service for the second service to use;
(e) if the fourth service requests a filled face buffer, then;
(i) the data storage and retrieval unit determining whether there are any face buffers filled by the third service;
(ii) if at least one face buffer filled by the third service is available, then returning a fifth location of one face buffer filled by the third service to the fourth service for the fourth service to use;
(iii) if no face buffers filled by the third service are available, then the data retrieval and storage unit delaying until at least one face buffer filled by the third service becomes available and then returning a sixth location of one face buffer filled by the third service to the fourth service for the fourth service to use.
1 Assignment
0 Petitions
Accused Products
Abstract
A throttled data pipeline having a limited data-transfer rate for conserving system resources is disclosed. The throttled data pipeline of the present invention includes a source, a destination and a throttling device. The throttling device of the present invention is interposed between the source and the destination, and is adapted to limit data-transfer rates through the throttled data pipeline in accordance with predetermined criteria. By limiting data-transfer rates through the throttled data pipeline, system resources of the host computer, which would otherwise be wasted, are conserved. The throttled data pipeline of the present invention is configured to allow for fast and efficient transfers of data during low throughput operations when system resources are not significantly taxed. When high-throughput data transfers or other taxing operations which would otherwise detrimentally consume significant system resources are required of the throttled data pipeline, the data transfer rate of the throttled data pipeline is limited.
29 Citations
22 Claims
-
1. A method of apportioning system resources of a host between a first image data processing process and a second image data processing process in the host by a data storage and retrieval unit in the host, the host comprising a processor and a memory, the first process involving a transfer of image data from a first service to a second service, and the second process involving a transfer of image data from a third service to a fourth service, the method comprising the steps of:
-
(a) the data storage and retrieval unit identifying an available number of face buffers in the memory, the face buffers each comprising a working region of the memory for temporarily storing a face of image data;
(b) the data storage and retrieval unit receiving a plurality of requests for face buffers in an unpredictable order, the requests comprising;
(i) the first service requesting a empty face buffer from the data storage and retrieval unit;
(ii) the second service requesting a filled face buffer from the data storage and retrieval unit;
(iii) the third service requesting a empty face buffer from the data storage and retrieval unit;
(iv) the fourth service requesting a filled face buffer from the data storage and retrieval unit;
(c) if one of the first service or the third service requests an empty face buffer, then;
(i) the data storage and retrieval unit identifying an available number of empty face buffers;
(ii) if at least one empty face buffer is available, then the data retrieval and storage unit returning a first location of one available empty face buffer to the requesting service for the requesting service to fill;
(iii) if no empty face buffers are available, then the data retrieval and storage unit delaying until at least one empty face buffer becomes available and then the data retrieval and storage unit returning a second location of one available empty face buffer to the requesting service for the requesting service to fill;
(d) if the second service requests a filled face buffer, then;
(i) the data storage and retrieval unit determining whether there are any face buffers filled by the first service;
(ii) if at least one face buffer filled by the first service is available, then returning a third location of one face buffer filled by the first service to the second service for the second service to use;
(iii) if no face buffers filled by the first service are available, then the data retrieval and storage unit delaying until at least one face buffer filled by the first service becomes available and then returning a fourth location of one face buffer filled by the first service to the second service for the second service to use;
(e) if the fourth service requests a filled face buffer, then;
(i) the data storage and retrieval unit determining whether there are any face buffers filled by the third service;
(ii) if at least one face buffer filled by the third service is available, then returning a fifth location of one face buffer filled by the third service to the fourth service for the fourth service to use;
(iii) if no face buffers filled by the third service are available, then the data retrieval and storage unit delaying until at least one face buffer filled by the third service becomes available and then returning a sixth location of one face buffer filled by the third service to the fourth service for the fourth service to use. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
(a) the data storage and retrieval unit determining a percentage of system resources that are to be used by the host for supporting the first image data processing process and the second image data processing process; and
(b) the data storage and retrieval unit identifying an available number of face buffers to reflect the determined percentage of system resources that are to be used by the host for supporting the first image data processing process and the second image data processing process.
-
-
3. The method of apportioning system resources of a host between a first image data processing process and a second image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 1 further comprising the steps of:
-
a first general purpose computer workstation transferring image data to the host to be processed in the first image data processing process and the second image data processing process;
a second general purpose computer workstation transferring image data to the host to be processed in the first image data processing process and the second image data processing process.
-
-
4. The method of apportioning system resources of a host between a first image data processing process and a second image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 1 wherein:
-
the host includes a fax/modem and further is coupled to a multifunction peripheral through an interconnect; and
the third service comprises a facsimile send application and the fourth process comprises a facsimile subsystem.
-
-
5. The method of apportioning system resources of a host between a first image data processing process and a second image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 1 wherein:
-
the host is coupled to a printer; and
the first service comprises a PDL interpreter and the second service comprises a printer subsystem.
-
-
6. The method of apportioning system resources of a host between a first image data processing process and a second image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 1, wherein steps (b) through (d) are performed non-sequentially.
-
7. The method of apportioning system resources of a host between a first image data processing process and a second image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 1 wherein the data storage and retrieval unit returning locations of the available empty face buffers on a first come, first served basis.
-
8. The method of apportioning system resources of a host between a first image data processing process and a second image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 1, wherein the step of identifying an available number of face buffers comprises dynamically identifying an available number of face buffers based upon a percentage of system resources that are presently available at the time of the identification.
-
9. The method of apportioning system resources of a host between a first image data processing process and a second image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 1, wherein the step of identifying an available number of face buffers comprises:
-
(a) determining a first percentage of system resources that are to be used by the host for supporting the first image data processing process;
(b) determining a second percentage of system resources that are to be used by the host for supporting the second image data processing process;
(c) selecting a first available number of face buffers to reflect the determined percentage of system resources that are to be used by the host for supporting the first image data processing process; and
(d) selecting a second available number of face buffers to reflect the determined percentage of system resources that are to be used by the host for supporting the second image data processing process.
-
-
10. The method of apportioning system resources of a host between a first image data processing process and a second image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 1 comprising, after the second service uses the one face buffer,
(a) the second service notifies the data storage and retrieval unit that the one face buffer is empty; (b) the data storage and retrieval unit returning the location of the one face buffer to the first service if there is a pending request for an empty buffer.
-
11. A method of apportioning system resources of a host to a first image data processing process in the host by a data storage and retrieval unit in the host, the host comprising a processor and a memory, the first process involving a transfer of image data from a first originator service to a first recipient service, the method comprising the steps of:
-
(a) the data storage and retrieval unit identifying an available number of face buffers in the host'"'"'s memory, wherein a face buffer comprises a working region of memory for temporarily storing a face of image data;
(b) the data storage and retrieval unit receiving requests for face buffer from the services, wherein the first originator service requests empty face buffers and the first recipient service requests filled face buffers;
(c) the data storage and retrieval unit identifying an available number of face buffers as requested;
(d) if at least one face buffer of the requested type is available, then the data storage and retrieval unit returning a location of the one available face buffer to the requesting service;
(i) if the requesting service is the first originator service, then the first originator service filling the face buffer;
(ii) if the requesting service is the first recipient service, then the first recipient service emptying the face buffer;
(e) if the data storage and retrieval unit is unable to identify any face buffers of the requested type, then the data storage and retrieval unit delaying until at least one face buffer of the requested type becomes available, and then the data storage and retrieval unit returning a location of the face buffer to the requesting service. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
(a) when the first originator service or second recipient service requests an empty face buffer, the data storage and retrieval unit identifying any empty face buffer; - and
(b) when a recipient service requests a filled face buffer, the data storage and retrieval unit identifying only face buffers filled by the corresponding originator service.
-
-
14. The method of apportioning system resources of a host to a first image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 12, wherein the step of identifying available face buffers comprises:
-
(a) the data storage and retrieval unit determining a percentage of system resources that are to be used by the host for supporting each image data processing process which passes through the data storage and retrieval unit; and
(b) the data storage and retrieval unit identifying an available number of face buffers to reflect the determined percentage of system resources.
-
-
15. The method of apportioning system resources of a host to a first image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 12, wherein the delay comprises the data storage and retrieval unit setting a timer, awaiting expiration of the timer and rechecking for available face buffers of the requested type.
-
16. The method of apportioning system resources of a host to a first image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 12, wherein the delay comprises the data storage and retrieval unit placing the request in a queue, the data storage and retrieval unit servicing one or more other requests, and then the data storage and retrieval unit returning to service requests in the queue.
-
17. The method of apportioning system resources of a host to a first image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 16, the data storage and retrieval unit servicing the queue in accordance with prioritization rules.
-
18. The method of apportioning system resources of a host between a first image data processing process and a second image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 11, wherein the step of identifying an available number of face buffers comprises dynamically identifying an available number of face buffers based upon a percentage of system resources that are presently available at the time of the identification.
-
19. The method of apportioning system resources of a host to a first image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 11, wherein the step of identifying available face buffers comprises:
-
(a) the data storage and retrieval unit determining a percentage of system resources that are to be used by the host for supporting the first image data processing process which pass through the data storage and retrieval unit; and
(b) the data storage and retrieval unit identifying an available number of face buffers to reflect the determined percentage of system resources.
-
-
20. The method of apportioning system resources of a host to a first image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 11, wherein the services operate independently and request face buffers from the data storage and retrieval unit in an unpredictable order.
-
21. The method of apportioning system resources of a host to a first image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 11 wherein the method comprises a continuous loop.
-
22. The method of apportioning system resources of a host to a first image data processing process in the host by a data storage and retrieval unit in the host as set forth in claim 21 wherein the step of the data storage and retrieval unit identifying an available number of face buffers is only performed once.
Specification