US4574350A - Shared resource locking apparatus - Google Patents

Shared resource locking apparatus Download PDF

Info

Publication number
US4574350A
US4574350A US06/379,731 US37973182A US4574350A US 4574350 A US4574350 A US 4574350A US 37973182 A US37973182 A US 37973182A US 4574350 A US4574350 A US 4574350A
Authority
US
United States
Prior art keywords
resource
memory
devices
sending
lock
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
US06/379,731
Inventor
Daniel C. Starr
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Bell Labs
AT&T Corp
Original Assignee
AT&T Bell Laboratories Inc
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 AT&T Bell Laboratories Inc filed Critical AT&T Bell Laboratories Inc
Priority to US06/379,731 priority Critical patent/US4574350A/en
Assigned to BELL TELEPHONE LABORATORIES, INCORPORATED, 600 MOUNTAIN AVE ,MURRAY HILL, N.J. 07974, A CORP. OF N.Y. reassignment BELL TELEPHONE LABORATORIES, INCORPORATED, 600 MOUNTAIN AVE ,MURRAY HILL, N.J. 07974, A CORP. OF N.Y. ASSIGNMENT OF ASSIGNORS INTEREST. Assignors: STARR, DANIEL C.
Priority to ES522470A priority patent/ES8404072A1/en
Priority to EP83302813A priority patent/EP0094841A3/en
Priority to GB08313705A priority patent/GB2121218A/en
Priority to PCT/US1983/000749 priority patent/WO1983004117A1/en
Priority to EP83901879A priority patent/EP0110950A1/en
Application granted granted Critical
Publication of US4574350A publication Critical patent/US4574350A/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Definitions

  • This invention relates to the management of shared resources in program controlled systems, and in particular to mechanisms for controlling access to such shared resources.
  • a computer system may include one or more parts, such as processors, peripheral devices, device controllers, and memories, which are utilizable by other devices of the system as resources for the execution of system tasks.
  • a processor may utilize a memory section as a resource for storage of results or as a source of data and instructions; that processor may also utilize an input/output device as a resource for communicating with the outside world.
  • a direct memory access (DMA) controller may utilize a memory as a resource for storing data and a peripheral device as a resource for providing data
  • an I/O device may utilize a device controller as a resource for communicating with a processor or a memory.
  • DMA direct memory access
  • Simultaneous use by a plurality of devices of the same resource is likely to produce errors. For example, incorrect data will be obtained from memory, or the output of a printer will be garbled. It is therefore important that such systems have means for providing an indication to devices interested in using a resource of whether that resource is free and available for use as a resource, or whether it is presently busy, acting as a resource for some device of the system and therefore unavailable to act as a resource for other devices. It is also desirable to provide therewith means of preventing a device wishing to access and utilize a busy resource from doing so until the resource becomes freed by its owner, that is, its current user.
  • a software lock is a program-implemented scheme of providing a user with exclusive access to a shared resource.
  • Such software locks have commonly taken the form of semaphores, which are flags, such as register or memory word contents or flip/flop states, that indicate the busy/free states of an associated resource.
  • Semaphore program routines test the status of the flag, generally through a test-and-set type of instruction, and prevent a device desirous of becoming a resource user from accessing the desired resource while its associated flag indicates that it is being utilized by some other user.
  • the prior art locking mechanisms suffer from a number of disadvantages that generally flow from their software nature.
  • the locks commonly require a program which tests the busy/free status of the resource and either locks the free resource for use by the new user and unlocks the resource when the user no longer desires it, or makes a decision as to what to do next and then directs the device to the selected activity when the resource is busy.
  • the program may be of substantial length, and thus may occupy a significant portion of memory, particularly when numerous locks are used and the program must be replicated for each lock.
  • Avoidance of replication of the lock program by incorporating it into a subroutine may alleviate the above problem, but in turn creates a new one.
  • the subroutine calls and returns and associated trap-induced context switches during program execution take time and tie up resources, such as processors and memory, and thus adversely affect system efficiency.
  • the device wishing to use the resource must periodically recheck the status of the resource to determine when the resource becomes free. This not only requires additional program text to direct the device to recheck the resource status, but also ties up other resources, such as the bus between the device and the resource, which are utilized in performing the status check.
  • interrupt-based schemes While an interrupt may be utilized to inform the devices that a resource is free, and thus rechecking by the devices of the resource status may be avoided, interrupt-based schemes have the disadvantage that they interrupt not only all of the devices wishing to use the resource, but all other devices as well. This adversely affects system efficiency. Masking of the interrupts at devices not desiring access to the resource is not a satisfactory solution because of the software complexity which masking requires.
  • interrupt scheme for example, provision of a means for selecting a device and selectively masking the interrupt to all but the selected device adds further software and complexity to the scheme.
  • the present invention is directed to solving these and other disadvantages of the prior art locking schemes.
  • the invention provides a locking apparatus for program controlled systems which comprise a plurality of devices for accessing resources, and one or more resources coupled thereto for access by the plurality of devices, and wherein each of the devices has means for sending out either a memory READ command or a memory WRITE command and then for awaiting a response to the sent-out command before continuing operation.
  • a memory READ command or a memory WRITE command
  • each of the devices has means for sending out either a memory READ command or a memory WRITE command and then for awaiting a response to the sent-out command before continuing operation.
  • the locking apparatus for the shared resource comprises apparatus that is responsive to a request for access to a resource, made by a device by sending the memory command to the locking apparatus and then awaiting a response before accessing the resource, for determining whether the resource may currently be accessed by a device; apparatus for selecting for access to the resource a device requesting access to the resource, and means cooperative with the determining apparatus and the selecting apparatus and responsive to the request of the selected device when the determining apparatus indicates that the resource may be accessed, for sending to the selected device a response to grant the selected device access to the resource.
  • each of the devices has means for sending out both a memory READ command and a memory WRITE command, and uses the other of the two commands for signaling to the locking apparatus termination of access to a resource.
  • the determining apparatus responds to sending of the awaited response to the selected device by indicating that the resource may not be accessed, and responds to receipt of the accesstermination signaling command by indicating that the resource may be accessed.
  • the determining apparatus comprises apparatus for indicating the busy and free status of the resource; the indicating apparatus is responsive to the sending of the awaited response to indicate busy status, and is responsive to the receipt of the accesstermination signaling command to indicate free status.
  • the locking apparatus further includes means for preventing access to the resource by a requesting device when the determining apparatus indicates that the resource may not be accessed.
  • the locking apparatus may further include means for preventing a device from accessing the shared resource when the device is not in possession of the right to access the resource.
  • the locking apparatus may also include means for counting the number of accesses made by a device to the resource and for preventing further accesses when the count exceeds a predetermined limit.
  • the locking apparatus frees the rest of the system from having to run a software lock program, and thereby eliminates the overhead and tie-up of system resources associated with the running of such a program.
  • the device which is requesting access to a shared resource need only make a request for the resource and also preferably signal when it has terminated use of the resource, which functions can be accomplished with two instructions.
  • the locking apparatus itself performs the lock significantly faster than could a mere software lock with similar locking features.
  • the locking apparatus alleviates the system overhead associated with software locks.
  • the locking apparatus substantially eliminates the other disadvantages, enumerated above, that are associated with such software.
  • the requesting device awaits a response to its request for resource access, the waste of resources and overhead associated with either rechecking the status of a resource or implementing an interrupt to handle this function are avoided.
  • the locking apparatus can be easily retrofitted into existing program controlled systems.
  • equipping the locking apparatus with the feature for denying access to devices not in possession of access grant to the shared resource insures that unauthorized accesses to the resource, which defeat the function of the lock, will be prevented.
  • FIG. 1 is a block diagram of a portion of a programmable system which includes an embodiment of the present invention
  • FIG. 2 is a block diagram of the lock unit of FIG. 1;
  • FIG. 3 is a logic diagram of the lock processor of FIG. 2;
  • FIG. 4 is a logic diagram of the address decoder of FIG. 3;
  • FIG. 5 is a state diagram of the control circuit of FIG. 3;
  • FIG. 6 is a logic diagram of the bounds registers unit of FIG. 2;
  • FIG. 7 is a logic diagram of the write counters unit of FIG. 2.
  • This example illustrates the application of a locking unit constructed according to the present invention to controlling processor access to a shared memory in a multiprocessor environment.
  • FIG. 1 there is shown a portion of a multiprocessor system 20 which will serve to illustrate the principles of the invention. Shown is a portion of the system bus 21 to which are interfaced two processors 22, 23, a shared memory 29, and a lock unit 27.
  • the system bus 21 may extend beyond the figure, and other devices, for example I/O units, communication link adapters, a bus controller, and other processors, memories, and lock units may be connected thereto.
  • the various portions of the system 20 cooperate in performing system tasks.
  • the processors 22, and 23 perform computational tasks, obtaining their data and instructions from, and storing results in, the memory 29 which they share.
  • the memory 29 is used as a shared resource by the processors 22, 23.
  • the lock unit 27 is associated with the shared memory 29 and controls access to the memory 29 by the processors 22, 23, placing limits on the concurrent use of the memory 29 by the two processors 22, 23.
  • the lock unit 27 assures that while one of the processor 22, 23 is accessing a designated portion or portions of the shared memory 29, it has exclusive use of that portion of memory 29.
  • the lock unit 27 locks the other processor 22, 23 out from accessing that designated portion of the memory 29 and forces it to wait for access until the currently accessing processor 22, 23 gives up possession of that memory portion.
  • SBI system bus interfaces
  • the processors 22, 23 are interfaced by the SBIs 24, 25, respectively, while the shared memory 29 and the lock unit 27 are both interfaced by the SBI 26.
  • the shared memory 29 is connected to the SBI 26 through a shared memory interface (SMI) 28. Communications between the SBI 26 and SMI 28 proceed over an internal bus 32 which is also tapped by the lock unit 27. Additionally, the lock unit 27 has a connection to the SMI 28 via a signal bus 31.
  • SMI shared memory interface
  • the processors 22 and 23, the shared memory 29, the SBIs 24, 25, and 26, the SMI 28, and the system bus 21 may be any suitable units such as are conventionally available in commerce. The particular structure of these various units will depend upon the organization and characteristics of the system 20; these factors are not of significance to this invention.
  • the internal bus 32 is comprised of a plurality of links dedicated to functions such as are commonly available on interface units.
  • the internal bus 32 includes an address bus 60, a data bus 61, a read command line 62, a write command line 63, a processor identification (ID) bus 64, an alarm line 65, and a return value line 66.
  • ID processor identification
  • the lock unit 27 is connected to the various links of the internal bus 32.
  • the lock unit 27 includes a lock processor 33 which is responsible for monitoring the activity on the bus 32, for performing the locking and unlocking operations on the shared memory 29 in response to commands observed on the bus 32, and for performing the various tasks of administering the lock unit 27.
  • the lock unit 27 includes a bounds registers unit 35 and a write counters unit 36.
  • the bounds registers unit 35 prevents accesses to a locked portion of memory 29 by a processor 22, 23 not currently in possession of the right to access that portion, i.e., any processor 22, 23 not currently designated by the lock unit 27 as the owner of that resource, thus ensuring that the lock cannot be bypassed and defeated.
  • the write counters unit 36 keeps count of the number of writes that a processor 22, 23 performs on a resource during a single grant of access and raises an alarm when that number exceeds a predetermined limit, thus protecting the resource from an "insane" processor.
  • the latter two units 35, 36 may be made optional, as indicated in FIG. 2, in that they enhance the operation of the lock unit 27, but the basic lock function can be performed by the lock unit 27 without them. Operation of the units 35 and 36 becomes significant during processor accesses to the locked resource, but not during the operations of locking and unlocking the resource.
  • the lock registers unit 34 of the lock unit 27 is a writable memory. It may, for example, be comprised of conventional storage registers, or any other random access memory. Each portion of the shared memory 29 that is to be treated within the system 20 as a separate resource has a lock register 71 of the lock registers until 34 associated therewith. Thus the shared memory 29 may be comprised of as many portions, or resources, as there are lock registers 71 in the lock registers unit 34.
  • a first field of a lock register 71 referred to as the owner field 69, is used to store the binary-encoded ID of the processor 22, 23 which is currently the owner of the portion of memory associated with that register 71.
  • a second field of the lock register 71 is used to identify all processors currently requesting access to the associated memory portion.
  • Each bit of the field 70 represents a particular processor, and the binary value of the bit indicates whether the represented processor is or is not requesting access.
  • each field 69, 70 is 16 bits wide: hence the bit map field 70 can represent up to 16 processors.
  • Information on the owner and the requesting processors is written into and read out of the lock registers unit 34 under the control of the lock processor 33 which is connected for this purpose to the unit 34 by a read line 89, a write line 67, a data bus 68, and an address bus 88.
  • each lock register 71 Associated with each lock register 71, and hence with each resource in the shared memory 29, is a trio of registers 72-74 in the bounds registers unit 35.
  • the register 72 is used to store an address which represents the upper bound of the resource, while the register 73 is used to store an address which represents the lower bound of the resource.
  • the third register also referred to as the owner register 74, is used to store the ID of the processor 22, 23 which is the current owner of the associated resource.
  • the bounds registers unit 35 is also any suitable writable memory. It is directly connected to, and monitors activities on, the address bus 60, the data bus 61, the read line 62, and the write line 63 of the internal bus 32.
  • the unit 35 has CLEAR OWNER and SET OWNER input lines connecting it to the lock processor 33, and a LOCK NO. bus and an OWNER FOUND output line connecting it to the write counters unit 36. Additionally, the bounds registers unit 35 has OWNER NOT FOUND and WRONG OWNER output lines connecting it to the SMI 28. These two lines comprise the signal bus 31. The function of these lines is discussed further below. Further details of the bounds registers unit 35 are also described later herein, in reference to FIG. 6.
  • a register 75 in the write counters unit 36 is also associated with each lock register 71, and hence with each resource in the shared memory 29,.
  • the register 75 is subdivided into two fields 76, 77.
  • the field 76 is used to hold the count of the number of writes that the current owner processor has performed on the associated resource during its current access of the resource.
  • the field 77 holds the limit value, which is the maximum number of write accesses allowed an owner to that resource in one access.
  • the write counters unit 36 is once again any suitable writable memory.
  • the bounds registers unit 35 Aside from the inputs from the bounds registers unit 35, it also has a RESET COUNT control input from the lock processor 33 and is connected to the address bus 60, the data bus 61, the read line 62, the write line 63, and the alarm line 65 of the internal bus 32.
  • the write counters units 36 is discussed in further detail in conjunction with FIG. 7.
  • Each set of registers 71-75 associated with a single resource has a common base address. Only the offset, comprising the least significant 3 bits of the address of the registers 71-75 varies. The offsets 000-010 are assigned to the registers 71-75, respectively.
  • the addresses of the various sets of registers 71-75 are mapped into the address space reserved for memory in the system 20.
  • the sets of registers 71-75 have consecutive base addresses, so that the most significant bits of the base addresses represent the address of the lock unit 27 as a whole.
  • each set of registers 71-75 represents a lock, and from the viewpoint of a processor 22,23 each lock is a set of addresses having a common base address in the units 34-36.
  • a register referred to as a processor register 55, has its inputs connected to the processor ID bus 64 of the internal bus 32 (see FIG. 2) and temporarily holds processor ID information that passes over the bus 64.
  • Outputs of the processor register 55 are connected to a first set of two sets of inputs of a selector 59, to a first set A of inputs of a comparator 58, and to a first set of three sets of inputs of a selector 56.
  • the outputs of the selector 56 are connected to a register, referred to as an owner register 57, which is utilized for temporarily holding the ID of the processor 22, 23 which is the current owner of a selected resource.
  • the contents of the owner register 57 may be reset to zero by a control circuit 38 acting over a RESET OWNER control input line.
  • the outputs of the owner register 57 are connected to the processor ID bus 64, to the second set of inputs of the selector 59, to inputs of a "find first one" circuit 161, to the most significant bit lines of a bidirectional data bus 83, and to a second set B of inputs of the comparator 58.
  • Outputs of the comparator 58 are input to the control circuit 38; the first output is indicative of the two sets of inputs A and B of the comparator 58 being equal, and the second output is indicative of the input B from the owner register 57 being null.
  • the outputs of the selector 59 are connected to inputs of a set/reset bit circuit 119.
  • the circuit 119 translates the processor ID input from the selector 59 into the bit position which corresponds to that processor in the bit map field 70 of the lock registers 71 (see FIG. 2) discussed above.
  • the circuit 119 has outputs each connected to a corresponding bit in a bit map register 160.
  • the set/reset bit circuit 119 sets or resets the bit in the bit map register 160 which corresponds to the identified processor.
  • the "find first one" circuit 161 has a set of inputs each connected to a corresponding bit in the bit map register 160. Through these inputs the circuit 161 monitors the bit values of the bit map register 160. The circuit 161 is also connected for input to the output of the owner register 57 from which it obtains the processor ID of the owner of a selected resource. The circuit 161 translates the processor ID into the bit position corresponding to that processor in the bit map register 160. It then examines the status of the bit values of the bit map register 160, searching for the first bit value of 1 appearing to one side (i.e., searching either clockwise or counterclockwise) of the bit position obtained by translation from the input of the register 57.
  • the circuit 161 Upon finding that first bit position set to one, the circuit 161 translates that bit position into the processor ID which corresponds to that position, and outputs this ID to a second set of inputs of the selector 56. If the circuit 161 finds no bit position in the register 160 except for the starting position set to one, it outputs a signal so indicating to the control circuit 38 over a MAP NULL line.
  • the bit map register 160 is connected for input and output to the least significant bit lines of the data bus 83. As was mentioned above, the most significant bit lines of the bus 83 are connected to the outputs of the owner register 57; these most significant bit lines are also connected to a third set of inputs of the selector 56 for loading the owner register 57.
  • the circuits 119 and 161 may be conventional logic arrays.
  • the register 160 may be a conventional register, in this example 16 bits wide to correspond to the assumed 16 bit width of the bit map field 70 of the registers 71 of the lock registers unit 34.
  • an address decoder 37 has connections to the read line 62, the write line 63, the data bus 61, and the address bus 60 of the internal bus 32.
  • the decoder 37 connects to the control circuit 38 via a read line 81, a write line 82, an LM read line 84, and an LM write line 85.
  • the data bus 83 connects the decoder 37 to other circuits in the lock processor 33, as was explained above.
  • the decoder 37 also has connections to the lock registers unit 34 via a read line 89, a write line 67, a data bus 68, and an address bus 88.
  • the decoder 37 selectively interconnects the internal bus 32, the lock registers unit 34, and the lock processor 33 internals.
  • the address decoder 37 is essentially a switch whose position is controlled by the addresses appearing on the address bus 60.
  • FIG. 4 diagrams the structure of the address decoder 37.
  • the decoder 37 includes a comparator 105 whose first set of inputs is connected to the high order bits of the address bus 60, and whose second set of inputs is set to the address of the lock unit 27.
  • the comparator 105 When the first set of inputs to the comparator 105 equals the second set of inputs, indicating that the lock unit 27 has been addressed over the bus 60, the comparator 105 generates an ENABLE signal over an input line to multiplexers 102 and 106, and to an AND gate 103.
  • Mid-order bits of the address bus 60 which represent the remainder of the base address of a lock, i.e., of a set of registers 71-75, in the lock unit 27 are connected directly to the high order bits of the address bus 88 leading to the lock registers unit 34.
  • the low order three bits of the bus 88 are tied to ground to generate the 000 base address offset representing the address of a lock register 71 in a set of registers 71-75.
  • the low order three bits of the address bus 60 are connected to inputs of an AND gate 104 and to inverted inputs of the AND gate 103.
  • the output of the gate 104 forms a SELECT control input to the multiplexers 102 and 106.
  • the output of the gate 103 forms an ENABLE control input to a tri-state gate 101.
  • the tri-state gate 101 has one port connected to the data bus 61 and a second port connected to a first port of the multiplexer 102.
  • the gate 101 enables or disables flow of data from the multiplexer 102 to the data bus 61 in response to the ENABLE input from the AND gate 103. However, the gate 101 has no effect on the flow of data from the data bus 61 to the multiplexer 102.
  • Such tristate gates are well known in the art.
  • the multiplexer 102 has a second port connected to the lock processor data bus 83 and a third port connected to the data bus 68 of the lock registers unit 34. In response to is SELECT control input, the multiplexer 102 connects its third port with either its first port or its second port.
  • the multiplexer 106 has input A of first port and input C of a second port connected to the read line 62 of the internal bus 32.
  • the write line 63 of the internal bus 32 is connected to input B of the first port and input D of the second port of the multiplexer 106.
  • Inputs C and D of the first port are tied to ground, and inputs A and B of the second port are connected to the LM read line 84 and the LM write line 85, respectively, from the control circuit 38.
  • a third port of the multiplexer 106 has its outputs A-D connected to the read line 89 and the write line 67 of the lock registers unit 34, and to the read line 81 and write line 82 of the control circuit 38, respectively.
  • the multiplexer 106 responds to its SELECT control input to connect its third port with either its first port or its second port.
  • the tri-state gate 101 and the multiplexer 102 and 106 maintain their various ports disconnected from each other and thus prevent data and signals, except on the address bus 88, from passing through the address decoder 37.
  • the comparator 105 recognizes this and generates the ENABLE signal which allows the tri-state gate 101 and the multiplexers 102 and 106 to respond to the state of the three low order bits of the address bus 60.
  • the output of the gate 103 is high and the output of the gate 104 is low.
  • the tri-state gate 101 allows data to pass from the multiplexer 102 to the data bus 61.
  • the multiplexer 102 connects its first port with its third port, thus connecting the second port of tristate gate 101 with the data bus 68.
  • the multiplexer 106 responds to the low output of the gate 104 by also connecting its first port with its third port, thus connecting the read and write lines 62 and 63 with the read and write lines 89 and 67, respectively.
  • a connection is established between the internal bus 32 and the lock registers unit 34.
  • the output of the gate 104 is low and therefore the states of the multiplexers 102 and 106 do not change from that just described. However, in such cases the output of the gate 103 is low, and the tri-state gate blocks flow of data from the multiplexer 102 to the data bus 61. Thus the connection between the internal bus 32 and the lock registers unit 34 is unidirectional only, from the bus 32 to the unit 34.
  • the output of the gate 104 is high, and the multiplexers 102 and 106 connect their third port with their second port, thereby connecting the data bus 83 with the data bus 68, the LM read and LM write lines 84 and 95 with the read and write lines 89 and 67, respectively, and the read and write lines 62 and 63 with the read and write lines 81 and 82, respectively.
  • a data and signaling connection is made between the lock processor 33 internals and the lock registers unit 34, with an additional connection of the control circuit 38 to the read and write lines 62 and 63 of the internal bus 32.
  • control circuit 38 has outputs connected to the return value line 66 and the alarm line 65 of the internal bus 32, to the CLEAR OWNER and SET OWNER lines leading to the bounds registers unit 35, and to the RESET COUNT line leading to the write counters unit 36.
  • the control circuit 38 is a logic array defined by the state diagram of FIG. 5. The diagram of FIG. 5 will be explained in conjunction with the operational description of the lock unit 27 given below.
  • Initialization of the lock unit 27 is performed by one or more of the processors 22, 23 of the system 20.
  • That task is assigned to the processor which will have been designated as the system 20 maintenance processor, for example the processor 22.
  • the processor 22 is supplied with bounds addresses of one or more portions of the shared memory 29 that will function as lockable resources. This information will have been developed in any appropriate manner, for example by a compiler at compile time or by the operating system during system operation.
  • suitable means such as a list stored in the shared memory 29 the processor 22 selects an available lock and dedicates it to a resource, writing appropriate initial values into the selected lock.
  • This means may be a table stored in the shared memory 29, which lists the locks, their available or dedicated status, and the identification of the resources with which the dedicated locks are associated.
  • the initial values of a lock's registers 71-75 are the following: a null value for the owner field 69 of the lock register 71 to indicate that no processor is currently an owner of the resource; an idle value comprising all zeros for the bit map field 70 of the lock register 71 to indicate that no processors are currently waiting to use the resource; the address of the upper bound of the resource for the upper bound register 72; the address of the lower bound of the resource for the lower bound register 73; a null value for the owner register 74, as for the register 71; and a value representative of the number of writes to be allowed to the resource between any lock and unlock operation--the limit value--for the register 75.
  • the initial value for the register 75 is such that the limit number is written into both fields 76 and 77 of the register 75.
  • the registers 71-75 which comprise a single lock have a common base address and only differ in the base offset, which are the three least significant bits of the complete address. Therefore the processor 22 writes each register 71-75 of a lock separately.
  • the processor 22 outputs onto the system bus 21 (see FIG. 1), its ID, the address of a register, the data to be written into the register, and a memory write command.
  • the SBI 26 detects the address on the system bus 21 and places the information from the system bus 21 onto the internal bus 32, sending the address of the register onto the address bus 60, the register data onto the data bus 61, the processor ID onto the processor ID bus 64, and a write signal onto the write line 63 (see FIG. 2).
  • the address decoder 37 of the lock unit 27 responds to the address of the selected register 71 and establishes connections between the internal bus 32 and the lock registers unit 34.
  • the signals on the data bus 61 and the write line 63 pass to the unit 34 on the data bus 68 and the write line 67, while the address of the selected register 71 passes to the unit 34 from the address bus 60 via the address bus 88.
  • the unit 34 responds by writing the addressed lock register 71 with the initial values of the owner and bit map fields 69 and 70, respectively.
  • the bounds registers unit 35 responds to the addresses of the registers 72-74 and writes the initial values into the addressed registers.
  • the write counters unit 36 responds to the address of the register 75 and writes the initial value into the addressed register 75.
  • the registers of a lock respond in the same manner as storage locations of memory, such as the shared memory 29, respond within the system 20.
  • the processor 22 may initialize another lock for another resource.
  • the control circuit 38 of the lock processor 33 of the lock unit 27 is in the ready state 0 (see FIG. 5).
  • a processor 22, 23 executes a lock operation on a resource by attempting to read from word 7 of the lock of that resource. For example, assuming that it is processor 23 which wishes to lock a selected resource and thereby to become its exclusive owner, the processor 23 sends out on the system bus 21 (see FIG. 1) its ID, a read command, and an address comprising the base address of the resource's lock plus an offset of seven.
  • the "wait for slow memory feature" of the processor is utilized, and the processor 23 goes into a wait state upon issuing the read request. It remains in the wait state until a value is returned to it from the lock unit 27 in response to the read request.
  • the SBI 26 detects the address on the system bus 21 and places the information therefrom onto the internal bus 32, sending the address onto the address bus 60, the processor ID onto the processor ID bus 64, and a read signal onto the read line 62 (see FIG. 2).
  • each lock has only four registers 71-75 with base address offsets of 0-4, respectively, the base address offset of 7 does not match any of the registers 71-75 directly, so none of them respond.
  • the address decoder 37 responds to the address and connects the lock registers unit 34 with the control circuit 38 and other lock processor 33 internals. That is, the decoder 37 connects the two data buses 68 and 83, the LM read line 84 and the read line 89, and the LM write line 85 and the write line 67. The decoder 37 also connects the two read lines 62 and 81, and the two write lines 63 and 82. As shown in FIG. 5, the control circuit 38 responds to the read signal on the line 81 by asserting the LM read line 84 and making the transition from state 0 to state 1.
  • the lock registers unit 34 responds to the LM read signal on the read line 89 by outputting onto the data bus 68 the contents of the register 71 which is addressed by the base address present on the address bus 88.
  • the control circuit 38 loads the contents of the owner field 69 of the register 71 from the data bus 83 into the owner register 57 through the selector 56, and loads the contents of the bit map field 70 of the register 71 from the data bus 83 into the bit map register 160.
  • the control circuit 38 also gates the ID of the requesting processor 23 from the processor ID bus 64 into the processor register 55, and sets the selector 59 to gate the contents of the processor register 55 to the set/reset bit circuit 119. When these actions are completed the control circuit 38 goes to state 2, as shown in FIG. 5.
  • control circuit 38 causes the comparator 58 to determine whether the contents of the processor register 55 and the owner register 57 are the same, or whether the contents of the owner register 57 are null, and to signal the result of the comparison to the control circuit 38 over the appropriate signaling line.
  • the contents of the registers 55 and 57 being equal means that the requesting processor 23 is already the owner of the associated resource and that it is trying to lock the resource it already owns.
  • the control circuit 38 responds to this condition by going to state 3, as shown in FIG. 5, and asserting the alarm line 65 to signal an invalid lock attempt.
  • the system 20 may respond to the raising of the alarm in any desired manner, such as with an interrupt.
  • failure of the comparator 58 to return a signal to the control circuit 38 indicates that the requested resource has an owner and is currently busy, locked by that owner, and therefore inaccessible to the processor 23.
  • the control circuit 38 responds to this condition by going to state 6 (see FIG. 5) to cause the selector 59 to gate the contents of the processor register 55 into the set/reset bit circuit 119 and to and assert the SET BIT line to the set/reset bit circuit 119. This causes the circuit 119 to set the bit in the bit map register 160 which corresponds to the requesting processor 23 and thus to indicate that the processor 23 is waiting to use the associated resource.
  • the contents of the owner register 57 being null indicate that the associated resource has no current owner and is unlocked, free to be locked and utilized by the requesting processor 23.
  • the control circuit 38 responds to this condition by going to state 4 (see FIG. 5), causing the selector 56 to gate the contents of the processor register 55 into the owner register 57 and making the processor 23 the owner of the resource.
  • the control circuit 38 then goes to state 5 and asserts the return value line 66 of the internal bus 32 to cause the SBI 26 to return a value to the requesting processor 23.
  • This processor is still identified to the SBI 26 as the processor 23 by its ID on the processor ID bus 64.
  • the SBI 26 responds by sending over the system bus 21 to the processor 23 whatever value is present on the data bus 61 of the internal bus 32. The value sent is irrelevant, as its purpose is merely to indicate to the processor 23 that it has been given control of the requested resource.
  • the processor 23 Upon receiving the value from the lock unit 27 in response to the read request, the processor 23 leaves the wait state and continues with its operation, accessing the locked resource as its exclusion owner.
  • the control circuit 38 also asserts the SET OWNER line to the bounds registers unit 35 and the RESET COUNT line to the write counters unit 36.
  • the SET OWNER line forms a control input to all of the owner registers 74.
  • the SET OWNER signal causes the owner register 74 which is selected by the base address on the address bus 60 to be loaded with the processor ID appearing on the processor ID bus 64, which in this case is the ID of the new owner processor 23.
  • the ID of the owner processor becomes associated with the identifying information--the upper and lower bounds--of the owned resource.
  • the RESET COUNT line forms a load (LD) control input to all of the registers 75.
  • the RESET COUNT signal causes the count field 76 of the register 75 which is selected by the base address on the address bus 60 to be loaded with the contents of that register's limit field 77, over a link which connects the output of the limit field portion of the register 75 to the input of the count field portion of the register 75.
  • the write count of the newly locked resource becomes reinitialized.
  • the control circuit 38 makes a transition to state 15, asserts the LM write line 85 (see FIG. 3) to the lock registers unit 34, and causes the contents of the owner register 57 and of the bit map register 160 to be output onto the data bus 83.
  • the lock registers unit 34 responds to the write signal on the write line 67 by loading the resource's lock register 71 with the information received over the data bus 68.
  • the control circuit 38 then returns to its initial idle ready state 0 and the lock unit 27 is ready for its next transaction.
  • the processor 23 When the processor 23 no longer requires current access to the locked resource, it unlocks the resource and thereby frees it for use by another processor.
  • the processor 23 executes an unlock operation on the resource by attempting to write into word 7 of the lock of that resource.
  • the processor 23 sends onto the system bus 21 (see FIG. 1) its ID, a write command, and an address comprising the base address of the resource's lock plus on offset of seven.
  • the SBI 26 detects the address on the system bus 21 and places information from the bus 21 on the internal bus 32.
  • the base address offset of 7 does not match any of the registers 71-75 directly, so none of them respond.
  • the address decoder 37 again responds to the address and connects the lock registers unit 34 and the read and write lines 62 and 63 to the lock processor 33 internals.
  • the control circuit 38 responds to the write signal on the line 82 by making the transition from state 0 to state 7 and asserting the LM read line 84 to the lock registers unit 34.
  • the lock registers unit 34 responds to the read signal on the line 81 by sending out on the data bus 68 the contents of the lock register 71 addressed by the base address present on the address bus 88.
  • the control circuit 38 then loads the contents of the owner field 69 of the register 71 from the data bus 83 into the owner register 57 through the selector 56, and loads the contents of the bit map field 70 of the register 71 from the data bus 83 into the bit map register 160.
  • control circuit 38 also gates the ID of the requesting processor 23 from the processor ID bus 64 into the processor register 55, and sets the selector 59 to gate the contents of the owner register 57 to the set/reset bit circuit 119. When these actions are completed, the control circuit goes to state 8.
  • the control circuit 38 causes the comparator 58 to determine whether the contents of the processor register 55 are the same as the contents of the owner register 57. Non-equality of these contents indicates that the requesting processor 23 is not the current owner of the resource and, therefore, does not have the right to unlock that resource.
  • the control circuit 38 responds to this condition by going to state 9, as shown in FIG. 5, and asserting the alarm line 65 of the internal bus 32 to signal on invalid lock attempt.
  • the system 20 may respond to the raising of the alarm in any desired manner, such as an interrupt.
  • the contents of the register 55 and 57 being equal indicates that the requesting processor 23 is the current owner of the resource and, therefore, is properly unlocking that resource.
  • the control circuit 38 responds to this condition by going to state 10.
  • state 10 the control circuit 38 causes the selector 59 to gate the contents of the owner register 57 into the set/reset bit circuit 119 and asserts the RESET BIT line to the set/reset bit circuit 119.
  • the circuit 119 responds by clearing the bit in the bit map register 160 which corresponds to the owner processor 23, to indicate that the processor 23 is not waiting to use the associated resource.
  • the control circuit 38 causes the contents of the bit map register 160 of the owner register 57 to be applied to the inputs of the "find first one" circuit 161 and activates the circuit 161.
  • the circuit 161 selects the next waiting processor to receive access to the resource, by performing a rotating right search for a set bit in the bit map, starting at the bit of the previous owner processor 23, which is identified by the contents of the owner register 57. If no set bit is found by the circuit 161, that is, there are no processors waiting to use the resource and therefore all the bits in the bit map are zero, the circuit 161 asserts the MAP NULL line to the control circuit 38. In any case, the control circuit 38 waits for the circuit 161 to settle, and when the "find first one" circuit 161 has settled, the control circuit 38 assumes state 11.
  • the control circuit 38 makes a transition from the state 11 to state 13 and asserts the RESET COUNT line to the write counters unit 36, the CLEAR OWNER line to the bounds registers unit 35, and the RESET OWNER line to the owner register 57.
  • the effect of the RESET COUNT signal at the write counters unit 36 has been described above.
  • the CLEAR OWNER line forms a control input to all of the owner registers 74.
  • the CLEAR OWNER signal causes the owner register 74 identified by the base address on the address bus 60 to be cleared, loaded with all zeros, to indicate that the associated resource is unlocked and free to be locked by a processor.
  • the effect of the RESET OWNER signal on the owner register 57 (see FIG. 3) is to cause the contents of the register 57 to be reset to all zeros.
  • the control circuit 38 goes to state 14, where it outputs the contents of the owner register 57 and the bit map register 160 onto the data bus 83 and asserts the LM WRITE line to the lock registers unit 34.
  • the lock registers unit 34 responds to the LM WRITE signal by loading the data sent to it by the control circuit 38 from the data bus 68 into the lock register 71 identified by the base address on the address bus 60. In the case of the transition from the state 9, this has the effect of restoring to the lock register 71 contents which it had before the unauthorized unlock operation was attempted by the processor 23. Hence, if at that time the associated resource was locked by a processor, it remains locked to that processor. In the case of the transition from the state 13, however, the effect is to load the lock register 71 with all zeros and thereby to unlock the associated resource.
  • control circuit 38 returns to its idle ready state 0.
  • control circuit 38 makes a transition from the state 11 to state 12 and causes the selector 56 to gate the output of the "find first one" circuit 161 into the owner register 57.
  • the output of the circuit 161 is the ID of the processor selected by the circuit 161 to be the new owner of the resource under consideration.
  • control circuit 38 also causes the contents of the owner register 57 to be output onto the processor ID bus 64 to replace thereon the ID of the former owner processor 23.
  • the control circuit 38 makes a transition to the state 5 of the lock operation, to cause the resource to become properly locked to its new owner. During this lock operation, the control circuit 38 progresses through the states 5 and 15 back to state 0, in the manner described above for the lock operation.
  • a processor requesting to read from or to write into that memory address will be granted permission to do so only if it has previously locked the resource containing the address and is its current owner. If a memory address lies within a portion of the shared memory that is not lockable, the address is treated as a shared read-only resource, and any processor can read it at any time, but a processor is generally not allowed to write that address.
  • a memory read or a memory write operation begins with the receipt by the SBI 26 of a memory read request or a memory write request, respectively, from a processor, for example the processor 22.
  • the address appearing on the address bus 60 of the internal bus 32 is that of a location in the shared memory 29 and not that of any word within the lock unit 27. Therefore, the lock access circuitry described above in conjunction with the initialization, lock, and unlock processes is not utilized, and the lock processor 33 remains idle.
  • the shared memory address arrives at the bounds registers unit 35 on the address bus 60 and the ID of the requesting processor 22 arrives at the unit 35 on the processor ID bus 64.
  • Each set of registers 72-74 in the bounds registers unit 35 has a ratio of comparators 44, 45, 46 associated therewith.
  • the memory address enters all comparators 44 and 45 along one set of each of their inputs and the processor ID enters all comparators 46 along one set of each of their inputs.
  • a second set of inputs of each comparator 44 is connected to the associated upper bound register 72
  • a second set of inputs of each comparator 45 is connected to the associated lower bound register 73
  • a second set of inputs of each comparator 46 is connected to the associated owner register 74.
  • the memory address is compared with the upper address bound in the comparator 44 and with the lower address bound in the comparator 45, while the processor ID from the bus 64 is compared with the ID of the owner processor in the comparator 46.
  • a comparator 44 finds that the upper bound is greater than or equal to the memory address, it sets its output high. Similarly, if a comparator 45 finds that the lower bound is less than or equal to the memory address, it sets its output high, and if a comparator 46 finds the two processor IDs being input to it to be the same, it sets its output high.
  • each pair of comparators 44 and 45 are connected to the inputs of an associated AND gate 98.
  • the output of the AND gate 48 goes high when the memory address lies within the upper and lower bounds of the associated resource.
  • the outputs of all of the AND gates 48 are connected to inputs of an encoder circuit 50.
  • the circuit 50 asserts an OWNER NOT FOUND line to the SMI 28 (see FIG. 2).
  • the circuit 50 asserts an OWNER FOUND line to the write counters unit 36 and outputs the base address corresponding to the lock, or set of registers 72-74, whose AND gate 48 has a high output, on a LOCK NO. bus to the write counters unit 36. If more than one AND gate 48 has a high output, the encoder selects one of them for purposes of generating the lock number.
  • each of a pair of comparators 44,45 are also connected to the inputs of an associated AND gate 47.
  • An inverted input of each AND gate 47 is connected to the output of the corresponding comparator 46.
  • the outputs of all of the AND gates 47 are connected to inputs of an OR gate 49, whose output connects to a WRONG OWNER line leading to the SMI 28.
  • the WRONG OWNER line is asserted any time a processor tries to access a lockable resource of which it is not the current owner.
  • the LOCK NO. bus and the OWNER FOUND line from the bounds registers unit 35 are connected to circuitry at each register 75.
  • the circuitry is identical at each register 75 only the circuitry of a single register 75 is shown in FIG. 6 and explained here.
  • the OWNER FOUND line is connected to the select (SEL) input of a multiplexer 51.
  • the LOCK NO. bus is connected to a first input port of the multiplexer 51, while the second port is connected to the address bus 60 of the internal bus 32.
  • the output of the multiplexer 51 forms the address input to the register 75.
  • the multiplexer 51 connects the address bus 60 input to its output when its SEL control input is low, and connects its LOCK NO. bus input to its output when the SEL control input is high. Thus at times when the LOCK NO.
  • the write counters unit 36 takes addresses from the address bus 60. Only during a shared memory 29 access operation when the bounds registers unit 35 asserts the OWNER FOUND line does the write counters unit 36 take addresses from the LOCK NO. bus.
  • the OWNER FOUND line is also connected to an input of an AND gate 53 and to an inverted input of an AND gate 52.
  • the write line 63 forms a second input to the gates 53 and 52.
  • the output of the gate 52 forms a WRITE command input to the register 75, while the output of the gate 52 is connected to a decrement (DEC) control input of the register 75.
  • DEC decrement
  • the write counters unit 36 records only write accesses to shared resources and ignores read accesses to shared resources.
  • an overflow signal is output by the register 75 onto an OVERFLOW line.
  • the OVERFLOW lines of all registers 75 form inputs to an OR gate 54, whose output is connected to the alarm line 65 of the internal bus 32.
  • the alarm line 65 goes high also.
  • the system 20 may react to the raising of the alarm in any appropriate manner, for example with an interrupt.
  • the SMI 28 ignores the OWNER NOT FOUND line. It allows the memory read transaction to occur if the WRONG OWNER line has not been asserted, and raises the alarm line 65 of the internal bus 32 if the WRONG OWNER line has been asserted by the bounds registers unit 35. However, during a shared memory write operation, the SMI 28 responds to the states of both lines of the signal bus 31, and raises the alarm line 65 if either line of the bus 31 has been asserted, allowing the memory write transaction only if neither line of the bus 31 has been asserted.
  • the lock unit may be interfaced to the system bus by its own dedicated system bus interface.
  • the lock unit can be implemented as a part of the shared memory controller.
  • the lock unit may utilize some other arbitration scheme, for example a first-come first-served scheme, or a prioritized scheme.
  • the lock unit may also include a deadlock detection and recovery mechanism, for example a sanity timer that limits the time for which an owner processor can keep control of a locked resource.
  • a deadlock detection and recovery mechanism for example a sanity timer that limits the time for which an owner processor can keep control of a locked resource.
  • two lock units may be operated in parallel and their results compared on each transaction.
  • the lock unit may return a predetermined value to a representing processor as a response to its request to access a resource.
  • the system may be adapted to prevent preemption of a process while its associated processor owns a resource, to eliminate delays for other processors waiting for the resource.

Abstract

Disclosed is a hardware lock unit for limiting concurrent use of shared resources, such as segments of a memory, by a plurality of devices, such as processors, in a program controlled system. In such a system, devices wishing to use a shared resource make a use request to the lock unit by means of a memory READ command accompanied by an address that is associated in the lock unit with that resource, which each requesting device sends to the lock unit. The requesting devices then wait for an answer, as from a slow memory. The hardware lock unit determines whether the resource is free for access by a device, or whether the resource is busy being accessed by a device. When the resource is busy, the requesting devices are caused to wait. When the resource becomes free, the lock unit hardware selects one of the requesting devices and responds to its request to grant it exclusive use of the resource. When it is finished using the resource, the device notifies the lock unit to free the resource, by means of a memory WRITE command accompanied by the address that is associated in the lock unit with that resource, which the device sends to the lock unit. Additionally, the lock unit may include hardware for preventing a lockable resource from being accessed by a device that is not its current owner, and hardware for preventing the current owner from accessing the resource more than a predetermined number of times.

Description

TECHNICAL FIELD
This invention relates to the management of shared resources in program controlled systems, and in particular to mechanisms for controlling access to such shared resources.
BACKGROUND OF THE INVENTION
A computer system may include one or more parts, such as processors, peripheral devices, device controllers, and memories, which are utilizable by other devices of the system as resources for the execution of system tasks. For example, a processor may utilize a memory section as a resource for storage of results or as a source of data and instructions; that processor may also utilize an input/output device as a resource for communicating with the outside world. Or a direct memory access (DMA) controller may utilize a memory as a resource for storing data and a peripheral device as a resource for providing data, while an I/O device may utilize a device controller as a resource for communicating with a processor or a memory.
Simultaneous use by a plurality of devices of the same resource is likely to produce errors. For example, incorrect data will be obtained from memory, or the output of a printer will be garbled. It is therefore important that such systems have means for providing an indication to devices interested in using a resource of whether that resource is free and available for use as a resource, or whether it is presently busy, acting as a resource for some device of the system and therefore unavailable to act as a resource for other devices. It is also desirable to provide therewith means of preventing a device wishing to access and utilize a busy resource from doing so until the resource becomes freed by its owner, that is, its current user.
Prior approaches to meeting these requirements have traditionally involved the use of software locks. A software lock is a program-implemented scheme of providing a user with exclusive access to a shared resource. Such software locks have commonly taken the form of semaphores, which are flags, such as register or memory word contents or flip/flop states, that indicate the busy/free states of an associated resource. Semaphore program routines test the status of the flag, generally through a test-and-set type of instruction, and prevent a device desirous of becoming a resource user from accessing the desired resource while its associated flag indicates that it is being utilized by some other user.
The prior art locking mechanisms suffer from a number of disadvantages that generally flow from their software nature. The locks commonly require a program which tests the busy/free status of the resource and either locks the free resource for use by the new user and unlocks the resource when the user no longer desires it, or makes a decision as to what to do next and then directs the device to the selected activity when the resource is busy. The program may be of substantial length, and thus may occupy a significant portion of memory, particularly when numerous locks are used and the program must be replicated for each lock.
Avoidance of replication of the lock program by incorporating it into a subroutine may alleviate the above problem, but in turn creates a new one. The subroutine calls and returns and associated trap-induced context switches during program execution take time and tie up resources, such as processors and memory, and thus adversely affect system efficiency.
If the desired resource is found to be busy, the device wishing to use the resource must periodically recheck the status of the resource to determine when the resource becomes free. This not only requires additional program text to direct the device to recheck the resource status, but also ties up other resources, such as the bus between the device and the resource, which are utilized in performing the status check.
While an interrupt may be utilized to inform the devices that a resource is free, and thus rechecking by the devices of the resource status may be avoided, interrupt-based schemes have the disadvantage that they interrupt not only all of the devices wishing to use the resource, but all other devices as well. This adversely affects system efficiency. Masking of the interrupts at devices not desiring access to the resource is not a satisfactory solution because of the software complexity which masking requires.
Furthermore, informing all of a plurality of devices desirous of accessing a formerly busy resource that it has become free creates a free-for-all race to capture the resource, which requires a repetition of the above-described activities, along with their attendant disadvantages.
There is the further possibility that in such a free-for-all, one or more devices will become locked out and will seldom or never obtain access to the resource. Neither the interrupt scheme nor the status check loop scheme provide a wholly satisfactory solution to this problem. In the above-described interrupt scheme, for example, provision of a means for selecting a device and selectively masking the interrupt to all but the selected device adds further software and complexity to the scheme.
Similarly, in the above-described status check loop scheme which forces devices to perform a program loop to periodically recheck the status of a busy resource, the provision of an arbitration scheme to select one from a plurality of devices wishing to access the shared resource requires additional software and consumes time and system resources in executing the arbitration program's instructions.
In addition to the disadvantages enumerated above, the prior art locking schemes have generally not proved wholly effective in preventing access to locked, i.e. busy, shared resources. When implemented at the level of the executing program, locks have been accessible to programmers, and therefore it has been necessary to rely on cooperation from the programmers in observing the locks, by incorporating the locks into their programs, or at least in not willfully avoiding the locks. Thus, it has been simple for programmers to bypass the locks, often simply by ignoring them. Conversely, when implemented at the level of the operating system to avoid having to rely on use by the programmers, the locks could not efficiently be associated with every attempted access to a resource like shared memory, because of the severe overhead and resulting deterioration in system performance that lock-associated traps, or interrupts, produce.
Lastly, as was mentioned above, software locks are generally constructed around the use of a test and set type of instruction. But many program controlled systems do not have this type of instruction, and therefore retrofitting of lock capability into such systems has generally been very difficult.
SUMMARY OF THE INVENTION
The present invention is directed to solving these and other disadvantages of the prior art locking schemes.
The invention provides a locking apparatus for program controlled systems which comprise a plurality of devices for accessing resources, and one or more resources coupled thereto for access by the plurality of devices, and wherein each of the devices has means for sending out either a memory READ command or a memory WRITE command and then for awaiting a response to the sent-out command before continuing operation. These means are, for example, embodied in the READ and "wait for slow memory" feature of many processors, as discussed below. According to this invention, the locking apparatus for the shared resource comprises apparatus that is responsive to a request for access to a resource, made by a device by sending the memory command to the locking apparatus and then awaiting a response before accessing the resource, for determining whether the resource may currently be accessed by a device; apparatus for selecting for access to the resource a device requesting access to the resource, and means cooperative with the determining apparatus and the selecting apparatus and responsive to the request of the selected device when the determining apparatus indicates that the resource may be accessed, for sending to the selected device a response to grant the selected device access to the resource.
Preferably, each of the devices has means for sending out both a memory READ command and a memory WRITE command, and uses the other of the two commands for signaling to the locking apparatus termination of access to a resource. The determining apparatus responds to sending of the awaited response to the selected device by indicating that the resource may not be accessed, and responds to receipt of the accesstermination signaling command by indicating that the resource may be accessed. Preferably, the determining apparatus comprises apparatus for indicating the busy and free status of the resource; the indicating apparatus is responsive to the sending of the awaited response to indicate busy status, and is responsive to the receipt of the accesstermination signaling command to indicate free status.
Advantageously, the locking apparatus further includes means for preventing access to the resource by a requesting device when the determining apparatus indicates that the resource may not be accessed. The locking apparatus may further include means for preventing a device from accessing the shared resource when the device is not in possession of the right to access the resource. The locking apparatus may also include means for counting the number of accesses made by a device to the resource and for preventing further accesses when the count exceeds a predetermined limit.
The locking apparatus frees the rest of the system from having to run a software lock program, and thereby eliminates the overhead and tie-up of system resources associated with the running of such a program. The device which is requesting access to a shared resource need only make a request for the resource and also preferably signal when it has terminated use of the resource, which functions can be accomplished with two instructions.
The locking apparatus itself performs the lock significantly faster than could a mere software lock with similar locking features. Thus the locking apparatus alleviates the system overhead associated with software locks. Furthermore, the locking apparatus substantially eliminates the other disadvantages, enumerated above, that are associated with such software.
Since the selection of a device--arbitration--for access to a shared resource is done by the locking apparatus and only the selected device is activated to gain access to the resource, the delays, complexities, and waste of resources associated with the prior art means for resolving access to the shared resource, enumerated above, are also eliminated.
Because the requesting device awaits a response to its request for resource access, the waste of resources and overhead associated with either rechecking the status of a resource or implementing an interrupt to handle this function are avoided.
Since many devices have the capability of awaiting a response, as for example the "wait for slow memory" feature found on many conventional processors, and this locking scheme requires no special locking capability from processors, generally the locking apparatus can be easily retrofitted into existing program controlled systems.
Furthermore, equipping the locking apparatus with the feature for denying access to devices not in possession of access grant to the shared resource insures that unauthorized accesses to the resource, which defeat the function of the lock, will be prevented.
These and other advantages of the present invention will become apparent from the following description of an illustrative embodiment of the invention taken together with the drawing.
BRIEF DESCRIPTION OF THE DRAWING
FIG. 1 is a block diagram of a portion of a programmable system which includes an embodiment of the present invention;
FIG. 2 is a block diagram of the lock unit of FIG. 1;
FIG. 3 is a logic diagram of the lock processor of FIG. 2;
FIG. 4 is a logic diagram of the address decoder of FIG. 3;
FIG. 5 is a state diagram of the control circuit of FIG. 3;
FIG. 6 is a logic diagram of the bounds registers unit of FIG. 2; and
FIG. 7 is a logic diagram of the write counters unit of FIG. 2.
DETAILED DESCRIPTION
This example illustrates the application of a locking unit constructed according to the present invention to controlling processor access to a shared memory in a multiprocessor environment.
SYSTEM
Turning now to FIG. 1, there is shown a portion of a multiprocessor system 20 which will serve to illustrate the principles of the invention. Shown is a portion of the system bus 21 to which are interfaced two processors 22, 23, a shared memory 29, and a lock unit 27. The system bus 21 may extend beyond the figure, and other devices, for example I/O units, communication link adapters, a bus controller, and other processors, memories, and lock units may be connected thereto. The various portions of the system 20 cooperate in performing system tasks. For example, the processors 22, and 23 perform computational tasks, obtaining their data and instructions from, and storing results in, the memory 29 which they share. Thus the memory 29 is used as a shared resource by the processors 22, 23. The lock unit 27 is associated with the shared memory 29 and controls access to the memory 29 by the processors 22, 23, placing limits on the concurrent use of the memory 29 by the two processors 22, 23. The lock unit 27 assures that while one of the processor 22, 23 is accessing a designated portion or portions of the shared memory 29, it has exclusive use of that portion of memory 29. The lock unit 27 locks the other processor 22, 23 out from accessing that designated portion of the memory 29 and forces it to wait for access until the currently accessing processor 22, 23 gives up possession of that memory portion.
The various devices are interfaced to the system bus 21 by system bus interfaces (SBI's). Thus the processors 22, 23 are interfaced by the SBIs 24, 25, respectively, while the shared memory 29 and the lock unit 27 are both interfaced by the SBI 26. The shared memory 29 is connected to the SBI 26 through a shared memory interface (SMI) 28. Communications between the SBI 26 and SMI 28 proceed over an internal bus 32 which is also tapped by the lock unit 27. Additionally, the lock unit 27 has a connection to the SMI 28 via a signal bus 31.
The processors 22 and 23, the shared memory 29, the SBIs 24, 25, and 26, the SMI 28, and the system bus 21 may be any suitable units such as are conventionally available in commerce. The particular structure of these various units will depend upon the organization and characteristics of the system 20; these factors are not of significance to this invention.
LOCK UNIT
Turning now to FIG. 2, there is shown a block diagram of the lock unit 27 of FIG. 1 and details of its interconnection to the SBI 26 and the SMI 28. The internal bus 32 is comprised of a plurality of links dedicated to functions such as are commonly available on interface units. The internal bus 32 includes an address bus 60, a data bus 61, a read command line 62, a write command line 63, a processor identification (ID) bus 64, an alarm line 65, and a return value line 66.
The lock unit 27 is connected to the various links of the internal bus 32. The lock unit 27 includes a lock processor 33 which is responsible for monitoring the activity on the bus 32, for performing the locking and unlocking operations on the shared memory 29 in response to commands observed on the bus 32, and for performing the various tasks of administering the lock unit 27. Information regarding processor usage of various portions of the shared memory 29, each one of which is treated by the lock unit 27 as a separate resource, is stored in a lock registers unit 34 which is connected for communication with the lock processor 33. Additionally, the lock unit 27 includes a bounds registers unit 35 and a write counters unit 36. The bounds registers unit 35 prevents accesses to a locked portion of memory 29 by a processor 22, 23 not currently in possession of the right to access that portion, i.e., any processor 22, 23 not currently designated by the lock unit 27 as the owner of that resource, thus ensuring that the lock cannot be bypassed and defeated. The write counters unit 36 keeps count of the number of writes that a processor 22, 23 performs on a resource during a single grant of access and raises an alarm when that number exceeds a predetermined limit, thus protecting the resource from an "insane" processor. The latter two units 35, 36 may be made optional, as indicated in FIG. 2, in that they enhance the operation of the lock unit 27, but the basic lock function can be performed by the lock unit 27 without them. Operation of the units 35 and 36 becomes significant during processor accesses to the locked resource, but not during the operations of locking and unlocking the resource.
The lock registers unit 34 of the lock unit 27 is a writable memory. It may, for example, be comprised of conventional storage registers, or any other random access memory. Each portion of the shared memory 29 that is to be treated within the system 20 as a separate resource has a lock register 71 of the lock registers until 34 associated therewith. Thus the shared memory 29 may be comprised of as many portions, or resources, as there are lock registers 71 in the lock registers unit 34. A first field of a lock register 71 referred to as the owner field 69, is used to store the binary-encoded ID of the processor 22, 23 which is currently the owner of the portion of memory associated with that register 71. A second field of the lock register 71, referred to as the bit map field 70, is used to identify all processors currently requesting access to the associated memory portion. Each bit of the field 70 represents a particular processor, and the binary value of the bit indicates whether the represented processor is or is not requesting access. In the present example, each field 69, 70 is 16 bits wide: hence the bit map field 70 can represent up to 16 processors. Information on the owner and the requesting processors is written into and read out of the lock registers unit 34 under the control of the lock processor 33 which is connected for this purpose to the unit 34 by a read line 89, a write line 67, a data bus 68, and an address bus 88.
Associated with each lock register 71, and hence with each resource in the shared memory 29, is a trio of registers 72-74 in the bounds registers unit 35. The register 72 is used to store an address which represents the upper bound of the resource, while the register 73 is used to store an address which represents the lower bound of the resource. The third register, also referred to as the owner register 74, is used to store the ID of the processor 22, 23 which is the current owner of the associated resource. The bounds registers unit 35 is also any suitable writable memory. It is directly connected to, and monitors activities on, the address bus 60, the data bus 61, the read line 62, and the write line 63 of the internal bus 32. The unit 35 has CLEAR OWNER and SET OWNER input lines connecting it to the lock processor 33, and a LOCK NO. bus and an OWNER FOUND output line connecting it to the write counters unit 36. Additionally, the bounds registers unit 35 has OWNER NOT FOUND and WRONG OWNER output lines connecting it to the SMI 28. These two lines comprise the signal bus 31. The function of these lines is discussed further below. Further details of the bounds registers unit 35 are also described later herein, in reference to FIG. 6.
Also associated with each lock register 71, and hence with each resource in the shared memory 29, is a register 75 in the write counters unit 36. The register 75 is subdivided into two fields 76, 77. The field 76 is used to hold the count of the number of writes that the current owner processor has performed on the associated resource during its current access of the resource. The field 77 holds the limit value, which is the maximum number of write accesses allowed an owner to that resource in one access. The write counters unit 36 is once again any suitable writable memory. Aside from the inputs from the bounds registers unit 35, it also has a RESET COUNT control input from the lock processor 33 and is connected to the address bus 60, the data bus 61, the read line 62, the write line 63, and the alarm line 65 of the internal bus 32. The write counters units 36 is discussed in further detail in conjunction with FIG. 7.
Each set of registers 71-75 associated with a single resource has a common base address. Only the offset, comprising the least significant 3 bits of the address of the registers 71-75 varies. The offsets 000-010 are assigned to the registers 71-75, respectively. The addresses of the various sets of registers 71-75 are mapped into the address space reserved for memory in the system 20. The sets of registers 71-75 have consecutive base addresses, so that the most significant bits of the base addresses represent the address of the lock unit 27 as a whole. In the above scheme, each set of registers 71-75 represents a lock, and from the viewpoint of a processor 22,23 each lock is a set of addresses having a common base address in the units 34-36.
LOCK PROCESSOR
Referring now to FIG. 3, there is shown the configuration, in block diagram form, of the lock processor 33 shown in FIG. 2. A register, referred to as a processor register 55, has its inputs connected to the processor ID bus 64 of the internal bus 32 (see FIG. 2) and temporarily holds processor ID information that passes over the bus 64. Outputs of the processor register 55 are connected to a first set of two sets of inputs of a selector 59, to a first set A of inputs of a comparator 58, and to a first set of three sets of inputs of a selector 56. The outputs of the selector 56 are connected to a register, referred to as an owner register 57, which is utilized for temporarily holding the ID of the processor 22, 23 which is the current owner of a selected resource. The contents of the owner register 57 may be reset to zero by a control circuit 38 acting over a RESET OWNER control input line. The outputs of the owner register 57 are connected to the processor ID bus 64, to the second set of inputs of the selector 59, to inputs of a "find first one" circuit 161, to the most significant bit lines of a bidirectional data bus 83, and to a second set B of inputs of the comparator 58. Outputs of the comparator 58 are input to the control circuit 38; the first output is indicative of the two sets of inputs A and B of the comparator 58 being equal, and the second output is indicative of the input B from the owner register 57 being null.
The outputs of the selector 59 are connected to inputs of a set/reset bit circuit 119. The circuit 119 translates the processor ID input from the selector 59 into the bit position which corresponds to that processor in the bit map field 70 of the lock registers 71 (see FIG. 2) discussed above. The circuit 119 has outputs each connected to a corresponding bit in a bit map register 160. In response to commands supplied by the control circuit 38 over SET BIT and RESET BIT control lines, the set/reset bit circuit 119 sets or resets the bit in the bit map register 160 which corresponds to the identified processor.
The "find first one" circuit 161 has a set of inputs each connected to a corresponding bit in the bit map register 160. Through these inputs the circuit 161 monitors the bit values of the bit map register 160. The circuit 161 is also connected for input to the output of the owner register 57 from which it obtains the processor ID of the owner of a selected resource. The circuit 161 translates the processor ID into the bit position corresponding to that processor in the bit map register 160. It then examines the status of the bit values of the bit map register 160, searching for the first bit value of 1 appearing to one side (i.e., searching either clockwise or counterclockwise) of the bit position obtained by translation from the input of the register 57. Upon finding that first bit position set to one, the circuit 161 translates that bit position into the processor ID which corresponds to that position, and outputs this ID to a second set of inputs of the selector 56. If the circuit 161 finds no bit position in the register 160 except for the starting position set to one, it outputs a signal so indicating to the control circuit 38 over a MAP NULL line.
The bit map register 160 is connected for input and output to the least significant bit lines of the data bus 83. As was mentioned above, the most significant bit lines of the bus 83 are connected to the outputs of the owner register 57; these most significant bit lines are also connected to a third set of inputs of the selector 56 for loading the owner register 57.
The circuits 119 and 161 may be conventional logic arrays. The register 160 may be a conventional register, in this example 16 bits wide to correspond to the assumed 16 bit width of the bit map field 70 of the registers 71 of the lock registers unit 34.
ADDRESS DECODER
As shown in FIG. 3, an address decoder 37 has connections to the read line 62, the write line 63, the data bus 61, and the address bus 60 of the internal bus 32. The decoder 37 connects to the control circuit 38 via a read line 81, a write line 82, an LM read line 84, and an LM write line 85. The data bus 83 connects the decoder 37 to other circuits in the lock processor 33, as was explained above. The decoder 37 also has connections to the lock registers unit 34 via a read line 89, a write line 67, a data bus 68, and an address bus 88. The decoder 37 selectively interconnects the internal bus 32, the lock registers unit 34, and the lock processor 33 internals. The address decoder 37 is essentially a switch whose position is controlled by the addresses appearing on the address bus 60.
FIG. 4 diagrams the structure of the address decoder 37. The decoder 37 includes a comparator 105 whose first set of inputs is connected to the high order bits of the address bus 60, and whose second set of inputs is set to the address of the lock unit 27. When the first set of inputs to the comparator 105 equals the second set of inputs, indicating that the lock unit 27 has been addressed over the bus 60, the comparator 105 generates an ENABLE signal over an input line to multiplexers 102 and 106, and to an AND gate 103.
Mid-order bits of the address bus 60 which represent the remainder of the base address of a lock, i.e., of a set of registers 71-75, in the lock unit 27 are connected directly to the high order bits of the address bus 88 leading to the lock registers unit 34. The low order three bits of the bus 88 are tied to ground to generate the 000 base address offset representing the address of a lock register 71 in a set of registers 71-75.
The low order three bits of the address bus 60 are connected to inputs of an AND gate 104 and to inverted inputs of the AND gate 103. The output of the gate 104 forms a SELECT control input to the multiplexers 102 and 106. The output of the gate 103 forms an ENABLE control input to a tri-state gate 101.
The tri-state gate 101 has one port connected to the data bus 61 and a second port connected to a first port of the multiplexer 102. The gate 101 enables or disables flow of data from the multiplexer 102 to the data bus 61 in response to the ENABLE input from the AND gate 103. However, the gate 101 has no effect on the flow of data from the data bus 61 to the multiplexer 102. Such tristate gates are well known in the art.
The multiplexer 102 has a second port connected to the lock processor data bus 83 and a third port connected to the data bus 68 of the lock registers unit 34. In response to is SELECT control input, the multiplexer 102 connects its third port with either its first port or its second port.
The multiplexer 106 has input A of first port and input C of a second port connected to the read line 62 of the internal bus 32. The write line 63 of the internal bus 32, is connected to input B of the first port and input D of the second port of the multiplexer 106. Inputs C and D of the first port are tied to ground, and inputs A and B of the second port are connected to the LM read line 84 and the LM write line 85, respectively, from the control circuit 38. A third port of the multiplexer 106 has its outputs A-D connected to the read line 89 and the write line 67 of the lock registers unit 34, and to the read line 81 and write line 82 of the control circuit 38, respectively. Like the multiplexer 102, the multiplexer 106 responds to its SELECT control input to connect its third port with either its first port or its second port.
When their ENABLE inputs are low, the tri-state gate 101 and the multiplexer 102 and 106 maintain their various ports disconnected from each other and thus prevent data and signals, except on the address bus 88, from passing through the address decoder 37.
When the lock unit 27 is addressed over the address bus 60, the comparator 105 recognizes this and generates the ENABLE signal which allows the tri-state gate 101 and the multiplexers 102 and 106 to respond to the state of the three low order bits of the address bus 60.
When those bits are all zero and the ENABLE line is high, indicating that a register 71 of the lock registers unit 34 is being addressed, the output of the gate 103 is high and the output of the gate 104 is low. In response to the high output of the gate 103 the tri-state gate 101 allows data to pass from the multiplexer 102 to the data bus 61. In response to the low output of the gate 104 the multiplexer 102 connects its first port with its third port, thus connecting the second port of tristate gate 101 with the data bus 68. The multiplexer 106 responds to the low output of the gate 104 by also connecting its first port with its third port, thus connecting the read and write lines 62 and 63 with the read and write lines 89 and 67, respectively. Thus a connection is established between the internal bus 32 and the lock registers unit 34.
When the three low order bits of the address bus 60 are not all zero or all one and the ENABLE line is high, generally indicating that a register of either the bounds registers unit 35 or of a write counters unit 36 is being addressed, the output of the gate 104 is low and therefore the states of the multiplexers 102 and 106 do not change from that just described. However, in such cases the output of the gate 103 is low, and the tri-state gate blocks flow of data from the multiplexer 102 to the data bus 61. Thus the connection between the internal bus 32 and the lock registers unit 34 is unidirectional only, from the bus 32 to the unit 34.
When the three low order bits of the address bus 60 are all ones and the ENABLE line is high, which indicates that a processor 22, 23 is attempting to lock or unlock a resource, the output of the gate 104 is high, and the multiplexers 102 and 106 connect their third port with their second port, thereby connecting the data bus 83 with the data bus 68, the LM read and LM write lines 84 and 95 with the read and write lines 89 and 67, respectively, and the read and write lines 62 and 63 with the read and write lines 81 and 82, respectively. Thus a data and signaling connection is made between the lock processor 33 internals and the lock registers unit 34, with an additional connection of the control circuit 38 to the read and write lines 62 and 63 of the internal bus 32.
CONTROL CIRCUIT
Returning to FIG. 3, aside from the connections already discussed, the control circuit 38 has outputs connected to the return value line 66 and the alarm line 65 of the internal bus 32, to the CLEAR OWNER and SET OWNER lines leading to the bounds registers unit 35, and to the RESET COUNT line leading to the write counters unit 36. The control circuit 38 is a logic array defined by the state diagram of FIG. 5. The diagram of FIG. 5 will be explained in conjunction with the operational description of the lock unit 27 given below.
INITIALIZATION
Initialization of the lock unit 27 is performed by one or more of the processors 22, 23 of the system 20. Preferably that task is assigned to the processor which will have been designated as the system 20 maintenance processor, for example the processor 22. The processor 22 is supplied with bounds addresses of one or more portions of the shared memory 29 that will function as lockable resources. This information will have been developed in any appropriate manner, for example by a compiler at compile time or by the operating system during system operation. Through suitable means, such as a list stored in the shared memory 29 the processor 22 selects an available lock and dedicates it to a resource, writing appropriate initial values into the selected lock. This means may be a table stored in the shared memory 29, which lists the locks, their available or dedicated status, and the identification of the resources with which the dedicated locks are associated.
The initial values of a lock's registers 71-75 are the following: a null value for the owner field 69 of the lock register 71 to indicate that no processor is currently an owner of the resource; an idle value comprising all zeros for the bit map field 70 of the lock register 71 to indicate that no processors are currently waiting to use the resource; the address of the upper bound of the resource for the upper bound register 72; the address of the lower bound of the resource for the lower bound register 73; a null value for the owner register 74, as for the register 71; and a value representative of the number of writes to be allowed to the resource between any lock and unlock operation--the limit value--for the register 75. The initial value for the register 75 is such that the limit number is written into both fields 76 and 77 of the register 75.
As was mentioned above, the registers 71-75 which comprise a single lock have a common base address and only differ in the base offset, which are the three least significant bits of the complete address. Therefore the processor 22 writes each register 71-75 of a lock separately. Through the SBI 24, the processor 22 outputs onto the system bus 21 (see FIG. 1), its ID, the address of a register, the data to be written into the register, and a memory write command. The SBI 26 detects the address on the system bus 21 and places the information from the system bus 21 onto the internal bus 32, sending the address of the register onto the address bus 60, the register data onto the data bus 61, the processor ID onto the processor ID bus 64, and a write signal onto the write line 63 (see FIG. 2).
The address decoder 37 of the lock unit 27 (see FIG. 3) responds to the address of the selected register 71 and establishes connections between the internal bus 32 and the lock registers unit 34. The signals on the data bus 61 and the write line 63 pass to the unit 34 on the data bus 68 and the write line 67, while the address of the selected register 71 passes to the unit 34 from the address bus 60 via the address bus 88. The unit 34 responds by writing the addressed lock register 71 with the initial values of the owner and bit map fields 69 and 70, respectively.
The bounds registers unit 35 responds to the addresses of the registers 72-74 and writes the initial values into the addressed registers. Likewise the write counters unit 36 responds to the address of the register 75 and writes the initial value into the addressed register 75.
During initialization, the registers of a lock respond in the same manner as storage locations of memory, such as the shared memory 29, respond within the system 20. When the registers of one lock are initialized, the processor 22 may initialize another lock for another resource. Throughout initialization, the control circuit 38 of the lock processor 33 of the lock unit 27 is in the ready state 0 (see FIG. 5).
LOCK OPERATION
A processor 22, 23 executes a lock operation on a resource by attempting to read from word 7 of the lock of that resource. For example, assuming that it is processor 23 which wishes to lock a selected resource and thereby to become its exclusive owner, the processor 23 sends out on the system bus 21 (see FIG. 1) its ID, a read command, and an address comprising the base address of the resource's lock plus an offset of seven. The "wait for slow memory feature" of the processor is utilized, and the processor 23 goes into a wait state upon issuing the read request. It remains in the wait state until a value is returned to it from the lock unit 27 in response to the read request. The SBI 26 detects the address on the system bus 21 and places the information therefrom onto the internal bus 32, sending the address onto the address bus 60, the processor ID onto the processor ID bus 64, and a read signal onto the read line 62 (see FIG. 2).
Since each lock has only four registers 71-75 with base address offsets of 0-4, respectively, the base address offset of 7 does not match any of the registers 71-75 directly, so none of them respond. However, the address decoder 37 responds to the address and connects the lock registers unit 34 with the control circuit 38 and other lock processor 33 internals. That is, the decoder 37 connects the two data buses 68 and 83, the LM read line 84 and the read line 89, and the LM write line 85 and the write line 67. The decoder 37 also connects the two read lines 62 and 81, and the two write lines 63 and 82. As shown in FIG. 5, the control circuit 38 responds to the read signal on the line 81 by asserting the LM read line 84 and making the transition from state 0 to state 1.
The lock registers unit 34 responds to the LM read signal on the read line 89 by outputting onto the data bus 68 the contents of the register 71 which is addressed by the base address present on the address bus 88. The control circuit 38 loads the contents of the owner field 69 of the register 71 from the data bus 83 into the owner register 57 through the selector 56, and loads the contents of the bit map field 70 of the register 71 from the data bus 83 into the bit map register 160. At this time, the control circuit 38 also gates the ID of the requesting processor 23 from the processor ID bus 64 into the processor register 55, and sets the selector 59 to gate the contents of the processor register 55 to the set/reset bit circuit 119. When these actions are completed the control circuit 38 goes to state 2, as shown in FIG. 5.
In the state 2, the control circuit 38 causes the comparator 58 to determine whether the contents of the processor register 55 and the owner register 57 are the same, or whether the contents of the owner register 57 are null, and to signal the result of the comparison to the control circuit 38 over the appropriate signaling line.
The default condition resulting in no signals being returned from the comparator 58 to the control circuit 38 indicates that neither of the two abovementioned conditions exist.
The contents of the registers 55 and 57 being equal means that the requesting processor 23 is already the owner of the associated resource and that it is trying to lock the resource it already owns. The control circuit 38 responds to this condition by going to state 3, as shown in FIG. 5, and asserting the alarm line 65 to signal an invalid lock attempt. The system 20 may respond to the raising of the alarm in any desired manner, such as with an interrupt.
Failure of the comparator 58 to return a signal to the control circuit 38 indicates that the requested resource has an owner and is currently busy, locked by that owner, and therefore inaccessible to the processor 23. The control circuit 38 responds to this condition by going to state 6 (see FIG. 5) to cause the selector 59 to gate the contents of the processor register 55 into the set/reset bit circuit 119 and to and assert the SET BIT line to the set/reset bit circuit 119. This causes the circuit 119 to set the bit in the bit map register 160 which corresponds to the requesting processor 23 and thus to indicate that the processor 23 is waiting to use the associated resource.
The contents of the owner register 57 being null indicate that the associated resource has no current owner and is unlocked, free to be locked and utilized by the requesting processor 23. The control circuit 38 responds to this condition by going to state 4 (see FIG. 5), causing the selector 56 to gate the contents of the processor register 55 into the owner register 57 and making the processor 23 the owner of the resource.
The control circuit 38 then goes to state 5 and asserts the return value line 66 of the internal bus 32 to cause the SBI 26 to return a value to the requesting processor 23. This processor is still identified to the SBI 26 as the processor 23 by its ID on the processor ID bus 64. The SBI 26 responds by sending over the system bus 21 to the processor 23 whatever value is present on the data bus 61 of the internal bus 32. The value sent is irrelevant, as its purpose is merely to indicate to the processor 23 that it has been given control of the requested resource.
Upon receiving the value from the lock unit 27 in response to the read request, the processor 23 leaves the wait state and continues with its operation, accessing the locked resource as its exclusion owner.
In the state 5 the control circuit 38 also asserts the SET OWNER line to the bounds registers unit 35 and the RESET COUNT line to the write counters unit 36. Referring to FIG. 6, at the bounds registers unit 35 the SET OWNER line forms a control input to all of the owner registers 74. The SET OWNER signal causes the owner register 74 which is selected by the base address on the address bus 60 to be loaded with the processor ID appearing on the processor ID bus 64, which in this case is the ID of the new owner processor 23. Thus the ID of the owner processor becomes associated with the identifying information--the upper and lower bounds--of the owned resource.
Referring to FIG. 7, at the write counters unit 36 the RESET COUNT line forms a load (LD) control input to all of the registers 75. The RESET COUNT signal causes the count field 76 of the register 75 which is selected by the base address on the address bus 60 to be loaded with the contents of that register's limit field 77, over a link which connects the output of the limit field portion of the register 75 to the input of the count field portion of the register 75. Thus the write count of the newly locked resource becomes reinitialized.
As shown in FIG. 5 from states 5, 3, and 6, the control circuit 38 makes a transition to state 15, asserts the LM write line 85 (see FIG. 3) to the lock registers unit 34, and causes the contents of the owner register 57 and of the bit map register 160 to be output onto the data bus 83. The lock registers unit 34 responds to the write signal on the write line 67 by loading the resource's lock register 71 with the information received over the data bus 68. The control circuit 38 then returns to its initial idle ready state 0 and the lock unit 27 is ready for its next transaction.
UNLOCK OPERATION
When the processor 23 no longer requires current access to the locked resource, it unlocks the resource and thereby frees it for use by another processor. The processor 23 executes an unlock operation on the resource by attempting to write into word 7 of the lock of that resource. The processor 23 sends onto the system bus 21 (see FIG. 1) its ID, a write command, and an address comprising the base address of the resource's lock plus on offset of seven. The SBI 26 detects the address on the system bus 21 and places information from the bus 21 on the internal bus 32.
As in the case of the read-activated lock operation discussed above, the base address offset of 7 does not match any of the registers 71-75 directly, so none of them respond. However, the address decoder 37 (see FIG. 3) again responds to the address and connects the lock registers unit 34 and the read and write lines 62 and 63 to the lock processor 33 internals.
As shown in FIG. 5, the control circuit 38 responds to the write signal on the line 82 by making the transition from state 0 to state 7 and asserting the LM read line 84 to the lock registers unit 34. As before, the lock registers unit 34 responds to the read signal on the line 81 by sending out on the data bus 68 the contents of the lock register 71 addressed by the base address present on the address bus 88. The control circuit 38 then loads the contents of the owner field 69 of the register 71 from the data bus 83 into the owner register 57 through the selector 56, and loads the contents of the bit map field 70 of the register 71 from the data bus 83 into the bit map register 160. At this time, the control circuit 38 also gates the ID of the requesting processor 23 from the processor ID bus 64 into the processor register 55, and sets the selector 59 to gate the contents of the owner register 57 to the set/reset bit circuit 119. When these actions are completed, the control circuit goes to state 8.
In the state 8, the control circuit 38 causes the comparator 58 to determine whether the contents of the processor register 55 are the same as the contents of the owner register 57. Non-equality of these contents indicates that the requesting processor 23 is not the current owner of the resource and, therefore, does not have the right to unlock that resource. The control circuit 38 responds to this condition by going to state 9, as shown in FIG. 5, and asserting the alarm line 65 of the internal bus 32 to signal on invalid lock attempt. The system 20 may respond to the raising of the alarm in any desired manner, such as an interrupt.
The contents of the register 55 and 57 being equal indicates that the requesting processor 23 is the current owner of the resource and, therefore, is properly unlocking that resource. The control circuit 38 responds to this condition by going to state 10. In state 10, the control circuit 38 causes the selector 59 to gate the contents of the owner register 57 into the set/reset bit circuit 119 and asserts the RESET BIT line to the set/reset bit circuit 119. The circuit 119 responds by clearing the bit in the bit map register 160 which corresponds to the owner processor 23, to indicate that the processor 23 is not waiting to use the associated resource.
Next, the control circuit 38 causes the contents of the bit map register 160 of the owner register 57 to be applied to the inputs of the "find first one" circuit 161 and activates the circuit 161. The circuit 161 selects the next waiting processor to receive access to the resource, by performing a rotating right search for a set bit in the bit map, starting at the bit of the previous owner processor 23, which is identified by the contents of the owner register 57. If no set bit is found by the circuit 161, that is, there are no processors waiting to use the resource and therefore all the bits in the bit map are zero, the circuit 161 asserts the MAP NULL line to the control circuit 38. In any case, the control circuit 38 waits for the circuit 161 to settle, and when the "find first one" circuit 161 has settled, the control circuit 38 assumes state 11.
If the MAP NULL line has been asserted, the control circuit 38 makes a transition from the state 11 to state 13 and asserts the RESET COUNT line to the write counters unit 36, the CLEAR OWNER line to the bounds registers unit 35, and the RESET OWNER line to the owner register 57. The effect of the RESET COUNT signal at the write counters unit 36 has been described above. Referring to FIG. 5, at the bounds registers unit 35, the CLEAR OWNER line forms a control input to all of the owner registers 74. The CLEAR OWNER signal causes the owner register 74 identified by the base address on the address bus 60 to be cleared, loaded with all zeros, to indicate that the associated resource is unlocked and free to be locked by a processor. Similarly, the effect of the RESET OWNER signal on the owner register 57 (see FIG. 3) is to cause the contents of the register 57 to be reset to all zeros.
Following the states 9 and 13, the control circuit 38 goes to state 14, where it outputs the contents of the owner register 57 and the bit map register 160 onto the data bus 83 and asserts the LM WRITE line to the lock registers unit 34. The lock registers unit 34 responds to the LM WRITE signal by loading the data sent to it by the control circuit 38 from the data bus 68 into the lock register 71 identified by the base address on the address bus 60. In the case of the transition from the state 9, this has the effect of restoring to the lock register 71 contents which it had before the unauthorized unlock operation was attempted by the processor 23. Hence, if at that time the associated resource was locked by a processor, it remains locked to that processor. In the case of the transition from the state 13, however, the effect is to load the lock register 71 with all zeros and thereby to unlock the associated resource.
Following the completion of activities in the state 14, the control circuit 38 returns to its idle ready state 0.
Returning now to a consideration of the state 11 in FIG. 5, if the MAP NULL line has not been asserted by the "find first one" circuit 161, the control circuit 38 makes a transition from the state 11 to state 12 and causes the selector 56 to gate the output of the "find first one" circuit 161 into the owner register 57. The output of the circuit 161 is the ID of the processor selected by the circuit 161 to be the new owner of the resource under consideration. At that time, control circuit 38 also causes the contents of the owner register 57 to be output onto the processor ID bus 64 to replace thereon the ID of the former owner processor 23.
From the state 12, the control circuit 38 makes a transition to the state 5 of the lock operation, to cause the resource to become properly locked to its new owner. During this lock operation, the control circuit 38 progresses through the states 5 and 15 back to state 0, in the manner described above for the lock operation.
LOCKED RESOURCE ACCESS
If a memory address is within a portion of the shared memory 29 that is lockable, that is, if it falls between the upper and lower bounds deliminating a shared resource, a processor requesting to read from or to write into that memory address will be granted permission to do so only if it has previously locked the resource containing the address and is its current owner. If a memory address lies within a portion of the shared memory that is not lockable, the address is treated as a shared read-only resource, and any processor can read it at any time, but a processor is generally not allowed to write that address.
From the viewpoint of the lock unit 27, (see FIG. 2) a memory read or a memory write operation begins with the receipt by the SBI 26 of a memory read request or a memory write request, respectively, from a processor, for example the processor 22. The address appearing on the address bus 60 of the internal bus 32 is that of a location in the shared memory 29 and not that of any word within the lock unit 27. Therefore, the lock access circuitry described above in conjunction with the initialization, lock, and unlock processes is not utilized, and the lock processor 33 remains idle.
Turning to FIG. 6, the shared memory address arrives at the bounds registers unit 35 on the address bus 60 and the ID of the requesting processor 22 arrives at the unit 35 on the processor ID bus 64. Each set of registers 72-74 in the bounds registers unit 35 has a ratio of comparators 44, 45, 46 associated therewith. The memory address enters all comparators 44 and 45 along one set of each of their inputs and the processor ID enters all comparators 46 along one set of each of their inputs. A second set of inputs of each comparator 44 is connected to the associated upper bound register 72, a second set of inputs of each comparator 45 is connected to the associated lower bound register 73, and a second set of inputs of each comparator 46 is connected to the associated owner register 74. At each set of registers 72-74, the memory address is compared with the upper address bound in the comparator 44 and with the lower address bound in the comparator 45, while the processor ID from the bus 64 is compared with the ID of the owner processor in the comparator 46.
If a comparator 44 finds that the upper bound is greater than or equal to the memory address, it sets its output high. Similarly, if a comparator 45 finds that the lower bound is less than or equal to the memory address, it sets its output high, and if a comparator 46 finds the two processor IDs being input to it to be the same, it sets its output high.
The outputs of each pair of comparators 44 and 45 are connected to the inputs of an associated AND gate 98. The output of the AND gate 48 goes high when the memory address lies within the upper and lower bounds of the associated resource. The outputs of all of the AND gates 48 are connected to inputs of an encoder circuit 50. When none of the gates 48 have a high output, the circuit 50 asserts an OWNER NOT FOUND line to the SMI 28 (see FIG. 2). When one or more of the gates 48 have a high output, the circuit 50 asserts an OWNER FOUND line to the write counters unit 36 and outputs the base address corresponding to the lock, or set of registers 72-74, whose AND gate 48 has a high output, on a LOCK NO. bus to the write counters unit 36. If more than one AND gate 48 has a high output, the encoder selects one of them for purposes of generating the lock number.
The outputs of each of a pair of comparators 44,45 are also connected to the inputs of an associated AND gate 47. An inverted input of each AND gate 47 is connected to the output of the corresponding comparator 46. Thus the output of an AND gate 47 is high only when the memory address lies between the upper and lower bounds of the associated resource but the requesting processor is not the owner of that resource. The outputs of all of the AND gates 47 are connected to inputs of an OR gate 49, whose output connects to a WRONG OWNER line leading to the SMI 28. Thus the WRONG OWNER line is asserted any time a processor tries to access a lockable resource of which it is not the current owner.
Referring now to FIG. 7, the LOCK NO. bus and the OWNER FOUND line from the bounds registers unit 35 are connected to circuitry at each register 75. As the circuitry is identical at each register 75 only the circuitry of a single register 75 is shown in FIG. 6 and explained here.
The OWNER FOUND line is connected to the select (SEL) input of a multiplexer 51. The LOCK NO. bus is connected to a first input port of the multiplexer 51, while the second port is connected to the address bus 60 of the internal bus 32. The output of the multiplexer 51 forms the address input to the register 75. The multiplexer 51 connects the address bus 60 input to its output when its SEL control input is low, and connects its LOCK NO. bus input to its output when the SEL control input is high. Thus at times when the LOCK NO. bus is low, such as during the initialization of the lock unit 27, during the locking or unlocking operation, and during a shared memory 29 access operation when the bounds registers unit 35 asserts the OWNER NOT FOUND or WRONG OWNER lines, the write counters unit 36 takes addresses from the address bus 60. Only during a shared memory 29 access operation when the bounds registers unit 35 asserts the OWNER FOUND line does the write counters unit 36 take addresses from the LOCK NO. bus.
The OWNER FOUND line is also connected to an input of an AND gate 53 and to an inverted input of an AND gate 52. The write line 63 forms a second input to the gates 53 and 52. The output of the gate 52 forms a WRITE command input to the register 75, while the output of the gate 52 is connected to a decrement (DEC) control input of the register 75. Thus when the write counters unit 36 is being addressed from the address bus 60, a signal present on the write line 63 acts as a conventional WRITE command. But when the OWNER found line has been asserted by the bounds registers unit 35, the presence of a signal on the write line causes the contents of the count field 76 of the register 75 addressed by the LOCK NO. bus signals to be decremented, to indicate that the current owner processor of the associated resource has written into that resource. If the owner processor is making a read access to the resource, the outputs of both AND gates 52 and 53 remain low and the register 75 does no change its contents. Thus, the write counters unit 36 records only write accesses to shared resources and ignores read accesses to shared resources.
If the value in the count field 76 reaches zero, indicating that the owner processor has made as many write accesses to the associated resource as it is allowed during its current ownership, an overflow signal is output by the register 75 onto an OVERFLOW line. The OVERFLOW lines of all registers 75 form inputs to an OR gate 54, whose output is connected to the alarm line 65 of the internal bus 32. Thus, when one or more OVERFLOW lines go high, the alarm line 65 goes high also. The system 20 may react to the raising of the alarm in any appropriate manner, for example with an interrupt.
Returning to a consideration of FIG. 2, during a shared memory read operation the SMI 28 ignores the OWNER NOT FOUND line. It allows the memory read transaction to occur if the WRONG OWNER line has not been asserted, and raises the alarm line 65 of the internal bus 32 if the WRONG OWNER line has been asserted by the bounds registers unit 35. However, during a shared memory write operation, the SMI 28 responds to the states of both lines of the signal bus 31, and raises the alarm line 65 if either line of the bus 31 has been asserted, allowing the memory write transaction only if neither line of the bus 31 has been asserted.
Of course, it should be understood that various changes and modifications to the illustrative embodiment described above will be apparent to those skilled in the art. For example, the lock unit may be interfaced to the system bus by its own dedicated system bus interface. Or, the lock unit can be implemented as a part of the shared memory controller. Instead of performing a rotating search to arbitrate between requesting devices, the lock unit may utilize some other arbitration scheme, for example a first-come first-served scheme, or a prioritized scheme. The lock unit may also include a deadlock detection and recovery mechanism, for example a sanity timer that limits the time for which an owner processor can keep control of a locked resource. For lock unit fault detection, two lock units may be operated in parallel and their results compared on each transaction. Or, for maintenance and error detection purposes, the lock unit may return a predetermined value to a representing processor as a response to its request to access a resource. Additionally, the system may be adapted to prevent preemption of a process while its associated processor owns a resource, to eliminate delays for other processors waiting for the resource. These and other changes and modifications can be made without departing from the spirit and the scope of the invention and without diminishing its attendant advantages. It is therefore intended that all such changes and modifications be covered by the following claims.

Claims (40)

What is claimed is:
1. A program controlled system having a memory READ command and a memory WRITE command for reading and writing memory, respectively, by sending the command to memory, the system for selectively treating the conventional memory READ or memory WRITE command either as a memory command or as a resource locking request, the system comprising:
(A) a plurality of devices for accessing resources;
(B) at least one resource coupled to the plurality of devices for access by the plurality of devices;
(C) resource access controlling apparatus coupled to the plurality of devices for controlling access to the at least one resource by the plurality of devices;
(D) each of the plurality of devices having means for requesting from the resource access controlling apparatus access to a resource by sending one of the memory READ command and the memory WRITE command to the resource access controlling apparatus, and for awaiting a response from the resource access controlling apparatus to the request before continuing operation that includes accessing the resource;
(E) the resource access controlling apparatus including
(1) means, responsive to the one of the memory READ and the memory WRITE commands sent to the apparatus, for determining whether the resource may currently be accessed by a requesting device,
(2) means, responsive to one or more of the one of the memory READ and the memory WRITE commands sent to the apparatus, for selecting for access to the resource a device requesting access to the resource, and
(3) means, cooperative with the determining means and the selecting means and responsive to the one of the memory READ and the memory WRITE commands sent to the apparatus by the selected device, for sending to the selected device a response when the determining means indicate that the resource may be accessed, to grant the selected device exclusive use of the resource.
2. The system of claim 1 wherein each of the plurality of devices further have:
means for signaling to the resource access controlling apparatus termination of access to a resource by sending the other of the memory READ command and the memory WRITE command to the resource access controlling apparatus.
3. The system of claim 2 wherein the determining means comprise means responsive to the means for sending a response for indicating upon the sending of the response that the resource may not be accessed by a requesting device, and further responsive to the means for signaling termination of access for indicating upon receipt of signaling of termination of access that the resource may be accessed by a requesting device.
4. The system of claim 1 further comprising:
means associated with the resource access controlling apparatus for preventing access to the resource by a requesting device when the determining means indicate that the resource may not be accessed.
5. The system of claim 1 or 4 further comprising:
means associated with the resource access controlling apparatus for preventing access to the resource by a device not having the grant of access to the resource.
6. The system of claim 1 further comprising:
means associated with the resource access controlling apparatus for counting the accesses by a device to the resource and for preventing further accesses by that device when the count exceeds a predetermined limit.
7. A program controlled system having a memory READ command and a memory WRITE command for reading and writing memory, respectively, by sending the command to memory, the system for selectively treating the conventional memory READ and memory WRITE commands either as memory commands or as resource locking and unlocking requests, respectively, the system comprising:
(A) a plurality of devices for using resources;
(B) at least one resource coupled to the plurality of devices for being shared by the devices;
(C) resource use limiting apparatus coupled to the plurality of devices for limiting concurrent use of the at least one resource by a plurality of the devices;
(D) each of the plurality of devices having means for sending a memory READ command identifying a resource to the resource use limiting apparatus thereby to request exclusive use of the identified resource and for awaiting a response to the READ command from the resource use limiting apparatus before continuing operation that includes using the identified resource, and further having means for sending a memory WRITE command identifying the resource to the resource use limiting apparatus to signal termination by the device of use of the identified resource;
(E) the resource use limiting apparatus including
(1) means for indicating the busy and free status of each of the at least one resource,
(2) means, responsive to receipt of a memory READ command identifying a resource, for selecting for use of the identified resource one device requesting use of the identified resource,
(3) means, coupled to the indicating means and to the selecting means, for sending a response to the selected device when the indicating means indicate that the status of the identified resource is free status, to grant the selected device exclusive use of the identified resource,
(4) means, responsive to sending of the response by the means for sending a response, for causing the indicating means to indicate busy status for the identified resource, and
(5) means, responsive to receipt from the selected device of a memory WRITE command identifying the resource, for causing the indicating means to indicate free status for the identified resource.
8. The system of claim 7 wherein the resource use limiting apparatus further comprises:
means for preventing use of a resource by a device not having the grant of use of the resource.
9. The system of claim 8 wherein the use preventing means comprise:
means for detecting attempted use of the resource by a device;
means responsive to the detecting means for determining whether the attempting device has the grant of use of the resource; and
means responsive to the grant determining means for signaling to the resource that the attempting device does not have the grant of use.
10. The system of claim 7 wherein the resource use limiting apparatus further comprises:
means for counting this number of times a device uses the resource while having the grant of use, and for signaling to the resource when the count exceeds a predetermined limit.
11. The system of claim 10 wherein the use of a resource includes a use of a first type and a use of a second type, and wherein the counting means only count the number of uses of the first type.
12. The system of claim 7 wherein the plurality of devices include at least one processor.
13. The system of claim 7 wherein the at least one shared resource includes a memory.
14. The system of claim 13 wherein
the means for sending a memory READ command identifying a resource comprise means for sending to the resource use limiting apparatus a memory READ command and address, which address is associated by the resource use limiting apparatus with the resource, to request exclusive use of the resource, and for sending to the memory a memory READ command and a memory address to read the memory, wherein
the means for sending a memory WRITE command identifying the resource comprise means for sending to the resource use limiting apparatus a memory WRITE command and the address associated by the resource use limiting apparatus with the resource to signal termination of use of the resource, and for sending to the memory a memory WRITE command and a memory address to write the memory, and wherein
the concurrent use limiting apparatus responds to devices, in response to memory READ and WRITE commands sent thereto, in like manner as the memory responds to devices, in response to memory READ and WRITE commands sent thereto.
15. The system of claim 7 wherein the status indicating means include:
at least one storage means, each associated with one resource for indicating the device having the grant of use of the associated resource.
16. The system of claim 15 wherein the means for sending a response to the selected device include:
means for sending a signal to the selected device when the storage means associated with the identified resource indicate no device.
17. The system of claim 7 wherein the device selecting means include:
at least one storage means, each associated with one resource for indicating the devices requesting use of the associated resource, and
means for selecting a device from devices indicated by the storage means associated with a resource for using the associated resource.
18. A program controlled system having a memory READ command and a memory WRITE command for reading and writing memory, respectively, by sending the command to memory, the system for selectively treating the conventional memory READ and memory WRITE commands either as memory commands or as resource locking and unlocking requests, respectively, the system comprising:
(A) a plurality of identifiable devices, each including means for sending a memory READ command accompanied by an address and for causing the device to wait for a response to the sent READ command before continuing operation, and each further including means for sending a memory WRITE command accompanied by an address;
(B) a memory coupled to the plurality of devices for use by the plurality of devices; and
(C) an addressable locking apparatus associated with the memory, coupled to the plurality of devices, and responsive to certain addresses reserved for memory in the system, for limiting concurrent use by a plurlity of the devices of a set of memory portions comprising at least one portion of the memory, including
(1) first means associated with a memory portion included in the set for identifying a device having the right to currently use the memory portion,
(2) second means associated with the memory portion for identifying devices requesting use of the memory portion,
(3) means, responsive to a sent memory READ command accompanied by a certain address, for causing the second means to identify the device that is sending the command and the certain address to request use of the memory portion,
(4) means, coupled to the second means, for selecting a device from devices identified by the second means,
(5) means for sending a response to the memory READ command of the selected device when the first means do not identify a device, to grant the selected device the right to currently exclusively use the memory portion,
(6) means, responsive to the response sent by the response-sending means to the selected device, for causing the first means to identify the selected device, and
(7) means, responsive to a sent memory WRITE command accompanied by the certain address, sent by the device identified by the first means to signal its termination of use of the memory portion, for causing the first means to cease identifying the device.
19. The system of claim 18 further comprising:
third means for storing the bounds of the memory portion;
means, responsive to sending of a memory READ or WRITE command accompanied by an address, for comparing the address accompanying the command against the bounds stored in the third means and for comparing identity of the device sending the command and address against identity of the device identified by the first means; and
means for signaling the memory when the comparing means indicate that the address lies within the bounds and that the compared identities are not the same.
20. The system of claim 19 further comprising:
resettable count storage means associated with the memory portion;
means, responsive to sending of a memory WRITE command accompanied by an address, for updating the count storage means when the comparing means indicate that the address lies within the bounds and that the compared identities are the same;
means for signaling the memory when the count storage means reach a predetermined count; and
means, responsive to the response sent by the responding means to the selected device, for resetting the count storage means to an initial value.
21. A resource lock for a program controlled system which has a memory READ command for reading memory by sending the command to memory, and which includes a plurality of devices for accessing resources, at least one resource applied to the plurality of devices for access by the plurality of devices, and each of the plurality of devices having means for sending a memory READ command and for awaiting a response to a sent memory READ command before continuing operation, the lock enabling the system to selectively treat the memory READ command either as a memory command or as a resource locking request, the lock comprising:
apparatus for coupling to the plurality of devices to control access to the at least one resource by the plurality of devices, including
(1) means, responsive to a request for access to a resource made by a device by sending the memory READ command to the apparatus, for determining whether the resource may currently be accessed by a requesting device,
(2) means, responsive to one or more of the memory READ commands sent to the apparatus, for selecting for access to the resource a device requesting access to the resource, and
(3) means, cooperative with the determining means and the selecting means and responsive to the memory READ command sent to the apparatus by the selected device, for sending to the selected device a response to the memory READ command when the determining means indicate that the resource may be accessed, to grant the selected device exclusive use of the resource.
22. A resource lock for a program controlled system which has a memory READ command and a memory WRITE command for reading and writing memory, respectively, by sending the command to memory, and which includes a plurality of devices for accessing resources, at least one resource coupled to the plurality of devices for access by the plurality of devices, and each of the plurality of devices having means for sending a memory READ command and a memory WRITE command and for awaiting a response to a sent one of a memory READ command and a memory WRITE command before continuing operation, the lock enabling the system to selectively treat the conventional memory READ or memory WRITE command either as a memory command or as a resource locking request, the lock comprising:
apparatus for coupling to the plurality of devices to control access to the at least one resource by the plurality of devices, including
(1) means, responsive to a request for access to a resource made by a device by sending one of the memory READ command and the memory WRITE command to the apparatus and awaiting a response before continuing operation that includes accessing the resource, for determining whether the resource may currently be accessed by a device,
(2) means, responsive to one or more of the one of the memory READ and the memory WRITE commands sent to the apparatus, for selecting for access to the resource a device requesting access to the resource, and
(3) means, cooperative with the determining means and the selecting means and responsive to the one of the memory READ and the memory WRITE commands sent to the apparatus by the selected device, for sending to the selected device a response to the one of the memory READ and the memory WRITE commands when the determining means indicate that the resource may be accessed, to grant the selected device exclusive use of the resource.
23. The lock of claim 21 or 22 further comprising:
means associated with the apparatus for preventing access to the resource by a requesting device when the determining means indicate that the resource may not be accessed.
24. The lock of claim 21 or 22 further comprising:
means associated with the apparatus for preventing access to the resource by a device not having the grant of access to the resource.
25. The lock of claim 21 or 22 further comprising:
means associated with the apparatus for counting the accesses by a device to the resource and for preventing further accesses by that device when the count exceeds a predetermined limit.
26. A resource lock for a program controlled system which has a memory READ command and a memory WRITE command for reading and writing memory, respectively, by sending the command to memory, and which includes a plurality of devices for using resources, at least one resource coupled to the plurality of devices for being shared by the devices, each of the plurality of devices having means for sending a memory READ command and a memory WRITE command and for causing the device to wait for a response to a sent memory READ command before continuing operation, the lock enabling the system to selectively treat the conventional memory READ and memory WRITE commands either as memory commands or as resource locking and unlocking requests, respectively, the lock comprising:
apparatus for coupling to the plurality of devices to limit concurrent use of the at least one resource by a plurality of the devices, including
(1) means for indicating the busy and free status of each of the at least one resource,
(2) means, responsive to receipt of a memory READ command identifying a resource, sent by a device to the apparatus to request exclusive use of the identified resource, for selecting for use of the identified resource one device requesting use of the identified resource,
(3) means, coupled to the indicating means and to the selecting means, for sending a response to the selected device when the indicating means indicate that the status of the identified resource is free status, to grant the selected device exclusive use of the identified resource,
(4) means, responsive to sending of the response by the means for sending a response, for causing the indicating means to indicate busy status for the identified resource, and
(5) means, responsive to receipt of a memory WRITE command identifying the resource, sent by the selected device to the apparatus to signal termination by the device of use of the identified resource, for causing the indicating means to indicate free status for the identified resource.
27. The lock of claim 26 wherein the apparatus further comprises:
means for preventing use of a resource by a device not having the grant of use of the resource.
28. The lock of claim 27 wherein the use preventing means comprise:
means for detecting attempted use of the resource by a device;
means responsive to the detecting means for determining whether the attempting device has the grant of use of the resource; and
means responsive to the grant determining means for signaling to the resource that the attempting device does not have the grant of use.
29. The lock of claim 26 wherein the apparatus further comprises:
means for counting the number of times a device uses the resource while having the grant of use, and for signaling to the resource when the count exceeds a predetermined limit.
30. The lock of claim 29, wherein the use of a resource includes a use of a first type and a use of a second type, and wherein the counting means only count the number of uses of the first type.
31. The lock of claim 26 wherein the plurality of devices include at least one processor.
32. The lock of claim 26 wherein the at least one shared resource includes a memory.
33. The lock of claim 32 wherein
a resource is identified to the apparatus by an address accompanying a memory READ command or a memory WRITE command, which address is associated by the apparatus with the resource, and
wherein the apparatus responds to devices, in response to READ and WRITE commands sent thereto, in like manner as the memory responds to devices, in response to memory READ and WRITE commands accompanied by memory addresses sent thereto for reading and writing the memory.
34. The lock of claim 26 wherein the status indicating means include:
at least one storage means, each associated with one resource for indicating the device having the grant of use of the associated resource.
35. The lock of claim 34 wherein the means for sending a response to the selected device include:
means for sending a signal to the selected device when the storage means associated with the identified resource indicate no device.
36. The lock of claim 26 wherein the device selecting means include:
at least one storage means, each associated with one resource for indicating the devices requesting use of the associated resource, and
means for selecting a device from devices indicated by the storage means associated with a resource for using the associated resource.
37. A resource lock for a program controlled system which has a memory READ command and a memory WRITE command for reading and writing memory, respectively, by sending the command to memory, and which includes a plurality of identifiable devices each including means for sending a memory READ command accompanied by an address and for causing the device to wait for a response to the sent READ command before continuing operation and each further including means for sending a memory WRITE command accompanied by an address, and a memory coupled to the plurality of devices for use by the plurality of devices, the lock enabling the system to selectively treat the conventional memory READ and memory WRITE commands either as memory commands or as resource locking and unlocking requests, respectively, the lock comprising:
an addressable apparatus for coupling to the plurality of devices and responsive to certain addresses reserved for memory in the system to limit concurrent use by a plurality of the devices of a set of memory portions comprising at least one portion of memory, including
(1) first means for association with a memory portion included in the set to identify a device having the right to concurrently use the memory portion,
(2) second means for association with the memory portion to identify devices requesting use of the memory portion,
(3) means, responsive to a sent memory READ command accompanied by a certain address, for causing the second means to identify the device that is sending the command and the certain address to request use of the memory portion,
(4) means, coupled to the second means, for selecting a device from devices identified by the second means,
(5) means for sending a response to the memory READ command of the selected device when the first means do not identify a device, to grant the selected device the right to currently exclusively use the memory portion,
(6) means, responsive to the response sent by the response-sending means to the selected device, for causing the first means to identify the selected device, and
(7) means, responsive to a sent memory WRITE command accompanied by the certain address, sent by the device identified by the first means to signal its termination of use of the memory portion, for causing the first means to cease identifying the device.
38. The lock of claim 37 further comprising:
third means for storing bounds of the memory portion;
means, responsive to sending of a memory READ or WRITE command accompanied by an address, for comparing the address accompanying the command against the bounds stored in the third means and for comparing identity of the device sending the command and address against identity of the device identified by the first means; and
means for signaling the memory when the comparing means indicate that the address lies within the bounds and that the compared identities are not the same.
39. The lock of claim 38 further comprising:
resettable count storage means associated with the memory portion;
means, responsive to sending of a memory WRITE command accompanied by an address, for updating the count storage means when the comparing means indicate that the address lies within the bounds and that the compared identities are the same;
means for signaling the memory when the count storage means reach a predetermined count; and
means, responsive to the response sent by the responding means to the selected device, for resetting the count storage means to an initial value.
40. The system of claim 37 wherein the plurality of devices include a plurality of processors.
US06/379,731 1982-05-19 1982-05-19 Shared resource locking apparatus Expired - Fee Related US4574350A (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
US06/379,731 US4574350A (en) 1982-05-19 1982-05-19 Shared resource locking apparatus
ES522470A ES8404072A1 (en) 1982-05-19 1983-05-17 Shared resource locking apparatus.
EP83302813A EP0094841A3 (en) 1982-05-19 1983-05-18 Shared resource locking apparatus
GB08313705A GB2121218A (en) 1982-05-19 1983-05-18 Shared resource locking apparatus
PCT/US1983/000749 WO1983004117A1 (en) 1982-05-19 1983-05-18 Shared resource locking apparatus
EP83901879A EP0110950A1 (en) 1982-05-19 1983-05-18 Shared resource locking apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/379,731 US4574350A (en) 1982-05-19 1982-05-19 Shared resource locking apparatus

Publications (1)

Publication Number Publication Date
US4574350A true US4574350A (en) 1986-03-04

Family

ID=23498451

Family Applications (1)

Application Number Title Priority Date Filing Date
US06/379,731 Expired - Fee Related US4574350A (en) 1982-05-19 1982-05-19 Shared resource locking apparatus

Country Status (5)

Country Link
US (1) US4574350A (en)
EP (2) EP0094841A3 (en)
ES (1) ES8404072A1 (en)
GB (1) GB2121218A (en)
WO (1) WO1983004117A1 (en)

Cited By (202)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4716528A (en) * 1986-02-03 1987-12-29 International Business Machines Corporation Method for managing lock escalation in a multiprocessing, multiprogramming environment
US4719569A (en) * 1985-10-11 1988-01-12 Sun Microsystems, Inc. Arbitrator for allocating access to data processing resources
US4858116A (en) * 1987-05-01 1989-08-15 Digital Equipment Corporation Method and apparatus for managing multiple lock indicators in a multiprocessor computer system
US4903196A (en) * 1986-05-02 1990-02-20 International Business Machines Corporation Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
US4922418A (en) * 1985-09-17 1990-05-01 The Johns Hopkins University Method for controlling propogation of data and transform through memory-linked wavefront array processor
US4933846A (en) * 1987-04-24 1990-06-12 Network Systems Corporation Network communications adapter with dual interleaved memory banks servicing multiple processors
US4937733A (en) * 1987-05-01 1990-06-26 Digital Equipment Corporation Method and apparatus for assuring adequate access to system resources by processors in a multiprocessor computer system
US4937736A (en) * 1987-11-30 1990-06-26 International Business Machines Corporation Memory controller for protected memory with automatic access granting capability
US4941083A (en) * 1987-05-01 1990-07-10 Digital Equipment Corporation Method and apparatus for initiating interlock read transactions on a multiprocessor computer system
US4949239A (en) * 1987-05-01 1990-08-14 Digital Equipment Corporation System for implementing multiple lock indicators on synchronous pended bus in multiprocessor computer system
US4965719A (en) * 1988-02-16 1990-10-23 International Business Machines Corporation Method for lock management, page coherency, and asynchronous writing of changed pages to shared external store in a distributed computing system
US4965718A (en) * 1988-09-29 1990-10-23 International Business Machines Corporation Data processing system incorporating a memory resident directive for synchronizing multiple tasks among plurality of processing elements by monitoring alternation of semaphore data
US4975870A (en) * 1988-02-25 1990-12-04 Data General Corporation Apparatus for locking a portion of a computer memory
US4975833A (en) * 1986-07-15 1990-12-04 Fujitsu Limited Multiprocessor system which only allows alternately accessing to shared memory upon receiving read and write request signals
US4984153A (en) * 1988-04-27 1991-01-08 Unisys Corporation Storage locking control for a plurality of processors which share a common storage unit
US4989178A (en) * 1985-10-11 1991-01-29 Omron Tateisi Electronics Co. Programmable controller having forcibly set or reset I/O states controlled by stored flags in a flag memory
US5003464A (en) * 1988-05-23 1991-03-26 Bell Communications Research, Inc. Methods and apparatus for efficient resource allocation
US5016167A (en) * 1987-12-21 1991-05-14 Amdahl Corporation Resource contention deadlock detection and prevention
US5027348A (en) * 1989-06-30 1991-06-25 Ncr Corporation Method and apparatus for dynamic data block length adjustment
US5029169A (en) * 1989-07-11 1991-07-02 Bell Communications Research, Inc. Methods and apparatus for fault detection
US5050072A (en) * 1988-06-17 1991-09-17 Modular Computer Systems, Inc. Semaphore memory to reduce common bus contention to global memory with localized semaphores in a multiprocessor system
US5115499A (en) * 1986-05-14 1992-05-19 Sequoia Systems, Inc. Shared computer resource allocation system having apparatus for informing a requesting computer of the identity and busy/idle status of shared resources by command code
US5129089A (en) * 1987-12-18 1992-07-07 Digital Equipment Corporation Distributed interlock apparatus and distributed interlock management method
US5142676A (en) * 1988-12-28 1992-08-25 Gte Laboratories Incorporated Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory
US5146565A (en) * 1986-07-18 1992-09-08 Intel Corporation I/O Control system having a plurality of access enabling bits for controlling access to selective ports of an I/O device
US5163144A (en) * 1988-03-25 1992-11-10 Nec Corporation System for releasing access status of an extended buffer memory from a deadlock state after a predetermined number of locked-out access requests
US5167022A (en) * 1988-10-25 1992-11-24 Hewlett-Packard Company Multiprocessor bus locking system with a winning processor broadcasting an ownership signal causing all processors to halt their requests
US5175829A (en) * 1988-10-25 1992-12-29 Hewlett-Packard Company Method and apparatus for bus lock during atomic computer operations
US5193179A (en) * 1988-08-09 1993-03-09 Harris Corporation Activity monitor system non-obtrusive statistical monitoring of operations on a shared bus of a multiprocessor system
US5193159A (en) * 1986-09-24 1993-03-09 Hitachi, Ltd. Microprocessor system
US5193188A (en) * 1989-01-05 1993-03-09 International Business Machines Corporation Centralized and distributed wait depth limited concurrency control methods and apparatus
US5202887A (en) * 1989-06-21 1993-04-13 Hitachi, Ltd. Access control method for shared duplex direct access storage device and computer system therefor
US5202971A (en) * 1987-02-13 1993-04-13 International Business Machines Corporation System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock
US5226159A (en) * 1989-05-15 1993-07-06 International Business Machines Corporation File lock management in a distributed data processing system
US5237694A (en) * 1991-05-30 1993-08-17 Advanced Micro Devices, Inc. Processing system and method including lock buffer for controlling exclusive critical problem accesses by each processor
US5261108A (en) * 1988-10-08 1993-11-09 Nec Corporation Multiprocessor communications register providing complete access in a full access mode, and mapped access in a partial access mode
US5263146A (en) * 1989-07-27 1993-11-16 Nec Corporation Multiprocessor system including an exclusive access controller with lock request holding and grant circuits
US5265245A (en) * 1989-04-17 1993-11-23 International Business Machines Corporation High concurrency in use manager
US5274823A (en) * 1992-03-31 1993-12-28 International Business Machines Corporation Interrupt handling serialization for process level programming
US5285528A (en) * 1991-02-22 1994-02-08 International Business Machines Corporation Data structures and algorithms for managing lock states of addressable element ranges
US5289588A (en) * 1990-04-24 1994-02-22 Advanced Micro Devices, Inc. Interlock acquisition for critical code section execution in a shared memory common-bus individually cached multiprocessor system
US5291581A (en) * 1987-07-01 1994-03-01 Digital Equipment Corporation Apparatus and method for synchronization of access to main memory signal groups in a multiprocessor data processing system
US5293491A (en) * 1990-12-28 1994-03-08 International Business Machines Corp. Data processing system and memory controller for lock semaphore operations
US5317749A (en) * 1992-09-25 1994-05-31 International Business Machines Corporation Method and apparatus for controlling access by a plurality of processors to a shared resource
US5333297A (en) * 1989-11-09 1994-07-26 International Business Machines Corporation Multiprocessor system having multiple classes of instructions for purposes of mutual interruptibility
US5339394A (en) * 1990-11-15 1994-08-16 International Business Machines Corporation I/O register protection circuit
US5339443A (en) * 1991-11-19 1994-08-16 Sun Microsystems, Inc. Arbitrating multiprocessor accesses to shared resources
US5341510A (en) * 1987-05-01 1994-08-23 Digital Equipment Corporation Commander node method and apparatus for assuring adequate access to system resources in a multiprocessor
US5341502A (en) * 1992-12-14 1994-08-23 Motorola, Inc. Device for assigning a shared resource in a data processing system
US5353414A (en) * 1989-06-30 1994-10-04 Nec Corporation Bus lock control apparatus capable of controlling without stopping bus arbiters
US5367695A (en) * 1991-09-27 1994-11-22 Sun Microsystems, Inc. Bus-to-bus interface for preventing data incoherence in a multiple processor computer system
US5377332A (en) * 1989-10-02 1994-12-27 Data General Corporation Bus arbitration algorithm and apparatus
US5377351A (en) * 1990-06-20 1994-12-27 Oki Electric Industry Co., Ltd. Device for controlling multiple transactions contending concurrently for the same resource in a distributed database system
US5392433A (en) * 1992-09-25 1995-02-21 International Business Machines Corporation Method and apparatus for intraprocess locking of a shared resource in a computer system
US5414856A (en) * 1990-07-10 1995-05-09 Canon Kabushiki Kaisha Multiprocessor shared resource management system implemented as a virtual task in one of the processors
US5416917A (en) * 1990-03-27 1995-05-16 International Business Machines Corporation Heterogenous database communication system in which communicating systems identify themselves and convert any requests/responses into their own data format
US5423044A (en) * 1992-06-16 1995-06-06 International Business Machines Corporation Shared, distributed lock manager for loosely coupled processing systems
US5428796A (en) * 1992-08-26 1995-06-27 International Business Machines Corporation System and method for regulating access to direct access storage devices in data processing systems
US5432929A (en) * 1992-09-09 1995-07-11 International Business Machines Corporation Storage subsystem having a modifiable key-lock
US5438680A (en) * 1988-04-29 1995-08-01 Intellectual Properties And Technology, Inc. Method and apparatus for enhancing concurrency in a parallel digital computer
US5440746A (en) * 1992-11-06 1995-08-08 Seiko Epson Corporation System and method for synchronizing processors in a parallel processing environment
US5442755A (en) * 1989-12-25 1995-08-15 Hitachi, Ltd. Multi-processor system with lock address register in each processor for storing lock address sent to bus by another processor
US5444855A (en) * 1992-04-17 1995-08-22 International Business Machines Corporation System for guaranteed CPU bus access by I/O devices monitoring separately predetermined distinct maximum non CPU bus activity and inhibiting I/O devices thereof
US5446862A (en) * 1990-02-23 1995-08-29 Mitsubishi Denki Kabushiki Kaisha System and method for granting or preventing atomic or nonatomic memory access requests to shared memory regions
US5463741A (en) * 1990-09-13 1995-10-31 International Business Machines Corporation Duplicated logic and interconnection system for arbitration among multiple information processors
US5463739A (en) * 1992-12-22 1995-10-31 International Business Machines Corporation Apparatus for vetoing reallocation requests during a data transfer based on data bus latency and the number of received reallocation requests below a threshold
US5469575A (en) * 1992-10-16 1995-11-21 International Business Machines Corporation Determining a winner of a race in a data processing system
US5469571A (en) * 1991-07-15 1995-11-21 Lynx Real-Time Systems, Inc. Operating system architecture using multiple priority light weight kernel task based interrupt handling
US5471590A (en) * 1994-01-28 1995-11-28 Compaq Computer Corp. Bus master arbitration circuitry having improved prioritization
US5499356A (en) * 1989-12-29 1996-03-12 Cray Research, Inc. Method and apparatus for a multiprocessor resource lockout instruction
US5502840A (en) * 1991-01-18 1996-03-26 Ncr Corporation Method and apparatus for advising a requesting process of a contention scheme to employ to access a shared resource
US5504911A (en) * 1988-01-05 1996-04-02 Texas Instruments Incorporated Bus system servicing plural module requestors with module access identification
US5511179A (en) * 1990-04-20 1996-04-23 Chai-I; Fang Method for interrupting one computer by another utilizing interrupt and lock bytes
US5526524A (en) * 1993-12-23 1996-06-11 International Business Machines Corporation Method and system for management of locked objects in a computer supported cooperative work environment
US5581709A (en) * 1995-03-15 1996-12-03 Mitsubishi Denki Kabushiki Kaisha Multiple computer system using I/O port adaptor to selectively route transaction packets to host or shared I/O device
WO1996041269A1 (en) * 1995-06-07 1996-12-19 Emulex Corporation Burst-broadcasting on a peripheral component interconnect bus
US5592673A (en) * 1991-02-27 1997-01-07 Kabushiki Kaisha Toshiba Loosely coupled compound computer system using lock and semaphore mechanism for performing exclusive control of shared resource which is accessed through a distinct bus
US5615374A (en) * 1992-09-25 1997-03-25 Fujitsu Limited Lock control method for resource
US5619671A (en) * 1993-04-19 1997-04-08 International Business Machines Corporation Method and apparatus for providing token controlled access to protected pages of memory
US5628023A (en) * 1993-04-19 1997-05-06 International Business Machines Corporation Virtual storage computer system having methods and apparatus for providing token-controlled access to protected pages of memory via a token-accessible view
US5649106A (en) * 1991-03-14 1997-07-15 Mitsubishi Denki Kabushiki Kaisha Parallel computer with reconstruction of processor clusters
US5649184A (en) * 1989-03-20 1997-07-15 Fujitsu Limited Symmetric/asymmetric shared processing operation in a tightly coupled multiprocessor
US5669002A (en) * 1990-06-28 1997-09-16 Digital Equipment Corp. Multi-processor resource locking mechanism with a lock register corresponding to each resource stored in common memory
US5678024A (en) * 1995-05-08 1997-10-14 International Business Machines Corporation Method and system for dynamic performance resource management within a computer based system
US5701434A (en) * 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
US5794241A (en) * 1996-04-08 1998-08-11 Oracle Corporation Method and apparatus for dynamically disabling and enabling table locking for a database
US5805917A (en) * 1994-06-14 1998-09-08 Nec Corporation Parallel processing system with a plurality of communication register modules
US5872981A (en) * 1997-05-30 1999-02-16 Oracle Corporation Method for managing termination of a lock-holding process using a waiting lock
US5875342A (en) * 1997-06-03 1999-02-23 International Business Machines Corporation User programmable interrupt mask with timeout
US5903763A (en) * 1993-03-26 1999-05-11 Fujitsu Limited Method of recovering exclusive control instruction and multi-processor system using the same
US5937199A (en) * 1997-06-03 1999-08-10 International Business Machines Corporation User programmable interrupt mask with timeout for enhanced resource locking efficiency
US5983225A (en) * 1998-01-26 1999-11-09 Telenor As Parameterized lock management system and method for conditional conflict serializability of transactions
US6026401A (en) * 1997-10-14 2000-02-15 International Business Machines Corporation Locking tool data objects in a framework environment
FR2784478A1 (en) * 1998-10-09 2000-04-14 Bull Sa Lock architecture for resource access control in large computer system
US6105085A (en) * 1997-12-26 2000-08-15 Emc Corporation Lock mechanism for shared resources having associated data structure stored in common memory include a lock portion and a reserve portion
US6108757A (en) * 1997-02-28 2000-08-22 Lucent Technologies Inc. Method for locking a shared resource in multiprocessor system
US6173375B1 (en) * 1997-02-28 2001-01-09 Lucent Technologies Inc. Method for accessing a shared resource in a multiprocessor system
US6192441B1 (en) * 1995-08-03 2001-02-20 Sgs-Thomson Microelectronics S.A. Apparatus for postponing processing of interrupts by a microprocessor
US6247025B1 (en) 1997-07-17 2001-06-12 International Business Machines Corporation Locking and unlocking mechanism for controlling concurrent access to objects
US20020016879A1 (en) * 2000-07-26 2002-02-07 Miller Chris D. Resource locking and thread synchronization in a multiprocessor environment
US6446149B1 (en) * 1998-03-03 2002-09-03 Compaq Information Technologies Group, L.P. Self-modifying synchronization memory address space and protocol for communication between multiple busmasters of a computer system
US6542891B1 (en) * 1999-01-29 2003-04-01 International Business Machines Corporation Safe strength reduction for Java synchronized procedures
US20030100957A1 (en) * 2001-11-27 2003-05-29 Chaffee Michael C. System controlling exclusive access by control programs to system resources
US20030149820A1 (en) * 2002-02-04 2003-08-07 Nokia Corporation Hardware semaphore intended for a multi-processor system
US20040076486A1 (en) * 2002-10-17 2004-04-22 Alfred Horisberger Clamping device for elongated workpieces
US20040122995A1 (en) * 2002-12-19 2004-06-24 Intel Corporation Mechanism to guarantee forward progress for incoming coherent input/output (I/O) transactions for caching I/O agent on address conflict with processor transactions
US20040268114A1 (en) * 2003-06-30 2004-12-30 Ricoh Company, Ltd. Electronic apparatus and parameter updating method
US6842813B1 (en) 2000-06-12 2005-01-11 Intel Corporation Method and apparatus for single wire signaling of request types in a computer system having a point to point half duplex interconnect
US6877052B1 (en) * 2000-09-29 2005-04-05 Intel Corporation System and method for improved half-duplex bus performance
US20060026598A1 (en) * 2004-07-29 2006-02-02 International Business Machines Corporation Resource allocation management
US20060048158A1 (en) * 2004-07-29 2006-03-02 International Business Machines Corporation Methods and apparatus for aging a command
US20060143416A1 (en) * 2004-12-28 2006-06-29 Fujitsu Limited Multiprocessor system with high-speed exclusive control
US20060174169A1 (en) * 2005-01-28 2006-08-03 Sony Computer Entertainment Inc. IO direct memory access system and method
US20060179198A1 (en) * 2005-02-04 2006-08-10 Sony Computer Entertainment Inc. Micro interrupt handler
US20060200610A1 (en) * 2005-02-04 2006-09-07 Sony Computer Entertainment Inc. System and method of interrupt handling
US20060218411A1 (en) * 2003-09-02 2006-09-28 Sturla Lutnaes Transfer of security data between two memories
US7174406B1 (en) * 2003-12-16 2007-02-06 Emc Corporation System and method for arbitrating access to a shared resource
US20070124554A1 (en) * 2005-10-28 2007-05-31 Honeywell International Inc. Global memory for a rapidio network
US20070150899A1 (en) * 2005-12-27 2007-06-28 Mitsubishi Denki Kabushiki Kaisha Semaphore management method and computer product
US20070168423A1 (en) * 2006-01-18 2007-07-19 Kum-Rye Park Video conferencing using white board
CN1331053C (en) * 2004-02-12 2007-08-08 华为技术有限公司 Flag register and method for avoiding resource access conflict between multiple processes
US20070261053A1 (en) * 2006-05-06 2007-11-08 Portal Player, Inc. System for multi threaded multi processor sharing of asynchronous hardware units
US20070288587A1 (en) * 2006-06-12 2007-12-13 Aguilera Marcos K Transactional shared memory system and method of control
US7328263B1 (en) * 2001-01-30 2008-02-05 Cisco Technology, Inc. Controlling access of concurrent users of computer resources in a distributed system using an improved semaphore counting approach
US20080155679A1 (en) * 2006-12-05 2008-06-26 Julien Sebot Mitigating Branch Prediction and Other Timing Based Side Channel Attacks
US20080189510A1 (en) * 2004-09-09 2008-08-07 David Riddoch Dynamic Resource Allocation
US20080201777A1 (en) * 1998-03-02 2008-08-21 Doron Elgressy Method and Agent for the Protection Against the Unauthorized Use of Computer Resources
US20090077291A1 (en) * 2003-10-09 2009-03-19 Freescale Semiconductor, Inc. Communication steering for use in a multi-master shared resource system
US7530106B1 (en) 2008-07-02 2009-05-05 Kaspersky Lab, Zao System and method for security rating of computer processes
US20090198920A1 (en) * 2008-02-01 2009-08-06 Arimilli Lakshminarayana B Processing Units Within a Multiprocessor System Adapted to Support Memory Locks
US20090240860A1 (en) * 2008-03-24 2009-09-24 Coon Brett W Lock Mechanism to Enable Atomic Updates to Shared Memory
US20090254995A1 (en) * 2008-04-03 2009-10-08 Microsoft Corporation Client controlled lock for electronic devices
US20100250867A1 (en) * 2009-03-30 2010-09-30 The Boeing Company Computer architectures using shared storage
US20100306432A1 (en) * 2009-05-27 2010-12-02 International Business Machines Corporation Computer-implemented multi-resource shared lock
US20110239308A1 (en) * 2010-03-29 2011-09-29 Motorola, Inc. System and method of vetting data
US20110302137A1 (en) * 2010-06-08 2011-12-08 Dell Products L.P. Systems and methods for improving storage efficiency in an information handling system
US8566298B1 (en) * 2005-07-28 2013-10-22 Symantec Operating Corporation Method and apparatus for sharing resource locks amongst applications
US20130290286A1 (en) * 2012-04-27 2013-10-31 Huawei Technologies Co., Ltd. Method, apparatus, and system for operating shared resource in asynchronous multiprocessing system
US8737431B2 (en) 2004-04-21 2014-05-27 Solarflare Communications, Inc. Checking data integrity
US9063771B2 (en) 2005-03-10 2015-06-23 Solarflare Communications, Inc. User-level re-initialization instruction interception
US9098462B1 (en) * 2010-09-14 2015-08-04 The Boeing Company Communications via shared memory
US20150370721A1 (en) * 2013-01-31 2015-12-24 Hewlett-Packard Development Company, L.P. Mapping mechanism for large shared address spaces
US9552225B2 (en) 2005-03-15 2017-01-24 Solarflare Communications, Inc. Data processing system with data transmit capability
US9729436B2 (en) 2005-03-30 2017-08-08 Solarflare Communications, Inc. Data processing system with routing tables
US10015104B2 (en) 2005-12-28 2018-07-03 Solarflare Communications, Inc. Processing received data
US10417056B2 (en) 2015-08-04 2019-09-17 Oracle International Corporation Systems and methods for performing concurrency restriction and throttling over contended locks
US10565024B2 (en) 2016-10-19 2020-02-18 Oracle International Corporation Generic concurrency restriction
US11216301B2 (en) * 2016-04-12 2022-01-04 Telefonaktiebolaget Lm Ericsson (Publ) Process scheduling in a processing system having at least one processor and shared hardware resources
US11403377B2 (en) 2016-06-10 2022-08-02 OneTrust, LLC Privacy management systems and methods
US11416590B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11416589B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11418516B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Consent conversion optimization systems and related methods
US11418492B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US11416636B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing consent management systems and related methods
US11416109B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US11436373B2 (en) 2020-09-15 2022-09-06 OneTrust, LLC Data processing systems and methods for detecting tools for the automatic blocking of consent requests
US11438386B2 (en) 2016-06-10 2022-09-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US20220286462A1 (en) * 2021-03-08 2022-09-08 OneTrust, LLC Data transfer discovery and analysis systems and related methods
US11442906B2 (en) 2021-02-04 2022-09-13 OneTrust, LLC Managing custom attributes for domain objects defined within microservices
US11449633B2 (en) 2016-06-10 2022-09-20 OneTrust, LLC Data processing systems and methods for automatic discovery and assessment of mobile software development kits
US11461500B2 (en) 2016-06-10 2022-10-04 OneTrust, LLC Data processing systems for cookie compliance testing with website scanning and related methods
US11468196B2 (en) 2016-06-10 2022-10-11 OneTrust, LLC Data processing systems for validating authorization for personal data collection, storage, and processing
US11468386B2 (en) 2016-06-10 2022-10-11 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US11475136B2 (en) 2016-06-10 2022-10-18 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11475165B2 (en) 2020-08-06 2022-10-18 OneTrust, LLC Data processing systems and methods for automatically redacting unstructured data from a data subject access request
US11481710B2 (en) 2016-06-10 2022-10-25 OneTrust, LLC Privacy management systems and methods
US11488085B2 (en) 2016-06-10 2022-11-01 OneTrust, LLC Questionnaire response automation for compliance management
US11494515B2 (en) 2021-02-08 2022-11-08 OneTrust, LLC Data processing systems and methods for anonymizing data samples in classification analysis
US11520928B2 (en) 2016-06-10 2022-12-06 OneTrust, LLC Data processing systems for generating personal data receipts and related methods
US11526624B2 (en) 2020-09-21 2022-12-13 OneTrust, LLC Data processing systems and methods for automatically detecting target data transfers and target data processing
US11544405B2 (en) 2016-06-10 2023-01-03 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11544409B2 (en) 2018-09-07 2023-01-03 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11546661B2 (en) 2021-02-18 2023-01-03 OneTrust, LLC Selective redaction of media content
US11544667B2 (en) 2016-06-10 2023-01-03 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11550897B2 (en) 2016-06-10 2023-01-10 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11556672B2 (en) 2016-06-10 2023-01-17 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11558429B2 (en) 2016-06-10 2023-01-17 OneTrust, LLC Data processing and scanning systems for generating and populating a data inventory
US11562097B2 (en) 2016-06-10 2023-01-24 OneTrust, LLC Data processing systems for central consent repository and related methods
US11562078B2 (en) 2021-04-16 2023-01-24 OneTrust, LLC Assessing and managing computational risk involved with integrating third party computing functionality within a computing system
US11586762B2 (en) 2016-06-10 2023-02-21 OneTrust, LLC Data processing systems and methods for auditing data request compliance
US11586700B2 (en) 2016-06-10 2023-02-21 OneTrust, LLC Data processing systems and methods for automatically blocking the use of tracking tools
US11593523B2 (en) 2018-09-07 2023-02-28 OneTrust, LLC Data processing systems for orphaned data identification and deletion and related methods
US11601464B2 (en) 2021-02-10 2023-03-07 OneTrust, LLC Systems and methods for mitigating risks of third-party computing system functionality integration into a first-party computing system
US11609939B2 (en) 2016-06-10 2023-03-21 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US11615192B2 (en) 2020-11-06 2023-03-28 OneTrust, LLC Systems and methods for identifying data processing activities based on data discovery results
US11620142B1 (en) 2022-06-03 2023-04-04 OneTrust, LLC Generating and customizing user interfaces for demonstrating functions of interactive user environments
DE112006002237B4 (en) 2005-08-23 2023-04-06 Advanced Micro Devices, Inc. Method for self-initiating synchronization in a computer system
US11625502B2 (en) 2016-06-10 2023-04-11 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US11636171B2 (en) 2016-06-10 2023-04-25 OneTrust, LLC Data processing user interface monitoring systems and related methods
US11645353B2 (en) 2016-06-10 2023-05-09 OneTrust, LLC Data processing consent capture systems and related methods
US11645418B2 (en) 2016-06-10 2023-05-09 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US11651106B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11651402B2 (en) 2016-04-01 2023-05-16 OneTrust, LLC Data processing systems and communication systems and methods for the efficient generation of risk assessments
US11651104B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Consent receipt management systems and related methods
US11663359B2 (en) 2017-06-16 2023-05-30 OneTrust, LLC Data processing systems for identifying whether cookies contain personally identifying information
US11675929B2 (en) 2016-06-10 2023-06-13 OneTrust, LLC Data processing consent sharing systems and related methods
US11687528B2 (en) 2021-01-25 2023-06-27 OneTrust, LLC Systems and methods for discovery, classification, and indexing of data in a native computing system
US11727141B2 (en) 2016-06-10 2023-08-15 OneTrust, LLC Data processing systems and methods for synching privacy-related user consent across multiple computing devices
US11775348B2 (en) 2021-02-17 2023-10-03 OneTrust, LLC Managing custom workflows for domain objects defined within microservices
US11797528B2 (en) 2020-07-08 2023-10-24 OneTrust, LLC Systems and methods for targeted data discovery
US11921894B2 (en) 2016-06-10 2024-03-05 OneTrust, LLC Data processing systems for generating and populating a data inventory for processing data access requests
US11960564B2 (en) 2023-02-02 2024-04-16 OneTrust, LLC Data processing systems and methods for automatically blocking the use of tracking tools

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4709326A (en) * 1984-06-29 1987-11-24 International Business Machines Corporation General locking/synchronization facility with canonical states and mapping of processors
ATE40246T1 (en) * 1984-08-16 1989-02-15 Siemens Ag METHOD AND ARRANGEMENT FOR CONTROLLING ACCESS TO A GROUP OF SHARING EQUIPMENT AS POOL ELEMENTS IN A DATA PROCESSING OR COMMUNICATION SYSTEM.
DE3537115A1 (en) * 1985-10-18 1987-05-27 Standard Elektrik Lorenz Ag METHOD FOR OPERATING A DEVICE WITH TWO INDEPENDENT COMMAND INPUTS AND DEVICE WORKING ACCORDING TO THIS METHOD
US4794515A (en) * 1986-01-17 1988-12-27 International Business Machines Corporation Protection of data in a multiprogramming data processing system
JPH01113849A (en) * 1987-10-19 1989-05-02 Internatl Business Mach Corp <Ibm> Multi-user's system
EP0321694B1 (en) * 1987-12-21 1995-06-07 Bull HN Information Systems Inc. Method for a Data processing system using incompatible central processing unit/operating system combinations
US5027271A (en) * 1987-12-21 1991-06-25 Bull Hn Information Systems Inc. Apparatus and method for alterable resource partitioning enforcement in a data processing system having central processing units using different operating systems
NZ226733A (en) * 1987-12-21 1990-05-28 Honeywell Bull Coupling incompatible cpu to data processing system
DE68913629T2 (en) * 1988-03-14 1994-06-16 Unisys Corp BLOCK LOCKING PROCESSOR FOR MULTIPLE PROCESSING DATA SYSTEM.
JPH02306355A (en) * 1988-10-25 1990-12-19 Apollo Computer Inc Bus lock system
US5524255A (en) * 1989-12-29 1996-06-04 Cray Research, Inc. Method and apparatus for accessing global registers in a multiprocessor system
US5434970A (en) * 1991-02-14 1995-07-18 Cray Research, Inc. System for distributed multiprocessor communication
FI91456C (en) * 1992-07-29 1994-06-27 Nokia Telecommunications Oy A method for managing the resources allocated on a computer
US5613139A (en) * 1994-05-11 1997-03-18 International Business Machines Corporation Hardware implemented locking mechanism for handling both single and plural lock requests in a lock message
CA2181009C (en) * 1996-07-11 1999-09-07 Paul Erb Multiple owner resource management
IE960753A1 (en) * 1996-10-29 1998-05-06 Sportables Limited A method and apparatus for controlling access by two¹computer processors to a shared resource
US6360303B1 (en) * 1997-09-30 2002-03-19 Compaq Computer Corporation Partitioning memory shared by multiple processors of a distributed processing system
US5964838A (en) * 1997-09-30 1999-10-12 Tandem Computers Incorporated Method for sequential and consistent startup and/or reload of multiple processor nodes in a multiple node cluster

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3683418A (en) * 1970-04-16 1972-08-08 Bell Telephone Labor Inc Method of protecting data in a multiprocessor computer system
US3825903A (en) * 1973-04-30 1974-07-23 Ibm Automatic switching of storage protect keys
US3827029A (en) * 1972-09-25 1974-07-30 Westinghouse Electric Corp Memory and program protection system for a digital computer system
US4099243A (en) * 1977-01-18 1978-07-04 Honeywell Information Systems Inc. Memory block protection apparatus
US4162529A (en) * 1975-12-04 1979-07-24 Tokyo Shibaura Electric Co., Ltd. Interruption control system in a multiprocessing system
US4189766A (en) * 1977-05-27 1980-02-19 Nippon Telegraph And Telephone Public Corporation Racing circuit for controlling access of processor units to a common device
US4214304A (en) * 1977-10-28 1980-07-22 Hitachi, Ltd. Multiprogrammed data processing system with improved interlock control
US4399504A (en) * 1980-10-06 1983-08-16 International Business Machines Corporation Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment
US4435766A (en) * 1981-06-16 1984-03-06 International Business Machines Corporation Nested resource control using locking and unlocking routines with use counter for plural processes
US4480307A (en) * 1982-01-04 1984-10-30 Intel Corporation Interface for use between a memory and components of a module switching apparatus
US4488217A (en) * 1979-03-12 1984-12-11 Digital Equipment Corporation Data processing system with lock-unlock instruction facility

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4320502A (en) * 1978-02-22 1982-03-16 International Business Machines Corp. Distributed priority resolution system
FR2462745B1 (en) * 1979-07-30 1986-01-03 Jeumont Schneider DEVICE FOR TEMPORAL SHARING OF ACCESS TO A MEMORY CONNECTED TO A SINGLE BUS BETWEEN A CENTRAL COMPUTER AND A PLURALITY OF PERIPHERAL COMPUTERS
IT1126474B (en) * 1979-12-03 1986-05-21 Honeywell Inf Systems APPARATUS FOR ACCESS TO COMMON MEMORY RESOURCES BY MULTIPLE PROCESSORS INTERCONNECTED VIA A COMMON BUS
US4387425A (en) * 1980-05-19 1983-06-07 Data General Corporation Masterless and contentionless computer network
FR2504507A1 (en) * 1981-04-27 1982-10-29 Manutention Stockage Cie DEVICE FOR DRIVING, IN A PROGRESSIVE MOTION, OF A GUIDED MEMBER ON STRAIGHT TRACKS, PARTICULARLY SUITABLE FOR DRIVING TELESCOPIC FORKS OF HANDLING TROLLEYS
DE3118818C2 (en) * 1981-05-12 1984-12-20 Siemens AG, 1000 Berlin und 8000 München Method and circuit arrangement for transmitting a request from a processor to a memory module in a multiprocessor system with a plurality of memory modules

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3683418A (en) * 1970-04-16 1972-08-08 Bell Telephone Labor Inc Method of protecting data in a multiprocessor computer system
US3827029A (en) * 1972-09-25 1974-07-30 Westinghouse Electric Corp Memory and program protection system for a digital computer system
US3825903A (en) * 1973-04-30 1974-07-23 Ibm Automatic switching of storage protect keys
US4162529A (en) * 1975-12-04 1979-07-24 Tokyo Shibaura Electric Co., Ltd. Interruption control system in a multiprocessing system
US4099243A (en) * 1977-01-18 1978-07-04 Honeywell Information Systems Inc. Memory block protection apparatus
US4189766A (en) * 1977-05-27 1980-02-19 Nippon Telegraph And Telephone Public Corporation Racing circuit for controlling access of processor units to a common device
US4214304A (en) * 1977-10-28 1980-07-22 Hitachi, Ltd. Multiprogrammed data processing system with improved interlock control
US4488217A (en) * 1979-03-12 1984-12-11 Digital Equipment Corporation Data processing system with lock-unlock instruction facility
US4399504A (en) * 1980-10-06 1983-08-16 International Business Machines Corporation Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment
US4435766A (en) * 1981-06-16 1984-03-06 International Business Machines Corporation Nested resource control using locking and unlocking routines with use counter for plural processes
US4480307A (en) * 1982-01-04 1984-10-30 Intel Corporation Interface for use between a memory and components of a module switching apparatus

Non-Patent Citations (10)

* Cited by examiner, † Cited by third party
Title
A. N. Chandra et al., "Communication Protocol for Deadlock Detection in Computer Networks", IBM Technical Disclosure Bulletin, vol. 16, No. 10, pp. 3471-3481, (Mar. 1974).
A. N. Chandra et al., Communication Protocol for Deadlock Detection in Computer Networks , IBM Technical Disclosure Bulletin, vol. 16, No. 10, pp. 3471 3481, (Mar. 1974). *
Intel Corporation, "Multiprocessing Extensions for the RMX180™ Real-Time Executive", Application Note AP-88, pp. 4-6, (1980).
Intel Corporation, Multiprocessing Extensions for the RMX180 Real Time Executive , Application Note AP 88, pp. 4 6, (1980). *
J. A. Corso et al., "Task Assignment for Multiple-Processor System" IBM Technical Disclosure Bulletin, vol. 23, No. 11, pp. 5084-5085, (Apr. 1981).
J. A. Corso et al., Task Assignment for Multiple Processor System IBM Technical Disclosure Bulletin, vol. 23, No. 11, pp. 5084 5085, (Apr. 1981). *
V. Marathe, Performance Evaluation at the Hardware Architecture Level and the Operating System Kernel Design Level, pp. 63 69, Ph.D. Dissertation, Carnegie Mellon University (1978). *
V. Marathe, Performance Evaluation at the Hardware Architecture Level and the Operating System Kernel Design Level, pp. 63-69, Ph.D. Dissertation, Carnegie-Mellon University (1978).
W. A. Wulf, R. Levin, S. P. Harbison, Hydra/C.mmp An Experimental Computer System, pp. 171 184, (1981). *
W. A. Wulf, R. Levin, S. P. Harbison, Hydra/C.mmp An Experimental Computer System, pp. 171-184, (1981).

Cited By (258)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4922418A (en) * 1985-09-17 1990-05-01 The Johns Hopkins University Method for controlling propogation of data and transform through memory-linked wavefront array processor
US4719569A (en) * 1985-10-11 1988-01-12 Sun Microsystems, Inc. Arbitrator for allocating access to data processing resources
US4989178A (en) * 1985-10-11 1991-01-29 Omron Tateisi Electronics Co. Programmable controller having forcibly set or reset I/O states controlled by stored flags in a flag memory
US4716528A (en) * 1986-02-03 1987-12-29 International Business Machines Corporation Method for managing lock escalation in a multiprocessing, multiprogramming environment
US4903196A (en) * 1986-05-02 1990-02-20 International Business Machines Corporation Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
US5115499A (en) * 1986-05-14 1992-05-19 Sequoia Systems, Inc. Shared computer resource allocation system having apparatus for informing a requesting computer of the identity and busy/idle status of shared resources by command code
US4975833A (en) * 1986-07-15 1990-12-04 Fujitsu Limited Multiprocessor system which only allows alternately accessing to shared memory upon receiving read and write request signals
US5146565A (en) * 1986-07-18 1992-09-08 Intel Corporation I/O Control system having a plurality of access enabling bits for controlling access to selective ports of an I/O device
US5193159A (en) * 1986-09-24 1993-03-09 Hitachi, Ltd. Microprocessor system
US5202971A (en) * 1987-02-13 1993-04-13 International Business Machines Corporation System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock
US4933846A (en) * 1987-04-24 1990-06-12 Network Systems Corporation Network communications adapter with dual interleaved memory banks servicing multiple processors
US4937733A (en) * 1987-05-01 1990-06-26 Digital Equipment Corporation Method and apparatus for assuring adequate access to system resources by processors in a multiprocessor computer system
US5341510A (en) * 1987-05-01 1994-08-23 Digital Equipment Corporation Commander node method and apparatus for assuring adequate access to system resources in a multiprocessor
US5068781A (en) * 1987-05-01 1991-11-26 Digital Equipment Corporation Method and apparatus for managing multiple lock indicators in a multiprocessor computer system
US4949239A (en) * 1987-05-01 1990-08-14 Digital Equipment Corporation System for implementing multiple lock indicators on synchronous pended bus in multiprocessor computer system
US4941083A (en) * 1987-05-01 1990-07-10 Digital Equipment Corporation Method and apparatus for initiating interlock read transactions on a multiprocessor computer system
US4858116A (en) * 1987-05-01 1989-08-15 Digital Equipment Corporation Method and apparatus for managing multiple lock indicators in a multiprocessor computer system
US5291581A (en) * 1987-07-01 1994-03-01 Digital Equipment Corporation Apparatus and method for synchronization of access to main memory signal groups in a multiprocessor data processing system
US4937736A (en) * 1987-11-30 1990-06-26 International Business Machines Corporation Memory controller for protected memory with automatic access granting capability
US5129089A (en) * 1987-12-18 1992-07-07 Digital Equipment Corporation Distributed interlock apparatus and distributed interlock management method
US5016167A (en) * 1987-12-21 1991-05-14 Amdahl Corporation Resource contention deadlock detection and prevention
US5504911A (en) * 1988-01-05 1996-04-02 Texas Instruments Incorporated Bus system servicing plural module requestors with module access identification
US4965719A (en) * 1988-02-16 1990-10-23 International Business Machines Corporation Method for lock management, page coherency, and asynchronous writing of changed pages to shared external store in a distributed computing system
US4975870A (en) * 1988-02-25 1990-12-04 Data General Corporation Apparatus for locking a portion of a computer memory
US5163144A (en) * 1988-03-25 1992-11-10 Nec Corporation System for releasing access status of an extended buffer memory from a deadlock state after a predetermined number of locked-out access requests
US4984153A (en) * 1988-04-27 1991-01-08 Unisys Corporation Storage locking control for a plurality of processors which share a common storage unit
US5438680A (en) * 1988-04-29 1995-08-01 Intellectual Properties And Technology, Inc. Method and apparatus for enhancing concurrency in a parallel digital computer
US5003464A (en) * 1988-05-23 1991-03-26 Bell Communications Research, Inc. Methods and apparatus for efficient resource allocation
US5050072A (en) * 1988-06-17 1991-09-17 Modular Computer Systems, Inc. Semaphore memory to reduce common bus contention to global memory with localized semaphores in a multiprocessor system
US5193179A (en) * 1988-08-09 1993-03-09 Harris Corporation Activity monitor system non-obtrusive statistical monitoring of operations on a shared bus of a multiprocessor system
US4965718A (en) * 1988-09-29 1990-10-23 International Business Machines Corporation Data processing system incorporating a memory resident directive for synchronizing multiple tasks among plurality of processing elements by monitoring alternation of semaphore data
US5261108A (en) * 1988-10-08 1993-11-09 Nec Corporation Multiprocessor communications register providing complete access in a full access mode, and mapped access in a partial access mode
US5175829A (en) * 1988-10-25 1992-12-29 Hewlett-Packard Company Method and apparatus for bus lock during atomic computer operations
US5167022A (en) * 1988-10-25 1992-11-24 Hewlett-Packard Company Multiprocessor bus locking system with a winning processor broadcasting an ownership signal causing all processors to halt their requests
US5142676A (en) * 1988-12-28 1992-08-25 Gte Laboratories Incorporated Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory
US5193188A (en) * 1989-01-05 1993-03-09 International Business Machines Corporation Centralized and distributed wait depth limited concurrency control methods and apparatus
US5649184A (en) * 1989-03-20 1997-07-15 Fujitsu Limited Symmetric/asymmetric shared processing operation in a tightly coupled multiprocessor
US5265245A (en) * 1989-04-17 1993-11-23 International Business Machines Corporation High concurrency in use manager
US5226159A (en) * 1989-05-15 1993-07-06 International Business Machines Corporation File lock management in a distributed data processing system
US5537645A (en) * 1989-05-15 1996-07-16 International Business Machines Corporation File lock management in a distributed data processing system
US5202887A (en) * 1989-06-21 1993-04-13 Hitachi, Ltd. Access control method for shared duplex direct access storage device and computer system therefor
US5353414A (en) * 1989-06-30 1994-10-04 Nec Corporation Bus lock control apparatus capable of controlling without stopping bus arbiters
US5027348A (en) * 1989-06-30 1991-06-25 Ncr Corporation Method and apparatus for dynamic data block length adjustment
US5029169A (en) * 1989-07-11 1991-07-02 Bell Communications Research, Inc. Methods and apparatus for fault detection
US5263146A (en) * 1989-07-27 1993-11-16 Nec Corporation Multiprocessor system including an exclusive access controller with lock request holding and grant circuits
US5377332A (en) * 1989-10-02 1994-12-27 Data General Corporation Bus arbitration algorithm and apparatus
US5333297A (en) * 1989-11-09 1994-07-26 International Business Machines Corporation Multiprocessor system having multiple classes of instructions for purposes of mutual interruptibility
US5442755A (en) * 1989-12-25 1995-08-15 Hitachi, Ltd. Multi-processor system with lock address register in each processor for storing lock address sent to bus by another processor
US5499356A (en) * 1989-12-29 1996-03-12 Cray Research, Inc. Method and apparatus for a multiprocessor resource lockout instruction
US5579505A (en) * 1990-02-23 1996-11-26 Mitsubishi Denki Kabushiki Kaisha Memory access system and method for granting or preventing atomic or nonatomic memory access requests to shared memory regions
US5446862A (en) * 1990-02-23 1995-08-29 Mitsubishi Denki Kabushiki Kaisha System and method for granting or preventing atomic or nonatomic memory access requests to shared memory regions
US5416917A (en) * 1990-03-27 1995-05-16 International Business Machines Corporation Heterogenous database communication system in which communicating systems identify themselves and convert any requests/responses into their own data format
US5511179A (en) * 1990-04-20 1996-04-23 Chai-I; Fang Method for interrupting one computer by another utilizing interrupt and lock bytes
US5289588A (en) * 1990-04-24 1994-02-22 Advanced Micro Devices, Inc. Interlock acquisition for critical code section execution in a shared memory common-bus individually cached multiprocessor system
US5377351A (en) * 1990-06-20 1994-12-27 Oki Electric Industry Co., Ltd. Device for controlling multiple transactions contending concurrently for the same resource in a distributed database system
US5669002A (en) * 1990-06-28 1997-09-16 Digital Equipment Corp. Multi-processor resource locking mechanism with a lock register corresponding to each resource stored in common memory
US5414856A (en) * 1990-07-10 1995-05-09 Canon Kabushiki Kaisha Multiprocessor shared resource management system implemented as a virtual task in one of the processors
US5586331A (en) * 1990-09-13 1996-12-17 International Business Machines Corporation Duplicated logic and interconnection system for arbitration among multiple information processors
US5566305A (en) * 1990-09-13 1996-10-15 International Business Machines Corporation Duplicated logic and interconnection system for arbitration among multiple information processors
US5463741A (en) * 1990-09-13 1995-10-31 International Business Machines Corporation Duplicated logic and interconnection system for arbitration among multiple information processors
US5339394A (en) * 1990-11-15 1994-08-16 International Business Machines Corporation I/O register protection circuit
US5293491A (en) * 1990-12-28 1994-03-08 International Business Machines Corp. Data processing system and memory controller for lock semaphore operations
US5502840A (en) * 1991-01-18 1996-03-26 Ncr Corporation Method and apparatus for advising a requesting process of a contention scheme to employ to access a shared resource
US5285528A (en) * 1991-02-22 1994-02-08 International Business Machines Corporation Data structures and algorithms for managing lock states of addressable element ranges
US5592673A (en) * 1991-02-27 1997-01-07 Kabushiki Kaisha Toshiba Loosely coupled compound computer system using lock and semaphore mechanism for performing exclusive control of shared resource which is accessed through a distinct bus
US5649106A (en) * 1991-03-14 1997-07-15 Mitsubishi Denki Kabushiki Kaisha Parallel computer with reconstruction of processor clusters
US5237694A (en) * 1991-05-30 1993-08-17 Advanced Micro Devices, Inc. Processing system and method including lock buffer for controlling exclusive critical problem accesses by each processor
US5469571A (en) * 1991-07-15 1995-11-21 Lynx Real-Time Systems, Inc. Operating system architecture using multiple priority light weight kernel task based interrupt handling
US5367695A (en) * 1991-09-27 1994-11-22 Sun Microsystems, Inc. Bus-to-bus interface for preventing data incoherence in a multiple processor computer system
US5339443A (en) * 1991-11-19 1994-08-16 Sun Microsystems, Inc. Arbitrating multiprocessor accesses to shared resources
US5274823A (en) * 1992-03-31 1993-12-28 International Business Machines Corporation Interrupt handling serialization for process level programming
US5444855A (en) * 1992-04-17 1995-08-22 International Business Machines Corporation System for guaranteed CPU bus access by I/O devices monitoring separately predetermined distinct maximum non CPU bus activity and inhibiting I/O devices thereof
US5423044A (en) * 1992-06-16 1995-06-06 International Business Machines Corporation Shared, distributed lock manager for loosely coupled processing systems
US5428796A (en) * 1992-08-26 1995-06-27 International Business Machines Corporation System and method for regulating access to direct access storage devices in data processing systems
US5432929A (en) * 1992-09-09 1995-07-11 International Business Machines Corporation Storage subsystem having a modifiable key-lock
US5615374A (en) * 1992-09-25 1997-03-25 Fujitsu Limited Lock control method for resource
US5392433A (en) * 1992-09-25 1995-02-21 International Business Machines Corporation Method and apparatus for intraprocess locking of a shared resource in a computer system
US5317749A (en) * 1992-09-25 1994-05-31 International Business Machines Corporation Method and apparatus for controlling access by a plurality of processors to a shared resource
US5553240A (en) * 1992-10-16 1996-09-03 International Business Machines Corporation Determining a winner of a race in a data processing system
US5469575A (en) * 1992-10-16 1995-11-21 International Business Machines Corporation Determining a winner of a race in a data processing system
US5440746A (en) * 1992-11-06 1995-08-08 Seiko Epson Corporation System and method for synchronizing processors in a parallel processing environment
US5341502A (en) * 1992-12-14 1994-08-23 Motorola, Inc. Device for assigning a shared resource in a data processing system
US5463739A (en) * 1992-12-22 1995-10-31 International Business Machines Corporation Apparatus for vetoing reallocation requests during a data transfer based on data bus latency and the number of received reallocation requests below a threshold
US5903763A (en) * 1993-03-26 1999-05-11 Fujitsu Limited Method of recovering exclusive control instruction and multi-processor system using the same
US5619671A (en) * 1993-04-19 1997-04-08 International Business Machines Corporation Method and apparatus for providing token controlled access to protected pages of memory
US5628023A (en) * 1993-04-19 1997-05-06 International Business Machines Corporation Virtual storage computer system having methods and apparatus for providing token-controlled access to protected pages of memory via a token-accessible view
US5526524A (en) * 1993-12-23 1996-06-11 International Business Machines Corporation Method and system for management of locked objects in a computer supported cooperative work environment
US5471590A (en) * 1994-01-28 1995-11-28 Compaq Computer Corp. Bus master arbitration circuitry having improved prioritization
US5805917A (en) * 1994-06-14 1998-09-08 Nec Corporation Parallel processing system with a plurality of communication register modules
US5581709A (en) * 1995-03-15 1996-12-03 Mitsubishi Denki Kabushiki Kaisha Multiple computer system using I/O port adaptor to selectively route transaction packets to host or shared I/O device
US5701434A (en) * 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
US5678024A (en) * 1995-05-08 1997-10-14 International Business Machines Corporation Method and system for dynamic performance resource management within a computer based system
US5634138A (en) * 1995-06-07 1997-05-27 Emulex Corporation Burst broadcasting on a peripheral component interconnect bus
WO1996041269A1 (en) * 1995-06-07 1996-12-19 Emulex Corporation Burst-broadcasting on a peripheral component interconnect bus
US6192441B1 (en) * 1995-08-03 2001-02-20 Sgs-Thomson Microelectronics S.A. Apparatus for postponing processing of interrupts by a microprocessor
US5794241A (en) * 1996-04-08 1998-08-11 Oracle Corporation Method and apparatus for dynamically disabling and enabling table locking for a database
US6108757A (en) * 1997-02-28 2000-08-22 Lucent Technologies Inc. Method for locking a shared resource in multiprocessor system
US6173375B1 (en) * 1997-02-28 2001-01-09 Lucent Technologies Inc. Method for accessing a shared resource in a multiprocessor system
US5872981A (en) * 1997-05-30 1999-02-16 Oracle Corporation Method for managing termination of a lock-holding process using a waiting lock
US5937199A (en) * 1997-06-03 1999-08-10 International Business Machines Corporation User programmable interrupt mask with timeout for enhanced resource locking efficiency
US5875342A (en) * 1997-06-03 1999-02-23 International Business Machines Corporation User programmable interrupt mask with timeout
US6247025B1 (en) 1997-07-17 2001-06-12 International Business Machines Corporation Locking and unlocking mechanism for controlling concurrent access to objects
US6026401A (en) * 1997-10-14 2000-02-15 International Business Machines Corporation Locking tool data objects in a framework environment
US6105085A (en) * 1997-12-26 2000-08-15 Emc Corporation Lock mechanism for shared resources having associated data structure stored in common memory include a lock portion and a reserve portion
US5983225A (en) * 1998-01-26 1999-11-09 Telenor As Parameterized lock management system and method for conditional conflict serializability of transactions
US20080201777A1 (en) * 1998-03-02 2008-08-21 Doron Elgressy Method and Agent for the Protection Against the Unauthorized Use of Computer Resources
US6446149B1 (en) * 1998-03-03 2002-09-03 Compaq Information Technologies Group, L.P. Self-modifying synchronization memory address space and protocol for communication between multiple busmasters of a computer system
FR2784478A1 (en) * 1998-10-09 2000-04-14 Bull Sa Lock architecture for resource access control in large computer system
US6477597B1 (en) 1998-10-09 2002-11-05 Bull, S.A. Lock architecture for large scale system
US6542891B1 (en) * 1999-01-29 2003-04-01 International Business Machines Corporation Safe strength reduction for Java synchronized procedures
US6842813B1 (en) 2000-06-12 2005-01-11 Intel Corporation Method and apparatus for single wire signaling of request types in a computer system having a point to point half duplex interconnect
US20020016879A1 (en) * 2000-07-26 2002-02-07 Miller Chris D. Resource locking and thread synchronization in a multiprocessor environment
US6782440B2 (en) * 2000-07-26 2004-08-24 T.N.S. Holdings, Inc. Resource locking and thread synchronization in a multiprocessor environment
US6877052B1 (en) * 2000-09-29 2005-04-05 Intel Corporation System and method for improved half-duplex bus performance
US7743146B2 (en) 2001-01-30 2010-06-22 Cisco Technology, Inc. Controlling access of concurrent users of computer resources in a distributed system using an improved semaphore counting approach
US20080162481A1 (en) * 2001-01-30 2008-07-03 Cisco Technology, Inc. Controlling access of concurrent users of computer resources in a distributed system using an improved semaphore counting approach
US7328263B1 (en) * 2001-01-30 2008-02-05 Cisco Technology, Inc. Controlling access of concurrent users of computer resources in a distributed system using an improved semaphore counting approach
WO2003010667A1 (en) * 2001-07-25 2003-02-06 Times N Systems, Inc. Resource locking and thread synchronization in a multiprocessor environment
US20030100957A1 (en) * 2001-11-27 2003-05-29 Chaffee Michael C. System controlling exclusive access by control programs to system resources
US7114157B2 (en) * 2001-11-27 2006-09-26 Kuka Roboter Gmbh System controlling exclusive access by control programs to system resources
US20060200609A1 (en) * 2002-02-04 2006-09-07 Pasi Kolinummi Hardware semaphore intended for a multi-processor system
US7155551B2 (en) * 2002-02-04 2006-12-26 Nokia Corporation Hardware semaphore intended for a multi-processor system
US7062583B2 (en) * 2002-02-04 2006-06-13 Nokia Corporation Hardware semaphore intended for a multi-processor system
US20030149820A1 (en) * 2002-02-04 2003-08-07 Nokia Corporation Hardware semaphore intended for a multi-processor system
US20040076486A1 (en) * 2002-10-17 2004-04-22 Alfred Horisberger Clamping device for elongated workpieces
US7386643B2 (en) 2002-12-19 2008-06-10 Tan Sin S Mechanism to guarantee forward progress for incoming coherent input/output (I/O) transactions for caching I/O agent on address conflict with processor transactions
US20040122995A1 (en) * 2002-12-19 2004-06-24 Intel Corporation Mechanism to guarantee forward progress for incoming coherent input/output (I/O) transactions for caching I/O agent on address conflict with processor transactions
US6832268B2 (en) * 2002-12-19 2004-12-14 Intel Corporation Mechanism to guarantee forward progress for incoming coherent input/output (I/O) transactions for caching I/O agent on address conflict with processor transactions
US20040268114A1 (en) * 2003-06-30 2004-12-30 Ricoh Company, Ltd. Electronic apparatus and parameter updating method
US7865739B2 (en) * 2003-09-02 2011-01-04 Sony Ericsson Mobile Communications Ab Methods and devices for transferring security data between memories
US20060218411A1 (en) * 2003-09-02 2006-09-28 Sturla Lutnaes Transfer of security data between two memories
US7802038B2 (en) 2003-10-09 2010-09-21 Freescale Semiconductor, Inc. Communication steering for use in a multi-master shared resource system
US20090077291A1 (en) * 2003-10-09 2009-03-19 Freescale Semiconductor, Inc. Communication steering for use in a multi-master shared resource system
US7174406B1 (en) * 2003-12-16 2007-02-06 Emc Corporation System and method for arbitrating access to a shared resource
CN1331053C (en) * 2004-02-12 2007-08-08 华为技术有限公司 Flag register and method for avoiding resource access conflict between multiple processes
US8737431B2 (en) 2004-04-21 2014-05-27 Solarflare Communications, Inc. Checking data integrity
US20060026598A1 (en) * 2004-07-29 2006-02-02 International Business Machines Corporation Resource allocation management
US20060048158A1 (en) * 2004-07-29 2006-03-02 International Business Machines Corporation Methods and apparatus for aging a command
US8490102B2 (en) 2004-07-29 2013-07-16 International Business Machines Corporation Resource allocation management using IOC token requestor logic
US20080189510A1 (en) * 2004-09-09 2008-08-07 David Riddoch Dynamic Resource Allocation
US8219712B2 (en) * 2004-09-09 2012-07-10 Solarflare Communications, Inc. Dynamic resource allocation
US20060143416A1 (en) * 2004-12-28 2006-06-29 Fujitsu Limited Multiprocessor system with high-speed exclusive control
US7409506B2 (en) * 2004-12-28 2008-08-05 Fujitsu Limited Multiprocessor system with high-speed exclusive control
US7386642B2 (en) 2005-01-28 2008-06-10 Sony Computer Entertainment Inc. IO direct memory access system and method
US20060174169A1 (en) * 2005-01-28 2006-08-03 Sony Computer Entertainment Inc. IO direct memory access system and method
US7350006B2 (en) 2005-02-04 2008-03-25 Sony Computer Entertainment Inc. System and method of interrupt handling
US7680972B2 (en) 2005-02-04 2010-03-16 Sony Computer Entertainment Inc. Micro interrupt handler
US20060200610A1 (en) * 2005-02-04 2006-09-07 Sony Computer Entertainment Inc. System and method of interrupt handling
US20060179198A1 (en) * 2005-02-04 2006-08-10 Sony Computer Entertainment Inc. Micro interrupt handler
US9063771B2 (en) 2005-03-10 2015-06-23 Solarflare Communications, Inc. User-level re-initialization instruction interception
US9552225B2 (en) 2005-03-15 2017-01-24 Solarflare Communications, Inc. Data processing system with data transmit capability
US9729436B2 (en) 2005-03-30 2017-08-08 Solarflare Communications, Inc. Data processing system with routing tables
US10397103B2 (en) 2005-03-30 2019-08-27 Solarflare Communications, Inc. Data processing system with routing tables
US8566298B1 (en) * 2005-07-28 2013-10-22 Symantec Operating Corporation Method and apparatus for sharing resource locks amongst applications
DE112006002237B4 (en) 2005-08-23 2023-04-06 Advanced Micro Devices, Inc. Method for self-initiating synchronization in a computer system
US20070124554A1 (en) * 2005-10-28 2007-05-31 Honeywell International Inc. Global memory for a rapidio network
US20070150899A1 (en) * 2005-12-27 2007-06-28 Mitsubishi Denki Kabushiki Kaisha Semaphore management method and computer product
US10015104B2 (en) 2005-12-28 2018-07-03 Solarflare Communications, Inc. Processing received data
US20070168423A1 (en) * 2006-01-18 2007-07-19 Kum-Rye Park Video conferencing using white board
US8635274B2 (en) * 2006-01-18 2014-01-21 Samsung Electronics Co., Ltd. Video conferencing using white board
US8726279B2 (en) * 2006-05-06 2014-05-13 Nvidia Corporation System for multi threaded multi processor sharing of asynchronous hardware units
CN101078996B (en) * 2006-05-06 2011-05-04 辉达公司 System and method for hardware share
US20070261053A1 (en) * 2006-05-06 2007-11-08 Portal Player, Inc. System for multi threaded multi processor sharing of asynchronous hardware units
US7647454B2 (en) * 2006-06-12 2010-01-12 Hewlett-Packard Development Company, L.P. Transactional shared memory system and method of control
US20070288587A1 (en) * 2006-06-12 2007-12-13 Aguilera Marcos K Transactional shared memory system and method of control
US20080155679A1 (en) * 2006-12-05 2008-06-26 Julien Sebot Mitigating Branch Prediction and Other Timing Based Side Channel Attacks
US8869294B2 (en) * 2006-12-05 2014-10-21 Intel Corporation Mitigating branch prediction and other timing based side channel attacks
US20090198920A1 (en) * 2008-02-01 2009-08-06 Arimilli Lakshminarayana B Processing Units Within a Multiprocessor System Adapted to Support Memory Locks
US8375176B2 (en) * 2008-03-24 2013-02-12 Nvidia Corporation Lock mechanism to enable atomic updates to shared memory
US20120036329A1 (en) * 2008-03-24 2012-02-09 Coon Brett W Lock mechanism to enable atomic updates to shared memory
US20090240860A1 (en) * 2008-03-24 2009-09-24 Coon Brett W Lock Mechanism to Enable Atomic Updates to Shared Memory
US8055856B2 (en) * 2008-03-24 2011-11-08 Nvidia Corporation Lock mechanism to enable atomic updates to shared memory
US8984653B2 (en) 2008-04-03 2015-03-17 Microsoft Technology Licensing, Llc Client controlled lock for electronic devices
US20090254995A1 (en) * 2008-04-03 2009-10-08 Microsoft Corporation Client controlled lock for electronic devices
US7530106B1 (en) 2008-07-02 2009-05-05 Kaspersky Lab, Zao System and method for security rating of computer processes
US8972515B2 (en) 2009-03-30 2015-03-03 The Boeing Company Computer architectures using shared storage
US9098562B2 (en) 2009-03-30 2015-08-04 The Boeing Company Computer architectures using shared storage
US20100250867A1 (en) * 2009-03-30 2010-09-30 The Boeing Company Computer architectures using shared storage
US9690839B2 (en) 2009-03-30 2017-06-27 The Boeing Company Computer architectures using shared storage
US20100306432A1 (en) * 2009-05-27 2010-12-02 International Business Machines Corporation Computer-implemented multi-resource shared lock
US8397307B2 (en) * 2009-05-27 2013-03-12 International Business Machines Corporation Computer-implemented multi-resource shared lock
US8381308B2 (en) * 2009-05-27 2013-02-19 International Business Corporation Computer-implemented multi-resource shared lock
US20120210031A1 (en) * 2009-05-27 2012-08-16 International Business Machines Corporation Computer-implemented multi-resource shared lock
US8424100B2 (en) * 2010-03-29 2013-04-16 Motorola Solutions, Inc. System and method of vetting data
US20110239308A1 (en) * 2010-03-29 2011-09-29 Motorola, Inc. System and method of vetting data
US20110302137A1 (en) * 2010-06-08 2011-12-08 Dell Products L.P. Systems and methods for improving storage efficiency in an information handling system
US9292533B2 (en) * 2010-06-08 2016-03-22 Dell Products L.P. Systems and methods for improving storage efficiency in an information handling system
US10191910B2 (en) 2010-06-08 2019-01-29 Dell Products L.P. Systems and methods for improving storage efficiency in an information handling system
US9098462B1 (en) * 2010-09-14 2015-08-04 The Boeing Company Communications via shared memory
US9519652B2 (en) * 2012-04-27 2016-12-13 Huawei Technologies Co., Ltd. Method, apparatus, and system for operating shared resource in asynchronous multiprocessing system
US20130290286A1 (en) * 2012-04-27 2013-10-31 Huawei Technologies Co., Ltd. Method, apparatus, and system for operating shared resource in asynchronous multiprocessing system
US20150370721A1 (en) * 2013-01-31 2015-12-24 Hewlett-Packard Development Company, L.P. Mapping mechanism for large shared address spaces
US10417056B2 (en) 2015-08-04 2019-09-17 Oracle International Corporation Systems and methods for performing concurrency restriction and throttling over contended locks
US11314562B2 (en) 2015-08-04 2022-04-26 Oracle International Corporation Systems and methods for performing concurrency restriction and throttling over contended locks
US11651402B2 (en) 2016-04-01 2023-05-16 OneTrust, LLC Data processing systems and communication systems and methods for the efficient generation of risk assessments
US11216301B2 (en) * 2016-04-12 2022-01-04 Telefonaktiebolaget Lm Ericsson (Publ) Process scheduling in a processing system having at least one processor and shared hardware resources
US11461500B2 (en) 2016-06-10 2022-10-04 OneTrust, LLC Data processing systems for cookie compliance testing with website scanning and related methods
US11562097B2 (en) 2016-06-10 2023-01-24 OneTrust, LLC Data processing systems for central consent repository and related methods
US11416589B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11418516B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Consent conversion optimization systems and related methods
US11418492B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US11416636B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing consent management systems and related methods
US11416109B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US11921894B2 (en) 2016-06-10 2024-03-05 OneTrust, LLC Data processing systems for generating and populating a data inventory for processing data access requests
US11438386B2 (en) 2016-06-10 2022-09-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11868507B2 (en) 2016-06-10 2024-01-09 OneTrust, LLC Data processing systems for cookie compliance testing with website scanning and related methods
US11847182B2 (en) 2016-06-10 2023-12-19 OneTrust, LLC Data processing consent capture systems and related methods
US11449633B2 (en) 2016-06-10 2022-09-20 OneTrust, LLC Data processing systems and methods for automatic discovery and assessment of mobile software development kits
US11403377B2 (en) 2016-06-10 2022-08-02 OneTrust, LLC Privacy management systems and methods
US11468196B2 (en) 2016-06-10 2022-10-11 OneTrust, LLC Data processing systems for validating authorization for personal data collection, storage, and processing
US11468386B2 (en) 2016-06-10 2022-10-11 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US11475136B2 (en) 2016-06-10 2022-10-18 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11727141B2 (en) 2016-06-10 2023-08-15 OneTrust, LLC Data processing systems and methods for synching privacy-related user consent across multiple computing devices
US11481710B2 (en) 2016-06-10 2022-10-25 OneTrust, LLC Privacy management systems and methods
US11488085B2 (en) 2016-06-10 2022-11-01 OneTrust, LLC Questionnaire response automation for compliance management
US11675929B2 (en) 2016-06-10 2023-06-13 OneTrust, LLC Data processing consent sharing systems and related methods
US11520928B2 (en) 2016-06-10 2022-12-06 OneTrust, LLC Data processing systems for generating personal data receipts and related methods
US11651104B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Consent receipt management systems and related methods
US11651106B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11544405B2 (en) 2016-06-10 2023-01-03 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11645418B2 (en) 2016-06-10 2023-05-09 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US11645353B2 (en) 2016-06-10 2023-05-09 OneTrust, LLC Data processing consent capture systems and related methods
US11544667B2 (en) 2016-06-10 2023-01-03 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11550897B2 (en) 2016-06-10 2023-01-10 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11551174B2 (en) 2016-06-10 2023-01-10 OneTrust, LLC Privacy management systems and methods
US11556672B2 (en) 2016-06-10 2023-01-17 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11558429B2 (en) 2016-06-10 2023-01-17 OneTrust, LLC Data processing and scanning systems for generating and populating a data inventory
US11416590B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11636171B2 (en) 2016-06-10 2023-04-25 OneTrust, LLC Data processing user interface monitoring systems and related methods
US11586762B2 (en) 2016-06-10 2023-02-21 OneTrust, LLC Data processing systems and methods for auditing data request compliance
US11586700B2 (en) 2016-06-10 2023-02-21 OneTrust, LLC Data processing systems and methods for automatically blocking the use of tracking tools
US11625502B2 (en) 2016-06-10 2023-04-11 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US11609939B2 (en) 2016-06-10 2023-03-21 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US10565024B2 (en) 2016-10-19 2020-02-18 Oracle International Corporation Generic concurrency restriction
US11221891B2 (en) 2016-10-19 2022-01-11 Oracle International Corporation Generic concurrency restriction
US11726838B2 (en) 2016-10-19 2023-08-15 Oracle International Corporation Generic concurrency restriction
US11663359B2 (en) 2017-06-16 2023-05-30 OneTrust, LLC Data processing systems for identifying whether cookies contain personally identifying information
US11544409B2 (en) 2018-09-07 2023-01-03 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11947708B2 (en) 2018-09-07 2024-04-02 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11593523B2 (en) 2018-09-07 2023-02-28 OneTrust, LLC Data processing systems for orphaned data identification and deletion and related methods
US11797528B2 (en) 2020-07-08 2023-10-24 OneTrust, LLC Systems and methods for targeted data discovery
US11475165B2 (en) 2020-08-06 2022-10-18 OneTrust, LLC Data processing systems and methods for automatically redacting unstructured data from a data subject access request
US11436373B2 (en) 2020-09-15 2022-09-06 OneTrust, LLC Data processing systems and methods for detecting tools for the automatic blocking of consent requests
US11704440B2 (en) 2020-09-15 2023-07-18 OneTrust, LLC Data processing systems and methods for preventing execution of an action documenting a consent rejection
US11526624B2 (en) 2020-09-21 2022-12-13 OneTrust, LLC Data processing systems and methods for automatically detecting target data transfers and target data processing
US11615192B2 (en) 2020-11-06 2023-03-28 OneTrust, LLC Systems and methods for identifying data processing activities based on data discovery results
US11687528B2 (en) 2021-01-25 2023-06-27 OneTrust, LLC Systems and methods for discovery, classification, and indexing of data in a native computing system
US11442906B2 (en) 2021-02-04 2022-09-13 OneTrust, LLC Managing custom attributes for domain objects defined within microservices
US11494515B2 (en) 2021-02-08 2022-11-08 OneTrust, LLC Data processing systems and methods for anonymizing data samples in classification analysis
US11601464B2 (en) 2021-02-10 2023-03-07 OneTrust, LLC Systems and methods for mitigating risks of third-party computing system functionality integration into a first-party computing system
US11775348B2 (en) 2021-02-17 2023-10-03 OneTrust, LLC Managing custom workflows for domain objects defined within microservices
US11546661B2 (en) 2021-02-18 2023-01-03 OneTrust, LLC Selective redaction of media content
US11533315B2 (en) * 2021-03-08 2022-12-20 OneTrust, LLC Data transfer discovery and analysis systems and related methods
US20220286462A1 (en) * 2021-03-08 2022-09-08 OneTrust, LLC Data transfer discovery and analysis systems and related methods
US11816224B2 (en) 2021-04-16 2023-11-14 OneTrust, LLC Assessing and managing computational risk involved with integrating third party computing functionality within a computing system
US11562078B2 (en) 2021-04-16 2023-01-24 OneTrust, LLC Assessing and managing computational risk involved with integrating third party computing functionality within a computing system
US11620142B1 (en) 2022-06-03 2023-04-04 OneTrust, LLC Generating and customizing user interfaces for demonstrating functions of interactive user environments
US11960564B2 (en) 2023-02-02 2024-04-16 OneTrust, LLC Data processing systems and methods for automatically blocking the use of tracking tools

Also Published As

Publication number Publication date
GB8313705D0 (en) 1983-06-22
EP0094841A2 (en) 1983-11-23
ES522470A0 (en) 1984-04-16
EP0110950A1 (en) 1984-06-20
WO1983004117A1 (en) 1983-11-24
ES8404072A1 (en) 1984-04-16
GB2121218A (en) 1983-12-14
EP0094841A3 (en) 1984-01-11

Similar Documents

Publication Publication Date Title
US4574350A (en) Shared resource locking apparatus
US4484270A (en) Centralized hardware control of multisystem access to shared and non-shared subsystems
CA1324837C (en) Synchronizing and processing of memory access operations in multiprocessor systems
KR100957425B1 (en) Method and apparatus to clear semaphore reservation
JP3634932B2 (en) Spin buffer and method for maintaining data integrity
EP0369264B1 (en) Multiprocessor system having distributed shared resources and deadlock prevention
US5253347A (en) Centralized arbitration system using the status of target resources to selectively mask requests from master units
CA1072216A (en) Memory access control system
US6792497B1 (en) System and method for hardware assisted spinlock
EP0443557B1 (en) Interrupt controller capable of realizing interrupt nesting function
US5442755A (en) Multi-processor system with lock address register in each processor for storing lock address sent to bus by another processor
EP0519599B1 (en) Data processing system and method with lock spaces
US5136714A (en) Method and apparatus for implementing inter-processor interrupts using shared memory storage in a multi-processor computer system
JPH0358164A (en) Lock control mechanism for multiprocessor system
JPH041374B2 (en)
US11366940B2 (en) Secure-aware bus system
US6970963B2 (en) Apparatus and method for synchronizing multiple accesses to common resources
US5051946A (en) Integrated scannable rotational priority network apparatus
CN114780248A (en) Resource access method, device, computer equipment and storage medium
JPH10143467A (en) Method and device for arbitrating bus ownership in data processing system
JP3585510B2 (en) Program execution management device and program execution management method
JPH02244252A (en) One-chip multiprocessor containing bus arbiter and comparator
JPS6153747B2 (en)
JPH054710B2 (en)
JPS59172029A (en) Lock control system for asynchronous common bus

Legal Events

Date Code Title Description
AS Assignment

Owner name: BELL TELEPHONE LABORATORIES, INCORPORATED, 600 MOU

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST.;ASSIGNOR:STARR, DANIEL C.;REEL/FRAME:004005/0306

Effective date: 19820519

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

CC Certificate of correction
FPAY Fee payment

Year of fee payment: 8

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
FP Lapsed due to failure to pay maintenance fee

Effective date: 19980304

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362