CN105700856B - 根据记忆体存取类型的效益并配合积极层级的预取 - Google Patents
根据记忆体存取类型的效益并配合积极层级的预取 Download PDFInfo
- Publication number
- CN105700856B CN105700856B CN201510810493.XA CN201510810493A CN105700856B CN 105700856 B CN105700856 B CN 105700856B CN 201510810493 A CN201510810493 A CN 201510810493A CN 105700856 B CN105700856 B CN 105700856B
- Authority
- CN
- China
- Prior art keywords
- memory body
- body access
- access type
- prefetcher
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 513
- 230000008901 benefit Effects 0.000 title claims abstract description 15
- 238000000034 method Methods 0.000 claims description 81
- 210000000746 body region Anatomy 0.000 claims description 52
- 238000004458 analytical method Methods 0.000 claims description 30
- 230000007717 exclusion Effects 0.000 claims description 3
- 238000004519 manufacturing process Methods 0.000 claims description 3
- 239000000872 buffer Substances 0.000 description 47
- 230000008569 process Effects 0.000 description 29
- 238000010586 diagram Methods 0.000 description 26
- 230000008859 change Effects 0.000 description 13
- 238000012545 processing Methods 0.000 description 13
- 229910052710 silicon Inorganic materials 0.000 description 11
- 239000010703 silicon Substances 0.000 description 11
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 10
- 238000009826 distribution Methods 0.000 description 9
- VEMKTZHHVJILDY-UHFFFAOYSA-N resmethrin Chemical compound CC1(C)C(C=C(C)C)C1C(=O)OCC1=COC(CC=2C=CC=CC=2)=C1 VEMKTZHHVJILDY-UHFFFAOYSA-N 0.000 description 9
- 238000003860 storage Methods 0.000 description 9
- 238000012360 testing method Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 6
- 238000012512 characterization method Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 102100040428 Chitobiosyldiphosphodolichol beta-mannosyltransferase Human genes 0.000 description 3
- 101000891557 Homo sapiens Chitobiosyldiphosphodolichol beta-mannosyltransferase Proteins 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 101100495270 Caenorhabditis elegans cdc-26 gene Proteins 0.000 description 2
- 101100076569 Euplotes raikovi MAT3 gene Proteins 0.000 description 2
- 101100237293 Leishmania infantum METK gene Proteins 0.000 description 2
- 101150108651 MAT2 gene Proteins 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 239000011324 bead Substances 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000009885 systemic effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
处理器包括根据记忆体存取预取资料的预取器,每一记忆体存取与多个预定记忆体存取类型中的记忆体存取类型相关联。处理器也包括用以保存多个分数的表格,前述的分数是用以根据多个预定记忆体存取类型表明预取器预取资料的效益。预取器根据记忆体存取之积极层级预取资料,积极层级并是以表格中的多个分数以及相关联的记忆体存取中的记忆体存取类型所得到。
Description
发明内容
本发明的一个目的是提供一种处理器。此处理器包括预取器,此预取器用以根据记忆体存取预取资料,每一个记忆体存取与多个预定记忆体存取类型的其中之一记忆体存取类型相关联。处理器更包括了用以保存多个分数的表格,所述分数是用以表明预取器以多个预定记忆体存取类型来预取资料的效益。预取器根据记忆体存取之积极层级预取资料,积极层级并是以表格中的多个分数以及相关联的记忆体存取中的记忆体存取类型所得到。
本发明的另一个目的是提供一种处理器的运作方法,所述处理器包括用以根据记忆体存取预取资料的预取器,其中每一记忆体存取与多个预定记忆体存取类型中的其中之一记忆体存取相关联。所述方法包括维持表格所保存的分数,所述分数是用以表明预取器以多个预定记忆体存取类型来预取资料的效益,以及预取器根据记忆体存取之积极层级预取资料,积极层级并是以表格中的多个分数以及相关联的记忆体存取中的记忆体存取类型所得到。
本发明的一个目的是提供一种处理器。此处理器包括预取器,此预取器用以根据记忆体存取预取资料,每一个记忆体存取与多个预定记忆体存取类型的其中之一记忆体存取类型相关联。处理器更包括了用以保存多个分数的表格,所述分数是用以表明预取器以多个预定记忆体存取类型来预取资料的效益。预取器根据记忆体存取之积极层级预取资料,积极层级并是以表格中的多个分数以及相关联的记忆体存取中的记忆体存取类型所得到。
附图说明
图1为处理器的方块图。
图2为图1的条目的方块图。
图3至图11为图1的处理器的运作流程图。
图12为图1条目的替换实施例方块图。
图13为包含图1预取器的处理器元件的方块图。
图14为图13中包括图1预取器的处理器的运作流程图。
图15为产生配置之流程图,例如程序或程序阶段的MAT分数。
图16为记忆体存取示意图以及从图中提取的资料。
图17为程序的阶段分析流程图。
图18为决定处理器配置方面的较佳配置的蛮力法之流程图,例如快取记忆体、预取。
图19为圆饼图分析结果。
具体实施方式
实施例揭露了在处理器中的预取器(Prefetcher)是用以根据记忆体存取(memoryaccess)来预取资料,每一个记忆体存取皆对应随着其他记忆体存取资讯(例如:记忆体位址)而提供给预取器的记忆体存取类型MAT(Memory Access Type)。在其他实施例中,记忆体存取类型更具有32种不同的类型。预取器会追踪其预取不同记忆体存取类型的效益,并根据预取不同记忆体存取类型的效益改变预取积极性(Aggressiveness)的等级。在其他实施例中,处理器包括两个预取器,此两个预取器个别追踪预取不同记忆体存取类型MAT的效益,当其中之一的预取器可较另一个预取器更有效率的预取特定记忆体存取类型时,另一个预取器可能因为此特定记忆体存取类型而听从(Defer to)其中之一的预取器。
记忆体存取类型(MAT)为记忆体存取之特征,记忆体存取是由记忆体存取所产生的指令的任一特征中所产生、或是由处理器中用以产生记忆体存取的功能单元所产生、或是当产生记忆体存取时由处理器中的运作模式所产生、或是由记忆体存取得到资料类型时所得到的。
指令的特征例如是由指令所指定的操作。处理器中不同种类的功能单元例如是载入单元、储存单元、整数单元、浮点单元、媒体单元、寻访引擎、指令提取单元以及硬件预取器(例如:指令预取器、串流预取器、方块预取器、L1D预取器)。处理器的多个运作模式例如是管理者模式(特权模式或x86 ring 0)、系统管理模式(例如:x86 System ManagementMode,SMM)、保护模式(例如:x86真实模式、虚拟x86模式、保护模式、长模式)、虚拟机器模式(例如:x86 Vitrual Machine eXtensions,VMX)。资料类型例如是,代码、描述表(例如:x86指令集架构描述表(GDT)以及中断描述符表(IDT))、页表、系统管理模式(例如:x86 SMM)状态储存空间、虚拟机器模式(例如:x86 VMX)状态储存空间、堆叠、压缩数据、常数、浮点数、密码金钥、加密封包以及连结串行等。
记忆体存取是由指令提取单元所产生称为代码提取,记忆体存取是由硬件指令预取器所产生称为代码预取所产生。
请参阅图1,图1所示为处理器100的方块图,处理器100包括指令快取器122(instruction cache),指令快取器122是用以提供指令至指令解码器123(instructiondecoder),指令解码器123是用以解码指令并将解码后的指令提供至指令分配器124(instruction dispatcher),指令分配器124是用以分配指令至执行单元126(executionunit)。较佳的,处理器100的微处理结构(microarchitecture)为超纯量(superscalar)及乱序执行(out-of-order execution),其他实施例中,例如指令分配器124可包括指令排程器(instruction scheduler),指令排程器是用以以超纯量乱序的方式分配指令至多个执行单元126。较佳的,处理器100包括架构暂存器(architectural registers)(未示于图中),架构暂存器是用以保存处理器100的架构状态(architectural state)以及非架构暂存器(non-architectural registers)(未示于图中)。较佳的,处理器100包括暂存器别名表(register alias table,RAT)(未示于图中),暂存器别名表是用以执行暂存器更名,处理器100包括重新排序缓冲器(reorder buffer,ROB)(未示于图中),重新排序缓冲器是用以使指令根据程序的顺序被执行。较佳的,指令分配器124包括指令转换器(instructiontranslator)(未示于图中),指令转换器是用以将架构指令(architecturalinstructions)转换为处理器100中的微指令集架构(microinstruction setarchitecture)所包括的微指令(microinstruction),执行单元126并可执行上述的微指令。
处理器100更包括记忆体子系统128,记忆体子系统128是用以提供记忆体运算元(memory operands)给执行单元126并从执行单元126接收记忆体运算元。记忆体子系统128更包括至少一个载入单元(load unit)、至少一个储存单元(store unit)、载入伫列(loadqueue)、储存伫列(store queues)、处理器100用以请求访问快取线(cache lines)的填充伫列(fill queue)、用以侦测记忆体汇流排(memory bus)来判定处理器100正在与谁沟通的侦测伫列(snoop queue)、寻访引擎(tablewalk engine)以及其他的功能单元(functional unit)。
处理器100包括了快取子系统132与记忆体子系统128进行沟通,较佳地,快取子系统132包括多级(hierarchy)的快取记忆体,例如第L1级的指令快取122、第L1级的资料快取以及较第L1级快取延迟的第L2级快取,其中第L2级快取并为统一架构。在一实施例中,快取子系统132也包括了第L3级的快取。在一实施例中,处理器100是个多核心处理器,每个核心具有上述之功能单元,具有快取记忆体的快取子系统132则共用于多个核心之间。
记忆体子系统128产生快取子系统132的记忆体存取134,记忆体存取134包含了准备存取的记忆体位置的记忆体位址。每一个记忆体存取134包含多个记忆体存取类型MAT其中之一个记忆体存取类型MAT,为了更详细说明相关实施例,将会配合表1进行说明。
处理器100包含两个预取器,预取器0 120-0以及预取器1 102-1,统称为预取器102并通常分别作为预取器102。在其他实施例中预取器102不限为两个。预取器102可通过不同的方式预取资料。预取器102可以利用预测取得资料的位置的方式来预取。例如:一简单方法是,预取器102检测程序产生的串流所对应记忆体存取的位置,并预测程序将会从下一顺序的位置存取资料。(一般来说,所有的快取线是在处理器的快取记忆体内预取。因此,预取器102预取记忆体位址中的一快取线,此快取线临近一快取线之记忆体位址包含由程序存取所指定的资料)下一顺序的快取线可能在记忆体中的程序串流存取的位置的上方或下方。预取器102在同一串流中可能有相邻的存取来判断方向是往上还是往下。在其他实施例中,根据一步幅检测方法(stride detection method),预取器可侦测时间上相邻的串流记忆体存取的步幅模式(stride pattern)并根据侦测的步幅来预测。也就是预取器102寻找时间上相邻的记忆体存取彼此之间的间隔距离,并预测下一顺序的程序存取将是距离目前位置一个间隔距离远的位置。例如,预取器得到一串流之存取位置4、8以及12,并侦测到间隔距离为4,因此预测下一存取位置为16。预取器102可通过更复杂的步幅检测方法侦测在一模式(pattern)中具有不同间隔距离的串流。例如,预取器得到一串流需存取位置4、8、10、14以及16,并侦测到第一间隔距离为4第二间隔距离为2,因此预取器预测下一存取位置为20以及22。在其他实施例中,预取器102可侦测在一个记忆体区块(memory block)内的记忆体存取模式,记忆体区块在存取出现时是相对独立于时间顺序中,相关的实施例是应用于「边框预取」,其揭露于美国专利第8645631号、美国专利第8719510号、美国专利第8762649号以及美国专利第8880807号,上述之美国专利申请案根据其目的透过引用将所有内容并入本文。
每一个预取器包括条目104,将会配合图2更详细说明,是用以保存资讯以及预取器102所使用的逻辑操作以预取资料。在一实施例中,预取器102与处理器100中的快取子系统132的最末级快取记忆体(Last level caches)LLC相关联。在一实施例中,处理器100具有多个核心,这些核心共享最末级快取记忆体LLC。较佳地,最末级快取记忆体LLC接收由每个核心的记忆子系统128所产生的记忆体存取134或记忆体存取要求134,也接收由其他核心、快取记忆体、包括上述之处理器100的系统的外部装置(例如:直接记忆体存取)所产生的外部记忆体存取(例如:侦测)。
处理器100更包括记忆体存取类型评分表106。记忆体存取类型评分表106保存分数108,分数108是用以表示预取器102的效益。较佳地,记忆体存取类型评分表106为二维阵列,二维阵列的列与每一预取器102相关,因此,与预取器0 120-0相关联的分数称为分数0108 -0,与预取器1 120-1相关联的分数称为分数1 108-1,记忆体存取类型评分表106的每一行对应至不同的记忆体存取类型MAT。表1列出了不同的记忆体存取类型MAT,并根据其来源说明不同的记忆体存取类型MAT。
在表1的实施例中具有32种不同的记忆体存取类型MAT。在其他实施例中也可具有不同数量以及种类的记忆体存取类型MAT。例如,在记忆体存取类型MAT的列表中可包含由一指令提取器或代码提取产生的记忆体存取,以及由指令预取器或者代码预取器所产生的记忆体存取。
表1
在一实施例中,指令可以是微指令(microinstructions),微指令是由处理器100中的指令转换器(instruction translator)所产生,指令转换器是用以将架构(architectural)(例如:x86指令集架构指令)指令转换为微指令。
在一实施例中,当在制造时,处理器100配置有分数108,且分数108存在于记忆体存取类型评分表106中。例如,处理器100的设计者可能会执行效能测试(如:利用处理器100的软体模拟模型),此效能测试会测试多个储存于记忆体存取类型评分表106中的分数108,并判定出具有最佳整体表现的分数108。在一实施例中,当处理器100在运作时,记忆体存取类型评分表106以及分数108维持不变。然而,在其他实施例中,初始的分数108为记忆体存取类型评分表106之系统预设值,当处理器100在运作时,分数108会持续的动态更新,如所述的实施例,可以根据预取器102之处理记忆体存取的效益来更新分数108。在其他实施例中,分数108可随着处理器100当前所执行的特定程序之程序特定值更新,此特定程序的分数108可藉由程序搭配不同的记忆体存取类型评分表106的分数108,并分析其效能后决定一最佳效能值来预先得到。
请参阅图2,图2为图1中的条目104的方块示意图。条目104包括控制逻辑222,控制逻辑222是用以读取或写入数值至记忆体存取类型评分表106。条目104包括MYHIT计数器202、NOTUSED计数器204、OTHERHIT计数器206、当前记忆体存取类型暂存器208、积极层级暂存器212、MAT计数器214、MAT位元遮罩216以及附加预取状态218并皆与控制逻辑222互相通讯。每一个预取器102与多个条目104相关联用以追踪存取一记忆体区域(或可称为记忆体区块(block)或串流)的资讯,并利用所述资讯对所述记忆体区域进行预取。例如,所述记忆体区域可对应于实体记忆体(physical memory)的一页面、其子集合或一群组页面。每一个预取器102的多个条目104具有不同的可用数量,预取器102并具有不同的替代方案,例如:当需要替换条目104时,可利用不同方式决定更换多个条目104中的其中之一。较佳地,当条目104被替换,计数器202/204/206/214会重置,当前记忆体存取类型208、积极层级暂存器212以及MAT位元遮罩216则根据所述记忆体区域的第一个记忆体存取的记忆体存取类型来初始化。
MYHIT计数器202计算快取线被个别的预取器102成功命中(hit)的预取次数,例如,预取器102与对应的条目104,如条目104与预取器0 102-0对应,快取线的命中次数为快取线被预取器0 102-0预取的次数。OTHERHIT计数器206是用以计算上述之快取线被其他预取器102成功命中的预取次数,例如预取器102之外的预取器102与其对应的条目104相关联,如条目104对应于预取器0 102-0,而预取次数为快取线被预取器1102-1成功命中取的次数。在一替代实施例中,OTHERIT计数器206用以计算快取线的命中次数且为即时预取器要求预取的,但实际上是由其他预取器102所预取。例如,即时预取器预取快取线的要求在快取记忆体中成功预取,因为此预取要求已被其他预取器102完成。较佳地,每一个快取线包括代表状态的位元(例如,在快取记忆体的标记阵列(tag array)中),所述位元是用来判断是哪个预取器102预取了所述的快取线。NOTUSED计数器204是用来计算快取线被从未使用的预取器102预取之次数,例如,预取器102在预取快取线以及逐出快取之间皆无预取快取线。
当前记忆体存取类型暂存器208存有记忆体存取类型MAT的识别符(identifier),且是表征与条目104相关的记忆体存取的识别符。例如:请参阅表1,表1中的记忆体存取类型MAT可以具有识别符0至识别符31。接着将说明与条目104相关联的记忆体存取的特征。
积极层级暂存器212是用以保存说明预取器102如何进行积极性预取的资讯。在一实施例中,积极层级212指定预取数,如当预取器102决定进行预取时,预取器102预取快取线的次数是对应于记忆体存取。例如:当积极层级212相对为低时,预取数可能为1;当积极层级212相对为中等时,预取数可能为2;当积极层级212相对为高时,预取数可能为3。
在其他实施例中,积极层级212指定距离目前位置之最大预取距离(如:多条快取线)进行预取。例如:当积极层级212相对为低时,预取距离可以为5;当积极层级暂存器212相对为中等时,预取距离可以为15;当积极层级212相对为高时,预取距离可以为40。在其他实施例中,积极层级212指定预取数以及预取距离的组合。例如:积极层级212指定预取数为3,而在任何情况下预取距离不大于30条快取线,因此若跨距为17条快取线,预取器102将只预取2条快取线,而不是预取数的3。
在其他实施例中,积极层级212指定预取器102如何根据当前预取要求所使用的资源的使用率来进行预取。预取器102的填充伫列为被预取要求所使用的资源的实施例,预取器102接收所述要求并根据要求从记忆体中取得快取线。填充伫列的数量(例如,伫列中的有效数量)可用以提供至预取器102以计算当前资源的使用率。若填充伫列包括了大量的要求,所述要求为执行中的程序需从记忆体需求(memory demanded)中取得快取线,将不再使填充伫列资源负担预取快取线的需求。例如,假设填充伫列只具有三个可用的项目(例如:填充伫列的16个项目中的13是可用的),在此情况中,若积极层级212低于一第一门槛值(first threshold),预取器102可决定避免产生任何预取,若积极层级212高于所述第一门槛值但低于一第二门槛值,预取器102可产生一个预取,若积极层级暂存器212高于第二门槛值,预取器102可决定产生三个预取。当程序要求记忆体存取在末级快取错过了,则需要无效的填充伫列项目来执行分配,前述之前两种选择可允许程序要求记忆体存取更进一步来执行。但,较后的的选择可能阻止所要求的记忆体存取当程序要求记忆体存取更进一步来执行,预取器102可因为特定的记忆体存取类型而具有高分数并承担风险。例如:其他填充伫列项目可与记忆体存取有关,并差点错过预取器102预取的视窗,然而目前预取器102已具有不错的存取模式,预取器102可提前并顺利预取程序的工作资料集合,因此程序记忆体存取可成功的预取快取而不是预取失败。在其他实施例中,预取器102可冒险接受填充伫列主要为预取要求而非所需的记忆体存取。
MAT计数器214较佳的可根据记忆体存取类型具有个别的MAT计数器214,当分配了对应的条目104,每一个MAT计数器214计算具有个别记忆体存取类型MAT的记忆体存取次数。例如:如果14sotre_fp记忆体存取类型记忆体存取已被执行于与被分配的条目104相关之记忆体页面,sotre_fpMAT计数器214将具有14的数值。MAT计数器214将被利用于表征与条目104相关联的当前记忆体存取类型208。MAT计数器214将会配合图9进一步的说明。
在其他实施例中,当记忆体存取具有记忆体存取类型群组中的其中一个记忆体存取类型MAT时,积极层级暂存器212指定至少一个管理预取器102行为的参数的数值。在一实施例中,预取器102辨认N个不同且映射于单一记忆体存取类型MAT的群组(例如:4个)。每一个群组包括一个32位元暂存器,以及一个位元对应于32个记忆体存取类型的其中之一,上述之位元是用以表示记忆体存取类型包括于与暂存器相关联的群组中。以这种方式,每一个记忆体存取类型MAT可以动态地分配给一个群组。在一实施例中,每一个记忆体存取类型可以只属于一个群组。为了动态配置预取器102,将记忆体存取类型群组化是具有优势的,特别是对于积极层级212。每一个群组具有参数的数值,此数值会以预设值初始化,并随着运作而改变,例如被处理器的微代码(microcode)、系统软体(如:模式指定暂存器(model-specific registers,MSRS))、或其他单元或子处理器,像是对应主处理器的服务处理器。前述的系数可包括以下实施例,多数与边框预取器(bounding box prefetcher)相关联:系数M是用以处理器的定义快取记忆体中应该被预取的范围,其定义为[N,N+M],N为记忆体存取的位置;快取线预取处理器在较低层级快取记忆体的数量;一旗标是用以在下一快取线使预取失能;一旗标是利用单一位置来估测串流的起始点,以控制开始预取的功能;个别的旗标是用以避免从不同周期产生预取(例如1,3,4,5)以及1,3,4,5以外的周期;一旗标控制记忆体存取要求的数量以锁定模式;一旗标用以控制锁定模式当两个记忆体存取距离为一个快取线;一旗标用以控制锁定模式当两个记忆体存取距离大于一个快取线;一旗标用以立即从大于另一模式的模式转换至两个记忆体存取一个快取线的模式;一旗标用以忽略资讯当要求的存取大于目前周期,并只进行距离目前建立模式最小距离的存取。
MAT位元遮罩216较佳的包括一个具有多个位元的遮罩,多个位元对应于多个记忆体存取类型MAT。控制逻辑222使在MAT位元遮罩216中的至少一个位元对应于至少一个记忆体存取类型MAT,表征记忆体存取的记忆体区域(memory region),记忆体区域并与条目104相关,MAT位元遮罩216中的其他位元则保持空白。MAT位元遮罩216更将配合图12有更详细的说明。
预取器状态218包含除了与记忆体存取类型相关的计数器202/204/206/214以及前述之暂存器208/212/216这些预取器102用以产生预取决定的元件的状态。预取状态218会因为预取器102使用不同方法预取而相异,如上述之内容。例如:预取状态218可包括至少一预取步幅长度暂存器。预取状态218可包括区块数量暂存器(block numbe register)或记忆体位址暂存器(memory address register),是用以保存记忆体区域位址,如实体记忆体页面。预取状态218也可包括预取方向暂存器(prefetch direction register)。预取状态218可包括区块位元遮罩暂存器(block bitmask registre),是用以保存位元遮罩,位元遮罩是用以表明记忆体区域中被存取的快取线。区块位元遮罩的每一个位元对应记忆体区域中的一个快取线。在区块位元遮罩中位元的真值(true value)是用以表示对应的快取线已被存取。当所有位元皆为假值(false)时区块位元遮罩即被初始化。在一实施例中,一个记忆体区块(memory block)的大小为4KB(在其他情况下,可等同于一个实体记忆体页面的大小),而快取线的大小为64byte,因此区块位元遮罩具有64个位元。然而,在其他实施例中快取线的大小可能会改变。此外,超过位元遮罩所维持的记忆体区域的大小可改变且不需要对应于实体记忆体页面的大小。相反的,超过位元遮罩所维持的记忆体区域或区块为任意的大小(较佳为2的次方),只要其包括足够数量的快取线以致能,并为了有益的预取目的侦测明确的方向以及模式。预取器状态218可包括最小指标暂存器(min pointerregister)和最大指标暂存器(max pointer register),是用以在预取器102开始追踪存取记忆体区块且区块已被存取时,个别维持指向最低和最高的快取线索引(index)。预取器102可包括一min_change计数器以及max_change计数器,是用以计数最小指标与最大指标改变的次数当预取器102开始追踪记忆体区块的存取时。预取器102包括一总和计数器(total counter),当预取器102开始追踪记忆体区块的存取时用以计数快取线存取的总数量。预取器102可包括一中间指标(middle pointer),是用以在预取器102开始追踪存取记忆体区块且区块已被存取时,用以指向中间的快取线索引(例如:最小指标与最大指标的平均)。预取器102可包括方向暂存器(direction register)、模式暂存器(patternregistre)、模式周期暂存器(pattern period register)、模式位置暂存器(patternlocation register)以及搜寻指标暂存器(search pointer register),是用以侦测存取模式以进行预取。预取器102可包括多个周期匹配计数器(period match counters)。每一个周期匹配计数器保留不同周期的计数。在一实施例中,周期为3、4以及5。所述的周期为中间指标的左/右的位元数量。周期匹配计数器会在每一个区块的记忆体存取后更新。如果区块位元遮罩表示在期间内中间指标左方的存取符合中间指标右方的存取,预取器102会增加与周期相关联的周期匹配计数器。关于周期匹配计数器、方向暂存器、模式暂存器、模式周期暂存器、模式位置暂存器以及搜寻指标暂存器的操作以及使用将在关于边框预取器实施例的美国专利第8645631号、美国专利第8719510号、美国专利第8762649号以及美国专利第8880807号进一步的说明。
请参阅图3,图3为处理器100之运作流程示意图。其开始于步骤302。
在步骤302,在多个预取器102的其中之一,即图3的预取器X,所有条目104未命中一个新的记忆体存取。例如:在记忆体区域中的记忆体存取并没有作动于预取器X中,如:其中一条目104没有被分配。此记忆体存取有一对应的记忆体存取类型MAT。接着执行步骤304。
在步骤304,预取器X检查与记忆体存取之记忆体存取类型MAT相关联的分数,即图3之分数X,此分数X并在预取器X的表106中。接着执行决策步骤306。
在决策步骤306中,预取器X判断分数X(于步骤304所检查之分数)是否少于一门槛值。如果判断为是,进行步骤308,反之,进行步骤309。被选择的门槛值是用以当预取器X预取特定的记忆体存取类型MAT具有较差的效能时,避免预取器X根据特定的记忆体存取类型MAT(或至少,第一个存取具有所述记忆体存取类型MAT的记忆体区域)进行预取。
在步骤308,预取器X抑制分配条目104,导致预取器X听从了其他预取器102(预取器Y)以从记忆体区域预取。抑制分配条目104可避免更换可用的条目104,并有利的致能非替换且可用的条目104以继续有效率的预取记忆体区域。流程并停止于步骤308。在一实施例,预取器X在预先记忆体存取的基础上听从了预取器Y,而不是在预先记忆体区域的基础上。即,预取器X分配一个条目104在未命中的情况,但每次预取器X遇到了新的记忆体存取(如:在图4的步骤402)时,预取器X检测新的记忆体存取之记忆体存取类型MAT的分数108,并作出类似步骤306(及/或步骤302)的决定,即预取或替代以听从预取器Y替代。在其他实施例中,当新记忆体存取之记忆体存取类型MAT并不符合表征条目104的至少一个记忆体存取类型,预取器X藉由未命中于条目104在预先记忆体存取的基础听从预取器Y,例如MAT位元遮罩216所示,如以下图12所述。也就是说,图12所述之实施例,预取器X听从预取器Y以进行记忆体区域的预取,更狭义的意义上,为在预先记忆体存取的基础上听从,特别是相对于给定的记忆体存取具有一记忆体存取类型MAT对应于表征条目104的记忆体区域之至少一个记体存取类型MAT。
在步骤309,预取器X检测分数,此分数与其他预取器102的表106中的记忆体存取的记体存取类型MAT相关联,请参阅图3的预取器Y,上述之分数为图3的分数Y。接着进行步骤312。在一实施例中,预取器X并无执行步骤309以及步骤3012的操作。
在决策步骤312中,预取器X判定分数X是否少于分数Y。若为是,继续步骤308,反之进行步骤314。分数X必须少于分数Y以抑制分配可能被选上之条目104,当预取器X根据特定记忆体存取类型MAT进行预取之效能较预取器Y根据特定记忆体存取类型MAT进行预取之效能差时,避免预取器X根据特定记体存取类型MAT进行预取。在一实施例中,分数X与分数Y产生一差值,且此差值必须大于门槛值以进行步骤308。
在步骤314中,预取器X分配其中之一的条目104。接着进行步骤316。
在步骤316,预取器X根据新记忆体存取之记忆体存取类型MAT设定被分配的条目104中的当前记忆体存取类型暂存器208。接着进行步骤318。
在步骤318,预取器X根据分数X设定于被分配的条目104中的积极层级暂存器212。流程结束于步骤318。
请参阅图4,图4揭露了处理器100之运作流程示意图。流其开始于步骤402。
在步骤402,其中之一个预取器102的条目104中的新记忆体存取为命中。例如:记忆体区域中的记忆体存取作动于预取器102中,如一条目104已被分配。记忆体存取具有相关联的记体存取类型MAT。接着进行步骤404。
在步骤404中,预取器102根据目前积极层级212进行预取。目前积极层级212可能以各种方式设定,像是图3的步骤318、图9的步骤912或图10的步骤1018以及1019。流程结束于步骤404。
在一实施例中,在条目104的所有命中的新记忆体存取,预取器102根据新记忆体存取之记忆体存取类型MAT更新目前的记忆体存取类型MAT108,根据与新记忆体存取之记忆体存取类型MAT相关的表106中的分数108更新目前积极层级212,若有需要,可根据目前积极层级暂212进行预取。在一实施例中,控制逻辑222从与预取器102相关联之表106复制分数108至条目104的本地储存区(local storage)。
请参阅图5,图5揭露了处理器100之运作流程示意图。其开始于步骤502。
在步骤502中,其中之一的预取器102,即图5中的预取器X,是用以侦测记忆体存取命中快取线,且是由预取器X所预取。如上述之内容,快取记忆体的标记阵列(tag array)(如LLC)可能包含便于确认预取快取线的预取器102之位元。接着进行步骤504。
在步骤504中,预取器X中对应条目104的MYHIT计数器202会增加。流程结束于步骤504。
请参阅图6,图6揭露了处理器100之运作流程示意图。其开始于步骤602。
在步骤602中,其中之一的预取器102,即图6中的预取器X,用以侦测被预取器X预取的快取线从快取记忆体中(如LLC)被移除,但快取线在被预取到从快取记忆体中被移除的时间内都未被使用。快取记忆体(如LLC)的标记阵列可能包含便于确认快取线是否被存取之位元。接着进行步骤604。
在步骤604中,预取器X之NOTUSED计数204会增加。流程结束于步骤604。
请参阅图7,图7揭露了处理器100之运作流程示意图。其开始于步骤702。
在步骤702中,其中之一的预取器102,即图7中的预取器X,用以侦测记忆体存取命中了被其他预取器102预取的一快取线,即图7中的预取器Y。另外,如以上所述,预取器X侦测记忆体存取命中了快取线且为预取器X需要的预取,但实际上是由预取器Y所预取。接着进行步骤704。
在步骤704中,预取器X中对应条目104的OTHERHIT计数计数器206会增加。流程结束于步骤704。
请参阅图8,图8揭露了处理器100之运作流程示意图。其开始于步骤802。
在步骤802中,其中之一的预取器102,即图8中的预取器X,用以侦测时间以取消分配条目104。例如:预取器X可能需要分配条目至其他记忆体区域。或者,预取器X侦测程序不再存取记忆体区域,和/或预取器X已无法有效的存取记忆体区域。接着进行步骤804。
在步骤804中,预取器X为了条目104的当前记忆体存取类型暂存器208产生分数108。较佳的,预取器X根据MYHIT计数器202、NOTUSED计数器204以及OTHERHIT计数器206产生分数108。在一实施例中,控制逻辑202计算做为两个以上的输入的加权和的分数,例如MYHIT计数器202、NOTUSED计数器204、以及OTHERHIT计数器206的值。较佳的,MYHIT计数器202的权重为正值,与NOTUSED计数器204以及OTHERHIT计数器206相关联的权重为负值。接着进行步骤806。
在步骤806中,预取器102以步骤804所计算的分数108更新预取器X的当前记忆体存取类型暂存器208表106中的分数108。在一实施例中,预取器102更新其记忆体存取类型MAT不为0的MAT计数器214,预取器X之分数108为步骤804所计算并于表106中的分数108。在一实施例中,预取器102更新其记忆体存取类型MAT大于一门槛值的MAT计数器214,预取器X之分数108为步骤804所计算并于表106中的分数108。流程结束于步骤806。
请参阅图9,图9揭露了处理器100之运作流程示意图。其开始于步骤902。
在步骤902中,一个新的记忆体存取命中了其中之一预取器102的条目104,例如:此记忆体存取一运作于预取器102的记忆体区域中,如:被分配的条目104。此记忆体存取具有一个相关联的记忆体存取类型MAT。接着进行步骤904。
在步骤904中,控制逻辑222增加与新记忆体存取的MAT相关联的记忆体存取MAT计数器214,接着进行决策步骤906。
在决策步骤906中,控制逻辑222判断在步骤906中有增加的MAT计数器214是否到达一门槛值。如果是,进行步骤908,反之,进行步骤916。所述门槛值是表示与MAT计数器214相关联的记忆体存取类型MAT成为记忆体区域中的记忆体存取之主要的记忆体存取类型MAT。
在步骤908中,控制逻辑222以新记忆体存取的记忆体存取类型MAT设定条目104的当前记忆体存取类型暂存器208,也就是与记忆体存取类型MAT相关联的MAT计数器214已经溢值。接着进行步骤912。
在步骤912中,控制逻辑222以与记忆体存取类型MAT以及预取器102相关联的分数108设定已被分配的条目104的积极层级暂存器212。接着进行步骤914。
在步骤914,控制逻辑222重置MAT计数器214。接着进行步骤916。
在步骤916中,预取器102根据积极层级212来预取。流程结束于步骤916。
请参阅图10,图10揭露了处理器100之运作流程示意图。图10介绍了图3之替代实施例。在图10实施例中,控制逻辑222不断为了当前记忆体存取类型暂存器208产生分数(如:每一次计数计数器202/204/206的其中之一更新),而不是当条目104为取消分配(de-allocation)时段时等待图8的步骤804产生给当前记忆体存取类型暂存器208的分数。不断产生的分数用于图10中的步骤1019(以下说明),以更新表106中的分数108。在图10中,图3的步骤316的流程是用以决定图10的步骤10017。
在步骤1017中,预取器X辨认预取器X中是否有其他可用的条目104,且此条目104具有相同的当前记忆体存取类型暂存器208作为新记忆体存取的记忆体存取状态MAT。如果是,接着进行步骤1019,反之,进行步骤1018。在一实施例中,如果预取器X具有多个可用的条目104且多个条目104具有相同的当前记忆体存取类型暂存器208,预取器X辨认最新的(最近期被分配的)匹配条目104。
在步骤1018中,预取器X根据分数X设定被分配的条目104的积极层级暂存器212。流程结束于步骤1018。
在步骤1019中,预取器X根据步骤1017中被辨认为其他有效的条目104且不断被产生的分数设定被分配的条目104的积极层级暂存器212。
可以看出图9以及图10之实施例提供了设定条目104的当前记忆体存取类型暂存器208的方法,以表示记忆体区域轮流以记忆体区域的第一记忆体存取来表征或以每一个个别的记忆体存取来表征,如上述图4之叙述。
请参阅图11,图11揭露了处理器100之运作流程示意图。其开始于步骤1102。
在步骤1102中,包含处理器100的系统侦测一新流程或程序正在运作。在一实施例中,运作于处理器100的系统软体侦测新的流程,如一装置驱动监控运算的系统流程列表(system process table)。系统软体可能提供资讯给处理器,处理器可能利用系统软体来侦测程序已进入了不同的阶段(phases),例如以下将配合图13所进行的说明,系统软体可能指定每一个阶段具有不同的记忆体存取状态MAT分数。为了回应指令,处理器更新记忆体存取状态MAT分数108,如果有提供,装载阶段侦测器(phase detectors)(图13的1414)以及初始阶段标识符(initial phase identifiers)(图13的1412)。在一实施例中,处理器100自行侦测新的程序,如处理器100侦测处理过程标示符(process context identifier)的变化,如:新的数值被载入处理过程标示符PCID为x86指令集架构CR3暂存器的部分。在一实施例中,处理器100侦测目前运作程序的新阶段的转变而不是程序的改变。接着进行步骤1104。
在步骤1104中,预取器102将分数填入记忆体存取类型评分表106中,所述分数为先前根据在步骤1102中被侦测的程序的离线分析所产生的。在一实施例中,当系统软体侦测新的程序运作于步骤1102中,系统软体提供所述分数。在一实施例中,处理器100根据侦测的处理过程标示符PCID的改变或程序阶段的转换从记忆体(如:处理器100的本地专用记忆体(local private memory)或系统记忆体)取得分数,较佳的,处理器100从处理过程标示符PCID或阶段标识符辨认所述分数。分数的资讯可包含程序在不同阶段由离线分析所决定的不同分数。流程结束于步骤1104。
请参阅图12,图12为图1之条目104之实施例架构示意图。在图2的实施例中,控制逻辑222比较新记忆体存取的位址与保存在预取器状态218的记忆体区域位址暂存器的记忆体区域位址,以判定新记忆体存取是否命中或者未命中条目104,也就是说条目104命中单纯根据记忆体位址。然而图12实施例中,条目104命中是利用当前记忆体存取的记忆体存取类型MAT,如本文所述。
图12中的条目104实施例包括一比较器1202,比较器1202接收MAT位元遮罩216以及记忆体区域位址218,此记忆体区域位址218为图2之预取器状态218的一部分。比较器1202将MAT位元遮罩216以及记忆体区域位址218与新记忆体存取状态MAT1204(新记忆体存取的MAT为独热码向量(one-hot bit vector)格式)以及新记忆体存取位址1206作比较。如果位址218/1206符合且MAT位元遮罩216中对应于新MAT位元1204的位元已经设定,所述比较器1202在一hit/miss指示器1208中表明一命中或表明一未命中,如:在图3、4以及9中的步骤302、402以及902。
如以上所述,图12的实施例不只基于记忆体存取,也包括记忆体存取类型MAT来选择地分割条目104资源。所以,相同的记忆体区域可以拥有多个分配给记忆体区域的条目104,使得每个条目104因为多个不同的特征记忆体存取类型而被预取。也就是说,预取器102根据新记忆体存取选择地产生多个预取,此新记忆体存取使用与新记忆体存取的记忆体存取类型MAT相关联的条目104的积极层级212。记忆体存取所述区域不同于以预取器102有效的预取的能力时,可能对记忆区域特别有效。
较佳的,当分配条目104时,控制逻辑222填写MAT位元遮罩216。在一实施例中,控制逻辑222根据被分配的条目104设定MAT位元遮罩216中的位元,此位元对应至新记忆体存取的记忆体存取状态MAT。在一实施例中,当预取器102在记忆体区域中预取时,控制逻辑222动态的更新MAT位元遮罩216,如以下所述。
在一实施例中,控制逻辑222设定对应于多个记忆体存取类型的群组的MAT位元遮罩216中的位元,所述群组包括新记忆体存取的记忆体存取类型MAT。例如:一个群组可能包含多个记忆体存取类型,多个记忆体存取类型包括浮点数运算(如:前述表1中的fp_load,fp_store,fused_fp_stroe);其他群组可能包括多个记忆体存取类型MAT,多个记忆体存取类型MAT包括融合运算(fused operations)(如:前述表1中的fused_fp_store,fused_load,fused_store,fused_store_aps,fused_store_update);其他群组可能包括多个记忆体存取类型MAT,多个记忆体存取类型包括载入运算(如:fp_load,fused_load,load,load_aps,load_descr,load_nac,load_nt,load_store,load_supervisor,load_zx);其他群组可能包括多个记忆体存取类型MAT,多个记忆体存取类型MAT包括储存运算(如:fp_store,fused_fp_store,fused_store,fused_store_aps,fused_store_update,store,store_aps,store_mask,store_nt,store_nt_aps,store_push,store_supervisor,store_update,store_update_nac);其他群组可能包括多个记忆体存取类型MAT,多个记忆体存取类型MAT包括媒体运算(如:load_aps,store_aps,store_nt_aps);其他群组可能包括多个记忆体存取类型MAT,多个记忆体存取类型MAT包括非暂态存取运算(如:load_nt,pf_nt,store_mask,store_nt,store_nt_aps);其他群组可能包括多个记忆体存取类型MAT,多个记忆体存取类型MAT包括位址修改运算(如:fused_store_update,store_update,store_update_nac);其他群组可能包括多个记忆体存取类型MAT,多个记忆体存取类型MAT包括不对称检查运算(如:load_nac,store_update_nac);其他群组可能包括多个记忆体存取类型MAT,多个记忆体存取类型MAT包括预取运算(如:boxpf,gpf,11dpf,pf_11d,pf_s2,pf_nt,pf_w);以及群组可能包括多个记忆体存取类型MAT,多个记忆体存取类型MAT包括堆叠运算(如:fused_store_update,store_push,store_update,store_update_nac)。在一实施例中,记忆体存取类型评分表106保存记忆体存取类型群组的分数108,而不是保存个别的多个记忆体存取类型的分数108,预取器102根据记忆体存取类型群组运作而不是个别的多个记忆体存取类型。
在一实施例中,预取器102限制分配至同一记忆体区域的条目104的数量。例如,当预取器102侦测两个条目104(或其他预定的门槛值,如:预取器104的一半)被分配于同样的记忆体区域,利用设定与已被分配的条目104的MAT位元遮罩216中的新记忆体存取MAT相关联的位元,预取器102将记忆体存取类型MAT(或包括记忆体存取类型MAT的一群组)与已被分配的条目104结合在一起,而不是为了记忆体区域分配其他条目104,或设定与记忆体存取类型MAT群组相关联的位元,所述记忆体存取类型MAT包括新记忆体存取记忆体存取类型MAT。因此,记忆体区域的新记忆体存取类型MAT的连续的记忆体存取将命中条目104。以这种方式,预取器102可避免记忆体区域消耗太多的条目104,并可根据不同的记忆体存取类型MAT及/或记忆体存取类型MAT群组有利的将记忆体区域分段。
在一实施例中,多个记忆体存取类型MAT置于多个互斥群组(mutually exclusivegroups)(如:四个群组,每个表1中的每一个记忆体存取类型MAT只置于四个群组的其中之一)的其中之一中。每一个群组具有相关联的预取积极性等级。每一次预取器102遇到一个新记忆体存取时,根据新记忆体存取的记忆体存取类型MAT群组的积极性等级来进行预取。例如:假设fp_store记忆体存取类型MAT已被置于一群组中,此群组具有3的预取计数且预取器102遇到具有fp_store的记忆体存取类型MAT之新的记忆体存取。在此实施例中,预取器102将在预取器102所判断的记忆体区域内根据先前的存取模式来预取下三个快取线。类似所述之内容,当预取器102运作时,与群组相关联的积极性等级可能被动态调整。
请参阅图13,图13为处理器的架构示意图,处理器并包括图1所示之预取器102。处理器包括一阶段侦测器1414,阶段侦测器1414是用以侦测运作中的程序进入了新的阶段。阶段侦测器1414使根据阶段识别符1412来做决定,如利用图11所示之装置驱动器。阶段识别符1412可包含一指令指标(或程序计数)值,指令指标值为程序的指令的指令指标值。所述指令可能是子程序调用指令,在此情况下,阶段识别符1412可能包括调用指令的目标指令的一指令指标(或程序计数)值。此外,阶段识别符1412也可包括调用指令的至少一参数值,如:回复位址、暂存器数值及/或堆叠数值。在阶段侦测器的一实施例中,可称为指纹单元,并在美国专利申请第14/050,687号以及美国专利申请第14/050,757号中有更详细的说明,上述申请案皆申请于10/10/2013,并主张于09/20/2013申请的美国专利申请第61/880,602号之优先权,上述之美国专利申请案根据其目的透过引用将所有内容并入本文。处理器并包括一MAT分数更新单元1416,是用以被阶段侦测器1414所通知,当新阶段被侦测阶段侦测器1414将会接收新阶段的一识别符。MAT分数更新单元1416也接收记忆体存取类型MAT分数,如:从上述图11之装置驱动器。MAT分数更新单元1416更新记忆体存取类型MAT分数108,如以下图14所述。在一实施例中,MAT分数更新单元1416包含被阶段侦测器1414调用的处理器的微代码。在一替代实施例中,MAT分数更新单元1416包含一状态机,状态机从已侦测到新阶段的阶段侦测器1414接收一指示符以及新阶段的一识别符。阶段分析将会在图17有更详细的说明。
请参阅图14,图14为图13中包括图1预取器102的处理器之运作流程。流程开始于步骤1422。
在步骤1422中,图13的阶段侦测器1414侦测运作中的程序已进入了新的阶段。阶段侦测器1414根据侦测到的新阶段通知图13的MAT分数更新单元1416。接着进行步骤1424。
在步骤1424中,MAT分数更新单元1416查找从MAT分数1418中的阶段侦测器1414所接收的新阶段的识别符(如:从图11步骤1404的装置驱动器所接收),并以查找的记忆体存取类型分数更新记忆体存取类型评分表106。另外,有必要的话,MAT分数更新单元1416以新阶段识别符1412更新阶段侦测器1414。在一实施例中,根据目前阶段查找下一阶段,因此,根据目前阶段被载入阶段侦测器1414的阶段识别符1412可能不同。接着进行步骤1426。
在步骤1426中,处理器执行运作中的程序且预取器102根据更新的记忆体存取状态分数108执行预取,如步骤1424。流程结束于步骤1426。
以下说明预取器的多种配置方法。例如关于基于记忆体存取状态分数108的预取器积极性可能为静态配置、动态配置或同时静态配置以及动态配置。一般来说,静态配置为矽制程前(pre-silicon)。也就是说,设计者利用直觉,最好是通过软体模拟辅助处理器设计,来决定好的配置,即配置可能改善处理器的效能,特别是预取器。增进处理器的效能即增进处理器执行程序的速度(如:减少每一个指令速率的时脉或增加每个指令的时脉速率)及/或减少能量消耗。所述程序可能是运作系统、可执行程序(如:应用程式、实用程式、基础分析程式)、动态连结程式库与其他类似程序。软体模拟可用以执行程序的离线分析以改善处理器的效能,如以上图15至图17所述,特别是关于预取器的配置。较佳的,设计者判断程序的集合为静态配置为较佳。设计者使进入矽制程的设计包括较佳的静态配置。
相反,一般来说,用以判断动态配置的分析是在矽制程后(post-silicon)被执行。因此,当处理器完成制程之后,设计者执行不同的离线分析来判断处理器在不同于静态配置并执行程序的效能,或者为系统默认值,配置于矽制程中。矽后测试可能为更严格的,可能更强力的,针对一配置矩阵的自动效能回复技术被执行,回复效能资料并被分析,如以下图18所说明。设计者可能提供矽制程前测试的结果作为多个程序的矽制程后测试的初始种子,如:试图避免区域最大值并非全域最大值。
不管矽制程前或者矽制程后的测试,在动态配置测试中,是以前置程序或前致程序阶段为基础来决定较佳的配置,当系统,如:装置驱动器,判断一个已知的程序正执行于处理器(如:分析已经被执行的程序且较佳的配置为已知),系统提供较佳的程序特定配置至处理器,且处理器在运作时根据程序特定配置以动态的方式更新预取器。较佳的,程序特定配置根据不同的程序阶段包含不同的配置,且处理器侦测阶段改变并根据程序特定配置动态的更新配置,如图17所述。
关于一组给定的特征的程序阶段,所述一组给定的特征为具有该些特征中的相同行为的电脑程序之子集合,例如,假设前述特征为分支预测率以及快取命中率,一程序的一阶段为程序运作行为的子集合,且分支预测率以及快取命中率为其常数。例如,离线分析可能判断特定数据压缩程序具有两个阶段:字典建设阶段以及字典查找阶段。字典建设阶段具有低分支预测率以及高快取命中率,以建设一套较大字串组可共用的子字串;而,字典查找阶段具有高分支预测率以及低快取命中率,在字典中查找其尺寸大于快取的子字串。离线分析可能判断预取的功效,可能用以为了配置预取器而判断程序阶段,如更新记忆体存取类型分数108。
在一实施例中,离线分析以oracle快取的概念被执行,正如名称所暗示,其知道将会发生的内容。在快取记忆体中给定有限的空间,oracle快取知道在快取中的任何时间点应存在的最有用的资料。产生最高命中率的快取的内容可以被概念化为逐周期或逐指令的简介。
首先,根据程序执行产生连续的oracle快取简介,并持续追踪记忆体存取的记忆体存取类型MAT,记忆体存取用以分配在简介中的快取线。然后,由每一个简介生成一圆饼图,对于每个记忆体存取类型MAT或记忆体存取类型MAT的群组,快取线所分配的快取占用的百分比对应于记忆体存取类型MAT的记忆体存取,一实施例揭露于图19。然后,在连续的执行程序后,处理器连续更新预取器的记忆体存取类型MAT分数基于圆饼图序列的记忆体存取类型MAT百分比。
在一个时脉周期或指令更新记忆体存取类型MAT分数是不能实现的,检视圆饼图序列需要更多的时间,例如:一整个程序或程序阶段。每个记忆体存取类型MAT会消耗所有圆饼图序列的平均值(程序或阶段),且使平均圆饼图在合理范围内。
广泛来说,oracle快取的概念为,因为oracle快取提前知道所有记忆体存取,oracle快取可以预先执行所有的记忆体存取。当项目程序执行时,oracle快取预测在任何时间内在快取中的快取线最佳集合。例如:在图16中,oracle快取预测记忆体存取类型MAT1具有短持续时间的快取线应该在完成最后的存取后不再被快取。运用这样的分析,可以得到基于每个记忆体存取类型的预取的观察结果。
请参阅图15,图15为产生配置的运作流程示意图,如:记忆体存取类型MAT分数,用以前述之程序以及程序阶段。流程开始于步骤3402。
在步骤3402中,设计者较佳的以自动化的方式执行一程序并记录程序中对快取记忆体132进行的记忆体存取134。较佳的,快取线的分配、命中以及逐出被重新编码。记忆体存取134的记忆体位址、记忆体存取类型MAT以及时间被纪录。接着进行步骤3404。
在步骤3404中,设计者较佳的以自动化的方式分析纪录在步骤3402中以规律的时间间隔的资讯,并辨认明确的状态以將程序分离成多个阶段,如以下图17所述。例如:记忆体存取类型MAT工作集合尺寸的明确的状态、记忆体存取类型MAT的平均快取线寿命、记忆体存取类型MAT的平均命中率可被识别。接着进行步骤3406。
在步骤3406,设计者较佳的以自动化的方式,基于步骤3404的分析效能创建不同程序阶段的配置。例如:该配置可能为预取积极性记忆体存取类型MAT分数,如:图1的108。在一实施例中,判断配置的分析中包括分析类似关于图16至图19的叙述。但应当理解的是,一些程序可能没有表现出明显的趋势,以容易被分解成不同的阶段,在这种情况下单个配置可满足整个程序。流程结束于步骤3406。
请参阅图16,图16为记忆体存取图示以及由图式提取的数据示意图。记忆体存取在图中以点表示,其中水平轴为时间且为独立变量,纵轴为记忆体位址且为因变量。多个水平线对应于特定记忆体位址的个别的快取线。线的左边缘标示着快取线的分配,线的右边缘标示快取线从快取记忆体被驱逐。每一个快取线具有一个相关联的记忆体存取类型MAT,即图16的MAT1、MAT2、MAT3以及MAT4。在图16的例子中,六个快取线绘示于图中,其中两个快取线与MAT1相关联,两个快取线与MAT2相关联,一个快取线与MAT3相关联,一个快取线与MAT4相关联。
下面的图表显示,在每个八个不同的规则的时间间隔中,每个对应的记忆体存取类型MAT的总工作集合尺寸以及工作集合尺寸。时间间隔可能与基本的区块转换相关联,如以下图17所述,并用以判断程序阶段以及每一个程序阶段的配置。例如:在特定的程序或阶段,可能配置更多方法,采用相对大的工作集合尺寸设定记忆体存取类型MAT的群组、区块或包裹,以及对记忆体存取类型MAT使用较小的工作集合尺寸的较少预算方法,或至少将工作集合尺寸纳入考虑,其根据多个记忆体存取类型MAT揭露于在图16中。
此外,每个记忆体存取类型MAT的快取线的可用时间为多久是可以被观察的,例如:平均快取线的寿命。平均快取线的寿命可以由记忆体存取类型MAT的所有快取线寿命(从分配到驱逐)的总和除以由记忆体存取类型MAT的快数线数量所划分的阶段被计算。这个资讯可以用来影响预取策略。
如果oracle快取压抑快取线的数量以对应于包含于快取记忆体中的预期的集合的数量以及方法,预取策略的正确性与平均寿命的观察可能增加。其他指示符也可以被聚集,例如每个记忆体存取类型MAT的快取线命中。
请参阅图17,图17为程序的阶段分析流程示意图。阶段分析为一种离线分析,可被用来判断处理器较佳的配置,例如快取记忆体或者预取器。其开始于步骤3602。
在步骤3602中,一程序执行时是用以增进处理器效能,此程序并被分析与分解以生成状态图。状态图中的节点为程序的基本区块。基本区块是程序控制指令(例如,分支,跳跃,调用,返回等)之间的指令序列。状态图的每个边缘为目标基本区块,且所述边缘导致并表示可能成为阶段识别符的改变资讯,如以下所述。阶段识别符可能包括控制转换指令的所述指令指标(IP),或程序计数器(PC),控制转换指令的目标位址、及/或控制转换指令的调用堆叠。调用堆叠可包括回复位址以及调用参数。程序阶段是包含至少一基本区块的程序的一部份。接着进行步骤3604。
在步骤3604中,程序以仪器分析关于处理器配置方面的特征,如欲取器记忆体存取类型MAT分数。上述特征的实施例包括快取命中率、分支预测正确率、工作集合尺寸、平均快取线寿命以及快取污染(如:快取线被预取却从未使用的数量)。接着进行步骤3606。
在步骤3606中,程序(program)在一个给定的配置中被执行,如快取记忆体及/或预取器,程序的阶段被步骤3604的分析特征中的观察稳态行为识别。例如:假设快取命中率是重要分析特征,并假设快取命中率从97%变化为40%。快取命中率的改变表示在改变前预取器的配置适合目前程序,在改变后已不适合目前程序。因此,目前基本区块(basicblocks)序列的快取命中率改变可以被识别为一个阶段,且基本区块(basic blocks)序列在快取命中率改变后可被识别为第二阶段。又例如,假设不同记忆体存取类型MAT的工作集合尺寸为重要分析特征,然后显著地大幅改变不同记忆体存取类型MAT或记忆体存取类型MAT群组的工作集合尺寸,可标志一个程序中的理想位置来识别一阶段的改变。接着进行步骤3608。
在步骤3608中,一但阶段被识别,会确定每个阶段的较佳配置。例如:多种离线分析技术会被使用,例如上述图15以及图16或以下图18所述。接着进行步骤3612。
在步骤3612中,阶段识别符与阶段的变化相关联。在分析的特征出现变化时,程序基本区块的状态改变资讯或潜在的阶段识别符与较佳配置数值一起在步骤3608被纪录,所以资讯被检测到时可以被提供给处理器。例如:藉由装置驱动分析的程序将准备运作。接着进行步骤3614。
在步骤3614中,在接收与分析的程序相关的资讯后,处理器加载阶段侦测器1414与图14的阶段识别符1412,如图13至图14所述。流程结束于步骤3614。
请参阅图18,图18为用以决定处理器较佳配置的蛮力法(brute force method)运作流程示意图,如:上述的快取记忆体、预取器。所述方法适用于座标下降(coordinatedescent)的优化演算法。流程开始于步骤3702。
在步骤3702中,每个程序或程序阶段,在列表中已被确定的程序是用以增进处理器的效能,此方法执行步骤3704至步骤3716直到较佳的配置被决定(如:目前最好配置-见下文-在一相对长的时间内没有改变)或资源已经失效(如:时间及/或计算资源)。接着进行步骤3704。
在步骤3704中,当前最佳配置被设定为预设配置,如:预取的默认配置,在一实施例中,处理器的制程中配置是简单的。接着进行步骤3706。
在步骤3706中,每个配置参数由步骤3708至步骤3712所执行。在配置参数的一实施例中,其为单一的配置位元,如:用以打开或关闭该特征。配置参数的其他实施例中,其为一配置栏位,如:记忆体存取类型分数108。接着进行步骤3708。
在步骤3708中,对步骤3706的配置参数值中的合理集合(reasonable set)中的每个数值,执行步骤3712至步骤3716。配置参数值中的合理集合取决于配置参数的大小、参数的重要性、以及阅历数值所需要的资源。例如:在单一配置位元的情况下,两个数值皆为一合理集合之内。例如:方法会尝试所有可能的数值用于具有16或更少的参数值。然而,对于相对大的栏位,例如32-bit栏位,是不可能尝试2^32中所有的数值。在这种情况下,设计者可能提供一个数值的合理集合至方法中。例如:设计者观察具有类似特征的记忆体存取类型MAT的群组,并将其群组化,如上所述,来限制可能的数目。若设计者不提供数值且可能的数目较大,方法可藉由步骤3712至3716阅历参数中的随机数值的合理数目。接着进行步骤3712。
在步骤3712中,程序或程序阶段运作于当前最佳配置,但被每个通过步骤3708的参数的下一数值修改,且效能并被测量。接着进行步骤3714。
在决策步骤3714中,方法包含在步骤3712所测量的效能以及当前最佳效能,当前者为较佳时,进行步骤3716;反之,回到步骤3712并尝试当前参数的下一个数值直到所有合理数值都被尝试过,在这种情况下,回到步骤3708并阅历下一个配置参数直到所有配置参数都被尝试,在这种情况下,方法结束,得到程序或程序阶段的当前最佳配置。
在步骤3716中,方法以步骤3712中尝试过的配置更新目前最佳配置。流程回到步骤3712以尝试目前参数的下一数值直到所有合理数值被尝试,在这种情况下,流程回到步骤3708以阅历下一配置参数直到所有配置参数都被尝试,在这情况下,方法结束,得到程序或程序阶段的当前最佳配置。
应当指出,利用类似图18的方法所找出的较佳配置,设计者可不需要理解特定配置如何达到较佳的结果。
请参阅图19,图19所示为一圆饼图3801分析结果。各种分析结果,如根据图15、17以及18所执行的,可能被概念化为对应每个记忆体存取类型MAT且具有切片的圆饼图,如每个记忆体存取类型MAT在圆饼图中的百分比。圆饼图3801针对不同的记忆体存取类型MAT群组具有不同的切片。在图19中,预取群组为42%、代码群组为19%、浮点数群组为23%、字串资料群组为11%以及堆叠与寻访群组为5%。
虽然本发明之多个实施例已揭露,应当理解实施例是以举例的方式提出,而非限制本发明。本领域之通常知识者可在本发明之主旨范围内进行形式和细节的变化,例如:软件可以被致能,如本文所述的功能、制造、建模、仿真、描述和/或装置和方法的测试。其可以通过一般使用的程序语言(如:C,C++)、硬件描述语言(hardware description languages,HDL)包括Verilog HDL语言、VHDL语言等或其他可用的程序。所述软件可以置于任何已知的计算器媒介,如磁带,半导体,磁盘,或光盘(如:CD-ROM,DVD-ROM等)、网络、有线、无线或其他通讯媒介。本文所述的装置以及方法实施例可包含于半导体知识产权核中,例如处理器核心(如:具体的,在HDL中)。并由集成电路的产生转化为硬件。此外,本案所述之装置与方法可与硬件及软件结合的方式实现。因此,揭露于本文之实施例并非用以限制本案之发明,本发明以权利要求项定义发明内容以及其同等之内容。具体地,本发明可在一个通用计算器中使用的处理器设备内实现。最后,本领域的技术人员应该理解,他们可以容易地使用公开的概念和具体实施例作为设计或修改其它结构以实施本发明的相同目的,而不脱离本发明的范围的基础所界定所附的权利要求。
Claims (24)
1.一处理器,其包括:
多个预取器,分别根据记忆体存取预取资料,其中,每一所述记忆体存取包含一记忆体存取类型,所述记忆体存取类型是多个预定记忆体存取类型的其中之一;以及
一记忆体存取类型评分表,所述记忆体存取类型评分表包括所述多个预定记忆体存取类型及相应的多个分数,所述分数是用以表明所述多个预取器之每一预取器以所述多个预定记忆体存取类型预取所述资料之效益,
其中根据所述记忆体存取的所述记忆体存取类型查找所述记忆体存取类型评分表中的一当前预取器所对应的分数来决定是否藉由所述当前预取器预取所述资料,所述当前预取器根据所述记忆体存取的积极层级预取所述资料,所述积极层级是基于所述记忆体存取类型评分表中的所述分数以及相关联的所述记忆体存取的所述记忆体存取类型所得到。
2.如权利要求1所述的处理器,其中所述处理器在制造时配置了保存于所述记忆体存取类型评分表的所述分数。
3.如权利要求1所述的处理器,其中所述处理器以分析程序所得到的程序特定值来更新保存于所述记忆体存取类型评分表的所述分数。
4.如权利要求1所述的处理器,所述处理器为了近期处理且具有所述多个预定记忆体存取类型的所述记忆体存取,所述处理器在运作时根据所述多个预取器的效益动态的更新所述记忆体存取类型评分表的所述分数。
5.如权利要求1所述的处理器,其中对于所述多个预定记忆体存取类型中的每一所述记忆体存取类型,所述多个预取器保存具有所述记忆体存取类型的记忆体区域的记忆体存取的计数。
6.如权利要求5所述的处理器,所述多个预取器根据所述多个预定记忆体存取类型中在所述记忆体区域中具有最高记忆体存取计数的所述记忆体存取类型更新所述记忆体存取类型评分表中的所述分数。
7.如权利要求6所述的处理器,当所述当前预取器完成所述记忆体区域的预取时,利用当前预取器所产生的分数更新所述记忆体存取类型评分表中的所述分数。
8.如权利要求1所述的处理器,所述多个预取器预取所述资料的所述积极层级包括预取计数、最大预取距离、预取计数与预取距离的结合或至少其中之一。
9.如权利要求1所述的处理器,所述多个预取器预取所述资料的所述积极层级被当前使用的至少一资源所影响,所述处理器并以所述至少一资源来预取。
10.如权利要求1所述的处理器,所述多个预取器预取所述资料的所述积极层级被所述多个预取器需要的最小模式周期所影响以锁定于存取模式。
11.如权利要求1所述的处理器,其中对记忆体区域的所述记忆体存取出现时,所述多个预取器根据所述多个预定记忆体存取类型中的每一个所述记忆体存取类型更新所述记忆体存取类型评分表中的所述分数。
12.如权利要求1所述的处理器,其中对记忆体区域的所述记忆体存取的至少一门槛值出现时,所述多个预取器根据所述多个预定记忆体存取类型中的每一个所述记忆体存取类型更新所述记忆体存取类型评分表中的所述分数。
13.如权利要求1所述的处理器,其中所述多个预取器之每一个包括多个条目,其中所述多个条目中的每一个条目是用以被分配并从相关联的记忆体区域预取所述资料。
14.如权利要求13所述的处理器,其中所述多个预取器被配置以便从相同记忆体区域分配所述多个条目中的第一条目以及第二条目来预取资料,其中,根据所述多个预定记忆体存取类型的第一种至少一记忆体存取类型,所述第一条目从所述相同记忆体区域进行预取,根据所述多个预定记忆体存取类型的第二种至少一记忆体存取类型,所述第二条目从所述相同记忆体区域进行预取,其中,所述多个预定记忆体存取类型的所述第一种以及所述第二种至少一记忆体存取类型为互斥。
15.一种处理器的运作方法,所述处理器包括用以分别根据记忆体存取预取资料的多个预取器,其中每一个所述记忆体存取包含一记忆体存取类型,所述记忆体存取类型是多个预定记忆体存取类型的其中之一,所述方法包括:
维持可相应多个分数的一记忆体存取类型评分表,所述记忆体存取类型评分表包括所述多个预定记忆体存取类型,且所述多个分数用以表示所述多个预取器之每一预取器根据所述多个预定记忆体存取类型预取所述资料的效益;以及
根据所述记忆体存取的所述记忆体存取类型查找所述记忆体存取类型评分表中的一当前预取器所对应的分数来决定是否藉由所述当前预取器预取所述资料,以所当前述预取器进行预取,所述资料根据保存于所述记忆体存取类型评分表的所述分数以及相关联的所述记忆体存取的多个记忆体存取类型以对应于记忆体存取的积极层级。
16.如权利要求15所述的方法,其更包括:
以程序特定值更新保存于所述记忆体存取类型评分表的所述分数,所述程序特定值是由一程序通过对所述多个预定记忆体存取类型的离线分析所得到。
17.如权利要求16所述的方法,其更包括:
侦测所述程序或所述程序的阶段运作于所述处理器;以及
根据上述侦测,以所述程序特定值更新保存于所述表格中的所述分数,所述程序特定值是由所述程序的分析与所述多个预定记忆体存取类型所得到。
18.如权利要求15所述的方法,其更包括:
当前处理的记忆体存取对应于所述多个预定记忆体存取类型,当所述多个预取器运作时,根据所述多个预取器之效益更新所述记忆体存取类型评分表中的所述分数。
19.如权利要求15所述的方法,其更包括:
对于所述多个预定记忆体存取类型之每个所述记忆体存取类型,对具有所述记忆体存取类型的记忆体区域的记忆体存取维持其计数。
20.如权利要求19所述的方法,其更包括:
以多个记忆体存取状态的其中之一记忆体存取状态更新所述记忆体存取类型评分表的所述分数,所述多个记忆体存取状态为所述记忆体区域中的所述记忆体存取中具有最高计数的所述多个记忆体存取状态。
21.如权利要求20所述的方法,其更包括:
当所述多个预取器之一所述预取器完成所述记忆体区域之预取时,更新所述记忆体存取类型评分表之所述分数。
22.如权利要求15所述的方法,其更包括:
当对记忆体区域的记忆体存取出现时,以所述多个预定记忆体存取类型的每个所述记忆体存取类型更新所述记忆体存取类型评分表之所述分数。
23.如权利要求15所述的方法,其更包括:
当出现对记忆体区域的记忆体存取的至少一门槛值时,以所述多个预定记忆体存取类型的每个所述记忆体存取类型更新所述记忆体存取类型评分表之所述分数。
24.如权利要求15所述的方法,其中所述多个预取器之每一所述预取器包括多个条目,所述多个条目的每个所述条目被分配以从相关联的记忆体区域预取所述资料,所述方法更包括:
从相同记忆体区域分配所述多个条目中的第一条目以及第二条目来预取资料;
根据所述多个记忆体存取类型的第一种至少一记忆体存取类型,从所述相同记忆体区域预取所述第一条目;以及
根据所述多个记忆体存取类型的第二种至少一记忆体存取类型,从所述相同记忆体区域预取所述第二条目,
其中所述多个记忆体存取类型的所述第一种以及所述第二种至少一记忆体存取类型为互斥。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2014/003175 WO2016097794A1 (en) | 2014-12-14 | 2014-12-14 | Prefetching with level of aggressiveness based on effectiveness by memory access type |
IBPCT/IB2014/003175 | 2014-12-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105700856A CN105700856A (zh) | 2016-06-22 |
CN105700856B true CN105700856B (zh) | 2019-04-30 |
Family
ID=56126002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510810493.XA Active CN105700856B (zh) | 2014-12-14 | 2015-11-20 | 根据记忆体存取类型的效益并配合积极层级的预取 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10387318B2 (zh) |
EP (1) | EP3049915B1 (zh) |
KR (1) | KR101757098B1 (zh) |
CN (1) | CN105700856B (zh) |
TW (1) | TWI596479B (zh) |
WO (1) | WO2016097794A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016097809A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Multiple data prefetchers that defer to one another based on prefetch effectiveness by memory access type |
TWI646461B (zh) * | 2016-10-12 | 2019-01-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料維護方法 |
TWI537729B (zh) | 2015-10-15 | 2016-06-11 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料維護方法 |
US10073769B2 (en) | 2015-10-15 | 2018-09-11 | Silicon Motion, Inc. | Data storage device and data maintenance method thereof |
US9535696B1 (en) * | 2016-01-04 | 2017-01-03 | International Business Machines Corporation | Instruction to cancel outstanding cache prefetches |
US10218811B1 (en) | 2016-06-29 | 2019-02-26 | Oath (Ameericas) Inc. | Systems and methods for utilizing unused network capacity for prefetch requests |
US10509721B2 (en) * | 2017-11-09 | 2019-12-17 | Microsoft Technology Licensing, Llc | Performance counters for computer memory |
US10713053B2 (en) * | 2018-04-06 | 2020-07-14 | Intel Corporation | Adaptive spatial access prefetcher apparatus and method |
CN109408412B (zh) * | 2018-10-24 | 2021-04-30 | 龙芯中科技术股份有限公司 | 内存预取控制方法、装置及设备 |
US11061591B2 (en) | 2018-11-02 | 2021-07-13 | Samsung Electronics Co., Ltd. | Storage device processing stream data, system including the same, and operation method thereof |
US11455252B2 (en) * | 2019-06-26 | 2022-09-27 | Advanced Micro Devices, Inc. | Multi-class multi-label classification using clustered singular decision trees for hardware adaptation |
US10915421B1 (en) | 2019-09-19 | 2021-02-09 | Intel Corporation | Technology for dynamically tuning processor features |
US11720364B2 (en) | 2020-03-27 | 2023-08-08 | Intel Corporation | Methods and apparatus to dynamically enable and/or disable prefetchers |
CN114556309A (zh) * | 2020-12-07 | 2022-05-27 | 深圳市大疆创新科技有限公司 | 内存空间的分配方法、装置及存储介质 |
US12045169B2 (en) | 2020-12-23 | 2024-07-23 | Advanced Micro Devices, Inc. | Hardware configuration selection using machine learning model |
US11704249B2 (en) | 2021-06-22 | 2023-07-18 | Western Digital Technologies, Inc. | Frozen time cache for multi-host read operations |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1952877A (zh) * | 2005-10-21 | 2007-04-25 | 英特尔公司 | 用于软件可配置预取器的方法、装置和系统 |
CN103235764A (zh) * | 2013-04-11 | 2013-08-07 | 浙江大学 | 线程感知多核数据预取自调方法 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5649144A (en) * | 1994-06-13 | 1997-07-15 | Hewlett-Packard Co. | Apparatus, systems and methods for improving data cache hit rates |
EP0752644A3 (en) * | 1995-07-07 | 2001-08-22 | Sun Microsystems, Inc. | Memory management unit incorporating prefetch control |
US6985999B2 (en) | 2001-10-23 | 2006-01-10 | Ip-First, Llc | Microprocessor and method for utilizing disparity between bus clock and core clock frequencies to prioritize cache line fill bus access requests |
US20030084433A1 (en) * | 2001-10-31 | 2003-05-01 | Chi-Keung Luk | Profile-guided stride prefetching |
US20040243767A1 (en) * | 2003-06-02 | 2004-12-02 | Cierniak Michal J. | Method and apparatus for prefetching based upon type identifier tags |
US20050149915A1 (en) * | 2003-12-29 | 2005-07-07 | Intel Corporation | Methods and apparatus for optimizing a program undergoing dynamic binary translation using profile information |
US7107384B1 (en) * | 2004-03-01 | 2006-09-12 | Pericom Semiconductor Corp. | Dynamic PCI-bus pre-fetch with separate counters for commands of commands of different data-transfer lengths |
JP5059609B2 (ja) | 2004-08-17 | 2012-10-24 | エヌヴィディア コーポレイション | メモリへの様々なタイプのアクセスを予測するため、およびキャッシュメモリに関連付けられた予測を管理するための、システム、装置、および方法 |
CN100407171C (zh) * | 2005-09-13 | 2008-07-30 | 威盛电子股份有限公司 | 设置高速缓存线填充总线存取优先级的微处理器和方法 |
US20070204267A1 (en) * | 2006-02-28 | 2007-08-30 | Cole Michael F | Throttling prefetching in a processor |
US7657729B2 (en) * | 2006-07-13 | 2010-02-02 | International Business Machines Corporation | Efficient multiple-table reference prediction mechanism |
US8667225B2 (en) | 2009-09-11 | 2014-03-04 | Advanced Micro Devices, Inc. | Store aware prefetching for a datastream |
US8327077B2 (en) * | 2009-11-13 | 2012-12-04 | International Business Machines Corporation | Method and apparatus of parallel computing with simultaneously operating stream prefetching and list prefetching engines |
CN104636274B (zh) * | 2010-03-29 | 2018-01-26 | 威盛电子股份有限公司 | 数据预取方法以及微处理器 |
US8762649B2 (en) * | 2010-03-29 | 2014-06-24 | Via Technologies, Inc. | Bounding box prefetcher |
US20120144124A1 (en) * | 2010-12-07 | 2012-06-07 | Advanced Micro Devices, Inc. | Method and apparatus for memory access units interaction and optimized memory scheduling |
US9092358B2 (en) * | 2011-03-03 | 2015-07-28 | Qualcomm Incorporated | Memory management unit with pre-filling capability |
CN102214146B (zh) | 2011-07-28 | 2013-04-10 | 中国人民解放军国防科学技术大学 | 步长自适应的Cache预取方法及其系统 |
US20130208796A1 (en) | 2012-02-15 | 2013-08-15 | Amichay Amitay | Cache prefetch during a hierarchical motion estimation |
US9176878B2 (en) * | 2012-03-15 | 2015-11-03 | Oracle International Corporation | Filtering pre-fetch requests to reduce pre-fetching overhead |
US9098418B2 (en) * | 2012-03-20 | 2015-08-04 | Apple Inc. | Coordinated prefetching based on training in hierarchically cached processors |
CN103513957B (zh) * | 2012-06-27 | 2017-07-11 | 上海芯豪微电子有限公司 | 高性能缓存方法 |
US9390018B2 (en) | 2012-08-17 | 2016-07-12 | Advanced Micro Devices, Inc. | Data cache prefetch hints |
US9304927B2 (en) * | 2012-08-27 | 2016-04-05 | Oracle International Corporation | Adaptive stride prefetcher |
US20140108766A1 (en) * | 2012-10-17 | 2014-04-17 | Advanced Micro Devices, Inc. | Prefetching tablewalk address translations |
US9639471B2 (en) * | 2012-11-27 | 2017-05-02 | Nvidia Corporation | Prefetching according to attributes of access requests |
US9262328B2 (en) | 2012-11-27 | 2016-02-16 | Nvidia Corporation | Using cache hit information to manage prefetches |
US9483406B2 (en) * | 2013-03-11 | 2016-11-01 | Via Technologies, Inc. | Communicating prefetchers that throttle one another |
US9251083B2 (en) * | 2013-03-11 | 2016-02-02 | Via Technologies, Inc. | Communicating prefetchers in a microprocessor |
WO2016097809A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Multiple data prefetchers that defer to one another based on prefetch effectiveness by memory access type |
-
2014
- 2014-12-14 EP EP14891604.2A patent/EP3049915B1/en active Active
- 2014-12-14 KR KR1020157033228A patent/KR101757098B1/ko active IP Right Grant
- 2014-12-14 WO PCT/IB2014/003175 patent/WO2016097794A1/en active Application Filing
- 2014-12-14 US US14/891,330 patent/US10387318B2/en active Active
-
2015
- 2015-11-20 CN CN201510810493.XA patent/CN105700856B/zh active Active
- 2015-11-25 TW TW104139166A patent/TWI596479B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1952877A (zh) * | 2005-10-21 | 2007-04-25 | 英特尔公司 | 用于软件可配置预取器的方法、装置和系统 |
CN103235764A (zh) * | 2013-04-11 | 2013-08-07 | 浙江大学 | 线程感知多核数据预取自调方法 |
Also Published As
Publication number | Publication date |
---|---|
KR101757098B1 (ko) | 2017-07-26 |
EP3049915A4 (en) | 2017-03-08 |
WO2016097794A1 (en) | 2016-06-23 |
KR20160087751A (ko) | 2016-07-22 |
CN105700856A (zh) | 2016-06-22 |
TW201631478A (zh) | 2016-09-01 |
US20170123985A1 (en) | 2017-05-04 |
EP3049915A1 (en) | 2016-08-03 |
US10387318B2 (en) | 2019-08-20 |
TWI596479B (zh) | 2017-08-21 |
EP3049915B1 (en) | 2020-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105700857B (zh) | 多个资料预取器根据记忆体存取类型的预取效益听从其他预取器 | |
CN105700856B (zh) | 根据记忆体存取类型的效益并配合积极层级的预取 | |
CN102640124B (zh) | 用于数据流的储存感知预取的计算系统、方法以及预取单元 | |
CN105183663B (zh) | 预取单元和数据预取方法 | |
EP3066572B1 (en) | Cache memory budgeted by chunks based on memory access type | |
EP3129886B1 (en) | Dynamic cache replacement way selection based on address tag bits | |
JP6207766B2 (ja) | ヘテロジニアス置換ポリシーを用いるセット・アソシエイティブ・キャッシュ・メモリ | |
US10719434B2 (en) | Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode | |
US9798668B2 (en) | Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon the mode | |
TWI582591B (zh) | 考慮到記憶體訪問類型的集合關聯快取記憶體及方法 | |
EP3066571B1 (en) | Cache memory budgeted by ways on memory access type | |
CN105706049B (zh) | 操作系统例行程序的预测历程储存器的部分使用 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |