Abstract:
A multiport register file includes a first file unit having registers of a first width and a second file unite having registers of a second width. The second width being less than the first width. The first file unit accommodates data destined to be operands for functional units of a VLIW processor, or result data from those functional units. The second file unit accommodates guard bits for conditioning operation of those functional units.

Description:
RELATED APPLICATIONS 
     The present application is a continuation-in-part of U.S. application Ser. No. 998,080 filed Dec. 29, 1992, now abandoned, which in turn is a continuation-in-part of 
     U.S. application Ser. No. 578,976 (PHA 1205) filed Sep. 5, 1990, which was abandoned and refiled as U.S. application Ser. No. 142,648 on Oct. 25, 1993, now U.S. Pat. No. 5,450,556; 
     U.S. application Ser. No. 594,534 (PHA 1209) filed on Oct. 5, 1990, which was abandoned and refiled as U.S. application Ser. No. 063,850 on May 15, 1993; and 
     U.S. application Ser. No. 654,847 (PHA 1211) filed Feb. 11, 1991, which has since issued as U.S. Pat. No. 5,313,551; 
     all of which were continuations-in-part of U.S. application Ser. No. 290,979 (PHN 12,376) filed Dec. 28, 1988, which was abandoned and refiled as U.S. application Ser. No. 593,336 on Oct. 1, 1990, which has since issued as U.S. Pat. No. 5,103,311. 
     All of the parent applications are incorporated herein by reference. 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The invention relates to the field of multiport register files for use in digital data processors. 
     2. Related Art 
     Multiport register files are used for digital data processors which need to access plural registers simultaneously. In particular, such register files are useful for VLIW (Very Long Instruction Word) processors. Such processors also include an instruction register accommodating plural operation codes and a plurality of functional units for executing the plural operations codes, starting simultaneously in a single machine cycle. 
     Multiport register files can be used in other types of processors as well. 
     A prior art multiport register file is shown in FIG.  1 . This file includes 128 32 bit registers. 
     To the left of the file are shown write address ports, WA 1 , WA 2 , and WA 3 , each being eight bits wide. Also shown on the left are write ports WD 1 , WD 2 , WD 3 , each being 32 bits wide. Results from 3 functional units can be written simultaneously on the write ports at the addresses specified on the write address ports. 
     To the right of the file are shown read address ports RA 1 , RA 2 , RA 3 , RA 4 , RA 5 , RA 6 , RA 7 , RA 8 , and RA 9 , each being eight bits wide. Also shown on the right are read ports, RD 1 , RD 2 , RD 3 , RD 4 , RD 5 , RD 6 , RD 7 , RD 8 , and RD 9 , each being 32 bits wide. Up to nine operands destined for the functional units can be read from this file simultaneously on the read ports from the addresses specified on the read address ports. 
     In VLIW processors, guard bits are used to condition writing of results from the functional units to the multiport register file. Guard bits become necessary in VLIW processors because of branching delays, as explained in U.S. application Ser. No. 594,534 filed Oct. 5, 1990. The functional units execute operations during a branch delay before the processor resolves whether results of those operations will actually be used. After the operations are completed, each functional unit will write results to the register file only if an associated guard bit has an appropriate value. 
     There are nine read ports in this particular file unit, because the VLIW processor in question has an instruction word accommodating 3 operations. Each operation will typically require two data operands and a guard bit. There are three write ports to accommodate a result from each of 3 simultaneously executing functional units. Each read or write port has an associated address port. 
     Ordinarily, the guard bits are to be supplied from the multiport register file. Guard bits, or multibit guard values, are generally much smaller than the thirty-two bit registers and thirty-two bit read and write ports available in the prior art register file. Where the writing from each functional unit is to be conditioned by a guard bit or value, a great deal of unnecessary circuitry is necessary, in particular extra 32-bit write and read port and extra 8-bit write and read address ports. 
     SUMMARY OF THE INVENTION 
     The object of the invention is to reduce circuitry necessary for operation of the multiport register file. 
     This object is achieved by dividing the multiport register file into two file units. The first file unit has wider registers than the second file unit. 
     Guard bits will be stored in the second file unit for VLIW processors. For other types of processors, other types of short data can be stored in the second file unit. Such short data can include flags, for example. 
    
    
     BRIEF DESCRIPTION OF THE DRAWING 
     The invention will now be explained by way of non-limitative example with reference to the following figures: 
     FIG. 1 shows a prior art multi-port register file. 
     FIG. 2 shows a multi-port register file according to the invention. 
     FIG. 3 shows a floor plan of a register file. 
     FIG. 4 shows a register cell which would be suited to use in the prior art floor plan. 
     FIG. 5 shows a floor plan of register files in accordance with the invention. 
     FIG. 6 shows a register file cell suited for use in the data portion of the register files of FIG.  5 . 
     FIG. 7 shows a register file cell suited for use in the guard portion of the register files of FIG.  5 . 
     FIG. 8 shows a decoder for converting read and write address signals into read and write enable signals. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     FIG. 2 shows a multi-port register file according to the invention. The file is divided into two pieces, a data file unit, which is again a 128 register, 32-bit wide, file, and a guard file unit, which is 128 register, 1-bit wide file. 
     The write address inputs WA 1 , WA 2 , WA 3  and write data inputs WD 1 , WD 2 , and WD 3  are as indicated in the prior art. However, only one bit of the data inputs need be routed to the guard file. No routing circuits are necessary because the guard bits are written to both files and only read from one. The read address inputs RA 1 , RA 2 , RA 3 , RA 4 , RA 5 , and RA 6  and the read data outputs RD 1 , RD 2 , RD 3 , RD 4 , RD 5 , and RD 6  are dedicated to the data file. The read address inputs RA 7 , RA 8 , and RA 9  and the read data outputs RD 7 , RD 8 , and RD 9  are dedicated to the guard file. Since the read data outputs dedicated to the guard file are only one bit wide, substantial circuitry is saved over the prior art implementation in which 3 extra 32-bit wide data buses are necessary at the output of the data file. The read ports and write ports fit into the architecture of parent application Ser. No. 998,080 filed Dec. 29, 1992 just as the prior art multiport register file did. 
     FIG. 3 shows a floor plan of a register file in accordance with FIG.  1 . The file consists of a matrix of register cells, arranged in rows and columns. For brevity only the top and bottom rows and left and right columns are shown. There are thirty-two columns, one for each bit of the registers. There are 128 rows, one for each of the registers. 
     FIG. 4 shows a register cell suitable for use in the floor plan of FIG.  3 . At the left are input respective bits of the write data signals WD 1 , WD 2 , and WD 3 , which bits are connected to MOSFETs  401 ,  402 , and  403 , respectively. The gates of MOSFETs  401 ,  402 , and  403  are coupled with respective bits of the write enable signals WE 1 , WE 2 , and WE 3 . Junction  425  functions as a wired OR inputing to inverter  423 . A feedback inverter  424  is coupled between the input and output of inverter  423 . The output  404  of inverter  423  is coupled to the gates of MOSFETs  405 - 413 . MOSFETs  405 - 413  are connected to respective bits of RD 1 -RD 9 . MOSFETs  405 - 413  are also connected to MOSFETS  414 - 422 , respectively. The gates of MOSFETs  414 - 422  are connected to respective bits of the read enable signals RE 1 -RE 9 , respectively. 
     Thus in the register file of FIG. 3, one could expect the following: 
     
       
         
               
               
               
             
               
               
               
             
           
               
                   
                   
               
               
                   
                   
                 Number of 
               
               
                   
                 Location and type of component 
                 components 
               
               
                   
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 write data wires per cell 
                  3 
               
               
                   
                 read data wires per cell 
                 9 
               
               
                   
                 write enable wires per cell 
                 3 
               
               
                   
                 read enable wires per cell 
                 9 
               
               
                   
                 horizontal wires  (i.e. read 
                 12 
               
               
                   
                 enable and write enable) per row 
               
               
                   
                 vertical wires  (i.e. read data 
                 12 
               
               
                   
                 and write data) per column 
               
               
                   
                 number of transistors per cell 
                 25 
               
               
                   
                 total horizontal wires in 
                 12*128 = 
               
               
                   
                 register file core 
                 1536 
               
               
                   
                 total vertical wires in register 
                 12*32 = 
               
               
                   
                 file core 
                 384 
               
               
                   
                 total transistors in register 
                 25*32*128 = 
               
               
                   
                 file core 
                 102400 
               
               
                   
                   
               
             
          
         
       
     
     FIG. 5 shows the floor plan of the multiport register file in accordance with the invention. The new multiport register file includes a data register file unit (a) having the same floor plan as the prior art and a guard register file unit (b) having one column of 128 register cells. Although the floor plan of the data register file unit (a) is the same as for the prior art register file, the register cells needed for the new data register file are vastly simplified. The cells needed for the guard register file unit (b) are simpler still. 
     FIG. 6 shows a register cell which would function in the data register file unit (a) according to the invention. The left portion of the register cell is the same as that in FIG. 4, with like components having like reference numerals. However the right portion of the cell is simplified with transistors  605 - 610  being substituted for  405 - 413  and transistors  614 - 619  being substituted for transistors  414 - 422 . In other words the cell of FIG. 6 has 6 less transistors and correspondingly less read lines than the cell of FIG.  4 . 
     FIG. 7 shows a register cell which would function in the guard register unit (b) of FIG.  5 . The left portion of this cell resembles the left portion of the cell of FIG.  4 . However, the right portion is even more simplified than the cell of FIG.  6 . MOSFETs  705 - 707  are substituted for MOSFETs  405 - 413  and MOSFETs  714 - 716  are substituted for MOSFETs  414 - 412 . MOSFETs  705 - 707  are connected to respective bits of read data lines RD 7 -RD 9 . MOSFETs  714 - 716  are coupled with respective bits of read enable lines RE 7 -RE 9 . In other words the cells of FIG. 7 have 12 less transistors than the cells of FIG. 4 and 6 less transistors than the cells of FIG. 6, with correspondingly fewer read lines. Since the read enable lines RE 7 - 9  are not needed in the data register file unit (a) and the read enable lines RE 1 - 6  lines are not needed in the guard register file unit (b), the lines RE 7 - 9  can occupy the same horizontal spaces as allocated to three of the lines RE 1 - 6 . Accordingly, no additional horizontal wire space is needed for RE 7 - 9 . 
     Thus in the register file of FIG. 5, one finds the following: 
     
       
         
               
               
               
             
               
               
               
             
           
               
                   
                   
               
               
                   
                   
                 Number of 
               
               
                   
                 Type and location of component 
                 components 
               
               
                   
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 Write data wires per data cell 
                 3 
               
               
                   
                 Read data wires per data cell 
                 6 
               
               
                   
                 Write enable wires per data cell 
                 3 
               
               
                   
                 Read enable wires per data cell 
                 6 
               
               
                   
                 Horizontal wires (i.e. read and write enable) 
                 9 
               
               
                   
                 per data row 
               
               
                   
                 Vertical wires (i.e. read and write data) per 
                 9 
               
               
                   
                 data column 
               
               
                   
                 Transistors per data cell 
                 19 
               
               
                   
                 Write data wires per guard cell 
                 3 
               
               
                   
                 Read data wires per guard cell 
                 3 
               
               
                   
                 Write enable wires per guard cell 
                 3 
               
               
                   
                 Read enable wires per guard cell 
                 3 
               
               
                   
                 Horizontal wires (read enable and write 
                 6 
               
               
                   
                 enable) per guard row 
               
               
                   
                 Vertical wires (read data and write data) per 
                 6 
               
               
                   
                 guard column 
               
               
                   
                 Transistors per guard cell 
                 13 
               
               
                   
                 Total horizontal wire spaces 
                   9*128 = 
               
               
                   
                   
                 1152 
               
               
                   
                 Total vertical wires 
                 9*32+6*1 = 
               
               
                   
                   
                 294 
               
               
                   
                 Total transistors 
                 19*32*128 + 
               
               
                   
                   
                 13*1*128 = 
               
               
                   
                   
                 79488 
               
               
                   
                   
               
             
          
         
       
     
     Thus the embodiment of FIGS.  2  and  5 - 7  has 22,912 fewer transistors, 384 fewer horizontal wire spaces and 90 fewer vertical wires than the embodiment of FIGS.  1  and  3 - 4 . 
     The read enable inputs and write enable inputs in FIGS. 4,  6 , and  7  are obtained from the read address inputs and the write address inputs using a decoder circuit as shown in FIG.  8 . Standard address decoding blocks are shown at  801 ,  802 ,  803 ,  804 ,  805 ,  806 ,  807 ,  808 ,  809 ,  810 ,  811 ,  812 . These blocks convert the eight bit addresses WA 1 , WA 2 , WA 3 , RA 1 , RA 2 , RA 3 , RA 4 , RA 5 , RA 6 , RA 7 , RA 8 , RA 9  into 128 bit enable signals WE 1 , WE 2 , WE 3 , RE 1 , RE 2 , RE 3 , RE 4 , RE 5 , RE 6 , RE 7 , RE 8 , and RE 9 , respectively. 
     Each bit of the write enable signals relates to a respective row of the register file, and goes to each cell in that respective row of both the data register file unit (a) and the guard register file unit (b). Each bit of the read enable signals RE 1 , RE 2 , RE 3 , RE 4 , RE 5 , and RE 6  relates to a respective row of the data register file unit (a) and goes to each cell in that respective row of the data register file unit (a). Each bit of the read enable signals RE 7 , RE 8 , and RE 9  relates to a respective row of the guard register file unit (b) and goes to each cell in that respective row of the guard register file unit (b). Thus, for example, bit  1  of WE 1  goes to each cell in row  1  of both register file units; bit  1  of RE 1  goes to each cell in row  1  of the data register file unit (a) ; bit  1  of RE 7  goes to the cell in row  1  of the guard file register unit (b); and so forth. 
     Those of ordinary skill in the art will readily recognize that multi-port register files according to the invention can have a variety of other embodiments. These embodiments include the following. The data registers can be any width, such as 16 bits, which is used for operand or result data in a particular processor. The guard registers can be slightly wider if multibit guard or flag values are to be used. More register files may be used if the processor needs to use data of other, different widths.