Abstract:
A data transfer apparatus controls a data transfer speed between a transmitter and a receiver operating asynchronously of each other. The apparatus includes a data buffer for buffering data from the transmitter and an address register for indexing the data buffer. The apparatus further includes a stage register for indicating operation phases of data transfer to the receiver. The address register is updated when the stage register holds a predetermined value.

Description:
BACKGROUND OF THE INVENTION 
     The present invention relates to a data transfer apparatus, and more particularly to a data transfer apparatus which controls a data transfer speed between a transmitter and a receiver operating asynchronously of each other. 
     In a conventional data transfer scheme, the transmitter checks an acknowledge signal from the receiver to ensure a completion of a data transfer. When the speed of the receiver is lower than that of the transmitter, the transmitter temporarily stops sending the subsequent data until the receiver has completed the data reception, so that the data transfer is made at discrete time intervals. 
     This conventional data transfer scheme has such a problem that the transmitter must check the acknowledge signal from the receiver at each time of completion of a data transfer. Therefore, the data cannot be transferred at high speed. 
     SUMMARY OF THE INVENTION 
     In view of the foregoing problem of the conventional system, an object of the present invention is to provide a data transfer apparatus capable of transferring data at high speed without requiring any acknowledge signals from the receiver. 
     In a data transfer apparatus according to a first aspect of the present invention, the data transfer apparatus transfers data from a transmitter to a receiver fixedly in a predetermined time interval. 
     With the unique and unobvious structure of the present invention, the address for the data buffer is updated at predetermined time intervals so that the receiver can receive the data sufficiently fast. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The above-mentioned and other objects, features and advantages of this invention will become more apparent by reference to the following detailed description of the invention taken in conjunction with the accompanying drawings in which: 
     FIG. 1 is a block diagram showing the configuration of a computer system having an asynchronous data transfer apparatus according to an embodiment of the present invention; 
     FIG. 2 is a block diagram showing the configuration of an asynchronous data transfer apparatus according to a first embodiment of the present invention; 
     FIG. 3 is a block diagram showing the configuration of a data buffer and a data sensor in the asynchronous data transfer apparatus according to the first embodiment of the present invention; 
     FIG. 4 is a flowchart illustrating a transfer operation according to the first embodiment (as well as to a second embodiment discussed with regard to FIG. 6) of the data transfer apparatus according to the present invention; 
     FIG. 5 is a timing chart illustrating a transfer operation according to the first and second embodiments of the present invention; and 
     FIG. 6 is a block diagram showing the configuration of an asynchronous data transfer apparatus according to the second embodiment of the present invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     A data transfer apparatus in accordance with preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. 
     Referring to FIG. 1, a computer system has a main storage 100, a storage bus 150 coupled to the main storage 100, a processor 200, a system bus 250 coupled to the processor 200, a data transfer apparatus 300 according to the present invention which connects between the main storage 100 and the processor 200 and specifically between the storage bus 150 and the system bus 250, a diagnostic processor 400 coupled to the data transfer apparatus 300, and providing an input thereto. The data transfer apparatus 300 transfers data from the main storage 100 to the processor 200. 
     In this case, the main storage 100 is a transmitter, and the processor 200 is a receiver. After the processor 200 requests a memory access to the main storage 100, the main storage 100 sends data toward the processor 200. For brevity, the memory request access operation will not be described in detail. The data is transferred to the data transfer apparatus 300 through the storage bus 150. Thereafter, the data is transferred to the processor 200 through the system bus 250. The diagnostic processor 400 inputs system parameters (e.g., a data transfer speed) to the data transfer apparatus 300. 
     Referring to FIG. 2, the data transfer apparatus 300 has a speed register 312 and an initial value memory 311 indexed by the speed register 312. The speed register 312 receives an input from the diagnostic processor 400. The data transfer apparatus 300 also has a stage register 323, a decrementer 321 for the stage register 323, a 3-way selector 322 coupled to an input of the stage register 323, and a value detector 324 for receiving an output from the stage register 323. The 3-way selector 322 selects an output of the initial value memory 311, an output of the stage register 323, and an output of the decrementer 321 under control of the output of the stage register 323 and an output of a data sensor 350. 
     The data transfer apparatus 300 also has an address register 333, a 2-way selector 332 coupled to an input of the address register 333, and an incrementer 331, coupled to the selector 332, for incrementing the address register 333. The data transfer apparatus 300 also has a data buffer 340 which receives an input from the storage bus 150 and is indexed by the address register 333, a data register 345 for receiving an output from the data buffer 340, and the data sensor 350 for receiving an output from the data buffer 340 and which provides an input to the selector 322. 
     The data buffer 340 stores the data from the storage bus 150 asynchronously in a First-In First-Out (FIFO) scheme. A data read from the data buffer 340 is stored into the data register 345, and then is transferred to the system bus 250. This data is read from the word of the data buffer 340, which is indexed by the address held in the address register 333. 
     The address register 333 holds the address for the data buffer 340. The address register 333 may be incremented by the incrementer 331. The 2-way selector 332 selects one of an output of the address register 333 and an output of the incrementer 331 depending on a control signal from the value detector 324. The 2-way selector 332 receives the control signal from the value detector 324, which is based on the output of stage register 323. Thus, the incrementer 331, the 2-way selector 332 and the address register 333 in combination form an address counter for indexing the data buffer 340. 
     The value detector 324 sends the control signal which indicates the increment of the address register 333 when the stage register 323 holds a predetermined value (e.g., &#34;1&#34;). The stage register 323 holds a transfer stage which more specifically, indicates an operation phase of data transfer to the receiver. For example, if a data transfer needs three clock cycles, the transfer stage is counted down such as, for example, &#34;2&#34;, &#34;1&#34;, and &#34;0&#34;. 
     The stage register 323 may be decremented by the decrementer 321. The 3-way selector 322 selects one of an output of the decrementer 321, an output of the stage register 323, and an output of the initial value memory 311 depending on a control signal from data sensor 350 and an output from the stage register 323. Thus, the decrementer 321, the 3-way selector 322, the stage register 323 and the value detector 324 in combination form a phase counter for detecting a last phase of the transfer operation. 
     The initial value memory 311 stores initial values to be input to the stage register 323. The initial value memory 311 is indexed by the speed register 312. The speed register 312 holds a transfer speed ultimately to be used by the system bus 250. The speed register 312 may be set by the diagnostic processor 400 by an input therefrom. The data sensor 350 senses whether the data buffer 340 stores any data or not. 
     Referring to FIG. 3, each entry of the data buffer 340 has at least a data portion 341 and a valid bit portion 342. The valid bit portion 342 indicates whether the data exists or not. For example, the data 341 exists if the valid bit portion 342 is &#34;1&#34;. If the valid bit portion 342 is &#34;0&#34;, then no data 341 exists in that entry. Then, the data sensor 350 has a function of, for example, an OR gate as shown in FIG. 3. If an output of the data sensor 350 is &#34;1&#34;, it is determined that the data buffer 340 has some data. 
     Referring to FIG. 2, the 3-way selector 322 receives an output from the stage register 323 and an output from the data sensor 350 as control signals. If the output of the stage register 323 is other than &#34;0&#34;, the 3-way selector 322 selects the output of the decrementer 321. Thus, the stage register 323 is decremented. 
     If the output of the stage register 323 is &#34;0&#34; and the output of the data sensor 350 is &#34;0&#34;, the 3-way selector selects the output of the stage register 323. Thus, the content of the stage register 323 still remains as it is (e.g., it is not decremented). 
     If the output of the stage register 323 is &#34;0&#34; and the output of the data sensor 350 is &#34;1&#34;, the 3-way selector selects the output of the initial value memory 311. Thus, the stage register 323 is set to one of the initial values. 
     The initial values in the initial value memory 311 are chosen based on predetermined criteria according to the designer&#39;s constraints. Some exemplary criteria are shown below. 
     For example, a transfer clock cycle of the processor 200 is defined as &#34;P&#34;, and a clock cycle of the data transfer apparatus 300 is defined as &#34;A&#34;. A desirable initial value &#34;D&#34; is represented as &#34;A/P - 1&#34;. If the desirable initial value &#34;D&#34; is not found in the initial value memory 311, the least (or the lowest) value of candidate initial values that are greater than &#34;D&#34; should be selected preferably as the initial value &#34;I&#34;. 
     For example, if the transfer clock cycle of the processor 200 is &#34;40  ns!&#34; and the clock cycle of the data transfer apparatus is &#34;10  ns!&#34;, a desirable initial value would be &#34;3&#34;. If the initial value memory 311 has values of &#34;2&#34; (word #0), &#34;4&#34; (word #1), &#34;6&#34; (word #2), and &#34;8&#34; (word #3), the value &#34;4&#34; is selected as initial value. Thus, the diagnostic processor 400 sets the word number &#34;#1&#34; to the speed register 312. 
     Hereinbelow and referring to FIGS. 2, 4 and 5, the operation of the data transfer apparatus in accordance with the above-mentioned embodiment of the present invention will be described. 
     First, a data &#34;A&#34; to be transferred is assumed to be on the storage bus 150 at cycle C1. The data is stored to the word &#34;a&#34; of the data buffer 340 at cycle C2, and then the data sensor 350 indicates the data occupancy (e.g., of data (&#34;A&#34;) in the data buffer 340. The stage register 323 is checked to determine whether data is &#34;on transfer&#34; (step S501) (e.g., to determine if the data transfer operation occurring). Since a value &#34;0&#34; of the stage register 323 indicates data is not &#34;on transfer&#34;, the stage register 323 is set to the initial value at cycle C3 (step 502). In this example, since the transfer clock cycle of the processor 200 is assumed to be three times larger than the clock cycle of the data transfer apparatus 300, the initial value is &#34;2&#34; as shown in FIG. 5. 
     The stage register 323 is decremented to &#34;1&#34; by decrementer 321 at cycle C4 (step S503). Thereafter, the value detector 324 detects the value of the stage register 323 (step S504). If the value &#34;1&#34; is detected, then the address register 333 is incremented to &#34;b&#34; at cycle CS (step S505). If not, the process loops back to step S503. Simultaneously, the valid bit portion 342 of word &#34;a&#34; is cleared. Therefore, the data sensor 350 indicates the data empty status of the data buffer 340 at cycle CS (step S506). 
     From cycle C3 to CS, the data register 345 holds data &#34;A&#34;. Therefore, the processor 200 can receive the data &#34;A&#34; asynchronously at a suitable speed. 
     Next, since a data &#34;B&#34; to be transferred is on the storage bus 150 at cycle CS, the data is stored to the word &#34;b&#34; of the data buffer 340 at cycle C6, and the data sensor 350 indicates data occupancy in the data buffer 340 again. Since a value &#34;0&#34; of the stage register 323 indicates data is not &#34;on transfer&#34; (e.g., data not being transferred) (step S501), the stage register 323 is set to the initial value (e.g., &#34;2&#34;) at cycle C7 (step S502). 
     The stage register 323 is decremented to &#34;1&#34; by the decrementer 321 at cycle C8 (step S503). The value detector 324 detects the value &#34;1&#34; of the stage register 323 at cycle C8 (step S504). Then, the address register 333 is incremented to &#34;c&#34; at cycle C9 (step S505). Simultaneously, the valid bit portion 342 of word &#34;b&#34; is cleared. 
     At this time, the data sensor 350 indicates the data occupancy of the data buffer 340 at cycle C9 (step S506), because a data &#34;C&#34;, on the storage bus 150 at cycle C7, is stored to the word &#34;c&#34; of the data buffer 340 at cycle C8. 
     Since a value &#34;1&#34; of the stage register 323 indicates that data is being transferred at cycle C8 (step S501), the stage register 323 is set to the initial value at the next cycle C10, not at cycle C9(step S502). 
     The stage register 323 is decremented to &#34;1&#34; at cycle C11 (step S503). The value detector 324 detects the value &#34;1&#34; of the stage register 323 (step S504). Then, the address register 333 is incremented to &#34;d&#34; at cycle C9 (step S505). Simultaneously, the valid bit portion 342 of word &#34;c&#34; is cleared. Therefore, the data sensor 350 indicates the data empty status of the data buffer 340 at cycle C12 (step S506). 
     From cycle C7 to C9 and from C10 to C12, the data register 345 holds data &#34;B&#34; and &#34;C&#34;, respectively. Therefore, the processor 200 can receive the data &#34;B&#34; and &#34;C&#34; asynchronously at a suitable speed. 
     Next, a data transfer apparatus in accordance with a second embodiment of the present invention will be described with reference to FIG. 6. 
     Referring to FIG. 6, the second embodiment of the invention has an initial value register 313, instead of the initial value memory 311 and the speed register 312 of the first embodiment described above. 
     The initial value register 313 holds an initial value to be input to the stage register 323. The initial value register 313 is connected to the diagnostic processor 400. The diagnostic processor 400 may set the initial value to the initial value register 313 directly as shown in FIG. 6. The initial values to be set to the initial value register 313 are chosen with, for example, the criteria as described for the first embodiment. 
     The data transfer apparatus in accordance with the second embodiment of the present invention operates similarly to the first embodiment except for the setting operation of the initial value register 313. 
     As is apparent from the above description, according to the present invention, since the address for the data buffer is updated at predetermined time intervals, an output speed is controllable fixedly. Thus, the receiver can receive the data in a suitable speed without the transmitter having to check the acknowledge signal. 
     While the invention has been described in terms of several preferred embodiments, those skilled in the art will recognize that the invention can be practiced with modification within the spirit and scope of the appended claims.