Abstract:
For extracting a unit data block of the lowest priority from a plurality of unit data blocks stored in a buffer memory of large capacity, the unit data blocks are divided into set blocks, each comprising a predetermined number of unit data blocks, and priority levels of the set blocks are determined to extract one of them. At the same time, priority levels of the predetermined number of unit data blocks making up each set block are determined to extract one of them. One unit data block is extracted by a combination of the extracted set block with the unit data blocks extracted from the respective set blocks. In this manner, one of many unit data blocks is extracted by using a small number of bits.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     This invention relates to a buffer memory control system, and more particularly to a buffer memory control device in which, in the determination of priority of unit data blocks planted in a buffer memory, priority levels of set blocks, each including a predetermined number of unit data blocks, are determined and, at the same time, priority levels of the unit data blocks making up each set block are determined, thereby to decrease the number of bits necessary for the priority processing. 
     2. Description of the Prior Art 
     In general, a data processor having a buffer memory is designed to access a tag portion of the buffer memory to detect whether or not desired information has been planted in a data portion of the buffer memory. A data processor having a main memory and a buffer memory is disclosed, for example, in U.S. Pat. No. 3,588,829. Since only a limited number of unit data blocks are planted in the data portion of the buffer memory, a priority circuit is provided and, for example, in the case of the set associative system, priority levels of unit data blocks of a predetermined number of sets planted for each column are determined whereby to efficiently plant the unit data blocks in the data portion. Let it be assumed, for example, that the highest priority is given to the latest accessed one of the unit data blocks of the predetermined number of sets and that the lowest priority is given to the earliest accessed unit data block. (This is called the LRU algorithm.) In the case where it is necessary to transfer a new unit data block to the buffer memory from another memory (main memory), the unit data block given the lowest priority is assigned as a block to be replaced with the new unit data block and is driven out from the buffer memory, and then the new unit data block is transferred to the buffer memory. 
     In such priority processing according to the prior art, for example, if the set number of the buffer memory is 2, that is, if the number of unit data blocks which can be planted on the buffer memory is 2, one bit is required for determining two priority relationships. That is, either one of the two set has priority over the other depending upon whether the bit is &#34;1&#34; or &#34;0&#34;. Similarly, in the case of the number of sets planted on the buffer memory being 4, the number of bits required is 6 in all which are respectively indicative of the priority relationships between first and second sets, between first and third sets, between first and fourth sets, between the second and third sets, between the second and fourth sets and between the third and fourth sets. In the cases of the number of sets being 8, 16 and 32, the required number of bits is 28, 120 and 496, respectively. In other words, if the number of sets is taken as x, the required number of bits is given by x(x-1)/2. Since the number of pairs of sets selected from the set number x is x(x-1)/2 and since either one of the two sets of each pair is given priority over the other depending upon whether one bit is &#34;1&#34; or &#34;0&#34;, the above relationship equation is obtained. 
     However, it is generally believed that the number of bits usable within practice is 28 at the largest, and priority processing for a relatively large capacity buffer memory having more than 16 sets requires a very large amount of hardware and is regarded as difficult from the technical point of view, too. 
     SUMMARY OF THE INVENTION 
     One object of this invention is to provide a buffer memory control device which permits priority processing of a buffer memory by a small number of bits, even if the buffer memory has a large capacity. 
     Another object of this invention is to provide a buffer memory control device which enables priority processing of a buffer memory without reducing its processing speed. 
     Briefly stated, in priority processing of, for example, 16 sets, that is, 16 unit data blocks, a general idea of set blocks, each including four unit data blocks, is introduced. The priority levels of four set blocks in all are determined and, at the same time, the priority levels of the four unit data blocks making up each set block are determined, to thereby assign the unit data block to be replaced, whereby the number of bits required for the priority processing is decreased from 120 to 30 (=6+6×4). To perform this, according to the present invention, in the buffer memory control device which has a data portion for planting a plurality of unit data blocks and a tag portion for holding address information of each of the unit data blocks planted in the data portion, the unit data blocks planted in the data portion are divided into set blocks, each formed with a predetermined number of unit data blocks, and the address information of each set block is planted in the tag portion. A first priority circuit is provided for giving priority to the set blocks one over another and, further, second priority circuits are provided for determining the priority levels of the unit data blocks forming the respective set blocks. In the priority processing, the priority levels of the unit data blocks are determined by a set block assigning signal from the first priority circuit and unit data block assigning signals from the second priority circuits, whereby one of the unit data blocks is extracted. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is an explanatory diagram of a set associative method, for explaining a buffer memory control device of this invention; 
     FIG. 2 is a block diagram of the buffer memory control device of this invention; and 
     FIGS. 3A and 3B respectively show the circuit construction of one embodiment of a priority processing circuit provided according to this invention and a diagram explanatory of its operation. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     In FIG. 1, reference numeral 1 indicates a main memory; 2 indicates a tag portion of a buffer memory for maintaining address information of each unit data block planted in a data portion 3 of the buffer memory; 3 identifies the abovesaid data portion in which a predetermined number of data blocks planted on the main memory 1 can be planted for each column; 4 represents unit data blocks; 5 denotes set blocks, each composed of a combination of a predetermined number of unit data blocks 4; 6 shows unit address blocks, each having planted therein address information for each unit data block 4; and 7 refers to set blocks, each composed of unit addresses corresponding to each of the set blocks 5. 
     The main memory 1 comprises #0 to #(m-1) (sets) and #0 to #(n-1) (columns), and has planted therein m (sets) × n (columns) unit data blocks. 
     The tag portion 2 and the data portion 3 of the buffer memory have respectively planted therein the unit address blocks 6 and the unit data blocks 4 corresponding to 16 sets #0 to #15 of the m sets of the main memory 1 for each column. In the planting of the data of the main memory 1 on the buffer memory, the data is planted in those areas of the buffer memory which have the same column numbers as those in the main memory 1. 
     Let it be assumed that a processing unit having the buffer memory requires a data of a desired address Aij and that the address Aij belongs to a jth column of an ith set in the main memory. In this case, the jth columns of the tag portion and the data portion are both accessed at the same time and 16 addresses read out of the tag portion are each compared with the i of the address Aij. When coincidence is detected between them, there is outputted the data which is set in the data portion at the position corresponding to that in the tag portion where the address is set. When no coincidence is detected, a required unit data block is transferred from the main memory. 
     In general, the buffer memory performs the above operation. In the case of transferring a new unit data block to the buffer memory, if all the areas of the buffer memory which correspond to the column number of the new unit data block are already occupied by previous unit data blocks, it is necessary to drive out any one of the unit data blocks. To determine which one of the unit data blocks is to be driven out, priority of the unit data blocks is determined based on the LRU algorithm and, for this determination, priority levels are given to the unit data blocks. For efficient determination of the priority levels, in the present invention, for example, the buffer memory has four set blocks 5-1 to 5-4 for each column and each set block has four unit data blocks. 
     FIG. 2 illustrates the construction of one embodiment of this invention which is adapted to achieve priority processing of the columns of such a buffer memory as shown in FIG. 1 which has the data portion 3 and the tag portion 2. 
     In FIG. 2, reference numeral 8 indicates a first priority circuit which determines the priority levels of the four set blocks 5-1 to 5-4 in each column and supplies second priority circuits 9-1 to 9-4 with set block assigning signals S 1  to S 4  assigning a set block of the lowest priority. Reference numerals 9-1 to 9-4 designate the abovesaid second priority circuits, each of which determines the priority levels of the four unit data blocks 4 making up each of the abovesaid set blocks 5-1 to 5-4. The second priority circuits 9-1 to 9-4 respectively perform priority processing for the four unit data blocks in #0 to #3 set positions forming the set block 5-1, in #4 to #7 set positions forming the set block 5-2, in #8 to #11 set positions forming the set block 5-3 and in #12 to #15 set positions forming the set block 5-4. Further, each of the priority circuits 9-1 to 9-4 outputs unit data block designating signals U 0  to U 3  for designating the lowest-priority one of the four unit data blocks making up each set block. Reference numeral 10 identifies a bus for replacement of the unit data block 4 or transmission of access information. Reference characters M and M 1  to M 4  represent memories. Assuming that the set block 5-1 has lower priority than the other set blocks 5-2 to 5-4 and that the unit data block at the #2 set position has lower priority than the others in the set block 5-1, the first priority circuit 8 outputs only the set block designating signal S 1  and the second priority circuit 9-1, supplied with the above set block designating signal S 1 , outputs the unit data block designating signal U 2  alone. For example, in the case where the buffer memory is accessed in the above condition and a unit data block having desired information has not been planted in the data portion 3 (FIG. 1), the unit data block at the #2 set position is driven out based on the abovesaid unit data block designating signal U 2  derived from the second priority circuit 9-1 and a data in the main memory (FIG. 1) is newly transferred to the #2 set position. 
     FIG. 3A illustrates the construction of one example of the circuit corresponding to each of the first priority circuit 8 and the second priority circuits 9-1 to 9-4. FIG. 3B shows an example of its operation. The following description will be given on the assumption that the circuit construction of FIG. 3A corresponds to the second priority circuit 9-1. 
     In FIG. 3A, reference numerals 10-1 to 10-6 indicate flip-flops, which form the memory M 1 . Reference character S 1  denotes a set block designating signal. Reference numerals 11-0 to 11-3 designate AND gates. Reference characters U 0  to U 3  represent unit data block designating signals, which are derived from the AND gates 11-0 to 11-3. The AND gate 11-0 designates, as a replacement block, the unit data block at #0 set position (hereinafter referred to as the block (0)) which is one of the four unit data blocks 4 making up the set block 5-1 shown in FIG. 1. The AND gate 11-1 designates, as a replacement block, the unit data block at #1 set position (hereinafter referred to as the block (1)) which is one of the abovesaid four unit data blocks. The AND gate 11-2 similarly designates, as a replacement block, the unit data block at #2 set position (hereinafter referred to as the block (2)). Likewise, the AND gate 11-3 designates, as a replacement block, the unit data block at #3 set position (hereinafter referred to as the block (3)). As the number of input signals of logic &#34;1&#34; to the AND gates 11-0 to 11-3 increases, priority of the unit data blocks designated by the outputs of the AND gates becomes lower. Reference characters x0 to x3 indicate input signals to the flip-flops 10-1 to 10-6. The signal x0 becomes &#34;1&#34; when the block (0) is accessed or replaced. Similarly, the signals x1, x2 and x3 respectively become &#34;1&#34; when the blocks (1), (2) and (3) are accessed or replaced. 
     Assuming that the flip-flops 10-1 to 10-6 are being supplied with clear signals respectively to provide Q outputs of logic &#34;0&#34;, when the set block designating signal S 1  is applied, only the AND gate 11-0 produces an output of logic &#34;1&#34; to designate the block (0) as the replacement block. Now, if the flip-flops 10-1 to 10-6 are assumed to be represented with bits &#34;01&#34;, &#34;02&#34;, &#34;03&#34;, &#34;12&#34;, &#34;13&#34; and &#34;23&#34;, respectively, the status that the abovesaid clear signals are being applied to the flip-flops, can be expressed by (1) in FIG. 3B. In FIG. 3B REP(k) and ACC(k) (k=0, 1, 2, 3) indicate replacement blocks and accessed blocks, respectively. Broken line arrows represent changes. 
     Next, in the abovesaid status (1), when the block (0) is replaced, the signal x0 becomes &#34;1&#34;, so that the flip-flops 10-1 to 10-3 respectively provide Q outputs of logic &#34;1&#34;. Namely, the status (1) is changed to the status (2) shown in FIG. 3B. Since this status (2) is only to change the output signal of the AND gate 11-1 alone to have logic &#34;1&#34;, the block (1) is designated as a block of the lowest priority, i.e. a replacement block, as indicated by REP(1). 
     In the status (2), when the block (1) is replaced, the signal x1 becomes &#34;1&#34; to reset the flip-flop 10-1 to derive therefrom a Q output of logic &#34;0&#34;. Further, the flip-flops 10-4 and 10-5 are respectively set to produce Q outputs of logic &#34;1&#34;. That is, the status (2) is altered to the status (3) shown in FIG. 3B. Since the status (3) is only to derive an output signal of logic &#34;1&#34; from the AND gate 11-2 alone, the block (2) is designated as a replacement block. 
     In the status (3), when the block (0) is accessed, the signal x0 becomes &#34;1&#34; to set the flip-flop 10-1 to derive therefrom a Q output of logic &#34;1&#34;. The other flip-flops 10-2 to 10-6 are retained in the same output states as those in the abovesaid status (2). Consequently, the status (3) is shifted to the status (4) shown in FIG. 3B. In the status (4), the states of the flip-flops are changed by an access to the block (0) as indicated by ACC(0) but the output signal of the AND gate 11-2 alone is made to have logic &#34;1&#34; as is the case with the abovementioned status (3), so that the block (2) is still designated as a replacement block, as indicated by REP(2). 
     Similarly, in the status (4), when the block (2) is replaced, the signal x2 becomes &#34;1&#34; to reset the flip-flops 10-2 and 10-4 to derive therefrom Q outputs of logic &#34;0&#34; and, at the same time, the flip-flop 10-6 is set to produce a Q output of logic &#34;1&#34;. That is, the status (4) is altered to the status (5) shown in FIG. 3B. In the status (5), the block (3) is designated as a replacement block. Upon replacement of the block (3), the flip-flops 10-3, 10-5 and 10-6 are respectively reset to bring about the status (6) shown in FIG. 3B. In the status (6), when the block (2) is accessed, the flip-flop 10-6 is set, with the result that the status (7) shown in FIG. 3B is brought about. In the status (7), the block (1) is designated as a replacement block. Then, when the block (1) is replaced, the flip-flop 10-1 is reset and the flip-flops 10-4 and 10-5 are set to provide the status (8) shown in FIG. 3B. In the status (8), the block (0) is designated as a replacement block. 
     In this manner, the priority circuit 9-1 performs the priority processing of the four unit data blocks (0), (1), (2) and (3). The other second priority circuits 9-2, 9-3 and 9-4 are each also identical in construction with the abovesaid priority circuit 9-1 and perform the same priority processing of the four unit data blocks and the four set blocks as described above. Namely, in this invention, the priority levels of the set blocks are determined by the first priority circuit 8 to assign the set block of the lowest priority and, the priority levels of the unit data blocks making up each set block are determined by each of the second priority circuits 9-1 to 9-4 to assign the unit data block of the lowest priority. Accordingly, the replacement block is determined by a combination of the priority processing of the first priority circuit 8 with that of the second priority circuits 9-1 to 9-4. In other words, of the plurality of unit data blocks forming the lowest-priority set block assigned by the first priority circuit 8, the lowest-priority unit data block, which is designated by the second priority circuit corresponding to the abovesaid set block, is selected as the replacement block. In this case, since priority is already determined at the instant of accessing to the buffer memory, a time lag due to the priority circuit does not matter. 
     In accordance with this invention, the priority levels of the set blocks are determined by the first priority circuit 8 and the priority levels of the unit data blocks making each set block are determined by each of the second priority circuits 9-1 to 9-4, as described in the foregoing. This enables remarked reduction of the number of bits required for the priority processing in the buffer memories desired to have a relatively large capacity, and, further, such priority processing does not take much time, so that the buffer memory can be controlled at high speed. 
     It will be apparent that this invention is not limited specifically to the foregoing example and that many modifications and variations may be effected without departing from the scope of this invention.