WO1999060480A1 - Sous-systeme d'execution a antememoire reconfigurable et partagee - Google Patents

Sous-systeme d'execution a antememoire reconfigurable et partagee Download PDF

Info

Publication number
WO1999060480A1
WO1999060480A1 PCT/US1998/010065 US9810065W WO9960480A1 WO 1999060480 A1 WO1999060480 A1 WO 1999060480A1 US 9810065 W US9810065 W US 9810065W WO 9960480 A1 WO9960480 A1 WO 9960480A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
address
cache
controller
execution
Prior art date
Application number
PCT/US1998/010065
Other languages
English (en)
Inventor
Richard Rubinstein
Original Assignee
Richard Rubinstein
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Richard Rubinstein filed Critical Richard Rubinstein
Priority to PCT/US1998/010065 priority Critical patent/WO1999060480A1/fr
Priority to AU75753/98A priority patent/AU7575398A/en
Publication of WO1999060480A1 publication Critical patent/WO1999060480A1/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the present invention is generally in the field of digital computing and, more specifically, is directed to an execution subsystem that combines shared, reconfigurable memory techniques together with a micro-coded controller in the context of a cache memory system.
  • the prior application entitled “Shared, Reconfigurable Memory Architectures for Digital Signal Processing” described the need to improve digital signal processing performance while containing or reducing cost. That application describes improved computer architectures that utilize available memory resources more efficiently by providing for shared and reconfigurable memory so as to reduce I/O processor requirements for computation intensive tasks such as digital signal processing.
  • the memory systems described in the prior case are shared in the sense that a given block of memory can first be configured for access by the CPU, for example to load data, and then "swapped" so that the same block of physical memory can be directly accessed by an execution unit, for example a DSP execution unit, to carry out various calculations on that data.
  • the memory is reconfigurable in a variety of ways, as described below, so as to allocate memory resources as between the CPU and the execution unit (or multiple execution units) in the most efficient manner possible.
  • Reconfiguring the memory can include forming memory 5 blocks of various sizes; selecting write (input) sources; selecting read (destination) targets; selecting word size, and so forth.
  • Various particulars and alternative embodiments are set forth below, so as to enable one skilled in the art to implement shared, reconfigurable memory architectures.
  • DSP is just one example of computation-intensive calculation.
  • the concepts of the prior case as well as the present invention are applicable to a wide variety of execution tasks, including but not limited to DSP and related tasks such as motion picture encoding, decoding, and encryption, decryption, etc.
  • the principles of the parent application can be applied advantageously in the context of a cache memory. 5 Accordingly, the present specification adds additional disclosure directed to application of shared, configurable memory and tightly coupled execution units to the cache memory context.
  • MDSPC memory-centric DSP controller
  • the MDSPC was described as providing memory address generation and a o variety of other control functions, including reconfiguring the memory as summarized above to support a particular computation in the execution unit.
  • the name "MDSPC” was appropriate for that controller in the context of the parent case, in which the preferred embodiment was described for digital signal processing.
  • the principles of the parent case and the present invention are not so limited. Accordingly, the present 5 application includes description of a "controller” which is functionally similar to the "MDSPC" introduced in the parent case. Drawing Figs. 1-22 and the corresponding description herein were included in the parent application.
  • the present application includes additional drawing Figs. 23-28. SUMMARY OF THE INVENTION
  • the parent application describes a memory subsystem that is partitioned into two or more blocks of memory space.
  • One block of the memory communicates with an I/O or 5 DMA channel to load data, while the other block of memory simultaneously communicates with one or more execution units that carry out arithmetic operations on data in the second block. Results are written back to the second block of memory.
  • the memory blocks are effectively "swapped" so that the second block, now holding processed (output) data, communicates with the I/O channel to output that data, o while the execution unit communicates with the first block, which by then has been filled with new input data.
  • Methods and apparatus are shown for implementing this memory swapping technique in real time so that the execution unit is never idle. The present application extends these concepts to cache memory.
  • Another aspect of the parent case describes interfacing two or more address 5 generators to the same block of memory, so that memory block swapping can be accomplished without the use of larger multi-ported memory cells.
  • the present application extends these concepts to cache memory as well.
  • the parent application identified earlier describes the concept of reconfiguring an execution unit in several ways, including selectable depth (number of pipeline stages) and o width (i.e. multiple word sizes concurrently).
  • the pipelined execution unit(s) includes internal register files with feedback.
  • the execution unit configuration and operation also can be controlled by execution unit configuration control signals.
  • the execution unit configuration control signals can be determined by "configuration bits" stored in the memory, or stored in a separate "configuration table”.
  • the configuration table 5 can be downloaded by the host core processor, and/or updated under software control.
  • the configuration control signals are generated by the controller mentioned above executing microcode.
  • One object of the present invention therefore is to reduce the effective cost of cache memory by utilizing DRAM technology.
  • Another object of the invention is to provide improved cache memory performance at reduced cost by deploying a combination of SRAM and DRAM technologies in a cache memory.
  • Another object of the present invention is to improve performance in execution of complex operations by tightly coupling a cache memory to an execution unit.
  • a further object of the invention is to improve effective cache density and reduce costs through new applications of DRAM memory cells, combined with a new local cache memory controller strategy.
  • Yet another object of the present invention is to apply reconfigurable memory circuits and methodologies to improve performance in connection with cache memory applications.
  • a still further object is to apply shared, reconfigurable DRAM memory circuits and methodologies to cache memory applications in order to build high performance computing engines.
  • a further object is to provide for concurrent execution of a calculation using a tightly coupled execution unit, while allowing concurrent access to a cache memory subsystem by the CPU.
  • One aspect of the present invention is a cache memory subsystem that includes a microprogrammable controller.
  • the subsystem also includes address selection circuitry so as to provide a selected address to the cache memory from any of several address sources.
  • the address sources can include the CPU address bus, the local controller, and 5 potentially another circuit arranged for addressing the memory in connection with downloading execution parameters.
  • the controller executes microcode which can be stored in any of at least three places.
  • the microcode can be stored on board the local controller.
  • the microcode can be stored in a separate read-only memory, e.g., ROM or flash memory.
  • the microcode can be stored in the data portion of the cache memory.
  • Another aspect of the invention provides for downloading microcode from the CPU into a portion of the cache data memory for subsequent execution by the local controller.
  • the microcode can include configuration bits, op-codes for the execution unit, contants, parameters, etc. which the controller in turn provides to the execution unit.
  • a further 5 aspect of the invention includes providing an address decoder coupled to the CPU address line, for detecting assertion of a predetermined address that is used to trigger a particular execution. In response to detecting the predetermined address, the controller then configures the execution unit as appropriate, and begins execution of a microcoded sequence to carry out the corresponding calculation in the execution unit.
  • the controller can notify the CPU, for example by writing control bits to a special memory address monitored by the CPU. 5
  • FIG. 1 is a system level block diagram of an architecture for digital signal processing (DSP) using shared memory according to the present invention.
  • FIG. 2 illustrates circuitry for selectively coupling two or more address generators to a single block of memory.
  • FIG. 3 is a block diagram illustrating portions of the memory circuitry and address generators of Fig. 1 in a fixed-partition memory configuration.
  • FIG. 4 shows more detail of address and bit line connections in a two-port memory o system of the type described.
  • FIGS. 5A-5C illustrate selected address and control signals in a Processor Implementation of a DSP system, i.e. a complete DSP system integrated on a single chip.
  • FIG. 6A illustrates an alternative embodiment in which a separate DSP program counter is provided for accessing the memory.
  • FIG. 6B illustrates an alternative embodiment in which an MDSPC accesses the memory.
  • FIGS. 7A-B are block diagrams that illustrate embodiments of the invention in a Harvard architecture.
  • FIG. 8 is a conceptual diagram that illustrates a shared, reconfigurable memory o architecture according to the present invention.
  • FIG. 9 illustrates connection of address lines to a shared, reconfigurable memory with selectable (granular) partitioning of the reconfigurable portion of the memory.
  • FIG. 10 illustrates a system that implements a reconfigurable segment of memory under bit selection table control.
  • FIG. 11A is a block diagram illustrating an example of using single-ported RAM in a DSP computing system according to the present invention.
  • FIG. 11 B is a table illustrating a pipelined timing sequence for addressing and accessing the one-port memory so as to implement a "virtual two-port" memory.
  • FIG. 12 illustrates a block of memory having at least one reconfigurable segment with selectable write and read data paths.
  • FIG. 13A is a schematic diagram showing detail of one example of the write selection circuitry of the reconfigurable memory of Fig. 12.
  • FIG. 13B illustrates transistor pairs arranged for propagating or isolating bit lines 5 as an alternative to transistors 466 in Fig. 13A or as an alternative to the bit select transistors 462, 464 of Fig. 13A.
  • FIG. 14 is a block diagram illustrating extension of the shared, reconfigurable memory architecture to multiple segments of memory.
  • FIG. 15 is a simplified block diagram illustrating multiple reconfigurable memory o segments with multiple sets of sense amps.
  • FIGS. 16A-16D are simplified block diagrams illustrating various examples of memory segment configurations to form memory blocks of selectable size.
  • FIG. 17 is a block diagram of a DSP architecture illustrating a multiple memory block to multiple execution unit interface scheme in which configuration is controlled via 5 specialized address generators.
  • FIGS. 18A-18C are simplified block diagrams illustrating various configurations of segments of a memory block into association with multiple execution units.
  • FIG. 19 is a simplified block diagram illustrating a shared, reconfigurable memory system utilizing common sense amps.
  • FIG. 20 is a simplified block diagram illustrating a shared, reconfigurable memory system utilizing multiple sense amps for each memory segment.
  • FIG. 21 is a timing diagram illustrating memory swapping cycles.
  • FIG. 22A is a block diagram illustrating memory swapping under bit table control.
  • FIG. 22B is a block diagram illustrating memory swapping under MDSPC control.
  • FIG. 23 is a simplified block diagram of a known cache memory system.
  • FIG. 24 is a block diagram of a memory-centric architecture having an execution unit tightly coupled to a cache memory under control of a memory-centric controller.
  • FIG. 25 is a simplified block diagram of a hybrid SRAM and DRAM cache memory system.
  • FIG. 26 illustrates read data transfer from a cache memory utilizing SRAM and DRAM memory latching techniques.
  • FIG. 27 is a block diagram illustrating one method of loading microcode data into the memory-centric controller of Fig. 24.
  • FIG. 28 is a block diagram illustrating deployment of a block of cache data memory as micro-code storage for execution in the the memory-centric controller of Fig. 24.
  • FIGURE 1 A first figure.
  • Fig. 1 is a system-level block diagram of an architecture for memory and computing-intensive applications such as digital signal processing.
  • a microprocessor interface 40 includes a DMA port 42 for moving data into a memory via path 46 and reading data from the memory via path 44.
  • the microprocessor interface 40 generically represents an interface to any type of controller or microprocessor.
  • the interface partition indicated by the dashed line 45 in Fig. 1 may be a physical partition, where the microprocessor is in a separate integrated circuit, or it can merely indicate a functional partition in an implementation in which all of the memory and circuitry represented in the diagram of Fig. 1 is implemented on board a single integrated circuit.
  • the microprocessor interface also includes control signals indicated at 52.
  • the microprocessor or controller can also provide microcode (not shown) for memory control and address generation, as well as control signals for configuration and operation of the functional execution units, as described later.
  • the present invention may be integrated into an existing processor or controller core design, so that both the core processor and the present invention reside in the same integrated circuit, reference will be made herein to the core processor meaning the processor that the present invention has been attached to or integrated with.
  • a two-port memory comprises the first memory block 50, labeled "A" and a second memory block 60, labeled "B.”
  • the memory is addressed by a source address generator 70 and a destination address generator 80.
  • a functional execution unit 90 also 5 is coupled to the two-port memory, left and right I/O channels, as illustrated at block B.
  • these are not conventional two-port memory I/O ports; rather, they have novel structures described later.
  • the interface 44, 46 to the two-port memory block A is a DMA interface that is in communication with the host processor or controller 40.
  • Block A o receives data coefficients and optionally other parameters from the controller, and also returns completed data to the controller that results from various DSP, graphics, MPEG encode/decode or other operations carried out in the execution unit 90.
  • This output data can include, for example, FFT results, or convolution data, or graphics rendering data, etc.
  • the single memory can alternately act as both a graphics frame buffer and a 5 graphics computation buffer memory.
  • the memory block "B" (60) interfaces with the functional execution unit 90.
  • the functional execution unit 90 receives data from the two-port memory block B and executes on it, and then returns results ("writeback") to the same two-port memory structure.
  • the source address generator 70 supplies source or input data to the functional o execution unit while the destination address generator 80 supplies addresses for writing results (or intermediate data) from the execution unit to the memory.
  • source address generator 70 provides addressing while the functional execution unit is reading input data from memory block B
  • the destination address generator 80 provides addressing to the same memory block B while the functional execution unit 90 is 5 writing results into the memory.
  • the memory effectively "swaps" blocks A and B, so that block B is in communication with the DMA channel 42 to read out the results of the execution. Conversely, and simultaneously, the execution unit proceeds to execute on the new input data in block A.
  • This "swapping" of memory blocks includes several aspects, the first of which is switching the memory address generator lines so as to couple them to the appropriate physical block of memory.
  • the system can be configured so that the entire 5 memory space (blocks A and B in the illustration) are accessed first by an I/O channel, and then the entire memory swapped to be accessed by the processor or execution unit.
  • any or all of the memory can be reconfigured as described.
  • the memory can be SRAM, DRAM or any other type of random access semiconductor memory or functionally equivalent technology.
  • DRAM refresh is provided by address generators, or may not be l o required where the speed of execution and updating the memory (access frequency) is sufficient to obviate refresh.
  • Figure 2 illustrates one way of addressing a memory block with two (or more) address generators.
  • one address generator is labeled “DMA” and the other "ADDR GEN” although they are functionally similar.
  • one of the address generators 102 has a series of output lines, corresponding to memory word lines. Each output line is coupled to a corresponding buffer (or word line driver or the like), 130 to 140.
  • Each driver has an enable input coupled to a common enable line 142.
  • the other address generator 104 similarly has a series of output lines coupled to respective drivers 150 to 160.
  • the number of word lines is at least equal to the number of rows of the memory block 200.
  • the second set of drivers also have enable inputs coupled to the common enable control line 142, but note the inverter "bubbles" on drivers 130 to 140,
  • the DMA address generator 102 is coupled to the memory 200 row address inputs.
  • the ADDR GEN 104 is coupled to the memory 200 row address inputs. In this way, the address inputs are "swapped" under control of a single bit.
  • Alternative circuitry can be used to achieve the equivalent effect.
  • the devices illustrated can be tri-state output devices, or open collector or open drain structures can be used where appropriate.
  • Other alternatives include transmission gates or simple pass transistors for coupling the selected address generator outputs to the memory address lines. The same strategy can be extended to more than two address sources, as will be apparent to those skilled in the art in view of this disclosure.
  • Figure 3 is a block diagram illustrating a physical design of portions of the memory circuitry and address generators of Fig. 1 in a fixed-partition configuration.
  • fixed partition I mean that the size of memory block A and the size of memory block B cannot change dynamically
  • the memory block A (50) and block B (60) correspond to the same memory blocks of Fig. 1.
  • the memory itself preferably is dynamic RAM, although static RAM or other solid state memory technologies could be used as well.
  • memory block B just two bits or memory cells 62 AND 64 are shown by way of illustration. In a typical implementation, the memory block is likely to include thousands or even millions of rows, each row (or word) being perhaps 64 or more bits wide.
  • the source address generator 70 is coupled to both memory blocks A and B.
  • the top row includes a series of cells including bit cell 62.
  • the source address generator preferably has output lines coupled to all of the rows of not only block B, but block A as well, although only one row line is illustrated in block A.
  • corresponding address lines from the AG 70 and the DMA 102 are shown as connected in common, e.g. at line 69. However, in practice, these address lines are selectable as described above with reference to Fig. 2.
  • a destination address generator 80 similarly is coupled to the row lines of both blocks of memory.
  • Memory cells 62 and 64 are full two-ported cells on the same column in this example.
  • a write select multiplexer 106 directs data either from the DMA (42 in Fig. 1) (or another block of memory) or from the execution unit 90, responsive to a control signal 108.
  • the control signal is provided by the controller or microprocessor of Fig, 1 , by a configuration bit, or by an MDSPC.
  • the selected write data is provided to column amplifiers 1 10, 112 which in turn are connected to corresponding memory cell bit lines. 110 and 112 are bit and /bit ("bit bar”) drivers.
  • a one-bit sense amplifier 116 A bit output from the sense amp 1 16 is directed, for example, to a latch 72. Both the DMA and the execution unit are coupled to receive data from latch 72, depending on appropriate control, enable and clock signals (not shown here). Or, both the DMA and the execution path may have separate latches, the specifics being a matter of design choice. Only one sense amp is shown for illustration, while in practice there will be at least one sense amp for each column. Use of multiple sense amps is described later.
  • Fig. 4 shows more detail of the connection of cells of the memory to source and destination address lines. This drawing shows how the source address lines (when asserted) couple the write bit line and its complement, i.e. input lines 110,112 respectively, to the memory cells.
  • the destination address lines couple the cell outputs to the read bit lines 114, 1 15 and thence to sense amp 116. Although only one column is shown, in practice write and read bit lines are provided for each column across the full width of the memory word. The address lines extend across the full row as is conventional.
  • Fig. 21 is a conceptual diagram illustrating an example for the timing of operation of the architecture illustrated in Fig. 1.
  • T0A, T1A, etc. are specific instances of two operating time cycles TO and T1.
  • the cycle length can be predetermined, or can be a parameter downloaded to the address generators.
  • TO and T1 are not necessarily the same length and are defined as alternating and mutually exclusive, i.e. a first cycle T1 starts at the end of TO, and a second cycle TO starts at the end of the first period T1 , and so on. Both TO and T1 are generally longer than the basic clock or memory cycle time.
  • Fig. 22A is a block diagram of a single port architecture which will be used to 5 illustrate an example of functional memory swapping in the present invention during repeating TO and T1 cycles.
  • Execution address generator 70 addresses memory block A (50) during TO cycles. This is indicated by the left (TO) portion of AG 70. During T1 cycles, execution address generator 70 addresses memory block B (60), as indicated by the right portion of 70. During T1 , AG 70 also receives setup or configuration data in preparation o for again addressing Mem Block A during the next TO cycle. Similarly, during TO, AG 70 also receives configuration data in preparation for again addressing Mem Block B during the next T1 cycle.
  • DMA address generator 102 addresses memory block B (60) during TO cycles. This is indicated by the left (TO) portion of DMA AG 102. During T1 cycles, DMA address 5 generator 102 addresses memory block A (50), as indicated by the right portion of 102. During T1 , DMA AG 102 also receives setup or configuration data in preparation for again addressing Mem Block B during the next TO cycle. Similarly, during TO, DMA 102 also receives configuration data in preparation for again addressing Mem Block A during the next T1 cycle. 0 During a TO cycle, the functional execution unit (90 in Fig. 1) is operating continuously on data in memory block A 50 under control of execution address generator 70. Simultaneously, DMA address generator 102 is streaming data into memory block B 60.
  • memory blocks A and B effectively swap such that 5 execution unit 90 will process the data in memory block B 60 under control of execution address generator 70 and data will stream into memory block A 50 under control of DMA address generator 102. Conversely, at the beginning of a TO cycle, memory blocks A and B again effectively swap such that execution unit 90 will process the data in memory block A 50 under control of execution address generator 70 and data will stream into memory block B 60 under control of DMA address generator 102.
  • Fig. 22B the functions of the execution address generator and DMA address generator are performed by the MDPSC 172 under microcode control.
  • a two- port memory again comprises a block A (150) and a block B (160).
  • Memory block B is coupled to a DSP execution unit 130.
  • An address generator 170 is coupled to memory block B 160 via address lines 162.
  • the address generator unit is executing during a first cycle TO and during time TO is loading parameters for subsequent execution in cycle T1.
  • the lower memory block A is accessed via core processor data address register 142A or core processor instruction address register 142B.
  • the data memory and the instructional program memory are located in the same physical memory.
  • a microprocessor system of the Harvard architecture has separate physical memory for data and instructions. The present invention can be used to advantage in the Harvard architecture environment as well, as described below with reference to Figs. 7A and 7B.
  • Fig. 5A also includes a bit configuration table 140.
  • the bit configuration table can receive and store information from the memory 150 or from the core processor, via bus 180, or from an instruction fetched via the core processor instruction address register 142B. Information is stored in the bit configuration table during cycle TO for controlling execution during the next subsequent cycle T1.
  • the bit configuration table can be loaded by a series of operations, reading information from the memory block A via bus 180 into the bit configuration tables.
  • This information includes address generation parameters and opcodes. Examples of some of the address parameters are starting address, modulo- address counting, and the length of timing cycles TO and T1. Examples of op codes for controlling the execution unit are the multiply and accumulate operations necessary for to perform an FFT.
  • the bit configuration table is used to generate configuration control 5 signal 152 which determines the position of virtual boundary 136 and, therefore, the configuration of memory blocks A and B. It also provides the configuration information necessary for operation of the address generator 170 and the DSP execution unit 130 during the T1 execution cycle time.
  • Path 174 illustrates the execution unit/memory interface control signals from the bit configuration table 140 to the DSP execution unit 130.
  • o Path 176 illustrates the configuration control signal to the execution unit to reconfigure the execution unit.
  • Path 178 illustrates the op codes sent to execution unit 130 which cause execution unit to perform the operations necessary to process data.
  • Path 188 shows configuration information loaded from the configuration tables into the address generator 170. 5 The architecture illustrated in Fig.
  • 5A preferably would utilize the extended instructions of a given processor architecture to allow the address register from the instruction memory to create the information flow into the bit configuration table.
  • special instructions or extended instructions in the controller or microprocessor architecture can be used to enable this mechanism to operate as described above.
  • Such 0 an implementation would provide tight coupling to the microprocessor architecture.
  • Fig. 5B illustrates an embodiment of the present invention wherein the functions of address generator 170 and bit configuration table 140 of Fig. 5A are performed by 5 memory-centric DSP controller (MDSPC) 172.
  • MDSPC memory-centric DSP controller
  • the core processor writes microcode for MDSPC 172 along with address parameters into memory block B 150. Then, under core processor control, the microcode and address parameters are downloaded into local memory within MDSPC 172.
  • a DSP process initiated in MDPSC 172 then generates the appropriate memory configuration control signals 152 and execution unit configuration control signals 176 based upon the downloaded microcode to control the position of virtual boundary 136 and structure execution unit 130 to optimize performance for the process corresponding to the microcode.
  • MDSPC 172 As the DSP process executes, MDSPC 172 generates addresses for memory block B 160 and controls the execution unit/memory interface to load operands from memory into the execution unit 130 which are then processed by execution unit 130 responsive to op codes 178 sent from MDSPC 172 to execution unit 130.
  • virtual boundary 136 may be adjusted responsive to microcode during process execution in order to dynamically optimize the memory and execution unit configurations.
  • the MDSPC 172 supplies the timing and control for the interfaces between memory and the execution unit.
  • algorithm coefficients to the execution unit may be supplied directly from the MDSPC.
  • the use of microcode in the MDSPC results in execution of the DSP process that is more efficient than the frequent downloading of bit configuration tables and address parameters associated with the architecture of Fig. 5A.
  • the microcoded method represented by the MDSPC results in fewer bits to transfer from the core processor to memory for the DSP process and less frequent updates of this information from the core processor. Thus, the core processor bandwidth is conserved along with the amount of bits required to store the control information.
  • FIG. 5C illustrates an embodiment of the present invention wherein the reconfigurability of memory in the present invention is used to allocate an additional segment of memory, memory block C 190, which permits MDPSC 172 to execute microcode and process address parameters out of memory block C 190 rather than local memory.
  • This embodiment requires an additional set of address 192 and data 194 lines to provide the interface between memory block C 190 and MDSPC 172 and address bus control circuitry 144 under control of MDSPC 172 to disable the appropriate address bits from core processor register file 142.
  • This configuration permits simultaneous access of MDSPC 172 to memory block C 190, DSP execution unit 130 to memory block B and the core processor to memory block A.
  • virtual boundaries 136A and 136B are dynamically reconfigurable to optimize the memory configuration for the DSP process executing in MDSPC 172.
  • the bit tables and microcode discussed above may alternatively reside in durable store, such as ROM or flash memory.
  • the durable store may be part of memory block A or may reside outside of memory block A wherein the content of durable store is transferred to memory block A or to the address generators or MDSPC during system initialization.
  • the DSP process may be triggered by either decoding a preselected bit pattern corresponding to a DSP function into an address in memory block A containing the bit tables or microcode required for execution of the DSP function.
  • Yet another approach to triggering the DSP process is to place the bit tables or microcode for the DSP function at a particular location in memory block A and the DSP process is triggered by the execution of a jump instruction to that particular location.
  • the microcode to perform a DSP function such as a Fast Fourier Transform (FFT) or HR, is loaded beginning at a specific memory location within memory block A. Thereafter, execution of a jump instruction to that specific memory location causes execution to continue at that location thus spawning the DSP process.
  • FFT Fast Fourier Transform
  • a separate program counter 190 is provided for DSP operations.
  • the core controller or processor (not shown) loads information into the program counter 190 for the DSP operation and then that program counter in turn addresses the memory block 150 to start the process for the DSP.
  • Information required by the DSP operations would be stored in memory.
  • any register of the core processor such as data address register 142A or instruction address register 142B, can be used for addressing memory 150.
  • Bit Configuration Table 140 in addition to generating memory configuration signal 152, produces address enable signal 156 to control address bus control circuitry 144 in order to select the address register which accesses memory block A and also to selectively enable or disable address lines of the registers to match the memory configuration (i.e. depending on the position of virtual boundary 136, address bits are enabled if the bit is needed to access all of memory block A and disabled if block A is smaller than the memory space accessed with the address bit).
  • FIG. 6A shows the DSP program counter 190 being loaded by the processor with an address to move into memory block A.
  • the other address sources in register file 142 are disabled, at least with respect to addressing memory 150.
  • three different alternative mechanisms are illustrated for accessing the memory 150 in order to fetch the bit configurations and other parameters 140. The selection of which addressing mechanism is most advantageous may depend upon the particular processor architecture with which the present invention is implemented.
  • Fig. 6B shows an embodiment wherein MDSPC 172 is used to generate addresses for memory block A in place of DSP PC 190.
  • Address enable signal 156 selects between the address lines of MDSPC 172 and those of register file 142 in response to the microcode executed by MDSPC 172.
  • MDSPC 172 will be executing out of memory block A and therefore requires access to the content of memory block A,
  • memory blocks A (150) and B (160) are separated by "virtual boundary" 136.
  • block A and block B are portions of a single, common memory, in a preferred embodiment.
  • the location of the "virtual boundary" is defined by the configuration control signal generated responsive to the bit configuration table parameters.
  • the memory is reconfigurable under software control.
  • this memory has a variable boundary, the memory preferably is part of the processor memory, it is not contemplated as a separate memory distinct from the processor architecture.
  • the memory as shown and described is essentially reconfigurable directly into the microprocessor itself.
  • the memory block B, 160 duly configured, executes into the DSP execution unit as shown in Fig. 5.
  • virtual boundary 136 is controlled based on the microcode downloaded to MDSPC 172.
  • microcode determines the position of both virtual boundary 136A and 136B to create memory block C 190.
  • FIGURES 7A and 7B ⁇ o Fig. 7A illustrates an alternative embodiment, corresponding to Fig. 5A, of the present invention in a Harvard-type architecture, comprising a data memory block A 206 and block B 204, and a separate core processor instruction memory 200.
  • the instruction memory 200 in addressed by a program counter 202. Instructions fetched from the instruction memory 200 pass via path 220 to a DSP instruction decoder 222.
  • 15 instruction decoder in turn provides addresses for DSP operations, table configurations, etc., to an address register 230.
  • Address register 230 in turn addresses the data memory block A 206.
  • Data from the memory passes via path 240 to load the bit configuration tables etc. 242 which in turn configure the address generator for addressing the data memory block B during the next execution cycle of the DSP execution unit 250.
  • a special instruction is fetched from the instruction memory that includes an opcode field that indicates a DSP operation, or more specifically, a DSP configuration operation, and includes address information for fetching the appropriate configuration for the subroutine.
  • MDPSC 246 replaces AG 244 and Bit Configuration Table 242. Instructions in core processor instruction memory 200 that correspond to functions to be executed by DSP Execution Unit 250 are replaced with a preselected bit pattern which is not recognized as a valid instruction by the core processor.
  • DSP Instruction Decode 222 decodes the preselected bit patterns and generates an address for DSP operations and address parameters stored in data memory A and also generates a DSP control signal which triggers the DSP process in MDSPC 246.
  • DSP Instruction Decode 222 can also be structured to be responsive to output data from data memory A 206 into producing the 5 addresses latched in address register 230.
  • the DSP Instruction Decode 222 may be reduced or eliminated if the DSP process is initiated by an instruction causing a jump to the bit table or microcode in memory block A pertaining to the execution of the DSP process.
  • the present invention includes an architecture that features shared, o reconfigurable memory for efficient operation of one or more processors together with one or more functional execution units such as DSP execution units.
  • Fig. 6A shows an implementation of a sequence of operations, much like a subroutine, in which a core controller or processor loads address information into a DSP program counter, in order to fetch parameter information from the memory.
  • Fig. 6B shows an implementation wherein 5 the DSP function is executed under the control of an MDSPC under microcode control.
  • the invention is illustrated as integrated with a von Neumann microprocessor architecture.
  • Figs. 7A and 7B illustrate applications of the present invention in the context of a Harvard-type architecture.
  • the system of Fig. 1 illustrates an alternative stand-alone or coprocessor implementation.
  • Next is a description of how to implement a shared, o reconfigurable memory system.
  • Fig. 8 is a conceptual diagram illustrating a reconfigurable memory architecture for 5 DSP according to another aspect of the present invention.
  • a memory or a block of memory includes rows from 0 through Z.
  • a first portion of the memory 266, addresses 0 to X, is associated, for example, with an execution unit (not shown).
  • a second (hatched) portion of the memory 280 extends from addresses from X+1 to Y.
  • a third portion of the memory 262, extending from addresses Y+1 to Z is associated, for example, with a DMA or I/O channel.
  • associated here we mean a given memory segment can be accessed directly by the designated DMA or execution unit as further explained herein.
  • the second segment 280 is reconfigurable in that it can be switched so as to form a part of the execution segment 266 or become part of the DMA segment 262 as required.
  • each memory word or row includes data and/or coefficients, as indicated on the right side of the figure.
  • configuration control bits are shown to the left of dashed line 267, This extended portion of the memory can be used for storing a bit configuration table that provides configuration control bits as described previously with reference to the bit configuration table 140 of Figs. 5A and 6A. These selection bits can include write enable, read enable, and other control information. So, for example, when the execution segment 266 is swapped to provide access by the DMA channel, configuration control bits in 266 can be used to couple the DMA channel to the I/O port of segment 266 for data transfer. In this way, a memory access or software trap can be used to reconfigure the system without delay.
  • FIGS. 5A and 7A are one method of effecting memory reconfiguration that relates to the use of a separate address generator and bit configuration table as shown in Figs. 5A and 7A.
  • This approach effectively drives an address configuration state machine and requires considerable overhead processing to maintain the configuration control bits in a consistent and current state.
  • the configuration control bits are unnecessary because the MDSPC modifies the configuration of memory algorithmically based upon the microcode executed by the MDSPC. Therefore, the MDSPC maintains the configuration of the memory internally rather than as part of the reconfigured memory words themselves.
  • FIGURE 9 is one method of effecting memory reconfiguration that relates to the use of a separate address generator and bit configuration table as shown in Figs. 5A and 7A.
  • Fig. 9 illustrates connection of address and data lines to a memory of the type described in Fig. 8.
  • a DMA or I/O channel address port 102 provides sufficient address lines for accessing both the rows of the DMA block of memory 262, indicated as bus 270, as well as the reconfigurable portion of the memory 280, via additional address lines indicated as bus 272.
  • the block 280 is configured as a part of the DMA portion of the memory, the DMA memory effectively occupies the memory space indicated by the brace 290 and the address lines 272 are controlled by the DMA channel 102.
  • Fig. 9 also shows an address generator 104 that addresses the execution block of memory 266 via bus 284.
  • Address generator 104 also provides additional address lines for controlling the reconfigurable block 280 via bus 272, Thus, when the entire reconfigurable segment 280 is joined with the execution block 266, the execution block of memory has a total size indicated by brace 294, while the DMA portion is reduced to the size of block 262.
  • Fig. 9 indicates data access ports 110 and 120.
  • the upper data port 110 is associated with the DMA block of memory, which, as described, is of selectable size.
  • port 120 accesses the execution portion of the memory. Circuitry for selection of input (write) data sources and output (read) data destinations for a block of memory was described earlier.
  • the entire block need not be switched in toto to one memory block or the other.
  • the reconfigurable block preferably is partitionable so that a selected portion (or all) of the block can be switched to join the upper or lower block.
  • the granularity of this selection is a matter of design choice, at a cost of additional hardware, e.g. sense amps, as the granularity increases, as further explained later.
  • Fig. 10 illustrates a system that implements a reconfigurable segment of memory 280 under bit selection table control.
  • a reconfigurable memory segment 280 receives a source address from either the AG or DMA source address generator 274 and it receives a destination address from either the AG or DMA destination address generator 281.
  • Write control logic 270 for example a word wide multiplexer, selects write input data from either the DMA channel or the execution unit according to a control signal 272.
  • the source address generator 274 includes bit table control circuitry 276.
  • the configuration control circuitry 276, either driven by a bit table or under microcode control, generates the write select signal 272.
  • the configuration control circuitry also determines which source and destination addresses lines are coupled to the memory - either "AG” (address generator) when the block 280 is configured as part of the an "AG” memory block for access by the execution unit, or the "DMA" address lines when the block 280 is configured as part of the DMA or I/O channel memory block.
  • the configuration control logic provides enable and/or clock controls to the execution unit 282 and to the DMA channel 284 for controlling which destination receives read data from the memory output data output port 290.
  • Fig. 11 is a partial block/partial schematic diagram illustrating the use of a single ported RAM in a DSP computing system according to the present invention.
  • a single-ported RAM 300 includes a column of memory cells 302, 304, etc. Only a few cells of the array are shown for clarity.
  • a source address generator 310 and destination address generator 312 are arranged for addressing the memory 300. More specifically, the address generators are arranged to assert a selected one address line at a time to a logic high state.
  • the term "address generator” in this context is not limited to a conventional DSP address generator. It could be implemented in various ways, including a microprocessor core, microcontroller, programmable sequencer, etc.
  • Address generation can be provided by a micro-coded machine. Other implementations that 5 provide DSP type of addressing are deemed equivalents, However, known address generators do not provide control and configuration functions such as those illustrated in Fig. 10 - configuration bits 330.
  • the corresponding address lines from the source and destination blocks 310, 312 are logically "ORed" together, as illustrated by OR gate 316, with reference to the top row of the memory o comprising memory cell 302. Only one row address line is asserted at a given time.
  • a multiplexer 320 selects data either from the DMA or from the execution unit, according to a control signal 322 responsive to the configuration bits in the source address generator 310.
  • the selected data is applied through drivers 326 to the corresponding column of the memory array 300 (only one column, i.e. one pair of bit lines, 5 is shown in the drawing).
  • the bit lines also are coupled to a sense amplifier 324, which in turn provides output or write data to the execution unit 326 and to the DMA 328 via path 325.
  • the execution unit 326 is enabled by an execution enable control signal responsive to the configuration bits 330 in the destination address block 312. Configuration bits 330 also provide a DMA control enable signal at 332. o
  • the key here is to eliminate the need for a two-ported RAM cell by using a logical
  • Fig. 12 illustrates a first segment of memory 400 and a second memory segment 460.
  • first segment 400 only a few rows and a few cells are shown for purposes of illustration.
  • One row of the memory begins at cell 402, a second row of the memory begins at cell 404, etc.
  • a first write select circuit such as a multiplexer 406 is provided for selecting a source of write input data.
  • one input to the select circuit 406 may be coupled to a DMA channel or memory block M1.
  • a second input to the MUX 406 may be coupled to an execution unit or another memory block M2.
  • the multiplexer 406 couples a selected input source to the bit lines in the memory segment 400.
  • the select circuit couples all, say 64 or 128 bit lines, for example, into the memory. Preferably, the select circuit provides the same number of bits as the word size. 5
  • the bit lines for example bit line pair 410, extend through the memory array segment to a second write select circuit 420. This circuit selects the input source to the second memory segment 460.
  • the select circuit 420 selects the bit lines from memory segment 400, the result is that memory segment 400 and the second memory segment 460 are effectively coupled together to form a single block of memory.
  • the o second select circuit 420 can select write data via path 422 from an alternative input source.
  • a source select circuit 426 for example a similar multiplexer circuit, can be used to select this input from various other sources, indicated as M2 and M1.
  • M2 and M1 sources
  • the alternative input source is coupled to the second memory segment 460 via path 422
  • memory segment 460 is effectively isolated from the first memory segment 400.
  • the bit lines of memory segment 400 are directed via path 430 to sense amps 440 for reading data out of the memory segment 400.
  • sense amps 440 can be sent to a disable or low power standby state, since they need not be used.
  • Fig. 13 shows detail of the input selection logic for interfacing multiple memory segments.
  • the first memory segment bit line pair 410 is coupled to the next memory segment 460, or conversely isolated from it, under control of pass devices 466. 5 When devices 466 are turned off, read data from the first memory segment 406 is nonetheless available via lines 430 to the sense amps 440.
  • the input select logic 426 includes a first pair of pass transistors 426 for connecting bit lines from source M1 to bit line drivers 470.
  • a second pair of pass transistors 464 controllabiy couples an alternative input source M2 bit lines to drivers 470.
  • the pass devices 462, 464, and 466 are all l o controllable by control bits originating, for example, in the address generator circuitry described above with reference to Fig. 9. Pass transistors, transmission gates or the like can be considered equivalents for selecting input (write data) sources.
  • Fig. 14 is a high-level block diagram illustrating extension of the architectures of Figs. 12 and 13 to a plurality of memory segments. Details of the selection logic and sense amps is omitted from this drawing for clarity. In general, this drawing illustrates how any available input source can be directed to any segment of the memory under control of
  • Fig. 15 is another block diagram illustrating a plurality of configurable memory segments with selectable input sources, as in Fig. 14.
  • multiple sense amps 482, 484, 486, are coupled to a common data output latch 480.
  • sense amp 484 provides read bits from that combined block, and sense amp 482 can be idle.
  • Figs. 16A through 16D are block diagrams illustrating various configurations of multiple, reconfigurable blocks of memory.
  • the designations M1 , M2, M3, etc. refer generically to other blocks of memory, execution units, I/O channels, etc.
  • Fig. 16A four segments of memory are coupled together to form a single, large block associated with input source M1.
  • a single sense amp 500 can be used to read data from this common block of memory (to a destination associated with M1).
  • the first 5 block of memory is associated with resource M1 , and its output is provided through sense amp 502.
  • the other three blocks of memory, designated M2, are configured together to form a single block of memory - three segments long - associated with resource M2.
  • sense amp 508 provides output from the common block (3xM2), while sense amps 504 and 506 can be idle.
  • Figs. 16C and 16D provide additional examples that o are self explanatory in view of the foregoing description. This illustration is not intended to imply that all memory segments are of equal size. To the contrary, they can have various sizes as explained elsewhere herein.
  • Fig. 17 is a high-level block diagram illustrating a DSP system according to the present invention in which multiple memory blocks are interfaced to multiple execution 5 units so as to optimize performance of the system by reconfiguring it as necessary to execute a given task.
  • a first block of memory M1 provides read data via path 530 to a first execution unit ("EXEC A") and via path 532 to a second execution unit (EXEC B").
  • Execution unit A outputs results via path 534 which in turn is provided both to a first multiplexer or select circuit MUX-1 and to a second select circuit MUX-2.
  • MUX-1 o provides select write data into memory M 1.
  • a second segment of memory M2 provides read data via path 542 to execution unit A and via path 540 to execution unit B.
  • Output data or results from execution unit B are provided via path 544 to both MUX-1 and to MUX-2.
  • MUX-2 provides selected write data into the memory block M2. In this way, data can be read from either 5 memory block into either execution unit, and results can be written from either execution unit into either memory block.
  • a first source address generator S1 provides source addressing to memory block M1.
  • Source address generator S1 also includes a selection table for determining read/write configurations.
  • S1 provides control bit "Select A" to MUX-1 in order to select execution unit A as the input source for a write operation to memory M1.
  • S1 also provides a "Select A” control bit to MUX-2 in order to select execution unit A as the data source for writing into memory M2.
  • a destination address generator D1 provides destination addressing to memory block M1.
  • D1 also includes selection tables which provide a "Read 1 " control signal to execution A and a second "Read 1 " control signal to execution unit B. By asserting a selected one of these control signals, the selection bits in D1 directs a selected one of the execution units to read data from memory M1.
  • a second source address generator S2 provides source addressing to memory segment M2. Address generator S2 also provides a control bit "select B" to MUX-1 via path 550 and to MUX-2 via path 552. These signals cause the corresponding multiplexer to select execution unit B as the input source for write back data into the corresponding memory block.
  • a second destination address generator D2 provides destination addressing to memory block M2 via path 560. Address generator D2 also provides control bits for configuring this system. D2 provides a read to signal to execution unit A via path 562 and a read to signal to execution unit B via path 564 for selectively causing the corresponding execution unit to read data from memory block M2.
  • Fig. 18A illustrates at a high level the parallelism of memory and execution units that becomes available utilizing the reconfigurable architecture described herein.
  • a memory block comprising for example 1 ,000 rows, may have, say, 256 bits and therefore 256 outputs from respective sense amplifiers, although the word size is not critical. 64 bits may be input to each of four parallel execution units E1 - E4.
  • the memory block thus is configured into four segments, each segment associated with a respective one of the execution units, as illustrated in Fig. 18B. As suggested in the figure, these memory segments need not be of equal size.
  • Fig. 18A a memory block, comprising for example 1 ,000 rows, may have, say, 256 bits and therefore 256 outputs from respective sense amplifiers, although the word size is not critical. 64 bits may be input to each of four parallel execution units E1 - E4.
  • the memory block thus is configured into four segments, each segment associated with a respective one of the execution units, as illustrated in Fig. 18B. As suggested in the figure
  • 18C shows a further segmentation, and reconfiguration, so that a portion of segment M2 is joined with segment M1 so as to form a block of memory associated with execution unit E1.
  • a portion of memory segment M3, designated “M3/2” is joined together with the remainder of segment M2, designated “M2/2", to form a memory block associated with execution unit E2, and so on. Note, however, that the choice of one half block increments for the illustration above is arbitrary, Segmentation of the memory may be designed to permit reconfigurability down to the granularity of words or bits if necessary.
  • Fig. 19 illustrates an alternative embodiment in which the read bit lines from multiple memory segments, for example read bit lines 604, are directed to a multiplexer circuit 606, or its equivalent, which in turn has an output coupled to shared or common set of sense amps 610.
  • Sense amps 610 in turn provide output to a data output latch 612, I/O bus or the like.
  • the multiplexer or selection circuitry 604 is responsive to control signals (not shown) which select which memory segment output is "tapped” to the sense amps.
  • This architecture reduces the number of sense amps in exchange for the addition of selection circuitry 606.
  • Fig. 20. is a block diagram illustrating a memory system of multiple configurable memory segments having multiple sense amps for each segment. This alternative can be used to improve speed of "swapping" read data paths and reduce interconnect overhead in some applications.
  • Cache memories are well-known for reducing performance degradation due to relatively slow memory in a digital computer system.
  • Cache memories are high-speed buffers for holding recently-accessed data and neighboring data in a memory. By adding a cache memory between the fast device and the slower memory system, a designer can provide an apparently fast memory system.
  • Some caches are invisible to the architecture: the hardware regulates them without software control.
  • Other caches notably those within RISC systems, are an integral part of the architecture: the instruction set includes instructions for invalidating specific cache entries, for loading and clearing cache contents, and for preventing the cache from mapping specific ranges of addresses.
  • FIG. 23 is a simplified block diagram of a known cache memory system. As illustrated in Fig. 23, the CPU issues an address comprising a tag, an index and a block offset field.
  • the cache memory consists of a series of cache entries or lines, each cache entry consisting of two parts: a tag (or address tag) and data, In this illustration, the tag portion of the cache also includes validity bits.
  • the data portion of the cache memory is o usually high-speed SRAM, and the data it holds are either copies of selected current main- memory data, or newly stored data that are not yet in main memory.
  • the tag indicates the physical addresses of the data in main memory and, as noted, some validity information. Operation of the known cache system is summarized as follows. Whenever the CPU initiates a memory access, the storage system sends the physical address to the cache. 5 The cache compares the physical address with all of its address tags to see if it holds a copy of the datum. If the operation is a read access and the cache holds the given data, the cache reads the requested datum from its own high-speed RAM and delivers it to the CPU. This is a "cache hit" and it is usually much faster than reading those same value directly from main memory. In Fig. 23, the block offset information is used to select a o portion of the cache line corresponding to the segment or words requested by the CPU.
  • the cache If the cache does not hold the datum, however, a cache miss occurs, and the cache passes the address to the main memory system to read the datum.
  • the datum arrives from main memory, both the CPU and the cache receive a copy.
  • the cache then stores its copy with the appropriate address tag. While the CPU executes the 5 instruction or processes the data, the cache may concurrently read additional data from nearby main memory cells and store them with their address tags in its high-speed memory.
  • a cache memory having the usual support logic as in Fig. 23 (not shown in Fig. 24) is arranged in two or more blocks or memory arrays 10 and 20. Each row in the arrays includes valid, tag and data fields as shown.
  • the data memory will be used for several purposes other than actual data, according to the present invention - namely special address information, and "instructions" for the controller and execution unit, explained below. First we explain the hardware arrangement in a presently preferred 5 embodiment, and then its operation.
  • the data memory output port (see path 24) provides read information to three destinations: First, it provides address information via path 26 to a parameter/control circuit 22 as futher explained later. Second, the data 24 is coupled via path 28 to the controller 30. This path is used to provide op-code information to the controller which in o turn will control operation and configuration of the execution unit 32.
  • the execution unit 32 can be of conventional design or reconfigurable as mentioned previously.
  • the data field 24 is coupled to the execution unit via path 34 to provide actual data or parameters during execution.
  • An address selection circuit 40 selects an address for 5 accessing the cache from any of three sources — the CPU address bus, the controller 30 (which preferably includes an address generator) or the parameter /control circuit 22.
  • the address selection can be controlled by the parameter /control circuit 22 via control signals not shown, or by the controller 30.
  • the controller 30 is not merely a conventional address generator although it includes the conventional addressing capabilities that support DSP o and other complex executions. But it also includes the capabilities for configuring and controlling the execution unit, as described above in connection with the shared DRAM execution unit for DSP.
  • the cache 40 selects the CPU address bus as the address source. This allows the CPU to access the memory in the usual fashion.
  • the cache operates as conventional cache memory, interfacing with the processor and main memory.
  • the parameter /control circuit 22 conditions the address selection 40 to select the parameter /control circuit 22 itself as the address source.
  • the control circuit 22 looks up an address in the cache memory array where the necessary execution parameters are stored. 5 These are the parameters needed for execution of a specific operation corresponding to the particular address hit by the CPU. In other words, the particular address accessed by the CPU triggers a corresponding execution.
  • This parameter address is provided via path 42 to the address selection 40, and used to access those parameters in the memory. Then, the parameters looked up in l o memory are loaded from the data memory via path 28 to the controller 30. The controller uses these parameters to configure itself for the upcoming execution. It selects the correct addressing mode, start address, length, etc. The controller also configures the execution unit and sends op-code information via path 44. Finally, the address selection switches to the controller 30 to provide addressing, and execution by the execution unit 32 begins,
  • the execution unit is executing directly out of the cache, with the cache being updated as needed in the conventional manner.
  • Memory array 20 is configured for access by the execution unit as described earlier, for example with reference to Figs. 1 ,3,5,8,9 and others.
  • the functions of the parameter /control circuit 22 are implemented directly in the controller 30.
  • Fig. 25 illustrates the use of smaller DRAM cells in implementation of a cache memory.
  • Fig. 25 again shows a portion of cache tag memory and cache data memory 50 and associated circuitry,
  • the processor 52 issues an address 54 comprising tag field
  • the cache index 58 addresses the tag memory to determine if the desired block is currently in the cache.
  • the size of the index i.e., the number of bits, depends upon the cache size, set associativity characteristics, and block size. In the case of direct mapping, for example, set associativity is established to be 1 , and each cache access requires checking only a single cache entry identified by the index. Set associative caches directly index into the tag memory with part of the address to get a set of tags. They then compare the remaining high order address bits to all of the tag entries in the set.
  • the tag selected by the index is compared to the tag bits 56 provided 5 by the processor in comparison circuitry 62.
  • This comparison can be carried out in various ways, the details of which a known in the prior art, and therefore need not be repeated here.
  • the comparison circuit 62 provides the "hit" signal in the case of a tag match, which in turn initiates loading data from the data portion of the cache into the CPU.
  • the data portion of the cache memory comprises a o series of segments - illustrated as segments 66, 68 and 70, although the number of segments preferably is on the order of 10 or 20 segments; the exact number is not critical and may depend on the particular application.
  • Each segment comprises e.g., 32, 64, 128 or more bits.
  • the total size of the data portion of each row is the number of segments times the number of bits per segment. 5
  • the index addresses a given data row, illustrated in the figure as the shaded portion 72
  • the data in that row is immediately read into a data latch 74. This occurs while the compare operation (62) for the corresponding tag, and validity bit checking occurs.
  • the compare operation (62) for the corresponding tag, and validity bit checking occurs.
  • the first bytes of each block of data would be stored in SRAM memory. These first bytes of data would be the information first sent back to the CPU through the selection circuitry 76.
  • the SRAM bytes are indicated at 80, 82 and 84 in the drawing. This arrangement provides for the first bytes to be read as quickly as possible back to the CPU, with subsequent bytes read from the DRAM portion in due course.
  • the portion of the row implemented in SRAM is flexible, depending upon speed requirements. Part or all of the word can be implemented in DRAM with some performance penalty.
  • Fig. 26 illustrates this arrangement of segments of the data row in which the first bytes 1 through n of each segment are implemented in SRAM, and the remaining bytes n + 1 to m are implemented in DRAM.
  • the controller 30 previously described with reference to Fig, 24, can be implemented in several ways. Essentially the controller 30 is a type of microprogrammable controller or sequencer - it includes circuitry similar to that that can be found in programmable sequencers known in prior art. In addition, the controller 30 includes address generation circuitry having features and functions similar to those that can be found in address generators known in DSP prior art. Typically, the controller 30 will include multiple address generation circuits, for independently addressing multiple blocks of memory, as described previously with reference to the MDSPC. In one embodiment, the controller 30 includes on board memory for storing microcode.
  • an address decoder 102 is coupled to the CPU address bus 100, and arranged to detect a particular predetermined address. When the predetermined address is asserted by the CPU, the decoder 102 so indicates to the controller 30 via control signal line 104.
  • the controller 30 also is coupled to the CPU data bus 110. In response to the control signal 104, the controller 30 downloads data from the CPU data bus 110 into the microcode storage 106.
  • the CPU is programmed to provide the appropriate microcode on the data bus following assertion of the predetermined address mentioned above. This arrangement has the advantage in that it enables programming the controller 30 under control of the CPU without modifying the standard CPU hardware interface.
  • this methodology can be implemented using standard memory interface, or other standard bus architectures such as the PCI local bus, the VME e bus, Sun s bus, PCMCIA, multi-bus, etc.
  • PCI local bus such as the PCI local bus
  • VME e bus such as the VME e bus
  • Sun s bus such as the VME e bus
  • PCMCIA such as the PCMCIA
  • multi-bus such as the PCMCIA
  • USB universal serial bus
  • a controller 31 is arranged so that it can provide address, data or microcode information to the data portion of the cache memory 120.
  • Read data output from the memory 120 is developed in sense amp 124, whereas, in practice, multiple sense amps 124 would be provided, one for each column, over the full width of a row of the memory.
  • the output of the sense amps 124 is coupled to the controller 31 via bus 130.
  • microcode for execution by the controller is stored in the data portion of the cache memory.
  • a block of memory can be formed in the cache specifically for storing microcode for the controller. In a case in which the microcode is not required or does not fill the entire space reserved for that purpose, the cache memory can utilize this space for standard storage.
  • microcode stored in this fashion for execution by the controller is not limited to "instructions" per se - rather, the microcode itself can include imbedded constants and parameters for use by the execution unit.

Abstract

Un système à antémémoire reconfigurable et partagée est accessible à un processeur central ou une UC et à au moins une unité d'exécution. L'unité d'exécution est couplée étroitement à la mémoire pour permettre l'exécution concurrente sous le contrôle d'un régisseur microprogrammé local. Ledit régisseur exécute le microcode rangé dans la mémoire ROM, à bord du régisseur ou dans l'antémémoire, et produit une génération d'adresses. L'antémémoire combine les technologies DRAM et SRAM pour améliorer la densité et abaisser les coûts, alors qu'une stratégie de lecture par anticipation est utilisée pour le maintien des performance de SRAM. Le régisseur et le microcode envoient une commande et des paramètres à l'unité d'exécution, de sorte que des tâches intensive de calcul, telles que DSP, soient assurées sans l'intervention de processeur. Le sous-système d'exécution à antémémoire décrit fonctionne sur une UC ou une interface de mémoire standard.
PCT/US1998/010065 1998-05-15 1998-05-15 Sous-systeme d'execution a antememoire reconfigurable et partagee WO1999060480A1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/US1998/010065 WO1999060480A1 (fr) 1998-05-15 1998-05-15 Sous-systeme d'execution a antememoire reconfigurable et partagee
AU75753/98A AU7575398A (en) 1998-05-15 1998-05-15 Shared, reconfigurable cache memory execution subsystem

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US1998/010065 WO1999060480A1 (fr) 1998-05-15 1998-05-15 Sous-systeme d'execution a antememoire reconfigurable et partagee

Publications (1)

Publication Number Publication Date
WO1999060480A1 true WO1999060480A1 (fr) 1999-11-25

Family

ID=22267077

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1998/010065 WO1999060480A1 (fr) 1998-05-15 1998-05-15 Sous-systeme d'execution a antememoire reconfigurable et partagee

Country Status (2)

Country Link
AU (1) AU7575398A (fr)
WO (1) WO1999060480A1 (fr)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7653785B2 (en) 2005-06-22 2010-01-26 Lexmark International, Inc. Reconfigurable cache controller utilizing multiple ASIC SRAMS
DE112008001473B4 (de) 2007-05-29 2021-08-26 Advanced Micro Devices, Inc. Zwischenspeicherung eines Mikrocodierungsemulationsspeichers

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4086629A (en) * 1975-07-09 1978-04-25 International Computers Limited Hierarchical data store with look-ahead action
WO1994012929A1 (fr) * 1992-11-23 1994-06-09 Seiko Epson Corporation Systeme et procede de mise en antememoire de microcode
EP0741356A1 (fr) * 1995-05-05 1996-11-06 Rockwell International Corporation Architecture d'antémémoire comprenant une unité de préchargement de données
WO1997034231A1 (fr) * 1996-03-15 1997-09-18 Micron Technology, Inc. Mecanisme de mise en antememoire de donnees de machine a pixels
DE19735981A1 (de) * 1996-08-19 1998-03-26 Samsung Electronics Co Ltd Mehrprozessorbetrieb in einem Multimedia-Signalprozessor
DE19713178A1 (de) * 1997-03-27 1998-10-01 Siemens Ag Schaltungsanordnung mit einem Prozessor und einem Datenspeicher

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4086629A (en) * 1975-07-09 1978-04-25 International Computers Limited Hierarchical data store with look-ahead action
WO1994012929A1 (fr) * 1992-11-23 1994-06-09 Seiko Epson Corporation Systeme et procede de mise en antememoire de microcode
EP0741356A1 (fr) * 1995-05-05 1996-11-06 Rockwell International Corporation Architecture d'antémémoire comprenant une unité de préchargement de données
WO1997034231A1 (fr) * 1996-03-15 1997-09-18 Micron Technology, Inc. Mecanisme de mise en antememoire de donnees de machine a pixels
DE19735981A1 (de) * 1996-08-19 1998-03-26 Samsung Electronics Co Ltd Mehrprozessorbetrieb in einem Multimedia-Signalprozessor
DE19713178A1 (de) * 1997-03-27 1998-10-01 Siemens Ag Schaltungsanordnung mit einem Prozessor und einem Datenspeicher

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ERTEM M C: "A RECONFIGURABLE CO-PROCESSOR FOR MICROPROCESSOR SYSTEMS", PROCEEDINGS OF THE SOUTHEAST CONFERENCE, TAMPA, APRIL 5 - 8, 1987, vol. 1, 5 April 1987 (1987-04-05), INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS, pages 225 - 228, XP000212298 *
LANG G R ET AL: "AN OPTIMUM PARALLEL ARCHITECTURE FOR HIGH-SPEED REAL-TIME DIGITAL SIGNAL PROCESSING", COMPUTER, vol. 21, no. 2, 1 February 1988 (1988-02-01), pages 47 - 57, XP000098451 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7653785B2 (en) 2005-06-22 2010-01-26 Lexmark International, Inc. Reconfigurable cache controller utilizing multiple ASIC SRAMS
DE112008001473B4 (de) 2007-05-29 2021-08-26 Advanced Micro Devices, Inc. Zwischenspeicherung eines Mikrocodierungsemulationsspeichers

Also Published As

Publication number Publication date
AU7575398A (en) 1999-12-06

Similar Documents

Publication Publication Date Title
US5933855A (en) Shared, reconfigurable memory architectures for digital signal processing
EP0734553B1 (fr) Antememoire a niveau dedouble
KR100912437B1 (ko) 집적회로장치
Ranganathan et al. Reconfigurable caches and their application to media processing
Jacob et al. Memory interfacing and instruction specification for reconfigurable processors
US7899993B2 (en) Microprocessor having a power-saving instruction cache way predictor and instruction replacement scheme
US7284092B2 (en) Digital data processing apparatus having multi-level register file
JP2001184263A (ja) 旧キャッシュラインを無効化および除去する装置
US6446181B1 (en) System having a configurable cache/SRAM memory
US6606684B1 (en) Multi-tiered memory bank having different data buffer sizes with a programmable bank select
US6101589A (en) High performance shared cache
JPH08504044A (ja) マイクロコード・キャッシュ・システム及び方法
WO1999060480A1 (fr) Sous-systeme d'execution a antememoire reconfigurable et partagee
WO1999013397A1 (fr) Memoire fifo utilisant un bloc memoire reconfigurable partage
JP4024247B2 (ja) 半導体データプロセッサ
US6604163B1 (en) Interconnection of digital signal processor with program memory and external devices using a shared bus interface
Kluter et al. Virtual Ways: Efficient coherence for architecturally visible storage in automatic instruction set extensions
Ang et al. A flexible multi-port caching scheme for reconfigurable platforms
EP0986787A2 (fr) Processeur assurant l'interface a un moteur de calcul memo-centrique
US5717891A (en) Digital signal processor with caching of instructions that produce a memory conflict
EP0999500A1 (fr) Antémémoire à partition reconfigurable par programme d'application
Nakkar et al. Dynamically programmable cache
Kumr et al. An Overview of Hardware Based Cache Optimization Techniques
Appleton et al. High Performance Computer Architecture Team The University of Adelaide South Australia
Lee et al. Asynchronous instruction cache memory for average-case performance

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GE GH GM GW HU ID IL IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG UZ VN YU ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW SD SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN ML MR NE SN TD TG

NENP Non-entry into the national phase

Ref country code: KR

121 Ep: the epo has been informed by wipo that ep was designated in this application
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase