Nova Patents
EP0340901A2

Access system for dual port memory.

Abstract

A multiprocessor numeric processing subsystem wherein an extremely wide (and therefore high bandwidth) data bus connects the arithmetic calculation subunit to a large data cache memory. This cache is multiported, so that newly retrieved data can be written into the cache at essentially the same time that data transfer is occurring between the numeric processing subunit and the cache. A novel double buffering subsystem is used at the interface between a numeric processor and a large data cache memory. The partitioning of the register file avoids data collisions in the cache memory. A dual port memory is used, and is partitioned in software so that the top half of the memory is allocated to one processor, and the bottom half to the other. (This allocation is switched when both processors set respective flag bits indicating that they are ready to switch.) On accesses to this memory, additional bits tag the access as "physical," "logical," or "preview." A physical access is interpreted as a literal address within the full memory, and the double buffering is ignored. A logical access is supplemented by an additional address bit, determined by the double buffering switch state. A preview access is used for read access only, and goes to the opposite bank of memory from that which would be accessed in a logical access. The use of preview access can be particularly advantageous in avoiding data flow inefficiencies at synchronization points in pipelined algorithms. Multiple numeric processing modules (of different types if desired) can be connected in parallel. A control processor controls data transfers into and out of each of the numeric processing modules. Control of these data transfers is accomplished by an extension of the control processor's microcode. Extensions of the control processor's writable control storage are located on each of the numerical processing modules. Each of the extensions includes its own decode logic, and stores its own executable microinstructions.

EP0340901A2, drawing sheet 1
Sheet 1 of 59

Term

Term ended

Projected expiry passed 22 March 2009, 17.5 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

13 claims: 4 independent, 9 dependent

  1. 1
    A subsystem for double buffering, comprising:first and second interface ports;a dual port memory;a memory access controller, which can retain an allocation of two parts of said memory between said interface ports, and is connected to receive a mode signal, and arbitrates access to said memory from said interface ports, in accordance with the mode selected by said mode signal, such that: in a first mode, any part of said memory may be read or written to by either of said ports, regardless of said allocation;and in a second mode, each said port can read or write to only the respective part of said memory defined by said allocation.
  2. 2
    The subsystem of Claim 1, wherein said memory access controller can also arbitrate access to said memory from said interface ports, when a third mode has been selected by said mode signal, such that each said port can read the opposite part of said memory, which said allocation has assigned to the other said port.
  3. 3
    A subsystem according to Claim 1 or 2, further comprising means associated with said memory access controller for reversing said allocation upon receipt of a first bank-switch request corresponding to control of said first port and a second bank-switch request corresponding to control of said second port.
  4. 4
    The system of any preceding claim, further comprising:a first processor and a second processor , connected and programmed to operate concurrently and asynchronously;wherein said memory controller is connected to arbitrate access to said memory between said first and second processors.
  5. 5
    The system of Claim 4, wherein said first processor and said second processor are connected and programmed so that said first processor can perform address calculations for an algorithm concurrently while said second processor executes data calculations for the algorithm.
  6. 6
    The system of Claim 4 or 5, wherein said first processor is a control processor and said second processor is a numeric processor ;and wherein said memory comprises a cache memory, which contains at least a megabyte of memory and is not on the same chip as said numeric processor;and wherein said cache memory is operatively connected to said numeric processor through a high-bandwidth data bus which has a physical net width of more than 128 data lines.
  7. 7
    The system of Claim 6, wherein said data bus has a net bandwidth which is at least 3 times larger than the maximum net bandwidth between said numeric processor and the host system.
  8. 8
    The system of Claim 7, wherein said data bus has more than 4 times as many physical lines as the number of bits in the standard word width of operations in said numeric processor, connecting said numeric processor to said data cache memory.
  9. 9
    The system of Claim 7 or 8, wherein said data bus has at least four times as many physical lines as the number of bits of the data resolution of the highest-precision instruction in the instruction set of said numeric processor into said data cache memory.
  10. 10
    The system of any of Claims 7 to 9, further comprising at least one data cache memory expansion module , which is connected to said high-bandwidth bus in parallel with said data cache memory and said numeric processor, and which is configured to extend the memory space of said data cache memory.
  11. 11
    The system of Claim 10, wherein said memory expansion module is mounted on a subboard which does not include said data cache memory.
  12. 12
    The system of Claim 10, wherein said memory expansion module is mounted on a first subboard which does not include said data cache memory, and wherein said numeric processor is mounted on a second subboard which does not include said data cache memory, and said first and second subboards are both connected to said bus at an expandable connector stack.
  13. 13
    A method of using a system according to any of Claims 4 to 12, comprising the steps of:providing input data to be operated on in accordance with steps of said program;executing a first set of program steps on said first processor, and concurrently executing a second set of program steps on said second processor, data inputs and outputs of said processors being connected to provide a pipelined data flow;operating said access controller in said second mode thereof, so that said first processor reads and writes primarily to said first part of said memory and said second processor reads and writes primarily to said second part;and, when both said processors have reached respective synchronization points in said respective program steps, reversing said allocation of said parts of said address space between said first and second processors;wherein, prior to said step of reversing the assignment, at least said first processor reads at least some data from the part of said memory which is then still primarily assigned to said second processor;and providing an output corresponding to the results of said program steps on said input data.