The disclosure relates generally to computer systems that implement synchronous input output (I/O) commands, and more specifically, to computer systems including an address translation (AT) context cache that caches one or more address translation entries associated with synchronous I/O transactions.
In general, the technical field discussed herein includes communications between servers and storage control units over a storage area network involving multiple switches and multiple layers of a protocol stack. Contemporary implementations of these communications between servers and storage control units include asynchronous access operations by operating systems within the storage area network. Asynchronous access operations require queues and schedulers for initiating the requests, along with interruptions for any associated context switch for processing a completion status. These queues, schedulers, and interruptions amount to asynchronous overhead that adds significant latency and processing delays across the storage area network.
Storage Area Networks (SANs), as described by the Storage Networking Industry Association (SNIA), are high-performance networks that enable storage devices and computer systems to communicate with each other. In large enterprises, multiple computer systems or servers have access to multiple storage control units within the SAN. Typical connections between the servers and control units use technologies such as Ethernet or Fibre-Channel, with the associated switches, I/O adapters, device drivers and multiple layers of a protocol stack. Fibre-channel, for example, as defined by the INCITS T11 Committee, defines physical and link layers FC0, FC1, FC2 and FC-4 transport layers such as the Fibre Channel Protocol (FCP) for SCSI and FC-SB-3 for Fibre Connectivity (FICON). There are many examples of synchronous and asynchronous I/O access methods, each with their own advantages and disadvantages. Synchronous I/O causes a software thread to be blocked while waiting for the I/O to complete but avoids context switches and interrupts.
However, conventional synchronous I/O requires firmware to perform a Sync I/O transaction (e.g., purge a device table cache entry) when the corresponding transaction has completed. This works well when the I/O is locally attached with minimal access latency, but as access times increase, the non-productive processor overhead of waiting for the purge to complete becomes unacceptable for large multi-processing servers. When a device is invalidated, it is also typically required to purge the AT cache entries associated with the invalidated device from the AT context cache to ensure stale address translation entries are not reused by the hardware. In conventional systems, the AT context cache is also purged by the firmware adding to latency and resource consumption. In addition, the AT context cache has a limited number of entries (e.g., 64 entries).