System for dynamically determining the size and number of communication buffers based on communication parameters at the beginning of the reception of message
First Claim
1. In a computer system having a memory storage device, a bi-directional communications port used in asynchronous communications, and a processing circuit, a method of efficiently allocating memory space for transmit and receive buffers, said method comprising:
- dividing a "pool area" of memory elements within said memory storage device into a plurality of transmit buffers and receive buffers by;
(a) creating a plurality of transmit buffers in which the number of said transmit buffers and size of each of said transmit buffers is dependent upon the total available pool size at the beginning of the reception of an asynchronous message at said communications port; and
(b) creating a plurality of receive buffers in which the size of each of said receive buffers is dependent upon communications parameters, at the beginning of the reception of said message, relating to the type of communications link providing said message to said communications port, and dependent upon the total available pool size at the beginning of the reception of that message; and
in which the number of receive buffers created within said pool area is further dependent upon the total available pool size and the size of said receive buffers at the beginning of the reception of said message at said communications port.
1 Assignment
0 Petitions
Accused Products
Abstract
An improved communications buffer system is provided which dynamically allocates the size and number of buffers to optimally receive packets of communications data over a communications link, while efficiently using the amount of available memory so as to provide optimal throughput capability with respect to the allocated amount of memory. This buffer system is readily adaptable for infrared communications ports used on printers. Once a communications session has begun, the printer will obtain sufficient information to most effectively allocate the size and number of buffers. At the beginning of this procedure, the printer must first determine how much "free" memory is available in its "pool area" and then determine how best to divide up that pool area into both transmit and receive buffers. The size and number of transmit buffers is first determined, and this determination is made after considering how much pool area is available in the printer'"'"'s memory system at that moment. Once the size and number of transmit buffers has been determined, then the receive buffers are next configured. The first step is to perform a preliminary calculation to ensure that the receive buffer size is not set greater than the amount of data that can be received during the maximum turnaround time for this particular configuration between a host computer and the printer. After this has been determined, the receive buffer size is provisionally set to a power of 2, and the number of buffers is set equal to the remaining pool size divided by this receiver buffer size. After ensuring that there are at least a certain minimum number of receive buffers, then a "window size" is set to a certain maximum size, at least for infrared communications ports. Once the entire pool area has been allocated for these transmit and receive buffers, the communication session can begin between the host computer and the printer for communicating the actual print job data.
161 Citations
22 Claims
-
1. In a computer system having a memory storage device, a bi-directional communications port used in asynchronous communications, and a processing circuit, a method of efficiently allocating memory space for transmit and receive buffers, said method comprising:
- dividing a "pool area" of memory elements within said memory storage device into a plurality of transmit buffers and receive buffers by;
(a) creating a plurality of transmit buffers in which the number of said transmit buffers and size of each of said transmit buffers is dependent upon the total available pool size at the beginning of the reception of an asynchronous message at said communications port; and (b) creating a plurality of receive buffers in which the size of each of said receive buffers is dependent upon communications parameters, at the beginning of the reception of said message, relating to the type of communications link providing said message to said communications port, and dependent upon the total available pool size at the beginning of the reception of that message; and
in which the number of receive buffers created within said pool area is further dependent upon the total available pool size and the size of said receive buffers at the beginning of the reception of said message at said communications port. - View Dependent Claims (2, 3, 4, 5, 8, 9, 10, 11)
- dividing a "pool area" of memory elements within said memory storage device into a plurality of transmit buffers and receive buffers by;
-
6. In a computer system having a memory storage device, a bi-directional communications port, and a processing circuit, a method of efficiently allocating memory space for transmit and receive buffers, said method comprising:
- dividing a "pool area" of memory elements within said memory storage device into a plurality of transmit buffers and receive buffers by;
(a) creating a plurality of transmit buffers in which the number of said transmit buffers and size of each of said transmit buffers is dependent upon the total available pool size at the beginning of the reception of a message at said communications port; and (b) creating a plurality of receive buffers in which the size of each of said receive buffers is dependent upon communications parameters relating to the type of communications link providing said message to said communications port, and dependent upon the total available pool size at the beginning of the reception of that message; and
in which the number of receive buffers created within said pool area is further dependent upon the total available pool size and the size of said receive buffers at the beginning of the reception of said message at said communications port;(c) wherein the maximum transmit packet buffer size for the secondary is the minimum of; (i) {(maximum turnaround time of said communications link-minimum turnaround time of said infrared communications port of a transmitting device) * (transmission speed in bytes per millisecond)-number of BOF'"'"'s of said transmitting device}, and (ii) (maximum packet size of said transmitting device).
- dividing a "pool area" of memory elements within said memory storage device into a plurality of transmit buffers and receive buffers by;
-
7. In a computer system having a memory storage device, a bi-directional communications port, and a processing circuit, a method of efficiently allocating memory space for transmit and receive buffers, said method comprising:
- dividing a "pool area" of memory elements within said memory storage device into a plurality of transmit buffers and receive buffers by;
(a) creating a plurality of transmit buffers in which the number of said transmit buffers and size of each of said transmit buffers is dependent upon the total available pool size at the beginning of the reception of a message at said communications port; and (b) creating a plurality of receive buffers in which the size of each of said receive buffers is dependent upon communications parameters relating to the type of communications link providing said message to said communications port, and dependent upon the total available pool size at the beginning of the reception of that message; and
in which the number of receive buffers created within said pool area is further dependent upon the total available pool size and the size of said receive buffers at the beginning of the reception of said message at said communications port;(c) wherein the maximum useful size of said receive buffers is the minimum of; (i) {(maximum turnaround time of said communications link-minimum turnaround time of said infrared communications port of said printing apparatus) * (transmission speed in bytes per millisecond)-number of BOF'"'"'s of said printing apparatus}, and (ii) (maximum packet size of said printing apparatus).
- dividing a "pool area" of memory elements within said memory storage device into a plurality of transmit buffers and receive buffers by;
-
12. A computer system, comprising:
-
(a) a memory circuit, said memory circuit containing a "pool area" of memory elements, said pool area being divided into a plurality of transmit buffers and a plurality of receive buffers; (b) a bi-directional communications port that is in asynchronous communication with at least one external device and with said memory circuit, said communications port providing data from said at least one external device to said plurality of receive buffers, and providing data to said at least one external device from said plurality of transmit buffers; and (c) a processing circuit that is configured to control the flow of data between said memory circuit and said communications port, said processing circuit also being configured to determine the number and size of said plurality of transmit and receive buffers, wherein; the number of transmit buffers created within said pool area is dependent upon the total available pool size at the beginning of the reception of an asynchronous message at said communications port; the size of each of said receive buffers is dependent upon communications parameters, at the beginning of the reception of said message, relating to the type of communications link providing said message to said communications port, and dependent upon the total available pool size at the beginning of the reception of that message; and the number of receive buffers created within said pool area is further dependent upon the total available pool size and the size of said receive buffers at the beginning of the reception of said message at said communications port. - View Dependent Claims (13, 14, 15, 16, 19, 20, 21, 22)
-
-
17. A computer system, comprising:
-
(a) a memory circuit, said memory circuit containing a "pool area" of memory elements, said pool area being divided into a plurality of transmit buffers and a plurality of receive buffers; (b) a bi-directional communications port that is in communication with at least one external device and with said memory circuit, said communications port providing data from said at least one external device to said plurality of receive buffers, and providing data to said at least one external device from said plurality of transmit buffers; and (c) a processing circuit that is configured to control the flow of data between said memory circuit and said communications port, said processing circuit also being configured to determine the number and size of said plurality of transmit and receive buffers, wherein; the number of transmit buffers created within said pool area is dependent upon the total available pool size at the beginning of the reception of a message at said communications port; the size of each of said receive buffers is dependent upon communications parameters relating to the type of communications link providing said message to said communications port, and dependent upon the total available pool size at the beginning of the reception of that message; the number of receive buffers created within said pool area is further dependent upon the total available pool size and the size of said receive buffers at the beginning of the reception of said message at said communications port; and the maximum transmit packet buffer size for the secondary is the minimum of; (i) {(maximum turnaround time of said communications link-minimum turnaround time of said infrared communications port of a transmitting device * (transmission speed in bytes per millisecond)-number of BOF'"'"'s of said transmitting device}, and (ii) (maximum packet size of said transmitting device).
-
-
18. A computer system, comprising:
-
(a) a memory circuit, said memory circuit containing a "pool area" of memory elements, said pool area being divided into a plurality of transmit buffers and a plurality of receive buffers; (b) a bi-directional communications port that is in communication with at least one external device and with said memory circuit, said communications port providing data from said at least one external device to said plurality of receive buffers, and providing data to said at least one external device from said plurality of transmit buffers; and (c) a processing circuit that is configured to control the flow of data between said memory circuit and said communications port, said processing circuit also being configured to determine the number and size of said plurality of transmit and receive buffers, wherein; the number of transmit buffers created within said pool area is dependent upon the total available pool size at the beginning of the reception of a message at said communications port; the size of each of said receive buffers is dependent upon communications parameters relating to the type of communications link providing said message to said communications port, and dependent upon the total available pool size at the beginning of the reception of that message; the number of receive buffers created within said pool area is further dependent upon the total available pool size and the size of said receive buffers at the beginning of the reception of said message at said communications port; and the maximum useful size of said receive buffers is the minimum of; (i) {(maximum turnaround time of said communications link-minimum turnaround time of said infrared communications port of said printing apparatus) * (transmission speed in bytes per millisecond)-number of BOF'"'"'s of said printing apparatus}, and (ii) (maximum packet size of said printing apparatus).
-
Specification