System and method for equalizing data buffer storage and fetch rates of peripheral devices
First Claim
1. A computer system, comprising:
- a data buffer configured to store data, wherein a fraction of the data buffer contains unread data;
a central processing unit (CPU) operably coupled to the data buffer and configured to determine the fraction of the data buffer containing unread data and to produce a reload value in response to the fraction;
a first peripheral device operably coupled to the data buffer and to the CPU, wherein the first peripheral device is configured to produce a plurality of data prior to storing the plurality of data within the data buffer, and wherein the first peripheral device comprises a reload register, and wherein the rate at which the first peripheral device stores the data within the data buffer is dependent upon the contents of the reload register, and wherein the first peripheral device is configured to receive the reload value and to store the reload value within the reload register;
a second peripheral device operably coupled to the data buffer, wherein the second peripheral device is configured to fetch the data from the data buffer;
wherein the data buffer includes a read and write pointers, and wherein the write pointer is the address of the next available memory location within the data buffer for storing data, and wherein the read pointer is the address of the next memory location containing unread data within the data buffer; and
wherein the CPU modifies the write pointer to account for a portion of the plurality of data produced by the first peripheral device and not yet stored within the data buffer, thereby producing an adjusted write pointer.
10 Assignments
0 Petitions
Accused Products
Abstract
A system and method are presented for equalizing data buffer storage and fetch rates of peripheral devices. A computer system of the present invention includes a central processing unit (CPU), first and second peripheral devices, and a data buffer. The first peripheral device stores data within the data buffer, and the second peripheral device fetches data from the data buffer. A fraction of the data buffer contains unread data (i.e. data stored within the data buffer by the first peripheral device and not yet fetched by the second peripheral device). The first peripheral device includes a reload register, the contents of which determines the rate at which the first peripheral device stores data within the data buffer. The CPU produces a reload value, which is stored within the reload register, such that the rate at which the first peripheral device stores the data within the data buffer is made substantially equal to the rate at which the second peripheral device fetches the data from the data buffer. The data buffer is preferably operated a first-in-first-out manner, and includes a write pointer and a read pointer. The CPU preferably produces the reload value such that approximately half the memory locations within the data buffer contain unread data at any given time.
-
Citations
21 Claims
-
1. A computer system, comprising:
-
a data buffer configured to store data, wherein a fraction of the data buffer contains unread data; a central processing unit (CPU) operably coupled to the data buffer and configured to determine the fraction of the data buffer containing unread data and to produce a reload value in response to the fraction; a first peripheral device operably coupled to the data buffer and to the CPU, wherein the first peripheral device is configured to produce a plurality of data prior to storing the plurality of data within the data buffer, and wherein the first peripheral device comprises a reload register, and wherein the rate at which the first peripheral device stores the data within the data buffer is dependent upon the contents of the reload register, and wherein the first peripheral device is configured to receive the reload value and to store the reload value within the reload register; a second peripheral device operably coupled to the data buffer, wherein the second peripheral device is configured to fetch the data from the data buffer; wherein the data buffer includes a read and write pointers, and wherein the write pointer is the address of the next available memory location within the data buffer for storing data, and wherein the read pointer is the address of the next memory location containing unread data within the data buffer; and wherein the CPU modifies the write pointer to account for a portion of the plurality of data produced by the first peripheral device and not yet stored within the data buffer, thereby producing an adjusted write pointer. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A computer system, comprising:
-
a system memory configured to store data and comprising a data buffer, wherein a fraction of the data buffer contains unread data; an expansion bus adapted for coupling to one or more peripheral devices; a bus bridge coupled between the system memory and the expansion bus; a central processing unit (CPU) coupled to the bus bridge and configured to determine the fraction of the data buffer containing unread data and to produce a reload value in response to the fraction; a first peripheral device coupled to the expansion bus, wherein the first peripheral device is configured to produce a plurality of data prior to storing the plurality of data within the data buffer, and wherein the first peripheral device comprises a reload register, and wherein the rate at which the first peripheral device stores the data within the data buffer is dependent upon the contents of the reload register, and wherein the first peripheral device is configured to receive the reload value and to store the reload value within the reload register; a second peripheral device coupled to the bus bridge, wherein the second peripheral device is configured to fetch the data from the data buffer; wherein the data buffer includes a read and write pointers, and wherein the write pointer is the address of the next available memory location within the data buffer for storing data, and wherein the read pointer is the address of the next memory location containing unread data within the data buffer; and wherein the CPU modifies the write pointer to account for a portion of the plurality of data produced by the first peripheral device and not yet stored within the data buffer, thereby producing an adjusted write pointer. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A computer system, comprising:
-
a system memory configured to store data and comprising a data buffer, wherein a fraction of the data buffer contains unread data; an expansion bus adapted for coupling to one or more peripheral devices; a bus bridge coupled between the system memory and the expansion bus; a central processing unit (CPU) coupled to the bus bridge and configured to determine the fraction of the data buffer containing unread data and to produce a reload value in response to the fraction; a first peripheral device coupled to the expansion bus, wherein the first peripheral device is configured to produce a plurality of audio data prior to storing the plurality of audio data within the data buffer, and wherein the first peripheral device comprises; a divider circuit comprising; a reload register; and a counter coupled to the reload register and coupled to receive a master clock signal having a predetermined period, wherein the divider circuit is configured to produce a frame batch clock signal in response to the master clock signal and having a period dependent upon the contents of the reload register; and a signal processor coupled to receive the frame batch clock signal and configured to produce the plurality of audio data, wherein the signal processor initiates processing of a predetermined number of audio signal samples in response to the frame batch clock signal; a second peripheral device coupled to the bus bridge, wherein the second peripheral device is configured to fetch the data from the data buffer; wherein the data buffer includes a read and write pointers, and wherein the write pointer is the address of the next available memory location within the data buffer for storing data, and wherein the read pointer is the address of the next memory location containing unread data within the data buffer; and wherein the CPU modifies the write pointer to account for a portion of the plurality of data produced by the first peripheral device and not yet stored within the data buffer, thereby producing an adjusted write pointer. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A method for equalizing the rate at which a first peripheral device stores data within a data buffer and the rate at which a second peripheral device fetches the data from the data buffer, wherein the first peripheral device produces a plurality of data prior to storing the plurality of data within the data buffer, and wherein the data buffer comprises read and write pointers, the method comprising:
-
obtaining the values of the read and write pointers; computing an adjusted write pointer, wherein the adjusted write pointer value accounts for a portion of the plurality of data produced by the first peripheral device and not yet stored within the data buffer; determining the number of memory locations between the adjusted write pointer and the read pointer; using the number of memory locations between the adjusted write pointer and the read pointer to compute a reload value delta; adding the reload value delta to a current reload value to compute a new reload value; and storing the new reload value within a reload register of the first peripheral device. - View Dependent Claims (17, 18, 19, 20, 21)
-
Specification