Microprocessor and method implemented in microprocessor

文档序号:1830877 发布日期:2021-11-12 浏览:20次 中文

阅读说明:本技术 微处理器和在微处理器中实现的方法 (Microprocessor and method implemented in microprocessor ) 是由 柯林·艾迪 于 2021-09-01 设计创作,主要内容包括:本发明提供微处理器和在微处理器中实现的方法。在一个实施例中,一种微处理器,包括:转译后备缓冲器(TLB),其被配置为指示与存储器访问指令试图访问的存储器页的物理页地址相对应的虚拟页地址在TLB中未命中;第一微操作,其与第一存储器访问指令相对应,并且第一微操作被配置为基于第一虚拟页地址在TLB中的未命中来发起第一推测性表查找;以及第二微操作,其与第二存储器访问指令相对应,并且第二微操作被配置为基于比第一微操作更早并且还基于具有与针对第一存储器访问指令的第一虚拟页地址和属性相匹配的虚拟页地址和属性,在第一微操作的当前处理阶段接管第一微操作的现行的第一推测性表查找。(The invention provides a microprocessor and a method implemented in the microprocessor. In one embodiment, a microprocessor includes: a Translation Lookaside Buffer (TLB) configured to indicate that a virtual page address corresponding to a physical page address of a memory page that the memory access instruction is attempting to access misses in the TLB; a first micro-operation corresponding to a first memory access instruction, and configured to initiate a first speculative table lookup based on a miss of a first virtual page address in a TLB; and a second micro-operation corresponding to the second memory access instruction, and configured to take over an active first speculative table lookup of the first micro-operation at a current stage of processing of the first micro-operation based on being earlier than the first micro-operation and also based on having a virtual page address and attribute that matches the first virtual page address and attribute for the first memory access instruction.)

1. A microprocessor, comprising:

a Translation Lookaside Buffer (TLB) configured to indicate that a virtual page address corresponding to a physical page address of a memory page that a memory access instruction is attempting to access misses in the TLB;

a first micro-operation corresponding to a first memory access instruction, and configured to initiate a first speculative table lookup based on a miss of a first virtual page address in the TLB; and

a second micro-operation corresponding to a second memory access instruction, and configured to take over an active first speculative table lookup of the first micro-operation at a current stage of processing of the first micro-operation based on the second micro-operation being earlier than the first micro-operation and further based on having a virtual page address and attribute that matches the first virtual page address and attribute for the first memory access instruction.

2. The microprocessor of claim 1, wherein the second micro-operation is based on a TLB miss and pushes a table lookup operation after the first micro-operation has initiated the first speculative table lookup.

3. The microprocessor of claim 2, wherein the second micro-operation is configured to determine whether an existing table lookup exists and to initiate a new speculative table lookup in response to the absence of the existing table lookup.

4. The microprocessor of claim 3, wherein the second micro-operation is configured to determine whether the second micro-operation is older than the first micro-operation based on the determination that there is an active first speculative table lookup, and to replay into a pipeline if the second micro-operation is not older.

5. The microprocessor of claim 4, wherein the second micro-operation is configured to determine, based on the second micro-operation being earlier than the first micro-operation, whether a virtual page address and attribute corresponding to the second memory access instruction matches the first virtual page address and attribute for the first memory access instruction, and if not, evict the second micro-operation and initiate a new speculative table lookup.

6. The microprocessor of claim 1, wherein the attribute comprises a permission level.

7. The microprocessor of claim 6, wherein the permission level includes a user code and a monitor code.

8. The microprocessor of claim 1, wherein the attribute comprises a memory access type.

9. The microprocessor of claim 8, wherein the memory access type comprises load and store instructions.

10. The microprocessor of claim 1, wherein the attribute comprises whether writing is enabled.

11. The microprocessor of claim 1, wherein the attribute comprises whether an access bit or a dirty bit is set.

12. The microprocessor of claim 1, wherein a match to the first virtual page address corresponds to a page of virtual memory space mapped to a memory page.

13. The microprocessor of claim 1, further comprising a table lookup engine, wherein the table lookup engine for the first micro-operation is updated with an age of the second micro-operation based on the matching.

14. A method implemented in a microprocessor, the method comprising:

initiating, by a first micro-operation corresponding to a first memory access instruction, a first speculative table lookup based on a miss of a first virtual page address in a Translation Lookaside Buffer (TLB); and

taking over, by a second micro-operation corresponding to a second memory access instruction, an active first speculative table lookup of the first micro-operation at a current stage of processing of the first micro-operation based on the second micro-operation being earlier than the first micro-operation and also based on having a virtual page address and attribute that matches the first virtual page address and attribute for the first memory access instruction.

15. The method of claim 14, further comprising: pushing, by the second micro-operation, a table lookup operation based on a TLB miss and after the first micro-operation has initiated the first speculative table lookup.

16. The method of claim 15, further comprising: determining, by the second micro-operation, whether an existing table lookup exists, and in response to the absence of the existing table lookup, initiating a new speculative table lookup.

17. The method of claim 16, further comprising: determining, by the second micro-operation, whether the second micro-operation is earlier than the first micro-operation based on the first speculative table lookup determined to be active, and if the second micro-operation is not earlier, replaying into a pipeline.

18. The method of claim 17, further comprising: determining, by the second micro-operation, whether a virtual page address and attribute corresponding to the second memory access instruction matches the first virtual page address and attribute for the first memory access instruction, and if not, evicting the second micro-operation and initiating a new speculative table lookup.

19. The method of claim 14, wherein the attributes include one or more of a permission level, a memory access type, whether writes are enabled, whether an access bit or a dirty bit is set.

20. The method of claim 14, further comprising updating a table lookup engine of the first micro-operation with an age of the second micro-operation based on the matching.

Technical Field

The present invention relates generally to microprocessors, and in particular, to microprocessors that perform page table walks in response to translation lookaside buffer misses.

Background

Many modern microprocessors support the concept of virtual memory. In a virtual memory system, an instruction of a program executed on a microprocessor refers to data using a virtual address or a linear address in a virtual address space of the microprocessor. The microprocessor translates the virtual address into a physical address for accessing the physical memory.

A common virtual memory scheme supported by microprocessors is a paged memory system. Paged memory systems employ a paging mechanism for translating or mapping virtual addresses to physical addresses. The physical address space is divided into fixed-size physical pages. A typical page size is 4 KB. The virtual address includes a virtual page address portion and a page offset portion. The virtual page address specifies a virtual page (e.g., 4KB) in a virtual address space. The paging mechanism of the microprocessor translates virtual page addresses into physical page addresses. This process is called page translation. The page offset specifies a physical offset (e.g., a virtual or physical offset relative to a virtual or physical page address) in the virtual and physical pages.

The operating system decides which physical pages in memory are to be mapped to respective virtual pages and maintains page mapping information specifying the mapping. When the microprocessor encounters an instruction (such as a load or store instruction) that specifies a virtual address to access a location in memory, the microprocessor translates the virtual address to an appropriate physical address using the operating system's page mapping information. The operating system maintains page mapping information in system memory. Thus, the microprocessor reads the appropriate page mapping information from memory to translate the virtual address to a physical address. The page mapping information is typically arranged hierarchically to reduce its size, which requires the microprocessor to traverse the hierarchy by performing read operations at multiple levels of the hierarchy. To this end, and since at least a portion of the page mapping information is commonly referred to as a page table, the process of the microprocessor traversing the page mapping information to translate a virtual address to a physical address is commonly referred to as a page table lookup, or simply a table lookup, or a table lookup as primarily used herein. More information on table lookup may be found in U.S. patent 7,996,650 (hereinafter the 650 patent), which is incorporated by reference herein in its entirety.

In the' 650 patent, a Translation Lookaside Buffer (TLB) is described as part of a mechanism to reduce the number of table lookups to system memory by caching page mapping information. When the microprocessor encounters a memory access instruction (e.g., a load or store instruction), the microprocessor provides a virtual address to the TLB, and the TLB performs a lookup of the virtual page address. If a virtual page address hits in the TLB, the TLB provides a corresponding translated physical page address and page characteristics, avoiding the need for a table lookup. However, if the virtual page address misses in the TLB, the microprocessor must perform a table lookup.

In view of the above background, it is further noted that many microprocessors are superscalar (superscalar). Superscalar microprocessors include the following features: having multiple execution units and having the ability to issue multiple instructions to the execution units in a single clock cycle. Additional capabilities of superscalar microprocessors include performing out-of-order execution (e.g., the microprocessor may execute out-of-order instructions specified by a program that includes the instructions) and performing speculative execution of the instructions (e.g., the microprocessor executes the instructions, or at least performs some action specified by the instructions, before it is certain that the instructions will actually complete). Although the microprocessor may speculatively perform some action specified by the instruction, the microprocessor is not architected to allow the architectural state of the system to be updated with the results of the instruction until the instruction is no longer speculative, i.e., until it is determined that the instruction will complete (corresponding to the earliest state of the machine).

The' 650 patent improves upon conventional practices for TLB misses that require table lookups. For example, for a conventional out-of-order execution microprocessor (which suffers from a TLB miss requiring a table lookup), the microprocessor serializes the table lookup with other outstanding program instructions. That is, conventional microprocessors wait until all program instructions older than the initiator instruction (the instruction causing the TLB miss) have retired before they perform a table lookup, and do not issue any program instructions to the execution unit to perform an update than the initiator instruction until they complete the table lookup. In the' 650 patent, a microprocessor is described that speculatively performs and serializes table lookups only if: 1) system memory accesses associated with table lookups are required to be strictly ordered on the processor bus; 2) the processor needs to write to system memory to update the page mapping information for a table lookup; or 3) the system memory page for which the table lookup is to update the TLB is a global page. However, table lookup can still be improved.

Disclosure of Invention

In one embodiment, a microprocessor includes: a Translation Lookaside Buffer (TLB) configured to indicate that a virtual page address corresponding to a physical page address of a memory page that a memory access instruction is attempting to access misses in the TLB; a first micro-operation corresponding to a first memory access instruction, and configured to initiate a first speculative table lookup based on a miss of a first virtual page address in the TLB; and a second micro-operation corresponding to a second memory access instruction, and configured to take over an active speculative table lookup of the first micro-operation at a current stage of processing of the first micro-operation based on the second micro-operation being earlier than the first micro-operation and also based on having a virtual page address and attribute that matches the first virtual page address and attribute for the first memory access instruction.

Other systems, methods, features and advantages of the invention will be or will become apparent to one with skill in the art upon examination of the following figures and detailed description. It is intended that all such additional systems, methods, features and advantages be included within this description, be within the scope of the invention, and be protected by the accompanying claims.

Drawings

Various aspects of the invention may be better understood with reference to the following drawings. The components in the figures are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present invention. Moreover, in the figures, like reference numerals designate corresponding parts throughout the several views.

FIG. 1 is a block diagram illustrating an exemplary microprocessor implementing an embodiment of a table lookup takeover system.

FIG. 2 is a flow diagram of an embodiment of an exemplary table lookup takeover method.

FIG. 3 is a flow diagram illustrating an embodiment of another exemplary table lookup takeover method.

Detailed Description

Certain embodiments of a table lookup takeover system and method are disclosed that improve the past speculative table lookup mechanism by remedying some of the inefficiencies involved in implementing the earliest state of a machine for strictly ordered situations. In one embodiment, the table lookup takeover system enables a table lookup for an earlier memory access instruction (e.g., a store or load instruction) to undertake or take over (e.g., undertake or take over at a current stage of table lookup processing where a newer memory access instruction has arrived) an active speculative table lookup without restarting the table lookup. This takeover occurs under certain conditions, i.e., the respective memory access instructions corresponding to the respective table lookups point to the same virtual page address (e.g., the same virtual page) and they match in terms of their attributes, as described further below. By doing so, processing results obtained from speculative table lookups for newer memory access instructions are retained rather than discarded in the event that the machine's earliest state is updated if a strictly ordered situation is encountered.

In short, past table lookup mechanisms are inefficient because if an earlier (but later dispatched into the pipeline) micro-operation (micro-op) corresponding to a memory access instruction encounters a newer micro-operation that is currently performing a table lookup, the younger micro-operation is evicted and the older micro-operation initiates its own, new speculative table lookup. In these cases, particularly when the work of the evicted micro-operation is nearly complete or may have been completed, evicting a newer micro-operation and starting a new table lookup in favor of an earlier micro-operation may result in the loss of work that the now evicted micro-operation has completed, and may be extremely inefficient. In contrast, some embodiments of the table lookup takeover system evict micro-operations that are currently and speculatively performing table lookups, but instead of restarting the table lookup, take over from the speculative table lookup process at the current stage of processing, thus taking advantage of the work already done by the now-evicted micro-operation during the table lookup process.

Having summarized certain features of the table lookup takeover system of the present invention, reference will now be made in detail to a description of the table lookup takeover system as illustrated in the accompanying drawings. While the table lookup takeover system will be described in conjunction with these figures, it is not intended to be limited to the embodiments disclosed herein. That is, while the invention is susceptible to various modifications and alternative forms, specific embodiments thereof have been shown by way of example in the drawings and will herein be described in sufficient detail to enable those skilled in the art to understand the invention. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed. On the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the invention as defined by the appended claims. As used in this application, the word "may" is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words "include", "including", and "includes" mean including, but not limited to.

Various units, modules, circuits, logic, or other components may be described as being "configured to" perform a task or tasks. In such contexts, "configured to" is a broad recitation of structure generally meaning "having circuitry or other physical structure that performs or is capable of performing one or more tasks during operation. The circuit may be a dedicated circuit or a more general-purpose processing circuit operating under control of coded instructions. That is, in describing certain aspects or features of various implementations of the invention, terms such as "unit," "module," "circuit," "logic," and "component" may be used herein. Those skilled in the art will appreciate that the corresponding features are implemented using circuits, whether special purpose circuits or more general purpose circuits that operate under the control of microcoded instructions.

Additionally, the unit/module/circuit/logic/component may be configured to perform tasks even though the unit/module/circuit/logic/component is not currently in operation. It is expressly not intended that a unit/module/circuit/logic/component configured to perform one or more tasks be limited in its functionality. In this regard, those skilled in the art will appreciate that the particular structure or interconnection of circuit elements will generally be determined by a compiler, such as a Register Transfer Language (RTL) compiler, of the design automation tool. An RTL compiler runs on a script that is very similar to assembly language code to compile the script into a form for the layout or fabrication of the final circuit.

That is, integrated circuits (such as those of the present invention) are designed using more advanced software tools to model the desired functional operation of the circuit. As is well known, "electronic design automation" (or EDA) is a class of software tools used to design electronic systems, such as integrated circuits. EDA tools are also used to program design functions into Field Programmable Gate Arrays (FPGAs). A high-level representation of the circuit from which the lower-level representation and the final actual wiring can be inferred is created using a Hardware Descriptor Language (HDL) such as Verilog and very high speed integrated circuit hardware description language (VHDL). In fact, because modern semiconductor chips can have billions of components, EDA tools are considered essential to their design. In practice, circuit designers use programming languages such as C/C + + or the like to specify operating functions. The EDA software tool translates the specified function to RTL. A hardware descriptor language (e.g., Verilog) then translates the RTL into a discrete netlist of gates. The netlist defines the actual circuit produced by, for example, a foundry. Indeed, these tools are well known and understood for their role and use in facilitating the design process of electronic and digital systems and, therefore, need not be described herein.

Note that references to table lookups include terms having the same or similar functionality, including page table lookups or table lookups, etc., and include page table lookups in virtual or linear spaces. Further, in some embodiments, the table lookup comprises three steps. The first step is to read the necessary page mapping information needed to translate the virtual address to a physical address from memory and obtain the page characteristics. The second step is to update the page mapping information in the system memory (if needed). The third step is to allocate a Translation Lookaside Buffer (TLB) entry (entry) and update it with the new page mapping information. Note that references to a catcher and a take over are intended to convey the same processing.

Referring now to FIG. 1, a block diagram illustrating a microprocessor 100 according to the present invention is shown. Microprocessor 100 includes instruction translator 102, microcode 104, rename/dispatch unit 106, reorder buffer (ROB)108, execution unit 112, retirement unit 114, Bus Interface Unit (BIU)116, and memory subsystem 118. The store subsystem 118 includes a level one (L1) instruction cache 122, an L1 data cache 124, a level two (L2) cache 126, a Translation Lookaside Buffer (TLB)128, a load unit 132, a store unit 134, a load buffer 136, a store buffer 138, and a table lookup engine 142. In an embodiment, load unit 132 and store unit 134 are included in execution units 112. BIU 116 interfaces microprocessor 100 with a processor bus to which system memory and other devices, such as a system chipset, are coupled. For example, the BIU 116 receives load or store requests that require bypassing both the cache hierarchy and the write combine buffer (e.g., loads or stores to non-cacheable memory, MMIO devices, cacheable memory with write-through (write-through) features, or an atomic read-modify-write sequence across two cache lines (so-called lock split) transactions). When BIU 116 receives one of these load or store requests, it determines the final destination (e.g., DRAM, V4 interface, PCIe, etc.) and splits the request into multiple transactions if necessary. An operating system running on microprocessor 100 stores the page mapping information in system memory, which microprocessor 100 reads and writes for table lookup, as described herein.

Instruction translator 102 receives macro instructions from a memory subsystem 118, such as L1 instruction cache 122, and translates the macro instructions into micro instructions that are provided to rename/dispatch unit 106. For some macro instructions, the instruction translator 102 transfers control to the microcode 104, and the microcode 104 provides the microinstructions to the rename/dispatch unit 106. Some microinstructions (micro-operations) are load or store instructions that access memory, also referred to herein as memory access instructions. That is, the load/store instruction specifies a virtual address to access memory or other devices in the memory space of the microprocessor 100, where the BIU 116 uses a physical memory address to access the memory or other devices on the processor bus. The TLB 128 caches virtual-to-physical page address translations and page features of recently accessed memory pages to reduce the amount of time required for the microprocessor 100 to execute load/store instructions.

The rename/dispatch unit 106 allocates entries in the ROB 108 for each microinstruction outstanding in the microprocessor 100. Microinstructions are allocated into the ROB 108 in program order even though the execution units 112 may not execute the microinstructions assigned to them in program order, and the microinstructions are retired from the ROB 108 in program order by the retirement unit 114. In one embodiment, the age of a given micro-operation may be determined based on the relationship between the ROB 108 and the index of the retirement unit 108. The store unit 134 executes store instructions by writing data to a store buffer 138, the store buffer 138 subsequently writing data to a memory such as system memory, the L2 cache 126, and/or the L1 data cache 124. Load unit 132 executes load instructions by reading data from system memory, L2 cache 126, and/or L1 data cache 124 to load buffer 136.

When a load/store instruction misses in the TLB 128, the corresponding micro-operation, along with the tablewalk engine 142, pushes the tablewalk operation, as described below with respect to FIG. 2.

Attention is now directed to fig. 2, which illustrates an embodiment of an exemplary table lookup takeover method 144. Before beginning the description of method 144, it should be noted that the table lookup takeover of the disclosed embodiments can be made regardless of whether there is an ordered situation that requires serialization (e.g., there is a serialization condition that requires the table lookup to be the earliest table lookup before continuing). For example, the tablewalk engine 142 (or in some embodiments, other logic of the microprocessor 100) determines whether the current tablewalk load operation is strictly sequential. A table lookup load operation is a load of page mapping information, such as a page directory entry or page table entry (also including a page table entry), from memory to microprocessor 100 that causes table lookup engine 142 to enable or trigger table lookup engine 142 to push the table lookup operation. In one embodiment, if a memory location contains a non-cacheable page entry (e.g., by definition without allowing speculative access to the page entry), the table lookup load is strictly sequential. In one embodiment, the table lookup engine 142 determines whether the memory location of the page entry has a non-cacheable characteristic (whether its page-level cache disable (PCD) bit in the page mapping information is set). In particular, microprocessor 100 checks to avoid requesting BIU 116 to perform transactions on the processor bus associated with table lookups in an incorrect order because the memory location of the paged entry is designated as uncacheable. Note that other and/or additional mechanisms may be used to determine whether a memory location of a page entry is non-cacheable. For example, a Memory Type Range Register (MTRR) is combined with a Page Attribute Table (PAT) mechanism to use the PCD/PAT/PWT bits as a reference to combine with MTRR features to determine the true feature. In practice, the address of the memory location of the next level entry is combined with information from the current level (PCT etc.) to determine whether the location of the next level entry is strictly ordered. Additional information for the MTTR and PAT mechanisms is known in the art and may be referenced to publicly available information such as Software Developer manuals from Intel (registered trademark) (e.g., Addendum-Intel Architecture Software development's Manual, Vol.3: system Programming Guide, incorporated herein by reference.) furthermore, a given tablewalk load operation may also be strict if the paging information needs to be updated (e.g., access bits or dirty bits in a page entry) or if the resulting physical page is global.

As described above, a table lookup may also take over when a serialization condition does not exist. For example, there may be scenarios where: there is an earlier store to the same location, or a memory fencing operation, which is not always the case of serialization that requires the table lookup engine to be the earliest. The store/bound must eventually be done first or the table lookup engine is taken over by an earlier instruction than the store/bound.

In view of the foregoing, a table lookup takeover method 144 is shown in FIG. 2 and described below without reference to the serialization case, and it is understood that takeover may or may not involve the serialization case. Further, for purposes of illustration, the table lookup takeover method 144 is described in the context of two exemplary instructions that are dispatched in reverse order and may be spaced several clock cycles apart. These instructions, also referred to below as an earlier or first micro-operation and a newer or second micro-operation, are dispatched in reverse order (e.g., the newer micro-operation is dispatched into the pipeline first). It is noted that no particular relevance of the first and second references is implied, in particular not necessarily equivalent to similar terms used in the claims.

At block 146, the microprocessor 100 receives a memory access instruction 146 (e.g., a load/store instruction), also referred to hereinafter as a second micro-operation, as described in the preceding paragraph. Flow proceeds to block 148.

At block 148, the microprocessor 100 detects that the virtual page address of the memory access instruction executing in the load unit 132 or the store unit 134 misses in the TLB 128 of FIG. 1. Flow proceeds to block 150.

At block 150, the table lookup engine 142 facilitates a table lookup operation. That is, the tablewalk engine 142 updates the state within the microprocessor 100 to indicate that a tablewalk is required for the memory page accessed by the memory access instruction. Flow proceeds to block 152.

At block 152, the second micro-operation determines whether there is an active table lookup. For purposes of this example, assume that there is no active table lookup, so flow proceeds to block 154.

At block 154, the second micro-operation initiates a new speculative table lookup.

Assume now that an earlier memory access instruction or first micro-operation is dispatched into the pipeline. Similar flow occurs for the first microinstruction, as similarly described above in blocks 146, 148, and 150.

At block 152, the first micro-operation determines whether there is an active table lookup. If not, flow proceeds to block 154. However, for this example, assume that the second micro-operation has not completed the (speculative) table lookup operation, and therefore it is determined that there is an active table lookup. Flow proceeds to block 156.

At block 156, the first micro-operation determines whether it is earlier than the second micro-operation that is performing the active table lookup. If not, flow proceeds to block 146 (e.g., after a possible idle period) where the first micro-operation is replayed into the pipeline (e.g., because there may or may not be a TLB miss that ensues at block 148). If the first micro-operation is earlier than the second micro-operation (as is the case in this illustrative example), then flow proceeds to block 160.

At block 160, the first micro-operation compares its page and attributes to those of the second micro-operation that is actively performing a table lookup. In other words, the first micro-operation determines whether its page address (e.g., a virtual page such as a 4k region as in one illustration) and attributes are the same as the page address and attributes of the second micro-operation. For example, attributes that may be matched include privilege levels (e.g., whether both memory access instructions originate from the same programming code privilege level, where a match occurs if both programming codes are user codes or both monitoring codes). Another example of an attribute to be matched includes whether the types of operations represented by the memory access instructions are the same, where a match occurs if both are load operations or both are store operations. Another example of a match of attributes is where both instructions set the access bit or dirty bit, whereas, for example, if one of the instructions sets the dirty bit and the other instruction does not, there is no match. Other types of attributes for matching relate to actions related to implementing instructions. For example, if one of the instructions involves prefetching (prefetch) and the other instruction does not, these are different behaviors, so there is no match. As another example, if both instructions involve writeable operations, there is a match, and only one writeable is a mismatch. These and/or other attributes may be the subject of the determination in block 160. Note that attribute determination requires all attribute matches (e.g., a match is a set of operations in which both instructions involve writeable or write-enabled (where the page is writeable and a micro-operation attempts to write) and an access bit or dirty bit). If there is no match in the page address and attributes, flow proceeds to block 162, otherwise flow proceeds to block 164.

At block 162, the first micro-operation causes eviction of the second (newer) micro-operation, and flow proceeds to block 154 where the first micro-operation initiates a new speculative table lookup at block 154.

At block 164, based on the match, the tablewalk engine 142 is updated such that the second micro-operation tablewalk now represents the first micro-operation. Flow proceeds to block 166.

At block 166, the first micro-operation takes over the current speculative table lookup at the stage of processing where the second micro-operation left off. In other words, unlike past techniques, the first micro-operation does not initiate a new speculative table lookup after evicting a newer micro-operation. Instead, the first micro-operation takes advantage of the work done during the active table lookup and continues from the current processing stage.

Note that variations in the quantity and/or order of steps may be implemented in method 144, where some steps may be performed simultaneously or in a different order than presented in fig. 2. In some embodiments, a fewer or greater number of steps may be performed.

In view of the above description, those of ordinary skill in the art will appreciate that one embodiment of another exemplary table lookup takeover method, as represented by method 168 of FIG. 3 and implemented by a microprocessor in one embodiment, includes: initiating a first speculative table lookup based on a miss in a Translation Lookaside Buffer (TLB) for a first virtual page address by a first micro-operation corresponding to a first memory access instruction (170); and taking over, by a second micro-operation corresponding to the second memory access instruction, an active first speculative table lookup (172) of the first micro-operation at a current stage of processing of the first micro-operation based on being earlier than the first micro-operation and also based on having a virtual page address and attribute that matches the first virtual page address and attribute for the first memory access instruction.

Any process descriptions or blocks in flow charts should be understood as representing modules, segments, logic, or portions of code which include one or more executable instructions for implementing specific logical functions or steps in the process, and alternate implementations are included within the scope of the embodiments in which functions may be executed out of order from that shown or discussed (including substantially concurrently or in a different order), depending on the functionality involved, as would be understood by those reasonably skilled in the art of the present invention. In some embodiments, the functionality of methods 144 and/or 168 may be implemented in a computer program product comprising a non-transitory computer-readable storage medium having computer-readable code embodied therein for specifying a microprocessor configured to perform speculative table lookups.

While the invention has been illustrated and described in detail in the drawings and foregoing description, such drawings and description are to be considered illustrative or exemplary and not restrictive; the invention is not limited to the disclosed embodiments. Other variations to the disclosed embodiments can be understood and effected by those skilled in the art in practicing the claimed invention, from a study of the drawings, the disclosure, and the appended claims.

It is noted that various combinations of the disclosed embodiments can be used and thus reference to an embodiment or one embodiment is not intended to exclude the features of that embodiment from the use of features of other embodiments. In the claims, the word "comprising" does not exclude other elements or steps.

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:程序运行方法、装置、处理器芯片、电子设备和存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!