This invention is directed to a memory system that determines which blocks of a set of associative blocks in cache memory are unavailable for replacement. This is accomplished by operating the memory system to maintain a duplicate set of tags which track block ownership for this cache pursuant to a "snoopy" protocol. In addition, the cache system maintains a bit associated with each memory address to indicate whether any data blocks resident in it have been locked. The interlock status of the data blocks in the cache is not communicated to the memory system. Once a block is locked, it cannot be allocated for replacement until it is unlocked. When the cache system encounters a locked block, it skips over that block and allocates the next block of the associative blocks. From this, the memory system infers, by means of a replacement algorithm, that block is being locked and, therefore, cannot be replaced. This enables the memory system to implement an irregular replacement policy for this cache when the block to be replaced is owned and locked.
A cache implements bank-by-bank locking to keep critical code from being flushed out of the cache. A register is maintained to rank the banks from the most recently used to the least recently used. Ordinarily, when code needs to be moved into the cache, the least recently used bank is flushed, the code is moved into that bank, and the register is updated to identify that bank as the most recently used. However, if a bank is designated in a bypass vector as being locked, that bank is bypassed in the maintenance of the register and is thus never identified as the bank to be flushed.
A method and system is disclosed for efficiently transferring a sequence of data words from an I/O device to sequential addresses in a main memory via an I/O bridge. The sequence of data words to be transferred includes one or more subsequences of data words. Each subsequence of data words include only data words destined to addresses of the main memory in which data words of only one data line are stored. The I/O bridge has control logic for receiving a first subsequence of data words corresponding to a currently owned data line and for claiming ownership in one or more of the very next data lines corresponding to the next subsequences of data words to be transferred from the I/O device. The I/O bridge also has a buffer memory for storing a subsequence of the sequence of data words received from the I/O device. The control logic maintains in a pre-own tag array a list of the data lines in which ownership has been successfully claimed and a list in a buffer tag array of storage locations in the buffer memory allocated to receiving data words of particular subsequences of the sequence of data words from the I/O device.
In a multi-user environment, a method of controlling access to objects is required, such that updates performed by one user are not overwritten by simultaneous updates by another user. There is provided a method of controlling access to objects and containers, each representing a group of objects, in a multi-user environment whereby lock states of the objects and lock states of the containers are stored in a computer system, said method comprising the steps of: accepting a request for access to an object or a container; deciding access based on the lock state for that object or container, the lock state of a container if the request is for an object contained within that container, and the lock state of objects grouped within a container if the request is for a container object; and sending a message to the requester granting or denying access to said object or container object. Updates performed by one user on an object or a container are not overwritten by simultaneous updates by another user. The above supports units of work in a GUI session where a unit of work could be updating a single object, viewing a single object or copying or deleting a container of objects. This extends to manipulating entire voice applications which consist of many containers and other objects.
In a cache memory 20, there exist a plurality of cache lines 201, each of which is equipped with a loop lock L for indicating that an instruction is present in a feedback loop section. The states of the loop locks L are dynamically changed according to the executed state of a program. At the time of excluding the cache lines for a prefetch, the instruction string in the loop is held in the cache memory 20 till the program control transfers to the outside of the loop.
A labelling method and system are disclosed for correlating multiple outstanding requests to utilize a shared resource issued by a particular master of a computer system. The labelling system includes a memory for storing an assigned indication corresponding to each label assigned by each master of a computer system. The memory is also for indicating a label available for assignment which is unique over each outstanding, unsatisfied request to utilize the shared resource issued by each master of the computers system. The labelling system also includes a first circuit which is responsive to the unique label indicated by the memory. The first circuit is provided for assigning the unique label indicated by the memory to a request to utilize the shared resource issued by the particular master in which the labelling system is located.