An apparatus has a monitoring data store for storing monitoring data indicating regions of a memory address space to be monitored for changes, which can include at least two non-contiguous regions. Processing circuitry updates the monitoring data in response to an update monitor instruction. Monitoring circuitry monitors accesses to the memory system and provides a notification to the processing circuitry when data associated with one of the monitored regions has changed. This improves performance and energy efficiency by reducing the overhead of polling changes to multiple regions.
Legal claims defining the scope of protection, as filed with the USPTO.
1. An apparatus comprising: processing circuitry to perform data processing, the processing circuitry associated with an instruction decoder to decode instructions; a monitoring data store to store monitoring data indicative of addresses of a plurality of regions for which an interrupt is to be provided to the processing circuitry when data associated with one of the plurality of regions has changed, wherein the monitoring data store is configured to store said monitoring data indicative of said addresses of said plurality of regions separate from storage of said data associated with said plurality of regions in a cache or memory; wherein the processing circuitry is responsive to an update monitor instruction decoded by the instruction decoder to update the monitoring data stored by the monitoring data store, wherein the update monitor instruction identifies at least one address identifying at least one new region, for which the interrupt is to be provided to the processing circuitry, to be added to the plurality of regions for which the addresses are indicated by the monitoring data; and in response to the processing circuitry processing one or more update monitor instructions decoded by the instruction decoder specifying addresses of two or more non-contiguous regions of the memory address space, the monitoring data store is configured to store the monitoring data indicating the addresses of said at least two non-contiguous regions of the memory address space simultaneously; monitoring circuitry to monitor accesses to a memory system and to provide an interrupt to the processing circuitry in response to detecting that data associated with at least one region of said plurality of regions indicated by the monitoring data has changed; and in response to a report monitoring result instruction decoded by the instruction decoder, the processing circuitry is configured to request the monitoring circuitry to return an indication of at least one address of said at least one region for which said data has changed.
2. The apparatus according to claim 1 , wherein in response to a wait for event instruction decoded by the instruction decoder, the processing circuitry is configured to enter a power saving state; and the processing circuitry is configured to exit the power saving state in response to the interrupt from the monitoring circuitry.
3. The apparatus according to claim 1 , wherein the update monitor instruction identifies a plurality of addresses identifying regions for which the interrupt is to be provided to the processing circuitry following the update of the monitoring data.
4. The apparatus according to claim 3 , wherein the update monitor instruction specifies a base address and a bitmap identifying offsets of said plurality of addresses relative to said base address.
5. The apparatus according to claim 1 , wherein the processing circuitry is configured to clear the monitoring data in response to one of: execution of a clear monitor instruction, decoded by the instruction decoder, by the processing circuitry; and occurrence of an exception event.
6. The apparatus according to claim 1 , comprising an interconnect to manage coherency between a plurality of master devices or caches based on coherency protocol transactions exchanged between the master devices or caches and the interconnect; wherein the monitoring circuitry is configured to detect, based on the coherency protocol transactions, whether data associated with at least one of said plurality of regions indicated by the monitoring data has changed.
7. The apparatus according to claim 6 , wherein each coherency protocol transaction specifies an address of a block of data of a predetermined cache line size; and the apparatus comprises a configuration register specifying a value indicative of said predetermined cache line size.
8. The apparatus according to claim 1 , wherein at least one of the monitoring data store and the monitoring circuitry comprises a reverse translation mechanism to translate physical addresses specified for the monitored accesses to the memory system into virtual addresses used by the processing circuitry.
9. The apparatus according to claim 1 , wherein the monitoring data store comprises a monitoring data cache comprising a plurality of entries, each entry defining a corresponding region for which the interrupt is to be provided to the processing circuitry; and the apparatus comprises an interconnect to manage coherency for a plurality of caches including said monitoring data cache according to a coherency protocol.
10. The apparatus according to claim 9 , wherein in response to the processing circuitry executing the update monitor instruction, the monitoring data cache is configured to allocate at least one new entry in a shared coherency state of the coherency protocol; the interconnect is configured to trigger a transition of a given entry of the monitoring data cache from the shared coherency state to an invalid coherency state in response to detecting a write to the corresponding region; and the monitoring circuitry is configured to provide the interrupt to the processing circuitry in response to detecting the transition of said given entry from the shared coherency state to the invalid coherency state.
11. The apparatus according to claim 10 , wherein the monitoring data cache is configured to retain the given entry following the transition from the shared coherency state to the invalid coherency state.
12. The apparatus according to claim 10 , wherein the monitoring circuitry is configured to switch an entry from the invalid coherency state to the shared coherency state in response to detecting a read or write access to the corresponding region by the processing circuitry after the processing circuitry has been provided with a region indication identifying the corresponding region as a region for which a change was detected.
13. The apparatus according to claim 9 , wherein each entry of the monitoring data cache specifies reporting state information indicating whether that entry is in one of: an invalid reporting state indicating that the monitoring circuitry is still to detect a change to data associated with the corresponding region; a changed state indicating that the monitoring circuitry has detected a change to data associated with the corresponding region, but the processing circuitry is still to be provided with a region indication identifying the corresponding region as a region for which a change was detected; and a reported state indicating that the processing circuitry is still to access the corresponding region after being provided with said region indication.
14. The apparatus according to claim 13 , wherein in response to execution of the report monitoring result instruction, decoded by the instruction decoder, by the processing circuitry, the monitoring circuitry is configured to return to the processing circuitry at least one region indication corresponding to at least one region for which the corresponding entry of the monitoring data cache is in the changed state, and for each of said at least one region, to trigger a transition of the corresponding entry from the changed state to the reported state.
15. The apparatus according to claim 13 , wherein in response to a read or write access by the processing circuitry to a given region for which the corresponding entry of the monitoring data cache is in the reported state, the monitoring circuitry is configured to trigger a transition of the corresponding entry of the monitoring data cache from the reporting state to the invalid reporting state.
16. The apparatus according to claim 1 , wherein the monitoring data store is configured to store a data structure providing a filter representation of the addresses of the plurality of regions for which the interrupt is to be provided to the processing circuitry; wherein the monitoring circuitry is configured to query the filter representation with an address of a region for which data has changed, and to provide the interrupt to the processing circuitry when the query detects a match against the filter representation.
17. The apparatus according to claim 16 , comprising an address queue to store an indication of one or more addresses for which the query of the filter detected a match.
18. A storage medium storing a virtual machine computer program for providing, when executed by a data processing apparatus, an instruction execution environment according to the apparatus of claim 1 .
19. The apparatus according to claim 1 , wherein a type of the interrupt is independent of which of said plurality of regions indicated by the monitoring data is the at least one region for which said data has changed.
20. The apparatus according to claim 1 , wherein: the processing circuitry is directly responsive to the update monitor instruction being decoded by the instruction decoder to update the monitoring data stored by the monitoring data store; and the processing circuitry is directly responsive to the report monitoring result instruction decoded by the instruction decoder to request the monitoring circuitry to return said indication of said at least one address of said at least one region for which said data has changed.
21. The apparatus according to claim 1 , wherein said update monitor instruction comprises one of: an instruction having a dedicated instruction opcode defined in an instruction set architecture supported by the processing circuitry as representing said update monitor instruction, said dedicated instruction opcode indicating that the instruction represents a request to update said monitoring data; and a store instruction specifying at least one address of a memory mapped register corresponding to the monitoring data store, said at least one address of the memory mapped register being different from said at least one address of said at least one new region.
22. A method comprising: in response to decoding an update monitor instruction by an instruction decoder, updating monitoring data indicative of addresses of a plurality of regions for which an interrupt is to be provided to processing circuitry when data associated with one of the plurality of regions has changed, the monitoring data stored in a monitoring data store separate from storage of said data associated with said plurality of regions in a cache or memory; wherein the update monitor instruction identifies at least one address identifying at least one new region, for which the interrupt is to be provided to the processing circuitry, to be added to the plurality of regions indicated by the monitoring data; in response to the processing circuitry processing one or more update monitor instructions decoded by the instruction decoder specifying addresses of two or more non-contiguous regions of the memory address space, the monitoring data store is configured to store the monitoring data indicating the addresses of said at least two non-contiguous regions of the memory address space simultaneously; monitoring accesses to a memory system; and providing an interrupt to the processing circuitry in response to detecting that data associated with at least one region of said plurality of regions indicated by the monitoring data has changed; and in response to decoding a report monitoring result instruction, requesting monitoring circuitry to return an indication of at least one address of said at least one region for which said data has changed.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
March 16, 2017
May 12, 2020
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.