US20020129188A1 - Data processing device with memory coupling unit - Google Patents
Data processing device with memory coupling unit Download PDFInfo
- Publication number
- US20020129188A1 US20020129188A1 US10/141,996 US14199602A US2002129188A1 US 20020129188 A1 US20020129188 A1 US 20020129188A1 US 14199602 A US14199602 A US 14199602A US 2002129188 A1 US2002129188 A1 US 2002129188A1
- Authority
- US
- United States
- Prior art keywords
- memory
- bus
- data processing
- processing unit
- unit according
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1678—Details of memory controller using bus width
Definitions
- the present invention relates to a data processing device with a memory coupling unit.
- Data processing devices such as microprocessors or microcontrollers comprise one or more register files for intermediate storage of data and addresses.
- the content of these registers has to be loaded and stored into a memory subsystem which can consist of standard memory and/or a cache memory.
- a memory subsystem which can consist of standard memory and/or a cache memory.
- an interface between the register file and the memory subsystem is provided which is controlled by respective control units of the microprocessor during load and store cycles.
- Modern microprocessors provide superscalar design with the ability of processing multiple instructions in parallel. Furthermore, in digital signal processing some instructions require multiple data which is processed during execution of the respective instruction.
- the interface between the register file and the memory can be a bottleneck within the processing path and slow down the over all speed of the respective microprocessor.
- a data processing unit with a register file having a plurality of registers, a memory having a plurality of n-bit input/output ports, and a coupling unit for coupling the memory with the register file, a memory address and select unit for addressing the memory banks.
- the coupling unit comprises a bus having a bus width of at least 2n-bits forming at least a first and second sub-bus, first couplers for coupling each memory bank or the register file selectively with one of the sub-busses, and second couplers for coupling the register file or the memory banks with the bus.
- the data processing unit comprises a first and a second register file having a plurality of registers, a memory having a plurality of n-bit input/output ports, a bus having a bus width of at least 2n-bits forming at least a first and second sub-bus, first couplers for coupling each memory bank selectively with one of the sub-busses, second couplers for coupling the first register file with the bus, and third couplers for coupling the second register file with the bus.
- a data processing unit comprises a first and a second register file having a plurality of registers, a first and second memory each having a plurality of n-bit input/output ports, a first bus having a bus width of at least 2n-bits forming at least a first and second sub-bus, first couplers for coupling each memory bank of said first memory selectively with one of the sub-busses, second couplers for coupling said first register file with said first bus, a second bus having a bus width of at least 2n-bits forming at least a third and fourth sub-bus, third couplers for coupling each memory bank of said second memory selectively with one of the sub-busses, fourth couplers for coupling the second register file with the second bus, and a bus-coupler for coupling the first and second bus.
- FIGS. 1 a and 1 b show a block-diagram of first embodiments including a memory sub-system, a coupling interface and a register file according to the present invention
- FIG. 2 shows a block diagram of a second embodiment including a memory sub-system coupled with a register file according to the present invention
- FIG. 3 shows a block diagram of a third embodiment with a memory subsystem coupled with a register file according to the present invention
- FIG. 4 shows a block diagram of a fourth embodiment with a coupling unit between a memory system and two register files according to the invention
- FIG. 5 shows details of the coupling unit coupling multiple banks with a register file
- FIG. 6 shows an addressing scheme of a multiple bank memory system
- FIG. 7 shows another addressing scheme of a multiple bank memory system
- FIG. 8 shows the bus-bridge according to FIG. 4 in more detail
- FIG. 9 is a further embodiment showing a memory and a interface of the present invention.
- FIG. 10 shows a data transfer of a first type using the embodiment of FIG. 4.
- FIG. 11 shows a data transfer of a second type using the embodiment of FIG. 4.
- FIG. 12 shows a context switch data transfer using the embodiment of FIG. 4,
- FIG. 13 shows a single bus line structure with a bus holder
- FIG. 14 shows a different embodiment of a bus holder.
- FIG. 1 a shows an embodiment of simple implementation of the principles according to the present invention.
- a memory sub-system contains two memory banks 101 and 102 .
- memory bank means a memory block containing either multiple banks or towers organized in one or more data bytes or a single memory organized in multiple bytes.
- the memory sub-system can be either cache memory or standard memory.
- the memory banks 101 and 102 are addressed and selected by a memory address and select unit 9 .
- Each memory bank outputs 16 bit data at its respective data input/output port.
- the output ports are coupled with the input of 2 ⁇ 16 multiplexers 401 , 402 , respectively.
- Each multiplexer 401 and 402 comprises two 16 bit outputs which are coupled with 16 bit sub-busses 410 and 420 .
- the multiplexers are controlled by memory address and select unit 9 .
- a register file 8 is provided which contains a plurality of 16 bit registers 81 , 82 , 83 , 84 , . . . Register file 8 is organized in a way, that two registers are accessible in parallel. Register file 8 is coupled with both 16 bit sub-busses 410 and 420 .
- FIG. 1 b is functional identical to FIG. 1 a .
- the multiplexers 401 and 402 are placed between the sub-busses 410 , 420 and the register file 8 .
- the multiplexers are controlled by memory address and select unit 9 .
- Both arrangements are capable of transferring two 16 bit words from or to register file 8 to or from memory sub-system 1 in parallel.
- the register file is organized in such a way that two registers are accessible at the same time, for example, register 81 and register 82 or register 83 and register 84 , etc.
- the multiplexers can perform an alignment in case data to be transferred to the register file 8 is not aligned with memory bank 101 . This will be explained in more detail below.
- Both arrangements can also transfer a single word (16 bit) from one of the two memory banks 101 , 102 to any register in the register file 8 .
- Additional multiplexers in the register file can provide transfer of single bytes in this arrangement.
- the whole embodiment can be expanded to a 8 bit sub-bus system using four 8 bit sub-busses and respective multiplexers.
- FIG. 2 shows a block diagram of an interface 4 between a register file 8 and a memory subsystem 1 in a microcontroller or microprocessor.
- the memory sub-system 1 comprises 4 memory banks 101 , 102 , 103 , and 104 .
- Each memory bank is organized in 16 bits. In other words, each memory bank has a 16-bit data input/output port.
- a memory address and select unit 9 is provided to select each memory bank individually. Unit 9 also provides the addressing of the memory banks which is usually common for all banks but can be provided individually at least in part as will be explained later.
- the interface 4 comprises a bus having four 16-bit sub-busses 410 , 420 , 430 , and 440 .
- Each bus 410 , 420 , 430 , and 440 is bi-directional and connected to bi-directional input/output ports of four multiplexers 401 , 402 , 403 , and 404 , respectively.
- Each multiplexer 401 , 402 , 403 , and 404 couples one of the four sub-busses 410 , 420 , 430 , and 440 with the input/output port of an appropriate memory bank 101 , 102 , 103 , or 104 .
- Register file 8 comprises two banks of registers 810 , 820 each having a number of registers.
- Each register has 32 bits and comprises an upper 16 bit portion 801 and a lower 16 bit portion 802 .
- the upper portion 801 of register bank 810 is coupled with sub-bus 410 , the lower portion 802 with sub-bus 420 , the upper portion 803 of register bank 820 with sub-bus 430 , and the lower portion of register bank 820 with sub-bus 440 .
- the control logic for selecting the sub-busses 410 , 420 , 430 , and 440 and the multiplexers 401 , 402 , 403 , and 404 , etc. is not shown in FIG. 2.
- the embodiment according to FIG. 2 provides the feature of reading and writing of up to two 32 bit long words or four 16 bit words in parallel from or to the memory sub-system 1 .
- the register file has to be organized in a way that two or more registers are accessible in parallel.
- memory address and select unit 9 addresses the memory banks 101 , 102 , 103 , and 104 . If the data from memory 1 are aligned, then multiplexer 401 selects sub-bus 410 , multiplexer 402 selects sub-bus 420 , multiplexer 403 selects sub-bus 430 , and multiplexer 404 selects sub-bus 440 .
- the register select unit (not shown) select one register in each register bank 810 , 820 . In another embodiment the same register in each bank 810 and 820 are addressed. Thus two 32 bit long words will be written into the register file in a single cycle. If the data stored in the memory is not aligned, for example, if the two 32 bit long words start in memory bank 102 at address X, followed by the data in banks 103 , and 104 at the same address and ending with data stored in memory bank 101 at the address X+8 (with byte-wise addressing), then memory address and select unit addresses memory banks 102 , 103 , 104 with address X and memory bank 1 with address X+8.
- the respective outputs are coupled with the register file 8 as follows: Multiplexer 401 couples memory bank 101 with sub-bus 440 , multiplexer 402 couples memory bank 102 with sub-bus 410 , multiplexer 403 couples memory bank 103 with sub-bus 420 , and multiplexer 404 couples memory bank 104 with sub-bus 430 .
- the interface 4 automatically aligns it for reading or writing in or out of register file 8 .
- This scheme is shown for 16 bit words as the smallest data which can be loaded or stored. Nevertheless, the scheme can be easily adapted to higher or lower data structures, such as 8 bit data or 32 bit data, etc.
- the arrangement according to FIG. 2 can also be used to store or load a single 16 bit word from or to memory 1 .
- memory address and select unit 9 selects and addresses memory bank 103 .
- the data from the output port of memory bank 3 is coupled with sub-bus 410 through multiplexer 403 .
- the register select logic (not shown) select the proper register out of register bank 810 , for example register portion 801 .
- FIG. 2 shows the multiplexers or switches between the memory subsystem 1 and the busses 410 , 420 , 430 , and 440 .
- the multiplexers or switches can be placed between the busses 410 , 420 , 430 , and 440 and the register file 8 .
- the switches can be on both sides. This is dependent on the implementation and layout of the respective microprocessor or microcontroller.
- FIG. 3 shows an embodiment which is expanded in view of the embodiment shown in FIG. 2.
- the arrangement of FIG. 2 is simply doubled. Therefore, two memory blocks are provided within memory sub-system 1 .
- Each memory block contains 4 memory banks 101 , 102 , 103 , 104 , 101 ′, 102 ′, 103 ′, and 104 ′.
- the embodiment also comprises two buses 4 and 4 ′ and respective multiplexers 401 , 402 , 403 , 404 , 401 ′, 402 ′, 403 ′, and 404 ′.
- two separate register files 8 and 8 ′ are provided.
- register file 8 can be a address register file and register file 8 ′ a data register file.
- the transfer of data into the registers takes place in the same manner as described above.
- Memory subsystem 1 is divided into two separate memory blocks wherein address register file 8 has access only to memory banks 101 , 102 , 103 , and 104 whereas register file 8 ′ has only access to memory banks 101 ′, 102 ′, 103 ′, and 104 ′. In many application this is not disadvantageous as the central processing unit provides means to transfer data from register file 8 to register file 8 ′ and vice versa.
- FIG. 4 shows a third embodiment according to the present invention.
- a memory block 1 is coupled by a 64 bit read bus 1 a and a 64 bit write bus 1 b with a coupling unit 42 of a first 64 bit bus 46 .
- a single bi-directional bus can be used.
- the two memory banks can be addressed with either a common address signal generated by a memory address and select unit (not shown) or an individual address signal for each memory bank generated by the memory address and select unit.
- memory address and select unit provides a address incrementer as will be explained later.
- a second coupling unit 44 couples bus 46 with respective 64 bit read and write buses of an address register file 8 .
- a ′ indicates the same elements on the data register file side.
- Interface 4 comprises a second bus 47 with coupling units 43 and 45 . Between the two busses 46 and 47 a bridge is provided. This bridge 41 is controllable and can couple both busses 46 and 47 .
- a switch control unit 3 is provided which controls the coupling units 42 , 43 , 44 , and 45 , the bridge 41 and an external interface 7 which can couple external devices through busses 7 a , 7 b , and 7 c.
- FIG. 4 shows basically the same elements as FIG. 3.
- a bridge unit 41 is provided. if this bridge unit 41 is activated by switch control 3 , then only up to 2 32 bit long words or 4 16 bit words can be transferred to or from either address register file 8 or data register file 8 ′. Also, only either memory block 1 or memory block 1 ′ can be source or destination in this mode. On the other hand both memory blocks 1 and 1 ′ can form a single memory with consecutive memory addresses and data can be transferred from any location within this memory to any register in the register files 8 and 8 ′. Also, the external interface 7 can provide data which can be transferred to either register file.
- an additional internal interface (not shown), for example, coupled with bus 46 or 47 , can be provided to transfer data from or to other on-chip devices.
- Bridge 41 thereby selects the way the data is routed which can be from or to either internal memory bank 1 , 1 ′ to or from the register files 8 , 8 ′, the external interface 7 or internal interface.
- the bridge 41 allows a plurality of combinations.
- the bridge 41 is deactivated then the content of two 32 bit registers in the address register file and of two 32 bit registers in the data register file can be transferred within one single cycle from or to the memory subsystem 1 , 1 ′.
- This is very advantageous in case of a context switch where depending upon implementation the content of a number of registers has to be stored and restored. For example, if a context consists of four data and four address registers a context switch with an embodiment according to FIG. 4 takes only 2 cycles for storing and two cycles for restoring the respective registers.
- FIG. 5 shows an embodiment of one side of interface 4 including, for example, coupling units 42 , bus 46 , and coupling unit 44 .
- Memory block 1 is divided into four memory towers or banks 101 , 102 , 103 , and 104 .
- Bus 46 is divided into four 16 bit sub-busses 46 a , 46 b , 46 c , and 46 d .
- Each memory tower has a 16 bit data input/output port 101 a , 102 a , 103 a , and 104 a .
- Port 101 a is coupled with sub-bus 46 b and sub-bus 46 d .
- Port 102 a is coupled with sub-bus 46 a and sub-bus 46 c .
- Port 103 a is coupled with sub-bus 46 b and sub-bus 46 d .
- Port 104 a is coupled with sub-bus 46 a and sub-bus 46 c .
- Four 16 bit coupling busses 801 , 802 , 803 , and 804 are provided.
- Coupling bus 801 is coupled with sub-bus 46 a and 46 b .
- Coupling bus 802 is coupled with sub-bus 46 b and 46 c .
- Coupling bus 803 is coupled with sub-bus 46 c and 46 d .
- Coupling bus 804 is coupled with sub-bus 46 d and 46 a .
- FIG. 5 indicates a coupling of each of the 16 lines of a port or coupling bus with one of the 16 respective lines of the sub-bus.
- an embodiment comprising tri-state buffers for a single bus line is shown.
- the input of a first tri-state driver 48 is connected with one line of an input/output port of memory sub-system 1 . Its respective output line is connected to the respective line of bus 46 .
- a second tri-state driver 49 is provided. Its input is connected to the same line of bus 46 and its output is connected with the same port of memory subsystem 1 .
- This embodiment shows bi-directional busses. Of course, unidirectional busses can be used as well.
- connection scheme according to FIG. 5 allows any 16 bit data word to be placed at any of the coupling busses 801 , 802 , 803 , or 804 .
- This scheme can be used instead of the one shown in FIG. 2 or FIG. 3.
- the principle used here can be expressed also more generally as follows:
- Memory 1 comprises even and odd memory towers each having a port.
- the register file 8 comprises a plurality of registers, whereby a number of registers are accessible in parallel.
- the register file has a bit width which is at least equal to the sum of the bit width of each memory tower port, for example, if four memory towers each having a 16 bit port are used, then the register file 8 comprises at least two 32 bit registers or four 16 bit registers being accessible in parallel.
- the register file interface forms a multiple n-bit interface to said register file.
- the coupling bus comprises even and odd sub-busses, whereby first couplers are bi-directional tri-state drivers coupling each odd memory tower with each even sub-bus and each even memory tower with each even sub-bus and whereby the second couplers couple the sub-busses with the register file interface in such a way, that said port of any memory tower can be coupled with any n-bit part of said register file interface.
- each memory tower 101 , 102 , 103 , 104 could be selectively coupled with each sub-bus and each coupling bus 801 , 802 , 803 , and 804 would be fixedly coupled with one of the sub-busses 46 a , 46 b , 46 c , 46 d , respectively.
- a further embodiment would provide all selective couplings between coupling busses 801 , 802 , 803 , 804 and the sub-busses 46 a , 46 b , 46 c , 46 d and fixed connections between the memory towers 101 , 102 , 103 , 104 and the sub-busses 46 a , 46 b , 46 c , 46 d.
- Port 103 a is coupled sub-bus 46 b
- port 104 a is coupled with sub-bus 46 c
- port 101 a is coupled with sub-bus 46 d
- port 102 a is coupled with sub-bus 46 a .
- sub-bus 46 b is coupled with coupling bus 801
- sub-bus 46 c is coupled with coupling bus 802
- sub-bus 46 d is coupled with coupling bus 803
- sub-bus 46 a is coupled with coupling bus 804 .
- FIG. 6 and FIG. 7 This access scheme allows access to any unaligned 64 bit data stored within a addressed memory portion of this 4 bank memory block. This type of access is the most common case which usually would need 2 cycles, for example, if a 64 bit data begins in memory bank 102 and ends in memory bank 101 , as shown in FIG. 6, then during a first cycle memory banks 102 , 103 , and 104 would output their data at address X and during a second cycle memory bank 101 outputs its data at address X+8 (bytewise addressing).
- FIG. 6 shows an access scheme which allows access of unaligned data in a memory block with a plurality of memory banks within a single cycle.
- FIG. 6 are again 4 memory banks 101 , 102 , 103 , and 104 with respective input/output ports 101 a , 102 a , 103 a , and 104 a shown.
- Each bank is addressed by address and select unit 9 by the upper address bit lines 90 which form the main address part of a respective address which addresses a 32 bit data portion of each bank 101 , 102 , 103 , and 104 .
- the 32 bit data portion consists of two 16 bit memory cells 101 b , 101 c in memory bank 101 , 102 b , 102 c in memory bank 102 , 103 b , 103 c in memory bank 103 , and 104 b , 104 c in memory bank 104 .
- Data in memory block 1 are stored in a sequential order such that memory cells 101 b , 102 b , 103 b , 104 b , 101 c , 102 c , 103 c , 104 c , etc. form consecutive memory cells within memory block 1 .
- memory cells 101 b , 102 b , 103 b , and 104 b contain the upper data part and memory cells 101 c , 102 c , 103 c , and 104 c contain the lower data part of a 128 bit data word.
- Special address bit lines 91 , 92 , 93 , 94 are used to select individually upper or lower memory cells in each bank 101 , 102 , 103 , and 104 . For example, as shown in FIG. 6, if unaligned 64 bit data start in memory bank 102 and end in memory bank 101 indicated by the shaded memory cells 102 b , 103 b , 104 b , and 101 c .
- Address and select unit 9 selects these memory cells through address lines 90 , 91 , 92 , 93 , and 94 .
- Ports 101 a , 102 a , 103 a , and 104 a then carry the unaligned 64 bit data word which will be aligned through interface 4 as described above.
- FIG. 7 shows a second embodiment of memory block 1 .
- two memory banks 105 and 106 are provided. Each memory bank is organized in 64 bits.
- Bank 105 contains the “upper/lower” data and is addresses by address lines 95 through memory address and select unit 9 to output 64 bit in parallel.
- Bank 106 contains the “lower/upper” data and is addressed by address lines 96 through unit 9 to output also 64 bit in parallel.
- Address lines 95 and 96 can be partly identical, for example only the least significant bit is handled differently. Depending on this least significant bit it is decided whether bank 105 or 106 contains the upper or lower part.
- Memory address and select unit 9 provides an address incrementer to allow different addresses on address lines 95 and 96 .
- the 64 bit output is fed in four 16 bit portions to four 2 ⁇ 16 multiplexers 107 , 108 , 109 , and 110 .
- the outputs of each multiplexer 101 a , 102 a , 103 a and 104 a carry the unaligned 64 bit data from memory 1 .
- the multiplexers are controlled by memory address and select unit 9 .
- the memory banks 105 and 106 are organized in such a way, that data start in the first row of bank 105 , continue in the first row of bank 106 , followed by row 2 of bank 105 and so on. Again, for example, if unaligned 64 bit data start with the third 16 bit portion in memory bank 105 , as indicated by the shadowed memory cells in FIG.
- unit 9 selects the same memory lines in bank 105 and 106 .
- multiplexers 107 , 108 , 109 , and 110 the respective 16 bit portions of bank 105 or bank 106 are selected and fed to output ports 101 a , 102 a , 103 a , and 104 a .
- multiplexers 109 and 110 select bank 105 and multiplexers 107 and 108 select bank 106 .
- the actual alignment is done by interface 4 as described above.
- address lines 95 and 96 must provide select lines for each memory cell within a row of memory banks 105 and 106 .
- FIG. 8 shows an embodiment of the bridge unit 41 shown in FIG. 4.
- Bus 46 and 47 each are divided into four 16 bit sub-busses.
- Each line of each sub-bus of bus 46 is coupled with the respective line of bus 47 by means of two tri-state drivers.
- FIG. 8 shows only drivers for one of sixteen lines for each sub-bus.
- the tri-state driver pairs 450 , 451 ; 460 , 461 ; 470 , 471 ; 480 , 481 each form a selectable bi-directional coupling element.
- Each driver either functions as a read or write driver depending on the source and destination of the respective data.
- the upper or lower drivers of each line can be enabled commonly or separately for each 16 bit sub-bus.
- each sub-bus different directions for each sub-bus are possible and, for example, 32 bit data can be written from memory block 1 to the data register 8 ′ and 32 bit data from memory 1 ′ to address register file 8 .
- Any other combination is possible depending on the complexity of the bridge unit 41 .
- all top drivers 450 , 460 , 470 , and 480 are enabled by a single signal and all bottom drivers 451 , 461 , 471 , and 481 are enabled by a second signal.
- FIG. 9 Another embodiment of the memory interface is shown in FIG. 9.
- a single memory block 120 is provided.
- This memory block 120 is organized in 128 bits.
- the interface between register file and memory consists of 32 double 2 ⁇ 1 multiplexers M 1 -M 32 as primary switches, an intermittent bus 490 and 8 barrel shifters as secondary switches.
- Each multiplexer M 1 -M 32 contains two 2 ⁇ 1 multiplexers.
- the multiplexers M 1 -M 32 are individually controlled by control signal C.
- Each bit cell output of an addressed row of memory block 120 is coupled with an input of a multiplexer M 1 -M 32 . 4 multiplexers M 1 -M 4 ; M 5 -M 8 ; . . . . M 29 -M 32 respectively are coupled with one of 8 barrel shifters B 1 -B 8 .
- the barrel shifters are controlled by signal B.
- the barrel shifters B 1 -B 8 output 64 bits in parallel which are fed to the register file.
- the 128 bits of each row of memory block 120 are not stored in a consecutive order.
- the bit order starts with bit D 0 , D 8 , D 64 , D 72 , D 16 , D 24 , D 80 , D 88 , . . . D 48 , D 56 , D 112 , D 120 , . . . D 55 , D 63 , D 119 , D 127 .
- the order is divided into eight blocks each having four 4 bit groups.
- the multiplexers M 1 -M 8 select two data lines out of a 4 bit group, whereby either the first two and or the second two bits are selected, for example, multiplexer M 1 selects either data pair D 0 , D 8 or data pair D 64 , D 72 .
- control signal C consists of at least 32 control lines.
- the output of all multiplexers form a 64 bit bus 490 .
- Eight 8-Bit barrel shifters B 1 -B 8 form the secondary switches which switch the data on the 64 bit lines of bus 490 .
- Each barrel shifter performs a left shift in increments of two bit depending on the control signal B which is formed by respective address signals.
- Memory address and select unit (not shown) generate select signal A which selects the third row of memory. 1.2.0. Thus, all 128 bits of this memory row are fed to the inputs of multiplexers M 1 -M 32 .
- a switch control unit (not shown), which may be part of memory address and select unit, selects the second data pair of multiplexers M 1 , M 5 , M 9 , M 13 , M 17 , . . . M 29 and the first data pair of all other multiplexers.
- the input of barrel shifter B 1 receives the following data signals: D 64 , D 72 , D 16 , D 24 , D 32 , D 40 , D 48 , and D 56 .
- Signal B is common for all eight barrel shifters and indicates in this example to shift the data byte by one step. As mentioned above, one step is equal to a left shift by two bits.
- the output of barrel shifter B 1 carries signals D 16 , D 24 , D 32 , D 40 , D 48 , D 56 , D 64 , D 72 . Even so the output of the barrel shifters B 1 -B 8 are not in the right order, there is a fixed relationship between each output line. Thus, no additional switching is necessary.
- the wiring selects the first bits of each barrel shifter B 1 -B 9 , followed by the second bits of each barrel shifter B 1 -B 9 , etc.
- the register file receives a data word which is the aligned 64 bit word starting with bit D 16 , D 17 , D 18 , . . .
- the principle of this embodiment is to provide multiplexers as first switches which select a predefined number of bits from the data provided by the memory in parallel to the respective internal bus.
- the second switch is used to bring the extracted bits in a predefined order.
- the second switch does not necessarily reduce the number of bits but does reorder the bits so that the relation of each consecutive bit is constant.
- the order of consecutive bits stored in the memory can be arranged in many different ways and does not have to follow the order of the embodiment.
- Principle of the present invention is to interleave or scramble the bytes, words, or long words stored in memory in an appropriate manner.
- a local multiplexing can select the respective data bits.
- the write enable signal has to be also interleaved to access the respective memory cells during a write cycle.
- the write enable signal for the first byte has to go to bit 0 , 1 , 2 , 3 , . . . 7 which are not in consecutive order.
- the barrel shifter can of course be realized by multiplexers or in any other known way.
- the output bit lines of barrel shifters B 1 -B 8 do not have to be ordered before they are coupled with the register file. Depending on the size of each register this can also be done between the register file and the execution units as only execution units which actually manipulate the content of a register need the content of a data byte or word in order. Nevertheless, in a 32 bit microcomputer with 32 bit registers where a register might store 4 bytes, 2 words or 1 long word, it is advantageous to order the bits fed from the interface to the register file. Also, any conventional memory, externally or internally, can be used as the bit order in the memory is of no concern as long reading and writing lines use the same order. Thus, in case of a dual port memory with different port orders, a rewiring on either port has to be performed to ensure proper order of the memory content.
- FIG. 10 shows a data transfer using the embodiment of FIG. 4. Both memory banks are addressed by the same address signal generated by memory address and select unit 9 . Each memory bank has a four 16 Bit word wide interface, for example 64 bits. Bus 46 and bus 47 each consist of four 16 Bit wide sub-busses 46 a , 46 b , 46 c , 46 d and 47 a , 47 b , 47 c , 47 d , respectively. If all four 16 Bit words are to be transferred from one memory bank to one of the register files 8 , 8 ′ the transfer takes place with or without usage of bridge 41 . In case of a boundary crossing data from both memory banks have to be transferred into one register file. This scenario is shown in FIG. 10.
- the first two 16 Bit words are stored at the last two memory positions of the first memory bank 1 and the following two 16 Bit words are stored within the second memory bank 1 ′.
- the content of the last two memory cells of the first memory bank are transferred on sub-bus 46 a and 46 b .
- Bridge 41 couples sub-bus 46 a with 47 a and sub-bus 46 b with 47 b .
- the second two 16 Bit words are transferred from the first two memory cells within the second memory bank 1 ′ onto sub-bus 47 c and 47 d , respectively. Through coupling bus 8 a ′ the four 16 Bit words are transferred into register file 8 ′.
- FIG. 11 depicts a second scenario in which a crossing from the second memory bank 1 ′ to the first memory bank 1 takes place.
- memory address and select unit 9 has to provide different addresses for each memory bank. Therefore, memory address and select unit 9 comprises an address incrementer to increment an address provided, for example, to memory bank 1 ′ for memory bank 1 . If, for example, four 16 Bit words are stored within the memory under an address, that, for example, the first 16 Bit word is stored in the last memory cell in one row of the second memory bank 1 ′, then the succeeding memory cells are located under a succeeding address in the first memory bank 1 .
- the incrementer increments the address, in this example by 64, and provides the first memory bank 1 with the incremented address.
- the content of the last memory cell of the addressed row in the second memory bank 1 ′ is transferred on sub-busses 47 a .
- the content of the first three memory cells of the row of the first memory bank 1 addressed by the incremented address are transferred to sub-busses 46 b , 46 c , and 46 d , through the bridge to sub-busses 47 b , 47 c and 47 d .
- the transfer to register file 8 ′ takes place in the same manner as described above.
- FIG. 12 depicts a third scenario in which, for example, a context switch takes place.
- the purpose of such a transfer is to load or store the content of a context represented by the content of a plurality of registers as quickly as possible.
- the bridge 41 completely de-couples busses 42 from busses 43 .
- 64 bit from memory bank 1 can be transferred to register file 8 in parallel with 64 bits from memory bank 1 ′ to register file 8 ′ or vice versa. Therefore, memory address and select unit 9 addresses both memory banks 1 and 1 ′ with usually the same address were the context content is stored or is to be stored to. External or internal interfaces are usually also de-coupled during such a process.
- FIGS. 10, 11, and 12 do not show the couplers 42 , 43 , 44 , and 45 according to FIG. 4. for a better overview, only the different data paths are shown.
- FIG. 13 shows an embodiment of a single bus line, for example, bus line 46 a .
- Transfer from memory or register file to the busline 46 a is established via two tristate inverters 150 and 156 .
- a simple logic consisting of NOR gate 151 and 157 controlled by a clock signal 152 and respective logic signals 153 and 158 controls drivers 150 and 152 . If the drivers 150 and 156 are not enabled a special bus holder arrangement secures the status of the bus line in a defined manner.
- the bus holder consists of a first inverter 154 whose input is coupled with bus line 46 a and whose output is coupled with the input of a second inverter 155 whose output is coupled with bus line 46 a .
- Inverter 155 is preferably weak to avoid a unnecessary load on the bus line for one of the drivers 150 or 156 . Such an arrangement avoids congestion problems on a bus line as the bus line is only actively driven during the low phase of the clock signal 152 . During the high phase of the clock signal 152 drivers 150 and 156 are disabled. Thus, an improved signal flow can be achieved.
- FIG. 14 shows an improvement of the bus holder.
- a first inverter 160 is coupled with a second inverter 161 in series to hold a signal on a bus line.
- the second inverter 161 is a strong driver but switched. This driver is only active when the clock signal 152 is high and no other driver is active. These two conditions are anded by an AND gate 162 whose output controls driver 161 .
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
Abstract
A data processing unit is disclosed with a register file having a plurality of registers. A memory having a plurality of n-bit input/output ports, and a coupling unit for coupling the memory with the register file, a memory address and select unit for addressing the memory banks are provided. The coupling unit comprises a bus having a bus width of at least 2n-bits forming at least a first and second sub-bus, first couplers for coupling each memory bank or the register file selectively with one of the sub-busses, and second couplers for coupling the register file or the memory banks with the bus.
Description
- The present invention relates to a data processing device with a memory coupling unit. Data processing devices, such as microprocessors or microcontrollers comprise one or more register files for intermediate storage of data and addresses. For processing of data and/or addresses, the content of these registers has to be loaded and stored into a memory subsystem which can consist of standard memory and/or a cache memory. Usually, an interface between the register file and the memory subsystem is provided which is controlled by respective control units of the microprocessor during load and store cycles.
- Modern microprocessors provide superscalar design with the ability of processing multiple instructions in parallel. Furthermore, in digital signal processing some instructions require multiple data which is processed during execution of the respective instruction. The interface between the register file and the memory can be a bottleneck within the processing path and slow down the over all speed of the respective microprocessor.
- It is therefore an object of the invention to provide an interface between a register file and a memory system with high speed access to data stored in the memory system.
- This object is achieved by a data processing unit with a register file having a plurality of registers, a memory having a plurality of n-bit input/output ports, and a coupling unit for coupling the memory with the register file, a memory address and select unit for addressing the memory banks. The coupling unit comprises a bus having a bus width of at least 2n-bits forming at least a first and second sub-bus, first couplers for coupling each memory bank or the register file selectively with one of the sub-busses, and second couplers for coupling the register file or the memory banks with the bus.
- In another embodiment of the present invention, the data processing unit comprises a first and a second register file having a plurality of registers, a memory having a plurality of n-bit input/output ports, a bus having a bus width of at least 2n-bits forming at least a first and second sub-bus, first couplers for coupling each memory bank selectively with one of the sub-busses, second couplers for coupling the first register file with the bus, and third couplers for coupling the second register file with the bus.
- In yet another embodiment a data processing unit comprises a first and a second register file having a plurality of registers, a first and second memory each having a plurality of n-bit input/output ports, a first bus having a bus width of at least 2n-bits forming at least a first and second sub-bus, first couplers for coupling each memory bank of said first memory selectively with one of the sub-busses, second couplers for coupling said first register file with said first bus, a second bus having a bus width of at least 2n-bits forming at least a third and fourth sub-bus, third couplers for coupling each memory bank of said second memory selectively with one of the sub-busses, fourth couplers for coupling the second register file with the second bus, and a bus-coupler for coupling the first and second bus.
- FIGS. 1a and 1 b show a block-diagram of first embodiments including a memory sub-system, a coupling interface and a register file according to the present invention,
- FIG. 2 shows a block diagram of a second embodiment including a memory sub-system coupled with a register file according to the present invention,
- FIG. 3 shows a block diagram of a third embodiment with a memory subsystem coupled with a register file according to the present invention,
- FIG. 4 shows a block diagram of a fourth embodiment with a coupling unit between a memory system and two register files according to the invention,
- FIG. 5 shows details of the coupling unit coupling multiple banks with a register file,
- FIG. 6 shows an addressing scheme of a multiple bank memory system,
- FIG. 7 shows another addressing scheme of a multiple bank memory system,
- FIG. 8 shows the bus-bridge according to FIG. 4 in more detail,
- FIG. 9 is a further embodiment showing a memory and a interface of the present invention,
- FIG. 10 shows a data transfer of a first type using the embodiment of FIG. 4.,
- FIG. 11 shows a data transfer of a second type using the embodiment of FIG. 4.,
- FIG. 12 shows a context switch data transfer using the embodiment of FIG. 4,
- FIG. 13 shows a single bus line structure with a bus holder, and FIG. 14 shows a different embodiment of a bus holder.
- FIG. 1a shows an embodiment of simple implementation of the principles according to the present invention. A memory sub-system contains two
memory banks memory banks unit 9. Each memory bank outputs 16 bit data at its respective data input/output port. The output ports are coupled with the input of 2×16multiplexers multiplexer bit sub-busses unit 9. Aregister file 8 is provided which contains a plurality of 16bit registers file 8 is organized in a way, that two registers are accessible in parallel. Registerfile 8 is coupled with both 16bit sub-busses - FIG. 1b is functional identical to FIG. 1a. Here, the
multiplexers sub-busses register file 8. The multiplexers are controlled by memory address and selectunit 9. - Both arrangements are capable of transferring two 16 bit words from or to register
file 8 to or frommemory sub-system 1 in parallel. The register file is organized in such a way that two registers are accessible at the same time, for example, register 81 and register 82 or register 83 and register 84, etc. The multiplexers can perform an alignment in case data to be transferred to theregister file 8 is not aligned withmemory bank 101. This will be explained in more detail below. Both arrangements can also transfer a single word (16 bit) from one of the twomemory banks register file 8. - Additional multiplexers in the register file can provide transfer of single bytes in this arrangement. Of course, the whole embodiment can be expanded to a 8 bit sub-bus system using four 8 bit sub-busses and respective multiplexers.
- FIG. 2 shows a block diagram of an
interface 4 between aregister file 8 and amemory subsystem 1 in a microcontroller or microprocessor. Thememory sub-system 1 comprises 4memory banks select unit 9 is provided to select each memory bank individually.Unit 9 also provides the addressing of the memory banks which is usually common for all banks but can be provided individually at least in part as will be explained later. - The
interface 4 comprises a bus having four 16-bit sub-busses bus multiplexers multiplexer sub-busses appropriate memory bank file 8 comprises two banks ofregisters bit portion 801 and a lower 16bit portion 802. Theupper portion 801 ofregister bank 810 is coupled withsub-bus 410, thelower portion 802 withsub-bus 420, theupper portion 803 ofregister bank 820 withsub-bus 430, and the lower portion ofregister bank 820 withsub-bus 440. For the sake of a better overview the control logic for selecting thesub-busses multiplexers - The embodiment according to FIG. 2 provides the feature of reading and writing of up to two 32 bit long words or four 16 bit words in parallel from or to the
memory sub-system 1. The register file has to be organized in a way that two or more registers are accessible in parallel. For writing two 32 bit long words into the register file memory address andselect unit 9 addresses thememory banks memory 1 are aligned, then multiplexer 401 selects sub-bus 410,multiplexer 402 selects sub-bus 420,multiplexer 403 selects sub-bus 430, andmultiplexer 404 selectssub-bus 440. The register select unit (not shown) select one register in eachregister bank bank memory bank 102 at address X, followed by the data inbanks memory bank 101 at the address X+8 (with byte-wise addressing), then memory address and select unit addressesmemory banks memory bank 1 withaddress X+ 8. The respective outputs are coupled with theregister file 8 as follows:Multiplexer 401couples memory bank 101 withsub-bus 440, multiplexer 402couples memory bank 102 withsub-bus 410, multiplexer 403couples memory bank 103 withsub-bus 420, and multiplexer 404couples memory bank 104 withsub-bus 430. Thus, no matter how the data is stored inmemory 1, theinterface 4 automatically aligns it for reading or writing in or out ofregister file 8. This scheme is shown for 16 bit words as the smallest data which can be loaded or stored. Nevertheless, the scheme can be easily adapted to higher or lower data structures, such as 8 bit data or 32 bit data, etc. - The arrangement according to FIG. 2 can also be used to store or load a single 16 bit word from or to
memory 1. For example if a 16 bit word is to loaded frommemory bank 3 into a upper portion register inregister bank 810, then memory address andselect unit 9 selects and addressesmemory bank 103. The data from the output port ofmemory bank 3 is coupled withsub-bus 410 throughmultiplexer 403. The register select logic (not shown) select the proper register out ofregister bank 810, forexample register portion 801. - In embedded application it is often necessary to save as much energy as possible. With the embodiment according to the present invention only the memory bank which contains data to be transferred has to be activated. Also, only the appropriate sub-bus changes. All other busses can remain in their respective status. This can be achieved by so called bus holders as will be explained later. Thus, all other memory bank can be in a quiescent mode. No unnecessary charging of bit and word lines has to be initiated.
- FIG. 2 shows the multiplexers or switches between the
memory subsystem 1 and thebusses busses register file 8. In yet another embodiment the switches can be on both sides. This is dependent on the implementation and layout of the respective microprocessor or microcontroller. - FIG. 3 shows an embodiment which is expanded in view of the embodiment shown in FIG. 2. The arrangement of FIG. 2 is simply doubled. Therefore, two memory blocks are provided within
memory sub-system 1. Each memory block contains 4memory banks buses respective multiplexers separate register files - This embodiment allows transfer of up to four 32 bit words in parallel. For example, register
file 8 can be a address register file andregister file 8′ a data register file. The transfer of data into the registers takes place in the same manner as described above.Memory subsystem 1 is divided into two separate memory blocks whereinaddress register file 8 has access only tomemory banks register file 8′ has only access tomemory banks 101′, 102′, 103′, and 104′. In many application this is not disadvantageous as the central processing unit provides means to transfer data fromregister file 8 to registerfile 8′ and vice versa. - Nevertheless, to overcome this drawback FIG. 4 shows a third embodiment according to the present invention. In this embodiment a
memory block 1 is coupled by a 64 bit readbus 1 a and a 64 bit writebus 1 b with acoupling unit 42 of a first 64bit bus 46. Instead of separate read and write busses a single bi-directional bus can be used. The two memory banks can be addressed with either a common address signal generated by a memory address and select unit (not shown) or an individual address signal for each memory bank generated by the memory address and select unit. For this purpose memory address and select unit provides a address incrementer as will be explained later. Asecond coupling unit 44couples bus 46 with respective 64 bit read and write buses of anaddress register file 8. A ′ indicates the same elements on the data register file side.Interface 4 comprises asecond bus 47 withcoupling units busses bridge 41 is controllable and can couple bothbusses switch control unit 3 is provided which controls thecoupling units bridge 41 and an external interface7 which can couple external devices throughbusses - FIG. 4 shows basically the same elements as FIG. 3. In addition a
bridge unit 41 is provided. if thisbridge unit 41 is activated byswitch control 3, then only up to 2 32 bit long words or 4 16 bit words can be transferred to or from eitheraddress register file 8 ordata register file 8′. Also, only eithermemory block 1 ormemory block 1′ can be source or destination in this mode. On the other hand bothmemory blocks external interface 7 can provide data which can be transferred to either register file. Furthermore, an additional internal interface (not shown), for example, coupled withbus Bridge 41 thereby selects the way the data is routed which can be from or to eitherinternal memory bank external interface 7 or internal interface. Thebridge 41 allows a plurality of combinations. On the other hand, if thebridge 41 is deactivated then the content of two 32 bit registers in the address register file and of two 32 bit registers in the data register file can be transferred within one single cycle from or to thememory subsystem - FIG. 5 shows an embodiment of one side of
interface 4 including, for example,coupling units 42,bus 46, andcoupling unit 44.Memory block 1 is divided into four memory towers orbanks Bus 46 is divided into four 16 bit sub-busses 46 a, 46 b, 46 c, and 46 d. Each memory tower has a 16 bit data input/output port Port 101 a is coupled withsub-bus 46 b and sub-bus 46 d.Port 102 a is coupled with sub-bus 46 a and sub-bus 46 c.Port 103 a is coupled withsub-bus 46 b and sub-bus 46 d.Port 104 a is coupled with sub-bus 46 a and sub-bus 46 c. Four 16 bit coupling busses 801, 802, 803, and 804 are provided. Couplingbus 801 is coupled with sub-bus 46 a and 46 b. Couplingbus 802 is coupled withsub-bus bus 803 is coupled withsub-bus bus 804 is coupled withsub-bus tri-state driver 48 is connected with one line of an input/output port ofmemory sub-system 1. Its respective output line is connected to the respective line ofbus 46. A secondtri-state driver 49 is provided. Its input is connected to the same line ofbus 46 and its output is connected with the same port ofmemory subsystem 1. This embodiment shows bi-directional busses. Of course, unidirectional busses can be used as well. - The connection scheme according to FIG. 5 allows any 16 bit data word to be placed at any of the coupling busses801, 802, 803, or 804. This scheme can be used instead of the one shown in FIG. 2 or FIG. 3. The principle used here can be expressed also more generally as follows:
Memory 1 comprises even and odd memory towers each having a port. Theregister file 8 comprises a plurality of registers, whereby a number of registers are accessible in parallel. The register file has a bit width which is at least equal to the sum of the bit width of each memory tower port, for example, if four memory towers each having a 16 bit port are used, then theregister file 8 comprises at least two 32 bit registers or four 16 bit registers being accessible in parallel. Thereby, the register file interface forms a multiple n-bit interface to said register file. The coupling bus comprises even and odd sub-busses, whereby first couplers are bi-directional tri-state drivers coupling each odd memory tower with each even sub-bus and each even memory tower with each even sub-bus and whereby the second couplers couple the sub-busses with the register file interface in such a way, that said port of any memory tower can be coupled with any n-bit part of said register file interface. - Any other scheme can be used which achieves the same purpose of aligning and distributing data to respective registers in parallel, for example, each
memory tower coupling bus - If two 32 bit long words are stored unaligned in memory subsystem, for example, the 64 bits begin in
memory bank 103, the following alignment takes place.Port 103 a is coupled sub-bus 46 b,port 104 a is coupled withsub-bus 46 c,port 101 a is coupled withsub-bus 46 d, andport 102 a is coupled with sub-bus 46 a. Furthermore, sub-bus 46 b is coupled withcoupling bus 801, sub-bus 46 c is coupled withcoupling bus 802, sub-bus 46 d is coupled withcoupling bus 803 and sub-bus 46 a is coupled withcoupling bus 804. - Usually, all memory banks receive the same address from memory address and
select unit 9. Nevertheless,unit 9 can also address each memory bank differently. Of, course this would increase the respective logic and wiring area. Therefore, a simpler access of different memory cells in each memory bank is shown in FIG. 6 and FIG. 7. This access scheme allows access to any unaligned 64 bit data stored within a addressed memory portion of this 4 bank memory block. This type of access is the most common case which usually would need 2 cycles, for example, if a 64 bit data begins inmemory bank 102 and ends inmemory bank 101, as shown in FIG. 6, then during a firstcycle memory banks cycle memory bank 101 outputs its data at address X+8 (bytewise addressing). - FIG. 6 shows an access scheme which allows access of unaligned data in a memory block with a plurality of memory banks within a single cycle. In FIG. 6 are again4
memory banks output ports select unit 9 by the upperaddress bit lines 90 which form the main address part of a respective address which addresses a 32 bit data portion of eachbank bit memory cells memory bank memory bank memory bank memory bank 104. Data inmemory block 1 are stored in a sequential order such thatmemory cells memory block 1. In other words,memory cells memory cells address bit lines bank memory bank 102 and end inmemory bank 101 indicated by the shadedmemory cells select unit 9 selects these memory cells throughaddress lines Ports interface 4 as described above. - FIG. 7 shows a second embodiment of
memory block 1. Here, twomemory banks Bank 105 contains the “upper/lower” data and is addresses byaddress lines 95 through memory address andselect unit 9 to output 64 bit in parallel.Bank 106 contains the “lower/upper” data and is addressed byaddress lines 96 throughunit 9 to output also 64 bit in parallel.Address lines bank select unit 9 provides an address incrementer to allow different addresses onaddress lines multiplexers memory 1. The multiplexers are controlled by memory address andselect unit 9. Thememory banks bank 105, continue in the first row ofbank 106, followed byrow 2 ofbank 105 and so on. Again, for example, if unaligned 64 bit data start with the third 16 bit portion inmemory bank 105, as indicated by the shadowed memory cells in FIG. 7,unit 9 selects the same memory lines inbank multiplexers bank 105 orbank 106 are selected and fed tooutput ports multiplexers select bank 105 andmultiplexers select bank 106. The actual alignment is done byinterface 4 as described above. - For writing into the memory banks all memory cells must be accessible individually. This is important because in case of a scenario shown in FIG. 7 the non shaded memory cells must not be overwritten during a write access. Therefore,
address lines memory banks - As can be seen to anybody skilled in the art, there are numerous ways to organize memory banks and to form output ports for the memory subsystem by means of multiplexers or tri-state drivers, etc.
- FIG. 8 shows an embodiment of the
bridge unit 41 shown in FIG. 4.Bus bus 46 is coupled with the respective line ofbus 47 by means of two tri-state drivers. FIG. 8 shows only drivers for one of sixteen lines for each sub-bus. The tri-state driver pairs 450, 451; 460, 461; 470, 471; 480, 481 each form a selectable bi-directional coupling element. Each driver either functions as a read or write driver depending on the source and destination of the respective data. The upper or lower drivers of each line can be enabled commonly or separately for each 16 bit sub-bus. Thus, different directions for each sub-bus are possible and, for example, 32 bit data can be written frommemory block 1 to the data register 8′ and 32 bit data frommemory 1′ to addressregister file 8. Any other combination is possible depending on the complexity of thebridge unit 41. In most simple embodiments alltop drivers bottom drivers - Another embodiment of the memory interface is shown in FIG. 9. In this embodiment only a
single memory block 120 is provided. Thismemory block 120 is organized in 128 bits. The interface between register file and memory consists of 32 double 2×1 multiplexers M1-M32 as primary switches, anintermittent bus memory block 120 is coupled with an input of a multiplexer M1-M32. 4 multiplexers M1-M4; M5-M8; . . . . M29-M32 respectively are coupled with one of 8 barrel shifters B1-B8. The barrel shifters are controlled by signal B. The barrel shifters B1-B8 output 64 bits in parallel which are fed to the register file. - In this embodiment the 128 bits of each row of
memory block 120 are not stored in a consecutive order. The bit order starts with bit D0, D8, D64, D72, D16, D24, D80, D88, . . . D48, D56, D112, D120, . . . D55, D63, D119, D127. The order is divided into eight blocks each having four 4 bit groups. The 4 bit groups each carry data bits Dn, Dn+8, Dn+64, Dn+72, wherein n has the order n=0, 16, 32, 48, 1, 17, 33, 49, 2, 18, 34, 50, . . . 7, 23, 39, 55 as shown in FIG. 9. The multiplexers M1-M8 select two data lines out of a 4 bit group, whereby either the first two and or the second two bits are selected, for example, multiplexer M1 selects either data pair D0, D8 or data pair D64, D72. The multiplexers M1-M32 are controlled separately, in other words each double multiplexer M1-M32 is controlled by a different control line. Therefore, control signal C consists of at least 32 control lines. The output of all multiplexers form a 64bit bus 490. Eight 8-Bit barrel shifters B1-B8 form the secondary switches which switch the data on the 64 bit lines ofbus 490. Each barrel shifter performs a left shift in increments of two bit depending on the control signal B which is formed by respective address signals. - The alignment function of such an arrangement is explained by means of the following example. Assuming the memory block base address is 0, each row address starts at a multiple of m×128, with m=0, 1, 2, 3, . . . Further assuming a 64 bit word is to be loaded from address262. The respective data is stored in the third row, starting at the second word or at the third byte. Memory address and select unit (not shown) generate select signal A which selects the third row of memory. 1.2.0. Thus, all 128 bits of this memory row are fed to the inputs of multiplexers M1-M32. A switch control unit (not shown), which may be part of memory address and select unit, selects the second data pair of multiplexers M1, M5, M9, M13, M17, . . . M29 and the first data pair of all other multiplexers. Thus, the input of barrel shifter B1 receives the following data signals: D64, D72, D16, D24, D32, D40, D48, and D56. Signal B is common for all eight barrel shifters and indicates in this example to shift the data byte by one step. As mentioned above, one step is equal to a left shift by two bits. Therefore, the output of barrel shifter B1 carries signals D16, D24, D32, D40, D48, D56, D64, D72. Even so the output of the barrel shifters B1-B8 are not in the right order, there is a fixed relationship between each output line. Thus, no additional switching is necessary. To bring the single bits into the right order only the wiring has to be changed as indicated in FIG. 9. The wiring selects the first bits of each barrel shifter B1-B9, followed by the second bits of each barrel shifter B1-B9, etc. Thus, the register file receives a data word which is the aligned 64 bit word starting with bit D16, D17, D18, . . . D79. If access to data is only allowed on 16 bit boundaries less control lines C and B are needed. In such an
arrangement 16 four bit groups coupled with the multiplexers M1, . . . , M32 would have the same settings allowing to reduce the number of control lines C respectively. Also, the barrel shifters B1, . . . , B8 would only need to shift by 16 bit thus reducing the number of control lines B. - The principle of this embodiment is to provide multiplexers as first switches which select a predefined number of bits from the data provided by the memory in parallel to the respective internal bus. The second switch is used to bring the extracted bits in a predefined order. The second switch does not necessarily reduce the number of bits but does reorder the bits so that the relation of each consecutive bit is constant.
- The order of consecutive bits stored in the memory can be arranged in many different ways and does not have to follow the order of the embodiment. Principle of the present invention is to interleave or scramble the bytes, words, or long words stored in memory in an appropriate manner. Thus, a local multiplexing can select the respective data bits. However, the write enable signal has to be also interleaved to access the respective memory cells during a write cycle. For example, the write enable signal for the first byte has to go to
bit - The barrel shifter can of course be realized by multiplexers or in any other known way. The output bit lines of barrel shifters B1-B8 do not have to be ordered before they are coupled with the register file. Depending on the size of each register this can also be done between the register file and the execution units as only execution units which actually manipulate the content of a register need the content of a data byte or word in order. Nevertheless, in a 32 bit microcomputer with 32 bit registers where a register might store 4 bytes, 2 words or 1 long word, it is advantageous to order the bits fed from the interface to the register file. Also, any conventional memory, externally or internally, can be used as the bit order in the memory is of no concern as long reading and writing lines use the same order. Thus, in case of a dual port memory with different port orders, a rewiring on either port has to be performed to ensure proper order of the memory content.
- FIG. 10 shows a data transfer using the embodiment of FIG. 4. Both memory banks are addressed by the same address signal generated by memory address and
select unit 9. Each memory bank has a four 16 Bit word wide interface, for example 64 bits.Bus 46 andbus 47 each consist of four 16 Bit wide sub-busses 46 a, 46 b, 46 c, 46 d and 47 a, 47 b, 47 c, 47 d, respectively. If all four 16 Bit words are to be transferred from one memory bank to one of the register files 8, 8′ the transfer takes place with or without usage ofbridge 41. In case of a boundary crossing data from both memory banks have to be transferred into one register file. This scenario is shown in FIG. 10. The first two 16 Bit words are stored at the last two memory positions of thefirst memory bank 1 and the following two 16 Bit words are stored within thesecond memory bank 1′. In this scenario the content of the last two memory cells of the first memory bank are transferred on sub-bus 46 a and 46 b.Bridge 41 couples sub-bus 46 a with 47 a and sub-bus 46 b with 47 b. The second two 16 Bit words are transferred from the first two memory cells within thesecond memory bank 1′ ontosub-bus coupling bus 8 a′ the four 16 Bit words are transferred intoregister file 8′. - FIG. 11 depicts a second scenario in which a crossing from the
second memory bank 1′ to thefirst memory bank 1 takes place. In this scenario memory address andselect unit 9 has to provide different addresses for each memory bank. Therefore, memory address andselect unit 9 comprises an address incrementer to increment an address provided, for example, tomemory bank 1′ formemory bank 1. If, for example, four 16 Bit words are stored within the memory under an address, that, for example, the first 16 Bit word is stored in the last memory cell in one row of thesecond memory bank 1′, then the succeeding memory cells are located under a succeeding address in thefirst memory bank 1. The incrementer increments the address, in this example by 64, and provides thefirst memory bank 1 with the incremented address. The content of the last memory cell of the addressed row in thesecond memory bank 1′ is transferred on sub-busses 47 a. The content of the first three memory cells of the row of thefirst memory bank 1 addressed by the incremented address are transferred to sub-busses 46 b, 46 c, and 46 d, through the bridge to sub-busses 47 b, 47 c and 47 d. The transfer to registerfile 8′ takes place in the same manner as described above. - FIG. 12 depicts a third scenario in which, for example, a context switch takes place. The purpose of such a transfer is to load or store the content of a context represented by the content of a plurality of registers as quickly as possible. During such a data transfer the
bridge 41 completelyde-couples busses 42 frombusses 43. Thus, 64 bit frommemory bank 1 can be transferred to registerfile 8 in parallel with 64 bits frommemory bank 1′ to registerfile 8′ or vice versa. Therefore, memory address andselect unit 9 addresses bothmemory banks memory register files - FIGS. 10, 11, and12 do not show the
couplers - The above described procedure allows aligned and unaligned data transfer from and two the
memory banks - FIG. 13 shows an embodiment of a single bus line, for example,
bus line 46 a. Transfer from memory or register file to the busline 46 a is established via twotristate inverters gate clock signal 152 and respective logic signals 153 and 158controls drivers drivers first inverter 154 whose input is coupled withbus line 46 a and whose output is coupled with the input of asecond inverter 155 whose output is coupled withbus line 46 a.Inverter 155 is preferably weak to avoid a unnecessary load on the bus line for one of thedrivers clock signal 152. During the high phase of theclock signal 152drivers - FIG. 14 shows an improvement of the bus holder. Again, a first inverter160 is coupled with a second inverter 161 in series to hold a signal on a bus line. Here, the second inverter 161 is a strong driver but switched. This driver is only active when the
clock signal 152 is high and no other driver is active. These two conditions are anded by an ANDgate 162 whose output controls driver 161.
Claims (46)
1. Data processing unit with a register file having a plurality of registers, a memory having a plurality of n-bit input/output ports, and a coupling unit for coupling said memory with said register file, a memory address and select unit for addressing said memory, wherein said coupling unit comprises:
a bus having a bus width of at least 2n-bits forming at least a first and second sub-bus,
first couplers for coupling each port of said memory with at least one of said sub-busses, and
second couplers for coupling said register file with at least one of said sub-busses.
2. Data processing unit according to claim 1 , wherein said memory comprises a plurality of memory banks.
3. Data processing unit according to claim 1 , wherein the first couplers selectively couple each port with one of said sub-busses.
4. Data processing unit according to claim 1 , wherein each of the second couplers selectively couples the register file with one of said sub-busses.
5. Data processing unit according to claim 1 , wherein said memory address and select unit controls single byte, word or multiple byte access.
6. Data processing unit according to claim 3 , wherein said second couplers comprise an alignment unit which based upon said access type couples either said bus with a plurality of selectable registers of said register file in parallel or one of said sub-busses with a selectable register of said register file.
7. Data processing unit according to claim 1 , wherein said first couplers comprise tri-state buffers for coupling the output lines of said ports with respective lines of said bus.
8. Data processing unit according to claim 1 , wherein said first couplers comprise multiplexers for coupling the output lines of said ports with respective lines of said bus.
9. Data processing unit according to claim 3 , wherein said memory comprises a plurality of memory banks and depending on the access type said memory address and select unit only selects the memory bank needed for the respective access.
10. Data processing unit according to claim 1 , wherein said register file comprises a plurality of registers, whereby a number of registers being accessible in parallel, said registers having a combined bit width which is at least equal to the sum of the bit width of each memory bank port, thereby forming a multiple n-bit interface to said register file.
11. Data processing unit according to claim 9 , said memory comprises even and odd memory banks and said bus comprises even and odd sub-busses, whereby said first couplers are bi-directional tri-state drivers coupling each odd memory bank with each even sub-bus and each even memory bank with each even sub-bus and whereby the second couplers couple the sub-busses with the register file interface in such a way, that said port of any memory bank can be coupled with any n-bit part of said register file interface.
12. Data processing unit according to claim 1 , wherein said memory comprises a plurality of memory banks, wherein each bank comprises a memory input/output port having a m-byte width, whereby 2m-bytes data are addressed by said address and select unit in each memory bank and further select lines select one of the two m-byte data to be output at said port.
13. Data processing unit according to claim 1 , wherein said memory comprises a plurality of memory banks each organized to output a memory row having multiple m-bytes, and multiple multiplexers to select for each m-byte portion one of said memory banks.
14. Data processing unit according to claim 1 , wherein the first couplers select a predefined number of bits equal to the number of bits of said bus and the second coupler reorder the selected bits from said bus.
15. Data processing unit according to claim 14 , wherein said memory comprises at least four n-bit ports and the first couplers couple 2n-bits of said memory with said bus and said second couplers comprise a plurality of barrel shifters being controlled by an address signal.
16. Data processing unit according to claim 1 , wherein said busses comprise a plurality of bus lines and at least one bus line is coupled with a bus holder.
17. Data processing unit comprising a first and a second register file having a plurality of registers, a memory having a plurality of n-bit input/output ports, a bus having a bus width of at least 2n-bits forming at least a first and second sub-bus, first couplers for coupling each port selectively with one of said sub-busses, second couplers for coupling said first register file with said bus, and third couplers for coupling said second register file with said bus.
18. Data processing unit according to claim 17 , wherein said memory comprises a plurality of memory banks.
19. Data processing unit according to claim 17 , wherein said memory address and select unit controls single byte, word or multiple byte access.
20. Data processing unit according to claim 19 , wherein said second and third couplers comprise an alignment unit which based upon said access type couples either said bus with a plurality of selectable registers of said register files in parallel or one of said sub-busses with a selectable register of said register files.
21. Data processing unit according to claim 17 , wherein said first couplers comprise tri-state buffers for coupling the output lines of said ports with respective lines of said bus.
22. Data processing unit according to claim 17 , wherein said first couplers comprise multiplexers for coupling the output lines of said ports with respective lines of said bus.
23. Data processing unit according to claim 19 , wherein said memory comprises a plurality of memory banks and depending on the access type said memory address and select unit only selects the memory bank needed for the respective access.
24. Data processing unit according to claim 17 , wherein each register file comprises a plurality of registers, whereby a number of registers being accessible in parallel, said registers having a combined bit width which is at least equal to the sum of the bit width of each memory bank port, thereby forming a multiple n-bit interface to said register file.
25. Data processing unit according to claim 24 , said memory comprises even and odd memory banks and said bus comprises even and odd sub-busses, whereby said first couplers are bi-directional tri-state drivers coupling each odd memory bank with each even sub-bus and each even memory bank with each even sub-bus and whereby the second couplers couple the sub-busses with the register file interface in such a way, that said port of any memory bank can be coupled with any n-bit part of said register file interface.
26. Data processing unit according to claim 17 , wherein said memory comprises a plurality of memory banks, wherein each bank comprises a memory input/output port having a n-byte width, whereby 2n-bytes data are addressed by said address and select unit in each memory bank and further select lines select one of the two n-byte data to be output at said port.
27. Data processing unit according to claim 17 , wherein said memory comprises a plurality of memory banks each organized to output a memory row having multiple n-bytes, and multiple multiplexers to select for each n-byte portion one of said memory banks.
28. Data processing unit according to claim 17 , wherein the first couplers select a predefined number of bits equal to the number of bits of said bus and the second coupler reorder the selected bits from said bus.
29. Data processing unit according to claim 28 , wherein said memory comprises at least four n-bit ports and the first couplers couple 2n-bits of said memory with said bus and said second couplers comprise a plurality of barrel shifters being controlled by an address signal.
30. Data processing unit according to claim 17 , wherein said busses comprise a plurality of bus lines and at least one bus line is coupled with a bus holder.
31. Data processing unit comprising a first and a second register file having a plurality of registers, a first and second memory each having a plurality of n-bit input/output ports, a first bus having a bus width of at least 2n-bits forming at least a first and second sub-bus, first couplers for coupling each port of said first memory selectively with one of said sub-busses, second couplers for coupling said first register file with said first bus, a second bus having a bus width of at least 2n-bits forming at least a third and fourth sub-bus, third couplers for coupling each port of said second memory selectively with one of said sub-busses, fourth couplers for coupling said second register file with said second bus, and a bus-coupler for coupling said first and second bus.
32. Data processing unit according to claim 31 , wherein said memories having a plurality of memory banks.
33. Data processing unit according to claim 31 , wherein said memory address and select unit controls single byte, word or multiple byte access.
34. Data processing unit according to claim 32 , wherein said second and fourth couplers comprise an alignment unit which based upon said access type couples either said first or second bus with a plurality of selectable registers of said first or second register file in parallel or one of said sub-busses with a selectable register of one of said register files.
35. Data processing unit according to claim 31 , wherein said first and third couplers comprise tri-state buffers for coupling the output lines of said ports with respective lines of said first or second bus.
36. Data processing unit according to claim 31 , wherein said first and third couplers comprise multiplexers for coupling the output lines of said ports with respective lines of said first or second bus.
37. Data processing unit according to claim 32 , wherein said memories comprise a plurality of memory banks and depending on the access type said memory address and select unit only selects the memory bank needed for the respective access.
38. Data processing unit according to claim 31 , wherein said first or second register file comprises a plurality of registers, whereby a number of registers being accessible in parallel, said registers having a combined bit width which is at least equal to the sum of the bit width of each port in said first or second memory, thereby forming a multiple n-bit interface to said first or second register file.
39. Data processing unit according to claim 37 , said first or second memory comprises even and odd memory banks and said first or second bus comprises even and odd sub-busses, whereby said first couplers are bi-directional tri-state drivers coupling each odd memory bank with each even sub-bus and each even memory bank with each even sub-bus and whereby the second or fourth couplers couple the sub-busses with the first or second register file interface in such a way, that said port of any memory bank can be coupled with any n-bit part of said first or second register file interface.
40. Data processing unit according to claim 31 , wherein said first or second memory comprises a plurality of memory banks, wherein each bank comprises a memory input/output port having a n-byte width, whereby 2n-bytes data are addressed by said address and select unit in each memory bank and further select lines select one of the two n-byte data to be output at said port.
41. Data processing unit according to claim 31 , wherein said first or second memory comprises a plurality of memory banks each organized to output a memory row having multiple n-bytes, and multiple multiplexers to select for each n-byte portion one of said memory banks.
42. Data processing unit according to claim 31 , wherein the first and third couplers select a predefined number of bits equal to the number of bits of said bus and the second and fourth couplers reorder the selected bits from said bus.
43. Data processing unit according to claim 42 , wherein said first and second memory each comprise at least four n-bit ports and the first and second couplers couple 2n-bits of said memory with said first and second bus and said third and fourth couplers comprise a plurality of barrel shifters being controlled by an address signal.
44. Data processing unit according to claim 31 , wherein said busses comprise a plurality of bus lines and at least one bus line is coupled with a bus holder.
45. Data processing unit according to claim 44 , wherein said bus holder comprises a first and a second inverter coupled in series, whereby the input of said first inverter and the output of said second inverter are coupled with said bus line.
46. Data processing unit according to claim 45 , wherein said second inverter is weaker than said first inverter.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/141,996 US20020129188A1 (en) | 1998-11-13 | 2002-05-08 | Data processing device with memory coupling unit |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/192,170 US6405273B1 (en) | 1998-11-13 | 1998-11-13 | Data processing device with memory coupling unit |
US10/141,996 US20020129188A1 (en) | 1998-11-13 | 2002-05-08 | Data processing device with memory coupling unit |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/192,170 Division US6405273B1 (en) | 1998-11-13 | 1998-11-13 | Data processing device with memory coupling unit |
Publications (1)
Publication Number | Publication Date |
---|---|
US20020129188A1 true US20020129188A1 (en) | 2002-09-12 |
Family
ID=22708548
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/192,170 Expired - Lifetime US6405273B1 (en) | 1998-11-13 | 1998-11-13 | Data processing device with memory coupling unit |
US10/141,996 Abandoned US20020129188A1 (en) | 1998-11-13 | 2002-05-08 | Data processing device with memory coupling unit |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/192,170 Expired - Lifetime US6405273B1 (en) | 1998-11-13 | 1998-11-13 | Data processing device with memory coupling unit |
Country Status (3)
Country | Link |
---|---|
US (2) | US6405273B1 (en) |
EP (1) | EP1001347A3 (en) |
JP (1) | JP2000231535A (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010042147A1 (en) * | 2000-02-14 | 2001-11-15 | Adams Lyle E. | System-resource router |
US20110167228A1 (en) * | 2007-12-21 | 2011-07-07 | Panasonic Corporation | Memory device and memory device control method |
US20110213952A1 (en) * | 2004-07-14 | 2011-09-01 | Altera Corporation | Methods and Apparatus for Dynamic Instruction Controlled Reconfigurable Register File |
US20140365703A1 (en) * | 2012-11-08 | 2014-12-11 | Panasonic Corporation | Bus system for semiconductor circuit |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6823016B1 (en) | 1998-02-20 | 2004-11-23 | Intel Corporation | Method and system for data management in a video decoder |
US6405273B1 (en) * | 1998-11-13 | 2002-06-11 | Infineon Technologies North America Corp. | Data processing device with memory coupling unit |
US6633576B1 (en) * | 1999-11-04 | 2003-10-14 | William Melaragni | Apparatus and method for interleaved packet storage |
US6732203B2 (en) * | 2000-01-31 | 2004-05-04 | Intel Corporation | Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus |
US6721295B1 (en) * | 2000-08-25 | 2004-04-13 | Texas Instruments Incorporated | Triple data system for high data rate communication systems |
US6584537B1 (en) * | 2000-12-06 | 2003-06-24 | Lsi Logic Corporation | Data-cache data-path |
JP2002215606A (en) * | 2001-01-24 | 2002-08-02 | Mitsubishi Electric Corp | Data processor |
US20040078608A1 (en) * | 2001-04-02 | 2004-04-22 | Ruban Kanapathippillai | Method and apparatus for power reduction in a digital signal processor integrated circuit |
FI20011257A0 (en) * | 2001-06-13 | 2001-06-13 | Nokia Corp | Procedure for fitting a bus and bus |
JP4325130B2 (en) * | 2001-06-21 | 2009-09-02 | ヤマハ株式会社 | Electronics |
US7146454B1 (en) * | 2002-04-16 | 2006-12-05 | Cypress Semiconductor Corporation | Hiding refresh in 1T-SRAM architecture |
US8005212B2 (en) * | 2002-07-10 | 2011-08-23 | Infineon Technologies Ag | Device and method for performing a cryptoalgorithm |
US7836252B2 (en) * | 2002-08-29 | 2010-11-16 | Micron Technology, Inc. | System and method for optimizing interconnections of memory devices in a multichip module |
US7245145B2 (en) | 2003-06-11 | 2007-07-17 | Micron Technology, Inc. | Memory module and method having improved signal routing topology |
US7120743B2 (en) | 2003-10-20 | 2006-10-10 | Micron Technology, Inc. | Arbitration system and method for memory responses in a hub-based memory system |
US7366864B2 (en) * | 2004-03-08 | 2008-04-29 | Micron Technology, Inc. | Memory hub architecture having programmable lane widths |
US7120723B2 (en) * | 2004-03-25 | 2006-10-10 | Micron Technology, Inc. | System and method for memory hub-based expansion bus |
US7590797B2 (en) * | 2004-04-08 | 2009-09-15 | Micron Technology, Inc. | System and method for optimizing interconnections of components in a multichip memory module |
US7392331B2 (en) * | 2004-08-31 | 2008-06-24 | Micron Technology, Inc. | System and method for transmitting data packets in a computer system having a memory hub architecture |
US7209405B2 (en) * | 2005-02-23 | 2007-04-24 | Micron Technology, Inc. | Memory device and method having multiple internal data buses and memory bank interleaving |
US8332598B2 (en) | 2005-06-23 | 2012-12-11 | Intel Corporation | Memory micro-tiling request reordering |
US7765366B2 (en) | 2005-06-23 | 2010-07-27 | Intel Corporation | Memory micro-tiling |
US8032688B2 (en) | 2005-06-30 | 2011-10-04 | Intel Corporation | Micro-tile memory interfaces |
US8253751B2 (en) | 2005-06-30 | 2012-08-28 | Intel Corporation | Memory controller interface for micro-tiled memory access |
US7558941B2 (en) * | 2005-06-30 | 2009-07-07 | Intel Corporation | Automatic detection of micro-tile enabled memory |
US7747833B2 (en) * | 2005-09-30 | 2010-06-29 | Mosaid Technologies Incorporated | Independent link and bank selection |
US8878860B2 (en) * | 2006-12-28 | 2014-11-04 | Intel Corporation | Accessing memory using multi-tiling |
US20130297858A1 (en) * | 2012-04-19 | 2013-11-07 | Stec, Inc. | Systems and methods for providing channel buffer in a solid-state device |
CN104699219B (en) * | 2013-12-10 | 2020-06-23 | 联想(北京)有限公司 | Electronic equipment and information processing method |
US9774317B1 (en) * | 2016-08-29 | 2017-09-26 | Amazon Technologies, Inc. | Bistable-element for random number generation |
US20190347219A1 (en) * | 2018-05-09 | 2019-11-14 | Micron Technology, Inc. | Memory devices having a reduced global data path footprint and associated systems and methods |
US10747693B2 (en) * | 2018-05-10 | 2020-08-18 | Micron Technology, Inc. | Semiconductor device with a time multiplexing mechanism for size efficiency |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5226142A (en) * | 1990-11-21 | 1993-07-06 | Ross Technology, Inc. | High performance register file with overlapping windows |
US5307506A (en) * | 1987-04-20 | 1994-04-26 | Digital Equipment Corporation | High bandwidth multiple computer bus apparatus |
US5481734A (en) * | 1989-12-16 | 1996-01-02 | Mitsubishi Denki Kabushiki Kaisha | Data processor having 2n bits width data bus for context switching function |
US5875470A (en) * | 1995-09-28 | 1999-02-23 | International Business Machines Corporation | Multi-port multiple-simultaneous-access DRAM chip |
US5954811A (en) * | 1996-01-25 | 1999-09-21 | Analog Devices, Inc. | Digital signal processor architecture |
US6219775B1 (en) * | 1992-08-07 | 2001-04-17 | Thinking Machines Corporation | Massively parallel computer including auxiliary vector processor |
US6343356B1 (en) * | 1998-10-09 | 2002-01-29 | Bops, Inc. | Methods and apparatus for dynamic instruction controlled reconfiguration register file with extended precision |
US6405273B1 (en) * | 1998-11-13 | 2002-06-11 | Infineon Technologies North America Corp. | Data processing device with memory coupling unit |
US6513125B1 (en) * | 1993-04-22 | 2003-01-28 | Analog Devices, Inc. | Multi-phase multi-access pipeline memory system in which the pipeline memory can decode addresses issued by one processor while simultaneously accessing memory array by other processor |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH086760A (en) * | 1994-06-20 | 1996-01-12 | Hitachi Ltd | Data processor |
-
1998
- 1998-11-13 US US09/192,170 patent/US6405273B1/en not_active Expired - Lifetime
-
1999
- 1999-08-26 EP EP99116654A patent/EP1001347A3/en not_active Withdrawn
- 1999-11-15 JP JP11323951A patent/JP2000231535A/en active Pending
-
2002
- 2002-05-08 US US10/141,996 patent/US20020129188A1/en not_active Abandoned
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5307506A (en) * | 1987-04-20 | 1994-04-26 | Digital Equipment Corporation | High bandwidth multiple computer bus apparatus |
US5481734A (en) * | 1989-12-16 | 1996-01-02 | Mitsubishi Denki Kabushiki Kaisha | Data processor having 2n bits width data bus for context switching function |
US5226142A (en) * | 1990-11-21 | 1993-07-06 | Ross Technology, Inc. | High performance register file with overlapping windows |
US6219775B1 (en) * | 1992-08-07 | 2001-04-17 | Thinking Machines Corporation | Massively parallel computer including auxiliary vector processor |
US6513125B1 (en) * | 1993-04-22 | 2003-01-28 | Analog Devices, Inc. | Multi-phase multi-access pipeline memory system in which the pipeline memory can decode addresses issued by one processor while simultaneously accessing memory array by other processor |
US5875470A (en) * | 1995-09-28 | 1999-02-23 | International Business Machines Corporation | Multi-port multiple-simultaneous-access DRAM chip |
US5954811A (en) * | 1996-01-25 | 1999-09-21 | Analog Devices, Inc. | Digital signal processor architecture |
US6343356B1 (en) * | 1998-10-09 | 2002-01-29 | Bops, Inc. | Methods and apparatus for dynamic instruction controlled reconfiguration register file with extended precision |
US6405273B1 (en) * | 1998-11-13 | 2002-06-11 | Infineon Technologies North America Corp. | Data processing device with memory coupling unit |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010042147A1 (en) * | 2000-02-14 | 2001-11-15 | Adams Lyle E. | System-resource router |
US6769046B2 (en) * | 2000-02-14 | 2004-07-27 | Palmchip Corporation | System-resource router |
US20050071533A1 (en) * | 2000-02-14 | 2005-03-31 | Adams Lyle E. | System resource router |
US20110213952A1 (en) * | 2004-07-14 | 2011-09-01 | Altera Corporation | Methods and Apparatus for Dynamic Instruction Controlled Reconfigurable Register File |
US8069337B2 (en) * | 2004-07-14 | 2011-11-29 | Altera Corporation | Methods and apparatus for dynamic instruction controlled reconfigurable register file |
US20110167228A1 (en) * | 2007-12-21 | 2011-07-07 | Panasonic Corporation | Memory device and memory device control method |
US8347026B2 (en) | 2007-12-21 | 2013-01-01 | Panasonic Corporation | Memory device and memory device control method |
US20140365703A1 (en) * | 2012-11-08 | 2014-12-11 | Panasonic Corporation | Bus system for semiconductor circuit |
US9436642B2 (en) * | 2012-11-08 | 2016-09-06 | Panasonic Intellectual Property Management Co., Ltd. | Bus system for semiconductor circuit |
Also Published As
Publication number | Publication date |
---|---|
US6405273B1 (en) | 2002-06-11 |
EP1001347A2 (en) | 2000-05-17 |
EP1001347A3 (en) | 2003-04-09 |
JP2000231535A (en) | 2000-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6405273B1 (en) | Data processing device with memory coupling unit | |
EP0100943B1 (en) | Hierarchical memory system | |
US5961640A (en) | Virtual contiguous FIFO having the provision of packet-driven automatic endian conversion | |
US5761478A (en) | Programmable memory interface for efficient transfer of different size data | |
US20020166023A1 (en) | High speed bus interface for non-volatile integrated circuit memory supporting continuous transfer | |
EP0165822A2 (en) | Memory access control system | |
EP0636987A2 (en) | Functional pipelined cache memory | |
US6256253B1 (en) | Memory device with support for unaligned access | |
EP1381957A2 (en) | Data processing apparatus and system and method for controlling memory access | |
US6483183B1 (en) | Integrated circuit (IC) package with a microcontroller having an n-bit bus and up to n-pins coupled to the microcontroller | |
KR960004457B1 (en) | Data transfer device | |
US20050180240A1 (en) | Method and system for fast memory access | |
EP0136597A2 (en) | Vector processor | |
US6041387A (en) | Apparatus for read/write-access to registers having register file architecture in a central processing unit | |
JPH04306756A (en) | Data transfer system | |
US7650440B2 (en) | Peripheral supplied addressing in a simple DMA module | |
WO2004068362A1 (en) | Processor array | |
US6681273B1 (en) | High performance, variable data width FIFO buffer | |
US5774653A (en) | High-throughput data buffer | |
US6401161B1 (en) | High speed bus interface for non-volatile integrated circuit memory supporting continuous transfer | |
US5732011A (en) | Digital system having high speed buffering | |
JP3965620B2 (en) | Storage device, storage method, and data processing system | |
US20050071576A1 (en) | Data processing apparatus and system and method for controlling memory access | |
JPH03116350A (en) | Bus structure for data transfer | |
JPH1049367A (en) | Arithmetic processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |