Patent Publication Number: US-6671219-B1

Title: Storage, storage method, and data processing system

Description:
TECHNICAL FIELD 
     The present invention relates to a binary data storage device. More particularly, the present invention relates to a technology that may be applied conveniently to a semiconductor storage device, such as a RAM (Random Access Memory) and a ROM (Read Only Memory), which is connected to a data processor such as a microprocessor or a microcomputer and to or from which data is written or read one byte (8 bits), one word (16 bits), and an integral multiple of 8 bits at a time. 
     BACKGROUND ART 
     As the operation frequency or the data processing power (number of data bits) of a microprocessor or a microcomputer that accesses a semiconductor storage device increases, there is a need for a higher-speed semiconductor storage device. 
     To satisfy this need, various technologies have been proposed to increase the speed of a semiconductor storage device. Examples of those technologies are found in JP-A-6-332793 or in IEEE International Solid-State Circuits Conference DIGEST OF TECHNICAL PAPERS, PP. 190-201, 1999. However, the conventional technique to increase the speed of a semiconductor storage device has placed emphasis on device miniaturization or on the increase in speed of a memory cell circuit from which data is read. Those technologies do not take into consideration the relation with a data processor, such as a microprocessor or a microcomputer, to which the semiconductor storage device is connected. 
     Normally, the configuration of a semiconductor storage device is such that the read/write operation can be performed at a time for the number of data bits basically used by a data processor, such as a microprocessor or a microcomputer, connected to the semiconductor storage device. For example, a semiconductor storage device connected to a data processor whose basic data length is 32 bits is configured such that data is read or written efficiently 32 bits at a time. Similarly, a semiconductor storage device connected to a data processor whose basic data length is 64 bits is configured such that data is read or written efficiently 64 bits at a time. 
     Because an address is allocated to each byte (8 bits) of data in a common data processor, a semiconductor device connected to the data processor is designed to read and write data on an address number basis. In addition, for the read data length, the semiconductor storage device is designed so that data which is ½ n  times (n is an integer equal to or larger than 1) the basic data length and which is 8 bits or longer must be able to be read or written. That is, for the basic data length of 32 bits, 16 bits (32×½ 1  bits), or 2 bytes, and 8 bits (32×½ 2  bits), or 1 byte, must be able to be read or written. This will be described more in detail with reference to the drawings. 
     FIG. 3 schematically shows the physical array of data stored in a conventional semiconductor storage device connected to a data processor whose basic data length is 32 bits (4 bytes) and the logical operation executed when 32 bits of data is read from the storage device. The numeral  300  indicates data stored in the semiconductor storage device, and the numeral  301  indicates data read from the semiconductor storage device. In this case, 32 bits of data is read directly. That is, the semiconductor storage device is laid out and wired so that the relative distance between the nth bit of the data in the semiconductor storage device and the nth bit of the register into which the data is read becomes shortest. 
     FIG. 4 schematically shows the physical array of data stored in a conventional semiconductor storage device connected to a data processor whose basic data length is 32 bits (4 bytes) and the logical operation executed when 16 bits (2 bytes) of data are read from the storage device. The numeral  400  indicates data stored in the semiconductor storage device, and the numerals  401  and  402  indicate data read from the semiconductor storage device. 
     FIG.  4 ( a ) shows how the low-order 16 bits (byte  1  and byte  0 ) of the data  400  are read, and FIG.  4 ( b ) shows how the high-order 16 bits (bytes  3 , byte  2 ) of the data  400  are read. It should be noted that, in FIG.  4 ( b ), the bit shift operation is required for 16 bits, from the high-order 16 bits to the low-order 16 bits. In a conventional semiconductor storage device, the memory cell array is laid out in the data bit sequence. Therefore, to execute the operation shown in FIG.  4 ( b ), the data must be physically shifted 16 bits. That is, in FIG.  4 ( a ), the relative distance between the nth bit (0≦n≦15) of the semiconductor storage device and the nth bit (0≦n≦15) of the register into which data is read is shortest. On the other hand, in FIG.  4 ( b ), the relative wiring length becomes longer because the n′th bit (16≦n′≦31)of the semiconductor storage device is stored in the nth bit (0≦n≦15)of the register into which data is read. This lengthens the wiring length, increases the wiring load, reduces the read speed, and increases the power consumption. 
     FIG. 5 schematically shows the physical array of data stored in a conventional semiconductor storage device connected to a data processor whose basic data length is 32 bits (4 bytes) and the logical operation executed when 8 bits (1 byte) of data are read from the storage device. The numeral  500  indicates data stored in the semiconductor storage device, and the numerals  501 ,  502 ,  503 , and  504  indicate data read from the semiconductor storage device. 
     FIG.  5 ( a ) shows how the 8 bits corresponding to byte  0  of the data  500  are read, FIG.  5 ( b ) shows how the  8  bits corresponding to byte  1  of the data  500  are read, FIG.  5 ( c ) shows how the 8 bits corresponding to byte  2  of the data  500  are read, and FIG.  5 ( d ) shows how the 8 bits corresponding to byte  3  of the data  500  are read. It should be noted that the bit shift operation is required for 8 bits from byte  1  to byte  0  in FIG.  5 ( b ), that the bit shift operation is required for 16 bits from byte  2  to byte  0  in FIG.  5 ( c ), and that the bit shift operation is required for 24 bits from byte  3  to byte  0  in FIG.  5 ( b ), respectively. 
     In a conventional semiconductor storage device, a memory cell array is laid out in data bit sequence. Therefore, when executing operation as shown in FIG.  5 ( b ), FIG.  5 ( c ), or FIG.  5 ( d ), the 8-bit, 16-bit, or 24-bit physical shift operation must be executed, respectively. That is, as in FIG.  4 ( b ), the relative wiring length becomes longer. This layout lengthens the wiring from each memory cell to the selector, increases the wiring load, reduces the read speed, and increases the power consumption. In addition, because 24 bit-shift signal lines sometimes run in parallel in some part of the above example as shown in FIG.  16 ( a ), there are some problems; for example, the wiring area is increased, and the signal lines are so dense that they cause crosstalk between signal lines. On the other hand, there is another method in which data is always read into a register at memory access time, 32 bits at a time, and then only the necessary number of bits of the data are extracted by shifting the bits. However, this method requires a time for bit shift processing and thus reduces the read speed. 
     It is an object of the present invention to provide a storage device that solves the above problems, that reads or writes even data shorter than the basic data length, for example, reads 8 bits of data (that is, byte) speedily, and that requires less power. 
     It is another object of the present invention to provide a storage device that reduces an area occupied by the wiring and that minimizes the generation of crosstalk. 
     The above and other objects and the new features of the present invention will be made more apparent by the description in the specification and the accompanying drawings. 
     DISCLOSURE OF THE INVENTION 
     The overview of the typical contents of the present invention disclosed in this application will be described below. 
     That is, a storage device comprises a memory cell array comprising a plurality of memory cells; word lines used to select memory cells from the plurality of memory cells in response to an address signal; and bit lines used to read information stored in the selected memory cells, wherein the storage device is connected to an address bus and a data bus, and wherein a bit array of data stored in the memory array is different from a bit array in the data bus. 
     Information pieces transmitted via adjacent bit signal lines on the data bus are stored in the memory cells a predetermined number of bits apart. 
     In addition, more specifically, when a basic read unit is n bits, information pieces, whose logical bit positions are  0 * 8 +k,  1 * 8 +k,  2 * 8 +k,  3 * 8 +k, . . . , m* 8 +k (where k and m are natural numbers, 0≦k≦7 and 0≦m≦n/8−1), are stored in the memory cells close to one another in the memory cell array. 
     The means described above makes the wiring length for the bit shift operation at read time extremely short and therefore reads data speedily in units of bytes. At the same time, the means significantly reduces the amount of devices and wiring used to build a circuit for executing the bit shift operation, making a low-power storage device available. In addition, because the wiring length for the bit shift operation at data read time is relatively short, the means reduces both the area occupied by wiring and the number of signal lines running in parallel in the wiring area for the bit shift operation. Therefore, the means gives a storage device with a minimized wiring area and reduced crosstalk. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a schematic diagram showing the physical bit array of data stored in a memory cell array in a storage device according to the present invention; 
     FIG. 2 is a diagram showing an example of a bit array when the storage device (memory module) according to the present invention is connected to a data processor whose basic data size is 32 bits; 
     FIG. 3 is a schematic diagram showing a logical operation executed when 32 bits of data are read; 
     FIG. 4 is a schematic diagram showing a logical operation executed when 16 bits of data are read; 
     FIG. 5 is a schematic diagram showing a logical operation executed when 8 bits of data are read; 
     FIG. 6 is a block diagram showing an example of the configuration of a bit shift circuit that allows 32-bit data, 16-bit data, and 8-bit data to be read; 
     FIG. 7 is a circuit diagram showing an actual example of the bit shift circuit; 
     FIG. 8 is a circuit diagram showing another example of the bit shift circuit; 
     FIG. 9 is a block diagram showing an example of the configuration of the bit shift circuit that allows 32-bit data, 16-bit data, and 8-bit data to be written; 
     FIG. 10 is a circuit diagram showing an embodiment of a local memory cell array in which one bit of data in FIG. 1 is stored; 
     FIG. 11 is a schematic diagram showing an example of the layout of the memory cell array and the bit shift circuit in a semiconductor storage device to which the present invention is applied; 
     FIG. 12 is a block diagram showing an embodiment in which the present invention is applied to a semiconductor storage device in a redundant configuration; 
     FIG. 13 is a block diagram showing an example of the configuration of a microcomputer system that is an example of an application system of the semiconductor storage device to which the present invention is applied; 
     FIG. 14 is a block diagram showing another example of the configuration of a microcomputer system that is an example of an application system of the semiconductor storage device to which the present invention is applied; 
     FIG. 15 is a functional diagram showing the array of input/output signals of a data alignment circuit that rearranges the bits when the data length is 32 bits; and 
     FIG. 16 is a diagram schematically showing a method in which 8-bit data is read from a memory cell array in which data is stored in units of 32 bits in the conventional semiconductor storage device and a similar read method according to the present invention. 
    
    
     BEST MODE FOR CARRYING OUT THE INVENTION 
     A preferred embodiment of the present invention will be described below with reference to the attached drawings. 
     FIG. 1 is a schematic diagram showing the physical layout of a memory cell in a storage device according to the present invention. In the figure, k and m are natural numbers satisfying the following: 
     0≦k≦7 
     0≦m≦(n/8)−1 
     n: Basic data size 
     The basic data size n refers to the number of data bits basically processed by a data processor such as a microprocessor or a microcomputer connected to a memory module composed of semiconductor storage devices or a plurality of memory chips to which the present invention is applied. Many data processors use 16, 32, 64, or 128 bits of data. For example, when the present invention is applied to a storage device connected to a data processor whose basic data size is 32 bits, the value of m is 0, 1, 2, or 3. 
     In FIG.  1 ( a ), data[ 0 * 8 +k] indicates one bit in the bit position  0 * 8 +k in data whose basic data size is n bits. In the semiconductor storage device to which the present invention is applied, the memory cells in which the data units in the logical bit positions  0 * 8 +k,  1 * 8 +k,  2 * 8 +k,  3 * 8 +k, . . . , m* 8 +k, such as those shown in FIG.  1 ( a ), are stored are laid out in neighboring positions as a group  100 . That is, the group  100  includes n/8 bits of data. For example, when n=32, each group  100  is composed of 4 bits. 
     In FIG.  1 ( a ), k is one of 0-7 in a group and, when k in data data [ 0 * 8 +k] of block B 0  is 0, k in data data[ 1 * 8 +k]-data[m* 8 +k] in other blocks B 1 -B n/8−1  is also 0. When n=32, group  100 _ 0  corresponding to k=0 includes data [ 0 ], data[ 8 ], data[ 16 ], and data[ 24 ] as shown in FIG.  1 ( c ). Similarly, group  100 _ 1  corresponding to k=1 includes data[ 1 ], data[ 9 ], data[ 17 ], and data[ 24 ], and group  100 _ 7  corresponding to k=7 includes data[ 7 ], data[ 15 ], data[ 23 ], and data[ 31 ]. 
     Seven groups  100 _ 0 - 100 _ 7 , each of which has the same bit value of k, are arranged as shown in FIG.  1 ( b ) and are stored in a memory cell array  101 . If  101  indicates the whole memory cell array in FIG.  1 ( b ), each of groups  100 _ 0 - 100 _ 7  also includes the bits which are in other words (n-bit data at some other address) and each of which has the same value of k. 
     In the semiconductor storage device according to the present invention, groups  100 _ 7 ,  100 _ 6 ,  100 _ 5 ,  100 _ 4 ,  100 _ 3 ,  100 _ 2 ,  100 _ 1 , and  100 _ 0  are arranged as shown in FIG.  1 ( b ) to allow data, whose total number of bits is n, to be read and written. In the conventional semiconductor storage device, eight bits which has the same value of m and which range from 0 to 7 in the value of k are sequentially arranged in blocks B 0 -B 7  in FIG.  1 ( a ) and are stored there to form n-bit data as a whole. It is easily understood that the conventional method is apparently different from the method according to the present invention in which the bits with the same value of k are arranged in each of blocks B 0 -B 7 . 
     FIG. 2 shows an embodiment in which the present invention is applied to a storage device connected to a data processor whose basic data size is 32 bits. The numeral  200  indicates a memory module to which the present invention is applied, and the numeral  201  indicates data signals sent to, and received from, the memory module  200 . The bit sequence of the data signals  201  corresponds to the physical bit sequence in the cell layout of the memory module  200 . 
     Here, a memory module refers narrowly to a memory cell array included in a semiconductor memory chip, and generally to a storage device composed of a plurality of semiconductor memory chips. The present invention may be applied to a storage device with any configuration regardless of its size. In addition, the present invention may be applied not only to a volatile semiconductor storage device such as SRAM or DRAM but also to non-volatile semiconductor storage device such as EEPROM. 
     When a data processor reads or writes data, 32 bits (4 bytes) at a time, 32 bits of data ranging from data[ 0 ] to data[ 31 ] are read at the same time from the memory module  200  in FIG. 2, and data is also written, 32 bits at a time. When a data processor reads data, for example, 16 bits (2 bytes) at a time, the bits are shifted as shown by the broken lines in the figure when the high-order 16 bits ranging from data[ 16 ]-data[ 31 ] are read from the memory module  200  in FIG.  2 . The reverse shift operation is performed when data is written. This bit shift corresponds to the bit shift shown in FIG.  4 ( b ). 
     When a data processor reads or writes data, for example, 8 bits (1 byte) at a time, the bit shift corresponding to the bit shift in FIGS.  5 ( b )-( d ) is also executed when bit data[ 8 ]-data[ 15 ], data[ 16 ]-data[ 23 ], and data[ 24 ]-data[ 31 ] are read from the memory module  200  in FIG.  2 . However, since the bit shift is executed only for the n/8 bits (for example, 4 bits for 32-bit data) that are near each other, the wiring length for the bit shift is extremely short as shown in FIG.  16 ( b ). In addition, unlike the conventional method that requires many signal lines for the bit shift, n/8 lines is required at the most. 
     As it is apparent from FIG. 2, the positions of the bits that are read are different from the logical bit positions. That is, although the logical bit positions are in sequence of data[ 0 ]-data[ 31 ], the bit positions in the embodiment is in sequence of data[ 0 ], data[ 8 ], data[ 16 ], data[ 24 ], . . . , data[ 23 ], and data[ 31 ]. Thus, the bits are rearranged inside or outside the memory module. When data is written, the bits are also rearranged in the reverse sequence. This bit rearrangement may be made on a hardware basis in the memory module or on a software basis in the data processor. 
     FIG. 6 shows an example of the configuration of a bit shift circuit  600 , capable of shifting bits when data is read 8 bits at a time as shown above from the group  100  shown in FIG. 1, when the basic data length is 32 bits, that is, m=3. 
     In FIG. 6, the numerals  601  and  602  indicate selector circuits, respectively. The 2 to 1 selector  601  is a selector that selects one of data[ 3 * 8 +k] and data[ 1 * 8 +k], and the 4 to 1 selector  602  is a selector that selects one of data[ 3 * 8 +k], data[ 2 * 8 +k], data[ 1 * 8 +k], and data[ 0 * 8 +k]. The selection operation is controlled by the control signals C 0 -C 5 . For example, when the bit shift operation corresponding to FIG.  4 ( b ) is executed, the selector  601  selects data[ 3 * 8 +k] and the selector  602  selects data[ 2 * 8 +k], and they output the selected data to the second bit and the first bit, respectively. When the bit shift operation corresponding to FIG.  5 ( b ) is executed, the selector  602  selects data[ 1 * 8 +k] and outputs the selected data to the first bit; when the bit shift operation corresponding to FIG.  5 ( c ) is executed, the selector selects data[ 2 * 8 +k] and outputs the selected data to the first bit; and when the bit shift operation corresponding to FIG.  5 ( d ) is executed, the selector selects data[ 3 * 8 +k] and outputs the selected data to the first bit. 
     As it is clear from the embodiment, the bit arrangement method shown in FIG.  1 ( a ) requires the bits to be shifted only 3 bits at the most even when the  24- bit shift operation is logically required from the layout point of view, thus reducing the wiring length by ⅛ as compared with that in the conventional method. Therefore, this arrangement increases the read speed and reduces the power consumption caused by the wiring load capacity. Although not always required, “0” is added, when reading 16-bit data or 8-bit data, to the high-order bit positions that are not significant and data with the total length of n is output. In this specification, those bits of the 16 bits or 8 bits actually read from the n bits are called significant bits. 
     FIG. 7 shows an example of the bit shift circuit  600 , shown in FIG. 6, that is actually configured. In this embodiment, the bit shift circuit  600  for use when the basic data length is 32 bits is configured with P-channel MOS transistors and is controlled by the control signals C 0 , C 1 , C 2 , C 3 , C 4 , and C 5 . The numeral  702  indicates a complementary bit line pair. From left to right, they are bit lines bit[ 3 * 8 +k]/bit[ 3 * 8 +k] corresponding to data[ 3 * 8 +k], bit lines bit[ 2 * 8 +k]/bit[ 2 * 8 +k] corresponding to data[ 2 * 8 +k], bit lines bit[ 1 * 8 +k]/bit[ 1 * 8 +k] corresponding to data[ 1 * 8 +k], and bit lines bit[ 0 * 8 +k]/bit[ 0 * 8 +k] corresponding to data[ 0 * 8 +k], respectvely. 
     The numeral  703  schematically indicates a memory cell array in which data[ 3 * 8 +k], data[ 2 * 8 +k], data[ 1 * 8 +k], and data[ 0 * 8 +k] are stored. The numeral  701  indicates sense amplifier circuits that amplify data read from the memory cell array  703  via the bit shift circuit  600 . 
     For example, when the shift operation corresponding to FIG.  4 ( b ) is executed, the control signals C 0 , C 1 , C 2 , and C 4  of the bit shift circuit  600  are set to the power voltage level (H level), and C 3  and C 5  to the ground voltage level (L level). Also, when the shift operation corresponding to FIG.  5 ( d ) is executed, the control signals C 0 , C 2 , C 3  and C 5  of the bit shift circuit  600  are set to the power voltage level (H level), and C 4  to the ground voltage level (L level) 
     Table 1, shown below, lists the combination of control signals C 0 , C 1 , C 2 , C 3 , C 4 , and C 5  for the shift operation corresponding to FIG.  4 ( b ) that is executed when 32 bits and 16 bits are read, and for the shift operation corresponding to FIGS.  5 ( b )-( d ) that is executed when 8 bits are read. 
     
       
         
           
               
               
               
               
             
               
                   
                 TABLE 1 
               
             
            
               
                   
                   
               
               
                   
                   
                 Read 16 bits 
                   
               
               
                   
                 Read 
                 Shift in 
                 Read 8 bits 
               
            
           
           
               
               
               
               
               
               
            
               
                   
                 32 bits 
                 FIG. 4b 
                 FIG. 5b 
                 FIG. 5c 
                 FIG. 5d 
               
               
                   
                   
               
            
           
           
               
               
               
               
               
               
            
               
                 C0 
                 L 
                 H 
                 H 
                 H 
                 H 
               
               
                 C1 
                 L 
                 H 
                 H 
                 H 
                 H 
               
               
                 C2 
                 H 
                 H 
                 L 
                 H 
                 H 
               
               
                 C3 
                 H 
                 L 
                 H 
                 L 
                 H 
               
               
                 C4 
                 H 
                 H 
                 H 
                 H 
                 L 
               
               
                 C5 
                 H 
                 L 
                 H 
                 H 
                 H 
               
               
                   
               
            
           
         
       
     
     In this embodiment, even when shifting data[ 3 * 8 +k] to read data[ 0 * 8 +k], the high-speed operation is possible because the wiring length is shorter than that of the conventional method. In addition, the amount of devices and wires required for implementing the bit shift circuit  600  is so small that the power consumption is low. 
     FIG. 8 shows another example of the bit shift circuit  600 , shown in FIG. 6, that is actually configured. In this embodiment, the bit shift circuit  800  for use when the basic data length is 32 bits is configured with tri-state inverters  804  and inverters  802  and is controlled by the control signals C 0 , Cl, C 2 , C 3 , C 4 , and C 5 . The numeral  803  schematically shows a memory cell array in which data[ 3 * 8 +k], data[ 2 * 8 +k], data[ 1 * 8 +k], and data[ 0 * 8 +k] are stored. The numeral  801  indicates sense amplifier circuits that amplify data output from the memory cell array  803  via the complementary bit line pairs. For example, when the shift operation corresponding to FIG.  4 ( b ) is executed, the control signals C 0 , C 1 , C 3 , and C 4  of the bit shift circuit  800  are set to the ground voltage level (L level), and C 2  and C 5  to the power voltage level (H level). Also, when the shift operation corresponding to FIG.  5 ( d ) is executed, the control signals C 0 , C 1 , C 2 , C 4 , and C 5  of the bit shift circuit  800  are set to the ground voltage level, and C 3  to the power voltage level (H level). 
     Table 2, shown below, lists the combination of control signals C 0 , C 1 , C 2 , C 3 , C 4 , and C 5  for the shift operation corresponding to FIG.  4 ( b ) that is executed when 32 bits and 16 bits are read, and for the shift operation corresponding to FIGS.  5 ( b )-( d ) that is executed when 8 bits are read. 
     
       
         
           
               
               
               
               
             
               
                   
                 TABLE 2 
               
             
            
               
                   
                   
               
               
                   
                   
                 Read 16 bits 
                   
               
               
                   
                 Read 
                 Shift in 
                 Read 8 bits 
               
            
           
           
               
               
               
               
               
               
            
               
                   
                 32 bits 
                 FIG. 4b 
                 FIG. 5b 
                 FIG. 5c 
                 FIG. 5d 
               
               
                   
                   
               
            
           
           
               
               
               
               
               
               
            
               
                 C0 
                 H 
                 L 
                 L 
                 L 
                 L 
               
               
                 C1 
                 L 
                 L 
                 H 
                 L 
                 L 
               
               
                 C2 
                 L 
                 H 
                 L 
                 H 
                 L 
               
               
                 C3 
                 L 
                 L 
                 L 
                 L 
                 H 
               
               
                 C4 
                 H 
                 L 
                 L 
                 L 
                 L 
               
               
                 C5 
                 L 
                 H 
                 L 
                 L 
                 L 
               
               
                   
               
            
           
         
       
     
     In this embodiment, even when data[ 3 * 8 +k] is shifted into read data[ 0 * 8 +k], data may be read via one stage of tri-state inverters. Judging from the fact that one or more stages of inverters are generally required for the output of the sense amplifiers, it is apparent that data may be read speedily. In addition, the amount of devices and wires required for implementing the bit shift circuit  800  is so small that the power consumption is low. 
     FIG. 9 shows a bit shift circuit  1300 , for use with the basic data length of 32 bits (or m=3), that performs the reverse of the bit shift operation, shown in FIG. 6, when data is written in a form corresponding the group  100  shown in FIG. 1, 32 bits, 16 bits, or 8 bits at a time. 
     In FIG. 9, the numerals  1301 ,  1302 , and  1303  are selector circuits, respectively. A 3 to 1 selector  1301  is a selector that selects one of write data bits write data[ 3 * 8 +k], write data[ 1 * 8 +k], and write data[ 0 * 8 +k] and supplies the selected data to the memory cell in which data[ 3 * 8 +k] is stored, a 2 to 1 selector  1302  is a selector that selects one of write data[ 2 * 8 +k] and write data[ 0 * 8 +k] and supplies the selected data to the memory cell in which data[ 2 * 8 +k] is stored, and a 2 to 1 selector  1303  is a selector that selects one of write data[ 1 * 8 +k] and write data[ 0 * 8 +k] and supplies the selected data to the memory cell in which data[ 1 * 8 +k] is stored. Their operations are controlled by a combination of control signals. 
     More specifically, when write data is 32 bits long, the selector  1301  selects write data[ 3 * 8 +k], the selector  1302  selects write data[ 2 * 8 +k], and the selector  1303  selects write data[ 1 *B+k], respectively. When write data is the high-order 16 bits of 32 bits, the selector  1301  selects write data[ 1 * 8 +k] and the selector  1302  selects write data[ 0 * 8 +k], respectively, and the selector  1303  does not select any data. On the other hand, when write data is the low-order 16 bits of 32 bits, the selectors  1301  and  1302  do not select any data and the selector  1301  selects write data[ 1 * 8 +k]. 
     In addition, when write data is byte  3  that is the highest-order byte of 32 bits, the selector  1301  selects write data[ 0 * 8 +k]; when write data is byte  2  of 32 bits, the selector  1302  selects write data[ 0 * 8 +k]; and when write data is byte  1  of 32 bits, the selector  1301  selects write data[ 0 * 8 +k], respectively. When write data is byte  0  of 32 bits, selectors  1301 - 1303  do not select any data. 
     Not only for the read operation but also for the write operation, the method in this embodiment requires the bits to be shifted only 3 bits from the layout point of view even when the 24-bit shift operation is logically required, thus reducing the wiring length by ⅛ as compared with that in the conventional method and making high-speed, low-power write operation possible. 
     FIG. 10 shows an example of the layout of a memory cell array in which logical 1-bit data[m* 8 +k] shown in FIG.  1 ( a ) is stored, assuming that the array is built with an SRAM. 
     In FIG. 10, the numeral  1100  indicates a memory block in which 1-bit data[m* 8 +k] in the same logical positions of a plurality of n-bit data units (other words), each at its own address, are stored. n or an integral multiple of n memory blocks  1100  in this configuration are grouped to form a memory cell array. The numeral  1101  indicates an SRAM memory cell in which 1-bit of data is stored, the numeral  1102  indicates a word line used to select a memory cell, the numeral  1103  indicates a complementary bit line pair to which the input/output nodes of memory cells are connected, the numeral  1104  indicates a column switch composed of a P-channel MOS transistor, and the numeral  1105  indicates a common bit line pair. 
     When an address signal is received, the decoder circuit provided near the memory cell array decodes the address signal, sets one word line  1102  of each memory block to the selection level and, at the same time, causes one column switch  1104  to conduct. This allows a total of n bits of data, one bit from each of n memory blocks, to be read via the common bit line pair  1105  corresponding to one address. 
     Although, in the description with reference to FIG. 1, the memory cell array storing therein the logical 1-bit data[m* 8 +k] shown in FIG.  1 ( a ) is arranged in the same column in the layout, the memory cell array may be composed of a plurality of columns in the layout as shown in the example in FIG.  10 . In addition, although the memory cell array storing therein logical 1-bit data[m* 8 +k] is composed of 4 columns in FIG. 10, the memory cell array need not be limited to four columns; instead, the memory cell array may be composed of any number of columns such as 1 column, 2 columns, or 8 columns. 
     FIG. 11 schematically shows the circuit layout image that is a combination of the memory array  101  shown in FIG. 1, the bit shift circuit  600  for reading shown in FIG. 6, and the bit shift circuit  1300  for writing shown in FIG.  9 . In FIG. 11, the numeral  1200  indicates a bi-directional bit shift circuit and the numeral  1201  indicates a circuit including the bit shift circuits  600  and  1300  described above. As it is clear from this embodiment, the bi-directional bit shift circuit  1200 , which is able to orderly arrange the unit bit shift circuits  1201  corresponding to the memory cells in which data of the groups  100 _ 0 - 100 _ 7  is stored, reduces wasteful space and increases layout efficiency. 
     FIG. 12 is an embodiment in which the bit shift circuit in FIG. 8 is applied to a storage device with a redundant column. The numeral  1400  indicates a bit shift circuit for use when the basic data length is 32 bits. As with the circuit in the embodiment shown in FIG. 8, this circuit is composed of tri-state inverters  1404  and inverters  1402  and is controlled by control signals C 0 , C 1 , C 2 , C 3 , C 4 , and C 5 . The numeral  1403  schematically indicates a memory cell array in which bits data[ 3 * 8 +k], data[ 2 * 8 +k], data[ 1 * 8 +k], and data[ 0 * 8 +k] are stored. The numeral  1405  indicates a redundant column composed of auxiliary memory cells to be used when there are defective columns in the memory cell array  1403 . 
     The numeral  1401  indicates sense amplifier circuits that amplify data output from the memory cell array  1403  and the redundant column  1405  via the complementary bit line pairs. The numerals  1406 - 1409  indicate 2 to 1 selectors that switch the signal path, through which the output of the sense amplifiers is sent to the bit shift circuit  1400 , depending upon whether or not the redundant column is used. Those selectors are controlled by the redundant control signal RCS. As shown in the figure, each of the 2 to 1 selectors  1406 - 1409  is configured to select one of the amplification signals of two adjacent bits and transmit the selected signal to the bit shift circuit  1400 . 
     For example, when the column in which the bit data[ 3 * 8 +k] shown in FIG. 12 is stored is defective, the data of data[ 3 * 8 +k] is stored in the redundant column  1405 . Then, the selector  1406  selects the output of the sense amplifier of the redundant column and transmits the output to the bit shift circuit  1400 . In this case, the other selectors  1407 - 1409  select the output of the corresponding sense amplifiers and transmit the output to the bit shift circuit  1400 . 
     Also, when the column in which data[ 2 * 8 +k] is stored is detective, the data of data[ 2 * 8 +k] is stored in the data[ 3 * 8 +k] column. In this case, the selector  1406  selects the output of the sense amplifier corresponding to the redundant column and transmits the output to the bit shift circuit  1400 , and the selector  1407  selects the output of the sense amplifier corresponding to the data[ 3 * 8 +k] column and transmits the output to the bit shift circuit  1400 . In this case, the other selectors  1408  and  1409  select the output of the corresponding sense amplifiers and transmit the output to the bit shift circuit  1400 . 
     Similarly, when the column in which data[ 1 * 8 +k] is stored is detective, the data of data[ 1 * 8 +k] is stored in the data[ 2 * 8 +k] column. In this case, the selector  1406  selects the output of the sense amplifier corresponding to the redundant column and transmits the output to the bit shift circuit  1400 , the selector  1407  selects the output of the sense amplifier corresponding to the data[ 3 * 8 +k] column and transmits the output to the bit shift circuit  1400 , and the selector  1408  selects the output of the sense amplifier corresponding to the data[ 2 * 8 +k] column and transmits the output to the bit shift circuit  1400 . In this case, the other selector  1409  selects the output of the corresponding sense amplifier and transmits the output to the bit shift circuit  1400 . 
     In addition, when the column in which data[ 0 * 8 +k] is stored is detective, the data of data[ 0 * 8 +k] is stored in the data[ 1 * 8 +k] column. The selector  1406  selects the output of the sense amplifier corresponding to the redundant column and transmits the output to the bit shift circuit  1400 , the selector  1407  selects the output of the sense amplifier corresponding to the data[ 3 * 8 +k] column and transmits the output to the bit shift circuit  1400 , the selector  1408  selects the output of the sense amplifier corresponding to the data[ 2 * 8 +k] column and transmits the output to the bit shift circuit  1400 , and the selector  1409  selects the output of the sense amplifier corresponding to the data[ 1 * 8 +k] column and transmits the output to the bit shift circuit  1400 . 
     As it is apparent from the embodiment in FIG. 12, the advantage of the present invention is not reduced even when the present invention is applied to a storage device with a redundant column. Although the selectors  1406 - 1409  are placed after the sense amplifiers  1401  in this embodiment, the present invention is not limited to this configuration. The selectors  1406 - 1409  may be placed before the sense amplifiers  1401 . 
     &lt;APPLICATION EXAMPLES&gt; 
     FIG. 13 shows an example of the configuration of a system in which the semiconductor storage device according to the present invention is applied as a cache memory. The numeral  900  indicates a cache memory composed of an SRAM (Static Random Access Memory) to which the present invention is applied, the numeral  901  indicates a central processing unit (CPU), the numeral  902  indicates a floating-point processing unit (FPU), and the numeral  904  indicates a data bus connecting the cache memory  900 , CPU  901 , and FPU  902 . Those components constitute a microcomputer system  903 . 
     Although not shown in the figure, an address bus is provided, in addition to the data bus  904  described above, to supply an address signal from the CPU  901  to the cache memory  900 . Note that the numerals  905  and  906  indicate the lines, through which control signals (so-called byte codes) used to instruct the cache memory  900  of the read data length, are supplied. When the CPU  901  processes data whose basic data length is 32 bits, data is read in units of bytes but written at a fixed length such as 32 bits. 
     In this system, an array of bit data, such as 32-bit data, output from the CPU  901  to the data bus  904  is in a common sequence, for example, in sequence of bit  0 , bit  1 , bit  2 , bit  3 , . . . , and bit  31  as in the conventional system. On the other hand, the cache memory  900 , into which this array of data is input, has a data alignment circuit  910  installed that rearranges received data into an array such as the one shown in FIG.  1 ( a ). When data is output from the cache memory  900  to the data bus  904 , the data alignment circuit  910  rearranges the data of the bit array, such as the one shown in FIG.  1 ( a ) that is in the sequence specific to the present invention, into an array in which data is in the common sequence. 
     FIG. 15 shows the arrangement of the input/output signals of the data alignment circuit  910  that rearranges the bits when the data length is  32  bits. In this figure, the signals bit 31 -bit 0  in the top are the signals of the memory array, and the signals in the bottom are the signals of the data bus. The symbol “bit” in this figure is equivalent to “data” in FIG.  1 . Even when 16 bits or 8 bits of data are read when the data length is 32 bits long, the data alignment circuit  910  performs the similar bit rearrangement for the significant bit part. The system may also be configured to allow one circuit or one circuit block to perform both the bit rearrangement executed by the data alignment circuit  910  and the bit shift executed by the bit shift circuit  600 . 
     When the CPU  901  that processes 32-bit data makes a data request in units of 8 bits or 16 bits via a control signal line  905 , the data alignment circuit  910  rearranges 8 bit or 16 bits of data read from the memory cell array and, at the same time, outputs the data to the data bus  904  with “0” padded in the high-order 24 bits or 16 bits although the data alignment circuit  910  is not always required to do so. 
     FIG. 14 shows an example of the configuration of a system in which the semiconductor storage device according to the present invention is applied as a main memory. The numeral  1000  indicates a main memory composed of a DRAM (Dynamic Random Access Memory) to which the present invention is applied, the numeral  1001  indicates a microprocessor, the numeral  1003  indicates a data bus between the main memory  1000  and the microprocessor  1001 , and the numeral  1004  indicates a control signal line through which the length of data to be read into the main memory  1000  is specified. The numeral  1005  indicates a data alignment circuit that rearranges data in a bit array provided from microprocessor  1001 , which is in a common sequence either in ascending sequence, that is, the sixth bit is next to the first bit, the first bit is next to the second bit, and so on, or in descending sequence, to the bit array shown in FIG.  1 ( a ) that is specific to the present invention. This circuit also rearranges the bit array of data, read from the memory array, in a sequence opposite to that described above. The main memory  1000 , microprocessor  1001 , data bus  1003 , and data alignment circuit  1005  constitute a microcomputer system  1004 . 
     The main memory  1000  and the microprocessor  1001  may be integrated on the same chip or on separate chips. The main memory  1000  may be not only a DRAM but also a memory such as an SRAM, ferrodielectric substance memory, or flash memory. Although not shown in the figure, an address bus that supplies the address signal, received from the microprocessor  1001 , to the main memory  1000  is provided in addition to the data bus  1003  described above. 
     In the application shown in FIG. 14, the data alignment circuit  1005  is provided between the main memory  1000  and the data bus  1003 . In a system with a bus controller that switches the bus or decides the bus usage right or in a system with a memory management unit that performs physical to logical address conversion or virtual storage control, the bus controller or the memory management unit may have the function of the data alignment circuit  1005  described above. 
     In addition, as described in the example of the application in FIG. 13, this data alignment circuit  1005  may have the bit rearrangement function and the bit shift function provided by the bit shift circuit  600  described above. In that case, too, the bus controller or the memory management unit may have the function of the data alignment circuit  1005  or the bit shift function described above. 
     While the invention made by the inventor has been described based on the embodiment, it is to be understood that this invention is not limited to the embodiments described above but many modifications may be made without departing from the spirit of the invention. For example, although a storage device connected to a data processor whose basic data length is 32 bits is described above for convenience, the same effect as that of the above embodiments may be obtained when the present invention is applied to a memory module composed of a semiconductor storage device or a plurality of semiconductor chips connected to a data processor whose basic data size is multiple bits such as 16 bits, 64 bits, 128 bits, 256 bits, 512 bits, 1024 bits, or 2048 bits. 
     Although data[ 1 * 8 +k] is allocated next to data[ 0 * 8 +k] in the embodiment shown in FIG.  1 ( a ), the present invention is not limited only to that allocation. For example, data[ 2 * 8 +k] may be allocated next to data[ 0 * 8 +k] and data[ 3 * 8 +k] may be allocated next to data[ 0 * 8 +k]. If the bit sequence is the same in different groups, any bit sequence is possible in those groups. 
     In addition, although group  100 _ 6  is allocated next to group  100 _ 7 , group  100 _ 5  is allocated next to group  100 _ 6 , and so on in the embodiment in FIG.  1 ( b ), the present invention is not limited only to that sequence. For example, group  100 _ 5  may be allocated next to group  100 _ 7  and group  100 _ 0  may be allocated next to group  100 _ 7 . 
     Although data on the data bus is in a bit array in a common sequence in the application system described above, the bit array of data on the bus may be an array specific to the present invention such as the one shown in FIG.  1 ( a ). In that case, the CPU or the microprocessor may convert the bit array of data or, instead, the system may be configured by scrambling the signal lines on the bus such that data in the CPU is in a common sequence and data in the memory is in a sequence specific to the present invention. Instead, by using a special method for the connection between the CPU data terminals and the bus signal lines or the connection between the memory data terminals and the bus signal lines, the system may be configured such that the CPU outputs the data of the bit array in a common sequence but the data is input to the memory as data in the sequence according to the present invention. 
     EFFECTS OF THE INVENTION 
     The typical effects obtained by the invention disclosed in this application will be described briefly below. 
     That is, the system reads data speedily in units of bytes and, at the same time, significantly reduces the amount of devices and wiring used to build a circuit for executing bit shift operation, making a low-power storage device available. In addition, the reduction in the number of signal lines in the wiring running in parallel for bit shift operation reduces the wiring area, and minimizes the crosstalk, of the device.