US5276847A
Expired / Lapsed
US
⏱️ 0.0 years remaining
Method for locking and unlocking a computer address
Assignee: Intel Corp
•
Filing: 1992-07-09
•
Granted: 1994-01-04
•
Expires: 2012-07-09
Abstract
Abstract A method for locking and unlocking a computer address is described. A separate instruction for locking is read. A first value is assigned to a flag to indicate that locking has been requested. An instruction that uses the address is executed. The address is locked such that the address can be accessed by the processor and not by any other processor. A separate instruction for unlocking is read. A second value is assigned to a flag to indicate that unlocking has been requested. A load instruction or a store instruction is executed. The address is unlocked such that the address can be accessed by the processor and by at least one other processor.
Inventors
- 👤 Leslie D. Kohn
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-11-03 05:34
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/46; G06F9/52; G06F9/526; G06F9/30; G06F9/30003; G06F9/3004; G06F9/30076; G06F9/30087; G06F9/38; G06F9/3824; G06F9/3834; G06F2209/00; G06F2209/52; G06F2209/521
Claims Analysis
Total Claims: 24
Claim 1
Independent Claim
292 words
In a first computer processor connected through a bus to a memory resource, a second processor, and an address control means for controlling access to addresses accessed through the bus, said first computer processor executing a program task defined by a series of microinstructions including a lock instruction and an unlock instruction, a method for locking a memory address accessible through the bus and for unlocking the memory address, comprising the steps of: (a) supplying the lock instruction from the program to the first computer processor; (b) executing the lock instruction in the first computer processor, including assigning a first value to a lock flag in a register in the first computer processor, but not actually locking an address; (c) supplying the next instruction from the program to the first computer processor; (d) if said next instruction in step (c) does not request a memory access, then executing said next instruction and repeating said step (c) to supply a next following instruction; (e) if said next instruction in step (c) does request a memory access to a requested address, then executing said next instruction, locking the requested address by asserting a lock signal from the first computer processor to the address control means such that the requested address can be accessed only by said first computer processor, and then repeating said step (c) to supply a next following instruction; (f) if a next instruction in said step (c) is an unlock instruction subsequent to locking a requested address in said step (e), then executing said unlock instruction, including assigning a second value to the lock flag so that the requested address is unlocked by asserting the lock signal upon the next following instruction supplied from the program that requests a memory access.
Claim 2
Dependent Claim
292 words
In a first computer processor connected through a bus to a memory resource, a second processor, and an address control means for controlling access to addresses accessed through the bus, said first computer processor executing a program task defined by a series of microinstructions including a lock instruction and an unlock instruction, a method for locking a memory address accessible through the bus and for unlocking the memory address, comprising the steps of: (a) supplying the lock instruction from the program to the first computer processor; (b) executing the lock instruction in the first computer processor, including assigning a first value to a lock flag in a register in the first computer processor, but not actually locking an address; (c) supplying the next instruction from the program to the first computer processor; (d) if said next instruction in step (c) does not request a memory access, then executing said next instruction and repeating said step (c) to supply a next following instruction; (e) if said next instruction in step (c) does request a memory access to a requested address, then executing said next instruction, locking the requested address by asserting a lock signal from the first computer processor to the address control means such that the requested address can be accessed only by said first computer processor, and then repeating said step (c) to supply a next following instruction; (f) if a next instruction in said step (c) is an unlock instruction subsequent to locking a requested address in said step (e), then executing said unlock instruction, including assigning a second value to the lock flag so that the requested address is unlocked by asserting the lock signal upon the next following instruction supplied from the program that requests a memory access.
Claim 3
Dependent Claim
46 words
The method of claim 1 for locking and unlocking a computer address, wherein: in said step (b), executing the lock instruction includes disabling external interrupts generated from sources external to the program; and said step (f) includes enabling said external interrupts upon executing said unlock instruction.
Claim 4
Dependent Claim
28 words
The method of claim 1 for locking and unlocking a computer address, wherein the first value is a logical one and the second value is a logical zero.
Claim 5
Dependent Claim
110 words
The method of claim 1, wherein if a trap condition occurs following said step (b) but before unlocking the address, then the method further comprises the steps of: (g) assigning a second value to the lock flag to indicate that locking is not requested; (h) storing in a fault instruction register an address of the instruction that caused the trap condition; (i) executing a trap handler routine that reads the address of the instruction that caused the trap condition and handles the trap condition; (j) scanning backward through the series of microinstructions to the lock instruction previously executed in said step (b); and (k) repeated said steps (b) through (f).
Claim 6
Dependent Claim
42 words
The method of claim 4 for locking and unlocking a computer address wherein: in said step (b), executing the lock instruction includes disabling external interrupts; said step (f) includes enabling said external interrupts; and said step (g) includes enabling said external interrupts.
Claim 7
Dependent Claim
18 words
The method of claim 4 for locking a computer address, wherein the first value is a logical one.
Claim 8
Dependent Claim
94 words
The method of claim 1 for locking and unlocking a computer address, further comprising a step (g) of: (g) if the step (c) is repeated more than N times following assigning a first value to the lock flag wherein N is a non-zero positive integer, and if a memory access has not been requested in step (e) so that no address has been locked, and if an unlock instruction has not been executed in the step (g), then a second value is assigned to the lock flag indicating that locking is no longer requested.
Claim 9
Dependent Claim
16 words
The method of claim 7, wherein N is in an approximate range between twenty-five and thirty-five.
Claim 10
Dependent Claim
60 words
The method of claim 1, further comprising a step (g) of: (g) if the step (c) is repeated more than N times following assigning a first value to the lock flag wherein N is a non-zero positive integer, and if a requested address has been locked in step (e) without unlocking in said step (f), then unlocking the requested address.
Claim 11
Dependent Claim
16 words
The method of claim 9, wherein N is in an approximate range between twenty-five and thirty-five.
Claim 12
Dependent Claim
94 words
The method of claim 1, wherein said step (f) includes the sub-steps of: (f)(1) assigning a second value to the lock flag to indicate that unlocking has been requested; (f)(2) supplying and executing a next instruction in the series of instructions; (f)(3) if said next instruction does not request a memory access, then repeating said step (f)(2) to supply and execute a next following instruction; (f)(4) if said next instruction requests a memory access, then unlocking the requested address locked in the step (e) so that said address can be accessed by another task.
Claim 13
Dependent Claim
46 words
The method of claim 11 for locking and unlocking a computer address, wherein: in said step (b), executing the lock instruction includes disabling external interrupts generated from a source external to the program; and said step (f) includes a sub-step (f)(5) of enabling said external interrupts.
Claim 14
Dependent Claim
324 words
In a first computer processor connected through a bus to an external memory, a second processor, and an address locking means for locking an address, a method for executing a program including a series of instructions, said instructions including an interlocked operation defined by instructions between a lock instruction and an unlock instruction, said interlocked instructions including an instruction that accesses the external memory, said method comprising the steps of: (a) supplying the lock instruction from the program to the first computer processor; (b) executing the lock instruction in the first computer processor, including assigning a first value to a lock flag in the first computer processor and disabling external interrupts generated from sources external to the program, but not locking an address; (c) supplying the next instruction in the interlocked series of instructions to the first computer processor; (d) if in said step (c) said next instruction does not request a memory access and is not an unlock instruction, then executing said next instruction and repeating said step (c) to supply a next following instruction; (e) if in said step (c) said next instruction does request a memory access to a requested address, then asserting a lock signal from said first computer processor for locking the requested address such that the requested address can be accessed only by the task that requested the memory access, and then repeating said step (c) to supply a next following instruction; (f) if in said step (c) said next instruction is an unlock instruction, the executing said unlock instruction, including assigning a second value to the lock flag to indicate that unlocking has been requested, but not actually unlocking said requested address; and (g) following execution of the unlock instruction in the step (f), supplying a next instruction to the first computer processor, and if said next instruction requests a memory access, then enabling said external interrupts and de-asserting the lock signal to unlock the requested address.
Claim 15
Dependent Claim
324 words
In a first computer processor connected through a bus to an external memory, a second processor, and an address locking means for locking an address, a method for executing a program including a series of instructions, said instructions including an interlocked operation defined by instructions between a lock instruction and an unlock instruction, said interlocked instructions including an instruction that accesses the external memory, said method comprising the steps of: (a) supplying the lock instruction from the program to the first computer processor; (b) executing the lock instruction in the first computer processor, including assigning a first value to a lock flag in the first computer processor and disabling external interrupts generated from sources external to the program, but not locking an address; (c) supplying the next instruction in the interlocked series of instructions to the first computer processor; (d) if in said step (c) said next instruction does not request a memory access and is not an unlock instruction, then executing said next instruction and repeating said step (c) to supply a next following instruction; (e) if in said step (c) said next instruction does request a memory access to a requested address, then asserting a lock signal from said first computer processor for locking the requested address such that the requested address can be accessed only by the task that requested the memory access, and then repeating said step (c) to supply a next following instruction; (f) if in said step (c) said next instruction is an unlock instruction, the executing said unlock instruction, including assigning a second value to the lock flag to indicate that unlocking has been requested, but not actually unlocking said requested address; and (g) following execution of the unlock instruction in the step (f), supplying a next instruction to the first computer processor, and if said next instruction requests a memory access, then enabling said external interrupts and de-asserting the lock signal to unlock the requested address.
Claim 16
Dependent Claim
87 words
The method of claim 13, further comprising a step (g) of: (g) if the step (c) is repeated more than N times following assigning a first value to the lock flag wherein N is a non-zero positive integer, and if a memory access has not been requested in step (e) so that no address has been locked, and if an unlock instruction has not been executed in the step (g), then a second value is assigned to the lock flag indicating that locking is no longer requested.
Claim 17
Dependent Claim
16 words
The method of claim 14, wherein N is in an approximate range between twenty-five and thirty-five.
Claim 18
Dependent Claim
60 words
The method of claim 14, further comprising a step (h) of: (h) if the step (c) is repeated more than N times following assigning a first value to the lock flag wherein N is a non-zero positive integer, and if a requested address has been locked in step (e) without unlocking in said step (g), then unlocking the requested address.
Claim 19
Dependent Claim
16 words
The method of claim 16, wherein N is in an approximate range between twenty-five and thirty-five.
Claim 20
Dependent Claim
122 words
The method of claim 13, wherein if a trap condition occurs following said step (b) but before unlocking the address, then the method further comprises the steps of: (h) assigning a second value to the lock flag to indicate that locking is not requested; (i) storing in a fault instruction register an address of the instruction that caused the trap condition; (j) clearing the lock signal so that the locked address is unlocked; (k) executing a trap handler routine that reads the address of the instruction that caused the trap condition and handles the trap condition; (l) scanning backward through the series of microinstructions to the lock instruction previously executed in said step (b), and (m) repeating said steps (b) through (f).
Claim 21
Dependent Claim
469 words
In a first computer processor connected through a bus to an external memory a second processor, and a address locking means for locking an address, a method for executing a program in the first computer processor, said program including a series of instructions said instructions including an interlocked operation defined by instructions between a lock instruction and an unlock instruction, said interlocked instructions including an instruction that accesses the external memory, said method comprising the steps of: (a) supplying the lock instruction from the program to the first computer processor; (b) executing the lock instruction in the first computer processor, including assigning a first value to a lock flag in a register in the first computer processor, and disabling external interrupts generated from sources external to the program, but not locking an address; (c) supplying the next instruction in the interlocked series of instructions to the first computer processor; (d) if in said step (c) said next instruction does not request a memory access and is not an unlock instruction, then executing said next instruction and repeating said step (c) to supply a next following instruction; (e) if in said step (c) said next instruction does request a memory access to a requested address, then asserting a lock signal from the first computer processor for locking the requested address such that the requested address can be accessed only by the task that requested the memory access, and then repeating said step (c) to supply a next following instruction; (f) if in said step (c) said next instruction is an unlock instruction, then performing the steps of: (f)(1) assigning a second value to the lock flag to indicate that unlocking has been requested, but not actually unlocking said requested address, and enabling said external interrupts, (f)(2) supplying and executing a next instruction in the series of instructions, (f)(3) if said next instruction does not request a memory access, then repeating said step (f)(2) to supply and execute a next following instruction, and (f)(4) if said next instruction requests a memory access, then deasserting the lock signal to unlock the requested address locked in the step (e); (g) if the step (c) is repeated more than N times following assigning a first value to the lock flag wherein N is a non-zero positive integer, and if a memory access has not been requested in step (e) so that no address has been locked, and if an unlock instruction has not been executed in the step (g), then repeating said sub-steps (f)(1)-(f)(4); and (h) if the step (c) is repeated more than N times following assigning a first value to the lock flag wherein N is a non-zero positive integer, and if a requested address has been locked in step (e) without unlocking in said step (f), then repeating said sub-steps (f)(1)-(f)(4).
Claim 22
Dependent Claim
469 words
In a first computer processor connected through a bus to an external memory a second processor, and a address locking means for locking an address, a method for executing a program in the first computer processor, said program including a series of instructions said instructions including an interlocked operation defined by instructions between a lock instruction and an unlock instruction, said interlocked instructions including an instruction that accesses the external memory, said method comprising the steps of: (a) supplying the lock instruction from the program to the first computer processor; (b) executing the lock instruction in the first computer processor, including assigning a first value to a lock flag in a register in the first computer processor, and disabling external interrupts generated from sources external to the program, but not locking an address; (c) supplying the next instruction in the interlocked series of instructions to the first computer processor; (d) if in said step (c) said next instruction does not request a memory access and is not an unlock instruction, then executing said next instruction and repeating said step (c) to supply a next following instruction; (e) if in said step (c) said next instruction does request a memory access to a requested address, then asserting a lock signal from the first computer processor for locking the requested address such that the requested address can be accessed only by the task that requested the memory access, and then repeating said step (c) to supply a next following instruction; (f) if in said step (c) said next instruction is an unlock instruction, then performing the steps of: (f)(1) assigning a second value to the lock flag to indicate that unlocking has been requested, but not actually unlocking said requested address, and enabling said external interrupts, (f)(2) supplying and executing a next instruction in the series of instructions, (f)(3) if said next instruction does not request a memory access, then repeating said step (f)(2) to supply and execute a next following instruction, and (f)(4) if said next instruction requests a memory access, then deasserting the lock signal to unlock the requested address locked in the step (e); (g) if the step (c) is repeated more than N times following assigning a first value to the lock flag wherein N is a non-zero positive integer, and if a memory access has not been requested in step (e) so that no address has been locked, and if an unlock instruction has not been executed in the step (g), then repeating said sub-steps (f)(1)-(f)(4); and (h) if the step (c) is repeated more than N times following assigning a first value to the lock flag wherein N is a non-zero positive integer, and if a requested address has been locked in step (e) without unlocking in said step (f), then repeating said sub-steps (f)(1)-(f)(4).
Claim 23
Dependent Claim
16 words
The method of claim 19, wherein N is in an approximate range between twenty-five and thirty-five.
Claim 24
Dependent Claim
122 words
The method of claim 19, wherein if a trap condition occurs following said step (b) but before unlocking the address, then the method further comprises the steps of: (i) assigning a second value to the lock flag to indicate that locking is not requested; (j) storing in a fault instruction register an address of the instruction that caused the trap condition; (k) clearing the lock signal so that the locked address is unlocked; (l) executing a trap handler routine that reads the address of the instruction that caused the trap condition and handles the trap condition; (m) scanning backward through the series of microinstructions to the lock instruction previously executed in said step (b), and (n) repeating said steps (b) through (g).
References Cited (Backward Citations)
US4488217A
Cited
US4435766A
Cited
US4587609A
Cited
US4663709A
Cited
US4665484A
Cited
US4733352A
Cited
US4725946A
Cited
US4975833A
Cited
US4937733A
Cited
US4941083A
Cited
US4949239A
Cited
US4858116A
Cited
US5140685A
Cited
US4979099A
Cited
US5175837A
Cited
US5027317A
Cited
US5095421A
Cited
US5063504A
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 1997-01-03 | 1997-07-05 | 1998-01-04 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2001-01-03 | 2001-07-05 | 2002-01-04 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2005-01-03 | 2005-07-05 | 2006-01-04 | $7700.00 | Window Closed / Lapsed |