Input/output computer system including hardware assisted autopurge of cache entries associated with pci address translations
Abstract
A computing system includes a processor and a memory unit that stores program instructions. The system purges an entry from an address translation cache in response to the processor executing the program instructions to perform issuing, via an operating system running on the computing system, a command indicating a request to perform an I/O transaction requiring a translation entry. A host bridge monitors a total data length of the address translation entry to be transferred during the I/O transaction. An address translation entry is selected from an address translation table, loaded into the address translation cache, and data corresponding to the I/O transaction is transferred using the selected address translation entry. The host bridge automatically purges the selected address translation entry from the address translation cache in response to determining the transferred amount of data matches the total data length for the address translation entry.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A method of purging an address translation cache included in a computing system, the method comprising:
issuing, via an operating system running on the computing system, a command indicating a request to perform an input/output (I/O) transaction requiring one or more address translation entries; determining, via a host bridge, a total data length to be transferred during the I/O transaction corresponding to the one or more address translation entries, and an expected count value corresponding to the total data length to be transferred during the I/O transaction; selecting an address translation entry from an address translation table, adding the expected count data value to the address translation entry, and loading the address translation entry into the address translation cache; fetching the address translation entry and retrieving the expected count data value from the address translation entry; transferring data corresponding to the I/O transaction using the selected address translation entry; monitoring, via the host bridge, the amount of data transferred using the selected address translation entry, determining an actual count corresponding to the amount of data transferred, and comparing the actual count to the expected count value; and automatically purging the selected address translation entry without receiving a purge command from firmware in response to the actual count reaching the expected count value.
2 . The method of claim 1 , wherein comparing the actual count to the expected count value includes operating a data counter to count the amount of data transferred using the address translation entry.
3 . The method of claim 2 , wherein the host bridge performs the operations of:
setting the data counter to an initial value prior to transferring the data for the address translation entry; and decrementing the data counter each time the data is transferred using the address translation entry.
4 . The method of claim 3 , wherein the initial value equals the total data length and the final value equal zero.
5 . The method of claim 1 , wherein determining the total data length of the address translation entry to be transferred during the I/O transaction includes communicating the total data length from firmware to the host bridge.
6 . The method of claim 1 , wherein determining the total data length of the address translation entry to be transferred during the I/O transaction includes accessing, via the host bridge, a memory area containing a value indicating the total data length, and wherein the data length is part of the address translation entry itself
7 . The method of claim 6 , wherein the determining the total data length of the address translation entry includes:
setting up the address translation table, via firmware, in response to the command; determining the total data length in response to setting up the address translation table; writing, via the firmware, the value indicative of the total data length into the memory area; and accessing, via the host bridge, the memory area and reading the value to obtain the total data length.
8 . A computer program product, the computer program product comprising a computer readable storage medium having program instructions for purging an address translation cache included in a computing system, the program instructions executable by a processor to perform operations of:
issuing, via an operating system running on the computing system, a command indicating a request to perform an input/output (I/O) transaction requiring one or more address translation entries; determining, via a host bridge, a total data length to be transferred during the I/O transaction corresponding to the one or more address translation entries, and an expected count value corresponding to the total data length to be transferred during the I/O transaction; selecting an address translation entry from an address translation table, adding the expected count data value to the address translation entry, and loading the address translation entry into the address translation cache; fetching the address translation entry and retrieving the expected count data value from the address translation entry; transferring data corresponding to the I/O transaction using the selected address translation entry; monitoring, via the host bridge, the amount of data transferred using the selected address translation entry, determining an actual count corresponding to the amount of data transferred, and comparing the actual count to the expected count value; and automatically purging the selected address translation entry without receiving a purge command from firmware in response to the actual count reaching the expected count value.
9 . The computer program product of claim 8 , wherein the monitoring includes operating a data counter to count the amount of data transferred using the address translation entry.
10 . The computer program product of claim 9 , wherein the host bridge performs the operations of:
setting the data counter to an initial value prior to transferring the amount of data; decrementing the data counter each time data is transferred using the address translation entry; and automatically purging the selected address translation entry without receiving a purge command from firmware when the data counter reaches a final value indicating the I/O transaction is complete.
11 . The computer program product of claim 10 , wherein the initial value equals the total data length and the final value equal zero.
12 . The computer program product of claim 8 , wherein determining the total data length of the address translation entry to be transferred during the I/O transaction includes communicating the total data length from firmware to the host bridge.
13 . The computer program product of claim 8 , wherein determining the total data length of the address translation entry to be transferred during the I/O transaction includes accessing, via the host bridge, a memory area containing a value indicating the total data length, and wherein the data length is part of the address translation entry itself
14 . The computer program product of claim 13 , wherein the determining the total data length of the address translation entry includes:
setting up the address translation table, via firmware, in response to the command; determining the total data length in response to setting up the address translation table; writing, via the firmware, the value indicative of the total data length into the memory area; and accessing, via the host bridge, the memory area and reading the value to obtain the total data length.
15 . A computing system comprising a processor and a memory unit that stores program instructions, the system configured to purge an entry from an address translation cache in response to the processor executing the program instructions to perform:
issuing, via an operating system running on the computing system, a command indicating a request to perform an input/output (I/O) transaction requiring one or more address translation entries; determining, via a host bridge, a total data length to be transferred during the I/O transaction corresponding to the one or more address translation entries, and an expected count value corresponding to the total data length to be transferred during the I/O transaction; selecting an address translation entry from an address translation table, adding the expected count data value to the address translation entry, and loading the address translation entry into the address translation cache; fetching the address translation entry and retrieving the expected count data value from the address translation entry; transferring data corresponding to the I/O transaction using the selected address translation entry; monitoring, via the host bridge, the amount of data transferred using the selected address translation entry, determining an actual count corresponding to the amount of data transferred, and comparing the actual count to the expected count value; and automatically purging the selected address translation entry without receiving a purge command from firmware in response to the actual count reaching the expected count value.
16 . The computing system of claim 15 , wherein the monitoring includes operating a data counter to count the amount of data transferred using the address translation entry.
17 . The computing system of claim 16 , wherein the host bridge performs the operations of:
setting the data counter to an initial value prior to transferring the an amount of data for the address translation entry; decrementing the data counter each time data is transferred using the address translation entry; and automatically purging the selected address translation entry without receiving a purge command from firmware when the data counter reaches a final value indicating the I/O transaction is complete.
18 . The computing system of claim 17 , wherein the initial value equals the total data length and the final value equal zero.
19 . The computing system of claim 15 , wherein determining the total data length of the address translation entry to be transferred during the I/O transaction includes communicating the total data length from firmware to the host bridge.
20 . The computing system of claim 15 , wherein determining the total data length of the address translation entry to be transferred during the I/O transaction comprises:
setting up the address translation table, via firmware, in response to the command; determining the total data length in response to setting up the address translation table; writing, via the firmware, a value indicative of the total data length into a memory area; and accessing, via the host bridge, the memory area and reading the value to obtain the total data length.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.