Patent US5136691A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5136691A Expired / Lapsed US ⏱️ 0.0 years remaining

Methods and apparatus for caching interlock variables in an integrated cache memory

Assignee: GlobalFoundries Inc
•
Filing: 1988-01-20
•
Granted: 1992-08-04
•
Expires: 2008-01-20
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract Methods and apparatus are disclosed for supporting the caching of interlock variables in cache memory units employed in multiprocessor and/or multitasking environments. The preferred embodiment of the invention includes methods and apparatus for selectively treating interlock variables as cachable or non-cachable. The disclosed methods and apparatus are suitable for supporting high speed data and instruction processing applications in both RISC and non-RISC architecture environments, can be integrated on a single chip and allows for better performance and utilization of the computer system bus structure since most of the interlock variable accesses are faster and do not appear on the memory bus (only in the cache).

Inventors

  • 👤 Gigy Baror

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-24 20:11
CPC Classifications
G; G06; G06F; G06F12/00; G06F12/02; G06F12/08; G06F12/0802; G06F12/0888; G06F12/0806; G06F12/0815; G06F12/0837; G06F12/0844; G06F12/0846; G06F12/0848; G06F15/00; G06F15/76; G06F15/78; G06F15/7828; G06F15/7835

Claims Analysis

Total Claims: 51
Claim 1
Independent Claim 186 words
A cache memory for caching interlock variables in a computing system including: plural central processing units ("CPUs"), processor bus means for coupling signals between said CPUs and the cache memory, a main memory having plural regions, and memory bus means for coupling signals between said main memory and the cache memory, the cache memory comprising: (a) a processor bus interface; (b) a memory bus interface; (c) a processor bus unit coupled between the processor bus means and the processor bus interface for controlling the processor bus interface; (d) a memory bus unit coupled between the memory bus means and the memory bus interface for controlling the memory bus interface; and (e) a cache unit coupled to both said processor bus unit and said memory bus unit for caching interlock variables, means supplying the cached interlock variables to said plural processing units via said processor bus means and to certain of said plural regions of main memory for interlocking said plural regions of main memory and for synchronizing access to said plural processors so operations of said plural processors are synchronized with operations of the cache unit.
Claim 2
Dependent Claim 186 words
A cache memory for caching interlock variables in a computing system including: plural central processing units ("CPUs"), processor bus means for coupling signals between said CPUs and the cache memory, a main memory having plural regions, and memory bus means for coupling signals between said main memory and the cache memory, the cache memory comprising: (a) a processor bus interface; (b) a memory bus interface; (c) a processor bus unit coupled between the processor bus means and the processor bus interface for controlling the processor bus interface; (d) a memory bus unit coupled between the memory bus means and the memory bus interface for controlling the memory bus interface; and (e) a cache unit coupled to both said processor bus unit and said memory bus unit for caching interlock variables, means supplying the cached interlock variables to said plural processing units via said processor bus means and to certain of said plural regions of main memory for interlocking said plural regions of main memory and for synchronizing access to said plural processors so operations of said plural processors are synchronized with operations of the cache unit.
Claim 3
Dependent Claim 63 words
The cache memory of claim 1 wherein said cache unit is programmable in response to signals from at least one of said processing units, said cache unit including a set of special registers for selecting programmable options, one of said options being a cache interlock enable, selection of the cache interlock enable causing the interlock variables to be cached by the cache unit.
Claim 4
Dependent Claim 22 words
The cache memory of claim 1 wherein the interlock variable guarantees exclusive access from one of said processors to said cache memory.
Claim 5
Dependent Claim 15 words
The cache memory of claim 2 wherein said programmable cache unit includes memory array means.
Claim 6
Dependent Claim 35 words
The cache memory of claim 4 wherein said memory array means stores cached data and instruction signals and is organized as a set of blocks, each block corresponding to a predetermined number of cached words.
Claim 7
Dependent Claim 17 words
The cache memory of claim 5 wherein said programmable cache unit supports variable block and sub-block sizing.
Claim 8
Dependent Claim 431 words
A cache memory for caching interlock variables in a computing system including: plural central processing units ("CPUs"), processor bus means for coupling signals between said CPUs and the cache memory, a main memory having plural regions, and memory bus means for coupling signals between said main memory and the cache memory, the cache memory comprising: (a) a processor bus interface; (b) a memory bus interface; (c) a processor bus unit coupled between the processor bus means and the processor bus interface for controlling the processor bus interface; (d) a memory bus unit coupled between the memory bus means and the memory bus interface for controlling the memory bus interface; and (e) a cache unit coupled to both said processor bus unit and said memory bus unit for caching interlock variables, means supplying the cached interlock variables to said plural processing units via said processor bus means and to certain of said plural regions of main memory for interlocking said plural regions of main memory and for synchronizing access to said plural processors so operations of said plural processors are synchronized with operations of the cache unit; said cache unit being programmable in response to signals from at least one of said processing units, said cache unit including a set of special registers for selecting programmable options, one of said options being a cache interlock enable, selection of the cache interlock enable causing the interlock variables to be cached by the cache unit, said programmable cache unit including memory array means which, in a first configuration, is located within said programmable cache means and which, in a second configuration, is located outside said programmable cache means, said memory array means storing cached data and instruction signals and being organized as a set of blocks, each block corresponding to a predetermined number of cached words, said programmable cache unit supporting variable block and sub-block sizing, said programmable cache unit further comprising: (a) a cache unit address bus, coupled to said processor bus unit and said memory bus unit, for carrying address signals; (b) a cache unit data bus, coupled to said processor bus unit and said memory bus unit, for carrying data signals; (c) block status array means coupled to said cache data bus, for storing an indication of the modified, shared and locked status of each block; and (d) cache unit control means, coupled to said processor bus control means and said memory bus control means, for synchronizing and controlling operations of (i) said programmable cache unit, (ii) said processor bus unit, (iii) said memory bus unit, and (iv) said plural processors.
Claim 9
Dependent Claim 431 words
A cache memory for caching interlock variables in a computing system including: plural central processing units ("CPUs"), processor bus means for coupling signals between said CPUs and the cache memory, a main memory having plural regions, and memory bus means for coupling signals between said main memory and the cache memory, the cache memory comprising: (a) a processor bus interface; (b) a memory bus interface; (c) a processor bus unit coupled between the processor bus means and the processor bus interface for controlling the processor bus interface; (d) a memory bus unit coupled between the memory bus means and the memory bus interface for controlling the memory bus interface; and (e) a cache unit coupled to both said processor bus unit and said memory bus unit for caching interlock variables, means supplying the cached interlock variables to said plural processing units via said processor bus means and to certain of said plural regions of main memory for interlocking said plural regions of main memory and for synchronizing access to said plural processors so operations of said plural processors are synchronized with operations of the cache unit; said cache unit being programmable in response to signals from at least one of said processing units, said cache unit including a set of special registers for selecting programmable options, one of said options being a cache interlock enable, selection of the cache interlock enable causing the interlock variables to be cached by the cache unit, said programmable cache unit including memory array means which, in a first configuration, is located within said programmable cache means and which, in a second configuration, is located outside said programmable cache means, said memory array means storing cached data and instruction signals and being organized as a set of blocks, each block corresponding to a predetermined number of cached words, said programmable cache unit supporting variable block and sub-block sizing, said programmable cache unit further comprising: (a) a cache unit address bus, coupled to said processor bus unit and said memory bus unit, for carrying address signals; (b) a cache unit data bus, coupled to said processor bus unit and said memory bus unit, for carrying data signals; (c) block status array means coupled to said cache data bus, for storing an indication of the modified, shared and locked status of each block; and (d) cache unit control means, coupled to said processor bus control means and said memory bus control means, for synchronizing and controlling operations of (i) said programmable cache unit, (ii) said processor bus unit, (iii) said memory bus unit, and (iv) said plural processors.
Claim 10
Dependent Claim 39 words
The cache memory of claim 7 wherein said cache control means is further operative to generate hit signals for valid cache accesses and maintains and updates data stored in said set of special registers and said block status array.
Claim 11
Dependent Claim 37 words
The cache memory of claim 8 further comprising means for treating the interlock variables as non-cachable in response to one of said processors deriving a signal indicating that said cache interlock enable option has not been selected.
Claim 12
Dependent Claim 33 words
The cache memory of claim 9 further comprising means for transferring an access to an interlock varaible to said memory bus with a lock indication in response to said interlock variables being non-cachable.
Claim 13
Dependent Claim 19 words
The cache memory of claim 8 further comprising means for indicating that a processor access is an interlocked access.
Claim 14
Dependent Claim 25 words
The cache memory of claim 11 further comprising means, coupled to said memory bus interface, for indicating that a memory access is an interlocked access.
Claim 15
Dependent Claim 23 words
The cache memory of claim 12 further comprising means for locking a variable for exclusive use of a specified one of said processors.
Claim 16
Dependent Claim 44 words
The cache memory of claim 13 wherein said set of special registers includes at least one programmable register having at least one bit for selecting a 2 n way set associative cache organization where n is an integer greater than or equal to zero.
Claim 17
Dependent Claim 13 words
The cache memory of claim 8 further comprising means for testing interlocked variables.
Claim 18
Dependent Claim 61 words
The cache memory of claim 15 including means responsive to said cache enable option being selected and no hit occurring in a shared block for treating an interlocked read as a miss, starting a reload operation on said memory bus, generating a lock indication signal and storing the read data in a cache memory block which is thereafter assigned as shared.
Claim 19
Dependent Claim 33 words
The cache memory of claim 16 including means responsive to an interlocked read occurring with a hit in a shared block for supplying data from a cache memory with no memory bus access.
Claim 20
Dependent Claim 47 words
The cache memory of claim 16 including means responsive to a said cache enable option being selected for treating an interlocked write operation as a function of the state of a processor generated lock indication signal supplied by said processor in a cycle preceding a write access.
Claim 21
Dependent Claim 27 words
The cache memory of claim 18 including means responsive to said lock indication signal being in a first state for initiating a write-through operation to said memory.
Claim 22
Dependent Claim 27 words
The cache memory of claim 19 including means responsive to said lock indication signal being in a second state for writing data into said memory array means.
Claim 23
Dependent Claim 43 words
The cache memory of claim 20 including means for writing data to said main memory in response to a prior read access generating a miss so that the main memory is written into only while the interlocked variable is read the first time.
Claim 24
Dependent Claim 22 words
The cache memory of claim 21 further comprising means for supplying a lock indication signal to said memory during memory write operations.
Claim 25
Dependent Claim 29 words
The cache memory of claim 22, wherein the processor bus interface, memory bus interface, processor bus unit, memory bus unit, and cache unit are integrated on a single chip.
Claim 26
Dependent Claim 18 words
The cache memory of claim 15 wherein the cache memory is configured to operate as a cache master.
Claim 27
Dependent Claim 34 words
The cache memory of claim 24 wherein the cache master derives a signal via said shared means for indicating memory bus accesses in response to an interlocked access being derived on said memory bus.
Claim 28
Dependent Claim 13 words
The cache memory of claim 25 further comprising means for releasing interlocked variables.
Claim 29
Dependent Claim 43 words
The cache memory of claim 26 wherein said means for releasing interlocked variables further comprises means for invalidating cache variables so that subsequent processor accesses are a miss and so that the most recent value of the variable is read from main memory.
Claim 30
Dependent Claim 29 words
The cache memory of claim 27, wherein the processor bus interface, memory bus interface, processor bus unit, memory bus unit, and cache unit are integrated on a single chip.
Claim 31
Independent Claim 220 words
A method of caching interlock variables in a cache unit that supports other cache functions in a computing system, wherein said system includes plural central processing units ("CPUs"), processor bus means for coupling signals between said CPUs and the cache unit, a main memory having plural regions, and memory bus means for coupling signals between said memory and the cache unit, comprising the steps of: (a) controlling a processor bus interface of the cache unit from within said cache unit by utilizing a processor bus unit coupled to said processor bus means; (b) controlling a memory bus interface of the cache unit from within said cache unit by utilizing a memory bus unit coupled to said memory bus means; and (c) caching interlock variables in a memory array means of the cache unit from within said cache unit, supplying the cached interlock variables in the memory array means to said plural processing units, said plural processing units responding to said interlocked variables, and interlocking certain of said plural regions of said main memory and synchronizing access to said plural processors to synchronize operations of said plural processors with operations of the cache unit, said interlocking and synchronizing step being performed in said plural processing units in response to the cached interlocked variables supplied to them by the memory array means.
Claim 32
Independent Claim 220 words
A method of caching interlock variables in a cache unit that supports other cache functions in a computing system, wherein said system includes plural central processing units ("CPUs"), processor bus means for coupling signals between said CPUs and the cache unit, a main memory having plural regions, and memory bus means for coupling signals between said memory and the cache unit, comprising the steps of: (a) controlling a processor bus interface of the cache unit from within said cache unit by utilizing a processor bus unit coupled to said processor bus means; (b) controlling a memory bus interface of the cache unit from within said cache unit by utilizing a memory bus unit coupled to said memory bus means; and (c) caching interlock variables in a memory array means of the cache unit from within said cache unit, supplying the cached interlock variables in the memory array means to said plural processing units, said plural processing units responding to said interlocked variables, and interlocking certain of said plural regions of said main memory and synchronizing access to said plural processors to synchronize operations of said plural processors with operations of the cache unit, said interlocking and synchronizing step being performed in said plural processing units in response to the cached interlocked variables supplied to them by the memory array means.
Claim 33
Independent Claim 340 words
A method of caching interlock variables in a cache unit that supports other cache functions in a computing system, wherein said system includes plural central processing units ("CPUs"), processor bus means for coupling signals between said CPUs and the cache unit, a main memory having plural regions, and memory bus means for coupling signals between said memory and the cache unit, comprising the steps of: (a) controlling a processor bus interface of the cache unit from within said cache unit by utilizing a processor bus unit coupled to said processor bus means; (b) controlling a memory bus interface of the cache unit from within said cache unit by utilizing a memory bus unit coupled to said memory bus means; and (c) caching interlock variables in a memory array means of the cache unit from within said cache unit, supplying the cached interlock variables in the memory array means to said plural processing units, said plural processing units responding to said interlocked variables, interlocking certain of said plural regions of said main memory and synchronizing access to said plural processors to synchronize operations of said plural processors with operations of the cache unit, said interlocking and synchronizing step being performed in said plural processing units in response to the cached interlocked variables supplied to them by the memory array means said step of caching interlock variables in the memory array being performed with a programmable cache unit by: (a) coupling address signals within said cache unit on an internal cache unit address bus coupled to said processor bus unit and said memory bus unit; (b) coupling data signals within said cache unit on an internal cache unit data bus coupled to said processor bus unit and said memory bus unit; (c) storing an indication of the modified, shared and locked status of each block in a block status array means coupled to said cache data bus; and (d) synchronizing and controlling operations of said programmable cache unit, said processor bus and said memory bus unit via a cache unit control means.
Claim 34
Independent Claim 340 words
A method of caching interlock variables in a cache unit that supports other cache functions in a computing system, wherein said system includes plural central processing units ("CPUs"), processor bus means for coupling signals between said CPUs and the cache unit, a main memory having plural regions, and memory bus means for coupling signals between said memory and the cache unit, comprising the steps of: (a) controlling a processor bus interface of the cache unit from within said cache unit by utilizing a processor bus unit coupled to said processor bus means; (b) controlling a memory bus interface of the cache unit from within said cache unit by utilizing a memory bus unit coupled to said memory bus means; and (c) caching interlock variables in a memory array means of the cache unit from within said cache unit, supplying the cached interlock variables in the memory array means to said plural processing units, said plural processing units responding to said interlocked variables, interlocking certain of said plural regions of said main memory and synchronizing access to said plural processors to synchronize operations of said plural processors with operations of the cache unit, said interlocking and synchronizing step being performed in said plural processing units in response to the cached interlocked variables supplied to them by the memory array means said step of caching interlock variables in the memory array being performed with a programmable cache unit by: (a) coupling address signals within said cache unit on an internal cache unit address bus coupled to said processor bus unit and said memory bus unit; (b) coupling data signals within said cache unit on an internal cache unit data bus coupled to said processor bus unit and said memory bus unit; (c) storing an indication of the modified, shared and locked status of each block in a block status array means coupled to said cache data bus; and (d) synchronizing and controlling operations of said programmable cache unit, said processor bus and said memory bus unit via a cache unit control means.
Claim 35
Dependent Claim 42 words
A method as set forth in claim 30 further comprising the steps of generating hit signals for valid cache accesses and maintaining and updating data stored in said set of special registers and said block status array, via said cache control means.
Claim 36
Dependent Claim 29 words
A method as set forth in claim 31 further comprising the step of treating interlock variables as non-cachable in response to said cache interlock enable option not being selected.
Claim 37
Dependent Claim 38 words
A method as set forth in claim 32 further comprising the steps of transferring an access to an interlock variable to said memory bus and generating a lock indication signal in response to said interlock variables being non-cachable.
Claim 38
Dependent Claim 27 words
A method as set forth in claim 32 further comprising the step of generating a first signal in response to a processor access being an interlocked access.
Claim 39
Dependent Claim 27 words
A method as set forth in claim 34 further comprising the step of generating a second signal in response to a memory access being an interlocked access.
Claim 40
Dependent Claim 26 words
A method as set forth in claim 35 further comprising the step of locking a variable for exclusive use of a specified one of said processors.
Claim 41
Dependent Claim 14 words
A method as set forth in claim 31 further comprising testing the interlocked variables.
Claim 42
Dependent Claim 79 words
A method as set forth in claim 37, further comprising the steps of: (a) treating an interlocked read as a miss; (b) starting a reload operation on said memory bus; (c) generating a lock indication signal; and (d) storing the read stat in a cache memory array block which is thereafter assigned as shared, steps (a), (b), (c) and (d) being performed in response to said cache enable option being selected and no hit occurring in a shared block.
Claim 43
Dependent Claim 38 words
A method as set forth in claim 38 further comprising the step of supplying data from the cache memory array with no memory bus access in response to interlocked read occurring with a hit in a shared block.
Claim 44
Dependent Claim 53 words
A method as set forth in claim 38 further comprising the step of treating an interlocked write operation as a function of the state of a processor generated lock indication signal derived by one of said processors in the cycle preceding the write access in response to said cache enable option being selected.
Claim 45
Dependent Claim 192 words
A multiprocessor system comprising a cache memory unit for caching interlock variables, plural central processing units ("CPUs"), processor bus means for coupling signals between one of said CPUs and the cache memory unit, a main memory having plural regions, and memory bus means for coupling signals between said main memory and the cache memory unit, the cache memory unit comprising: (a) a processor bus interface; (b) a memory bus interface; (c) a processor bus unit coupled between the processor bus means and the processor bus interface for controlling the processor bus interface; (d) a memory bus unit coupled between the memory bus means and the memory bus interface for controlling the memory bus interface; and (e) a cache unit coupled to both said processor bus unit and said memory bus unit for caching interlock variables, means supplying the cached interlock variables to said plural processing units via said processor bus means and to certain of said plural regions of main memory for interlocking said plural regions of main memory and for synchronizing access to said plural processors so operations of said plural processors are synchronized with operations of the cache memory unit.
Claim 46
Dependent Claim 192 words
A multiprocessor system comprising a cache memory unit for caching interlock variables, plural central processing units ("CPUs"), processor bus means for coupling signals between one of said CPUs and the cache memory unit, a main memory having plural regions, and memory bus means for coupling signals between said main memory and the cache memory unit, the cache memory unit comprising: (a) a processor bus interface; (b) a memory bus interface; (c) a processor bus unit coupled between the processor bus means and the processor bus interface for controlling the processor bus interface; (d) a memory bus unit coupled between the memory bus means and the memory bus interface for controlling the memory bus interface; and (e) a cache unit coupled to both said processor bus unit and said memory bus unit for caching interlock variables, means supplying the cached interlock variables to said plural processing units via said processor bus means and to certain of said plural regions of main memory for interlocking said plural regions of main memory and for synchronizing access to said plural processors so operations of said plural processors are synchronized with operations of the cache memory unit.
Claim 47
Dependent Claim 63 words
The multiprocessor system of claim 41 wherein said cache unit is programmable in response to signals from at least one of said processing units, said cache unit including a set of special registers for selecting programmable options, one of said options being a cache interlock enable, selection of the cache interlock enable causing the interlock variables to be cached by the cache unit.
Claim 48
Dependent Claim 22 words
The multiprocessor system of claim 41 wherein the interlock variable guarantees exclusive access from one of said processors to said cache memory.
Claim 49
Dependent Claim 20 words
The multiprocessor system of claim 41 wherein each processor includes software for examining the interlock variable of the cache unit.
Claim 50
Dependent Claim 307 words
A multiprocessor system comprising a cache memory unit for caching interlock variables, plural central processing units ("CPUs"), processor bus means for coupling signals between one of said CPUs and the cache memory unit, a main memory having plural regions, and memory bus means for coupling signals between said main memory and the cache memory unit, the cache memory unit comprising: (a) a processor bus interface; (b) a memory bus interface; (c) a processor bus unit coupled between the processor bus means and the processor bus interface for controlling the processor bus interface; (d) a memory bus unit coupled between the memory bus means and the memory bus interface for controlling the memory bus interface; (e) a cache unit coupled to both said processor bus unit and said memory bus unit for caching interlock variables, means supplying the cached interlock variables to said plural processing units via said processor bus means and to certain of said plural regions of main memory for interlocking said plural regions of main memory and for synchronizing access to said plural processors so operations of said plural processors are synchronized with operations of the cache memory unit, said programmable cache unit including: (a) a cache unit address bus, coupled to said processor bus unit and said memory bus unit, for carrying address signals; (b) a cache unit data bus, coupled to said processor bus unit and said memory bus unit, for carrying data signals; (c) block status array means coupled to said cache data bus, for storing an indication of the modified, shared and locked status of each block; and (d) cache unit control means, coupled to said processor bus control means and said memory bus control means, for synchronizing and controlling operations of (i) said programmable cache unit, (ii) said processor bus unit, (iii) said memory bus unit and said plural processors.
Claim 51
Dependent Claim 307 words
A multiprocessor system comprising a cache memory unit for caching interlock variables, plural central processing units ("CPUs"), processor bus means for coupling signals between one of said CPUs and the cache memory unit, a main memory having plural regions, and memory bus means for coupling signals between said main memory and the cache memory unit, the cache memory unit comprising: (a) a processor bus interface; (b) a memory bus interface; (c) a processor bus unit coupled between the processor bus means and the processor bus interface for controlling the processor bus interface; (d) a memory bus unit coupled between the memory bus means and the memory bus interface for controlling the memory bus interface; (e) a cache unit coupled to both said processor bus unit and said memory bus unit for caching interlock variables, means supplying the cached interlock variables to said plural processing units via said processor bus means and to certain of said plural regions of main memory for interlocking said plural regions of main memory and for synchronizing access to said plural processors so operations of said plural processors are synchronized with operations of the cache memory unit, said programmable cache unit including: (a) a cache unit address bus, coupled to said processor bus unit and said memory bus unit, for carrying address signals; (b) a cache unit data bus, coupled to said processor bus unit and said memory bus unit, for carrying data signals; (c) block status array means coupled to said cache data bus, for storing an indication of the modified, shared and locked status of each block; and (d) cache unit control means, coupled to said processor bus control means and said memory bus control means, for synchronizing and controlling operations of (i) said programmable cache unit, (ii) said processor bus unit, (iii) said memory bus unit and said plural processors.

References Cited (Backward Citations)

US3761883A Cited
US4156906A Cited
US4400770A Cited
US4437149A Cited
US4513367A Cited
US4442487A Cited
US4506323A Cited
US4464717A Cited
US4616310A Cited
US4775955A Cited
US4797813A Cited
US4811208A Cited
US4811209A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1995-08-04 1996-02-03 1996-08-04 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 1999-08-04 2000-02-03 2000-08-04 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2003-08-04 2004-02-03 2004-08-04 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag