The present invention relates generally to a cache memory for a computer processor, and more specifically, to thread-based cache content saving for task switching.
In a computer system, in order to implement parallel execution of various software applications, the operating system (OS) may allot fixed units of time for execution of each partition, referred to as the partition's time quantum. A partition is allowed to run uninterrupted for its given time quantum before the OS switches to another thread, unless an event occurs that prevents the thread from completing its time quantum (e.g., the thread needs to wait on an input/output (I/O) operation). When a partition resumes execution in a subsequent time quantum, entries belonging to that thread may no longer be available in the cache, incurring a time penalty. This penalty may be particularly pronounced after a virtual machine swap from a first partition of the computing system to a second partition. The addresses of cache lines belonging to a partition that is not currently executing (i.e., a victim partition) may be recorded at the time that they are evicted from the cache for prefetching when the victim partition is rescheduled.
Embodiments include a method and computer program product for thread-based cache content saving for task switching in a computer processor. An aspect includes determining a cache entry in a cache of the computer processor that is owned by the first thread, wherein the determination is made based on a hardware thread identifier (ID) of the first thread matching a hardware thread ID in the cache entry. Another aspect includes determining whether the determined cache entry is eligible for prefetching. Yet another aspect includes, based on determining that the determined cache entry is eligible for prefetching, setting a marker in the cache entry to active.
The subject matter which is regarded as embodiments is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The forgoing and other features, and advantages of the embodiments are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:
Embodiments relate to thread-based cache content saving for task switching. Saving of addresses when there is a task switch for later cache restoration may require a relatively large amount of bandwidth, which may saturate the data buses of a computer system. To prevent saturation of the buses, the amount of data that is saved for restoration may be reduced. Entries in the cache may be identified based on software thread identifiers (IDs) that are tracked in a thread ID table of the most recently scheduled N tasks in a processor of the computer system. In each cache entry, an index of the software thread ID in the thread ID table is used as a hardware thread ID to identify the owner of the entry rather than the full software thread ID. Each cache entry further includes a marker that indicates whether the address of the entry should be saved for future prefetching if the entry is evicted from the cache.
In addition to tracking the N most recently scheduled software threads, the thread ID table also tracks the current active hardware thread. When there is a task switch in the processor, the cache tag directory is searched for lines belonging to the outgoing hardware thread ID. For each cache entry belonging to the outgoing hardware thread thread ID, it is determined whether to save the address of the cache entry for prefetching when the task associated with the thread associated with the outgoing hardware thread ID is later resumed. Cache entries are marked for saving using a marker, which may comprise a single marking bit in some embodiments, and, if the marker is set to active for cache entry that is being evicted, the address of the cache entry is saved for later prefetching. Each cache entry in the cache may have an associated marker. The determination of whether to save the address of the line may be based on the cache entry's position in a least recently used (LRU) stack of the cache. For example, in an embodiment, any cache entry belonging to the given hardware thread ID may be saved as a candidate for prefetching only if it is within the top half of the LRU stack, i.e., the cache entry has been used relatively recently. In other embodiments, the frequency of usage of a cache entry belonging to the hardware thread ID may be used to determine whether to save the cache entry address as a candidate for future prefetching. The determination of the frequency of usage of a cache entry may be made based on a frequency counter associated with the cache entry, which may be a 2-bit counter that is incremented when the cache entry is touched in some embodiments.
In further embodiments, the marker defines the level of cache to which the cache entry is restored upon prefetching. For example, if the marker is set to active, the cache entry may be saved with the marker such that when the line is restored, the cache entry is restored to the cache level from which the line was evicted. If the marking bit is set to inactive, the cache entry may be restored to a level of cache that is further away from the processor core than the level from which the cache entry was evicted. Not all content associated with a given task is saved off for restoration; rather, an entry that is being evicted from the cache that does not belong to the active hardware thread ID may be saved based on the marker in the entry. The address of the content in the cache entry is saved for later restoration, rather than the content itself Upon a restoration event, the addresses that are saved for the restored thread are acquired and the data is then fetched based on the addresses.
Turning now to
Entries may be evicted from the cache based on a LRU scheme. In some embodiments, instead of a basic LRU policy, if the LRU entry belongs to the hardware thread ID that is currently active and there is a more recent entry in the table that does not belong to the active hardware thread ID, then a least recently used entry that belongs to a different hardware thread ID will be replaced. In some embodiments, a cache entry belonging to a first thread may remain in the cache after de-scheduling of the first thread, and later be used by a second thread. In such an embodiment, the hardware thread ID of the cache tag array entry of the cache entry may be updated to a value that indicates that the cache entry belongs to more than one thread (for example, zero). In some embodiments, cache entries belonging to more than one thread are evicted only if there is no cache entry belonging to a single thread that is eligible for eviction.
Next, in block 505, the hardware thread ID of the next thread is determined based on the thread ID table 302. If the next thread does not already have an entry in the thread ID table 302, a new entry is created in the thread ID table 302 for the next thread by eviction and table write control logic 307. The new entry may be installed in place of an existing entry in the thread ID table 302 based on, for example, an LRU or round robin scheme. Lastly, in block 506, the next thread is the active thread corresponding to active software thread ID 304 and active hardware thread ID 403. Any cache entries belonging to the next thread from a previous execution of the next thread that were determined to be eligible for prefetching are prefetched based on information stored in PFLA storage 407 for the next thread. New cache entries that are created by the active thread have their hardware thread ID set in the cache tag array entry 208 to the active hardware thread ID 403 of the next (now active) thread.
Technical effects and benefits include reduction in the amount of data that is saved for later prefetching upon a task switch in a computing system.
Referring now to
The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the āCā programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.
This application is a continuation of U.S. application Ser. No. 14/528,366 (Harold W. Cain, III et al.), filed on Oct. 30, 2014, which in turn claims priority from U.S. application Ser. No. 14/468,568, filed on Aug. 26, 2014, which is herein incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
Parent | 14528366 | Oct 2014 | US |
Child | 15248025 | US | |
Parent | 14468567 | Aug 2014 | US |
Child | 14528366 | US |