Patent classifications
G06F9/526
Memory Controller with Programmable Atomic Operations
A memory controller circuit is disclosed which is coupleable to a first memory circuit, such as DRAM, and includes: a first memory control circuit to read from or write to the first memory circuit; a second memory circuit, such as SRAM; a second memory control circuit adapted to read from the second memory circuit in response to a read request when the requested data is stored in the second memory circuit, and otherwise to transfer the read request to the first memory control circuit; predetermined atomic operations circuitry; and programmable atomic operations circuitry adapted to perform at least one programmable atomic operation. The second memory control circuit also transfers a received programmable atomic operation request to the programmable atomic operations circuitry and sets a hazard bit for a cache line of the second memory circuit.
Data race detection with per-thread memory protection
Data race detection in multi-threaded programs can be achieved by leveraging per-thread memory protection technology in conjunction with a custom dynamic memory allocator to protect shared memory objects with unique memory protection keys, allowing data races to be turned into inter-thread memory access violations. Threads may acquire or release the keys used for accessing protected memory objects at the entry and exit points of critical sections within the program. An attempt by a thread to access a protected memory object within a critical section without the associated key triggers a protection fault, which may be indicative of a data race.
DETERMINING WHEN TO RELEASE A LOCK FROM A FIRST TASK HOLDING THE LOCK TO GRANT TO A SECOND TASK WAITING FOR THE LOCK
Provided are a computer program product, system, and method for determining when to release a lock from a first task holding the lock to grant to a second task waiting for the lock. A determination is made as to whether a holding of a lock to the resource by a first task satisfies a condition and whether the lock is swappable. The lock is released from the first task and granted to a second task waiting in a queue for the lock in response to determining that the holding of the lock satisfies the condition and that the lock is swappable. The first task is indicated in the queue waiting for the lock in response to granting the lock to the second task.
LOW-OVERHEAD DETECTION TECHNIQUES FOR SYNCHRONIZATION PROBLEMS IN PARALLEL AND CONCURRENT SOFTWARE
The techniques described herein may provide techniques to detect, categorize, and diagnose synchronization issues that provide improved performance and issue resolution. For example, in an embodiment, a method may comprise detecting occurrence of synchronization performance problems in software code, when at least some detected synchronization performance problems occur when a contention rate for software locks is low, determining a cause of the synchronization performance problems, and modifying the software code to remedy the cause of the synchronization performance problems so as to improve synchronization performance of the software code.
ELEMENT ORDERING HANDLING IN A RING BUFFER
Data processing apparatuses, methods of data processing, complementary instructions and programs related to ring buffer administration are disclosed. An enqueuing operation performs an atomic compare-and-swap oper-ation to store a first processed data item indication to an enqueuing-target slot in the ring buffer contingent on an in-order marker not being present there and, when successful, determines that a ready-to-dequeue condition is true for the first processed data item indication. A dequeuing operation, when the ready-to-de-queue condition for a dequeuing-target slot is true, comprises writing a null data item to the dequeuing-target slot and, when dequeuing in-order, further comprises, dependent on whether a next contiguous slot has null content, determining a retirement condition and, when the retirement condition is true, performing a retirement process on the next contiguous slot comprising making the next con-tiguous slot available to a subsequent enqueuing operation. Further subsequent slots may also be retired.
Vehicular arbitration system
A vehicular arbitration system includes: a main manager configured to receive one or more requests from a plurality of first application execution units and to determine a request for operating a predetermined on-vehicle device based on the received one or more requests and a predetermined rule; and a plurality of sub-managers respectively configured to arbitrate the request determined by the main manager and a request input from at least one second application execution unit that is different from the plurality of first application execution units and to control the on-vehicle device based on an arbitration result.
MULTIPLE LOCKING OF RESOURCES AND LOCK SCALING IN CONCURRENT COMPUTING
Methods and systems for implementing division of process resources of running processes into individually locked partitions, and indirect mapping of keys to process resources to locks of each partition, are provided. In computing systems implementing concurrent processing, applications may generate and destroy concurrently running processes with high frequency. Real-time security monitoring may cause the computing system to run monitoring processes collecting large volumes of data regarding system events occurring in context of various other processes, causing threads of processes of the security monitoring application to make frequent write access and read access to resources of those processes in memory. Indirect mapping of lock acquisition across locks provides scalable alleviation of lock contention and thread blocking that result from computational concurrency, while handling read and write requests which arise at unpredictable times from kernel-space monitoring processes, and which request unpredictable resources of monitored user-space processes.
Systems and methods for cloud-based application access to resources of local hosts by arbitrating access using local host agent applications
Systems and methods which facilitate access to computing resources by cloud-based applications are described. Embodiments enable cloud-based applications to provide output to and/or obtain input from computing resources, such as printers, scales, scanners, and storage devices, for performing various functions. In operation according to embodiments, a user agent client application is executed by computing equipment in communication with a computing resource to which access is to be provided to one or more cloud-based applications. Although embodiments implement a user interface client application which is separate from a user agent client application, tight integration between a user interface client application and user agent client application may be provided. Embodiments not only facilitate operation whereby a cloud-based application is enabled to provide output to and/or obtain input from computing resources, but also facilitate remote and/or shared client interaction with such computing resources.
HIGH-PERFORMANCE REMOTE ATOMIC SYNCHRONIZATION
One example method may be performed in an operating environment including distributed and/or disaggregated compute nodes that communicate with each other and with a shared computing resource by way of an RDMA fabric. The method may include obtaining, by a first one of the compute nodes, ownership of an atomic synchronization object that controls access to the shared computing resource, using, by the first compute node, the shared computing resource until the shared computing resource is no longer needed by the first compute node, and when the shared computing resource is no longer needed by the first compute node, relinquishing, by the first compute node, the ownership of the atomic synchronization object.
BROKERLESS RELIABLE TOTALLY ORDERED MANY-TO-MANY INTERPROCESS COMMUNICATION ON A SINGLE NODE THAT USES SHARED MEMORY AND MULTICAST
Examples described herein include systems and methods for brokerless reliable totally ordered many-to-many inter-process communication on a single node. A messaging protocol is provided that utilizes shared memory for one of the control plane and data plane, and multicast for the other plane. Readers and writers can store either control messages or message data in the shared memory, including in a ring buffer. Write access to portions of the shared memory can be controlled by a robust futex, which includes a locking mechanism that is crash recoverable. In general, the writers and readers can control the pace of communications and the crash of any process does not crash the overall messaging on the node.