CN104662519A - 在非易失性存储器中缓存代码的方法、系统和设备 - Google Patents
在非易失性存储器中缓存代码的方法、系统和设备 Download PDFInfo
- Publication number
- CN104662519A CN104662519A CN201380044831.2A CN201380044831A CN104662519A CN 104662519 A CN104662519 A CN 104662519A CN 201380044831 A CN201380044831 A CN 201380044831A CN 104662519 A CN104662519 A CN 104662519A
- Authority
- CN
- China
- Prior art keywords
- code
- speed cache
- ram
- cache
- condition
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 78
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000008569 process Effects 0.000 description 14
- 230000005055 memory storage Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000000977 initiatory effect Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- C—CHEMISTRY; METALLURGY
- C09—DYES; PAINTS; POLISHES; NATURAL RESINS; ADHESIVES; COMPOSITIONS NOT OTHERWISE PROVIDED FOR; APPLICATIONS OF MATERIALS NOT OTHERWISE PROVIDED FOR
- C09K—MATERIALS FOR MISCELLANEOUS APPLICATIONS, NOT PROVIDED FOR ELSEWHERE
- C09K8/00—Compositions for drilling of boreholes or wells; Compositions for treating boreholes or wells, e.g. for completion or for remedial operations
- C09K8/50—Compositions for plastering borehole walls, i.e. compositions for temporary consolidation of borehole walls
- C09K8/504—Compositions based on water or polar solvents
- C09K8/506—Compositions based on water or polar solvents containing organic compounds
- C09K8/508—Compositions based on water or polar solvents containing organic compounds macromolecular compounds
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- C—CHEMISTRY; METALLURGY
- C09—DYES; PAINTS; POLISHES; NATURAL RESINS; ADHESIVES; COMPOSITIONS NOT OTHERWISE PROVIDED FOR; APPLICATIONS OF MATERIALS NOT OTHERWISE PROVIDED FOR
- C09K—MATERIALS FOR MISCELLANEOUS APPLICATIONS, NOT PROVIDED FOR ELSEWHERE
- C09K8/00—Compositions for drilling of boreholes or wells; Compositions for treating boreholes or wells, e.g. for completion or for remedial operations
- C09K8/50—Compositions for plastering borehole walls, i.e. compositions for temporary consolidation of borehole walls
-
- E—FIXED CONSTRUCTIONS
- E21—EARTH OR ROCK DRILLING; MINING
- E21B—EARTH OR ROCK DRILLING; OBTAINING OIL, GAS, WATER, SOLUBLE OR MELTABLE MATERIALS OR A SLURRY OF MINERALS FROM WELLS
- E21B33/00—Sealing or packing boreholes or wells
- E21B33/10—Sealing or packing boreholes or wells in the borehole
- E21B33/12—Packers; Plugs
- E21B33/127—Packers; Plugs with inflatable sleeve
-
- E—FIXED CONSTRUCTIONS
- E21—EARTH OR ROCK DRILLING; MINING
- E21B—EARTH OR ROCK DRILLING; OBTAINING OIL, GAS, WATER, SOLUBLE OR MELTABLE MATERIALS OR A SLURRY OF MINERALS FROM WELLS
- E21B33/00—Sealing or packing boreholes or wells
- E21B33/10—Sealing or packing boreholes or wells in the borehole
- E21B33/12—Packers; Plugs
- E21B33/128—Packers; Plugs with a member expanded radially by axial pressure
-
- E—FIXED CONSTRUCTIONS
- E21—EARTH OR ROCK DRILLING; MINING
- E21B—EARTH OR ROCK DRILLING; OBTAINING OIL, GAS, WATER, SOLUBLE OR MELTABLE MATERIALS OR A SLURRY OF MINERALS FROM WELLS
- E21B33/00—Sealing or packing boreholes or wells
- E21B33/10—Sealing or packing boreholes or wells in the borehole
- E21B33/13—Methods or devices for cementing, for plugging holes, crevices or the like
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Life Sciences & Earth Sciences (AREA)
- Geology (AREA)
- Mining & Mineral Resources (AREA)
- Chemical & Material Sciences (AREA)
- Fluid Mechanics (AREA)
- Geochemistry & Mineralogy (AREA)
- Environmental & Geological Engineering (AREA)
- Materials Engineering (AREA)
- Organic Chemistry (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
公开了在非易失性存储器中缓存代码的方法和设备。公开的示例方法包括识别对第一代码的代码请求的实例,识别第一代码是否存储在非易失性(NV)随机存取存储器(RAM)高速缓存上,以及在NV RAM高速缓存不存在第一代码时,在满足与第一代码相关联的第一条件时将第一代码添加到NV RAM高速缓存,并且在未满足第一条件时阻止第一代码到NV RAM高速缓存的存储。
Description
技术领域
本公开一般涉及编译器,并且更具体地说,涉及在非易失性存储器中缓存代码的方法、系统和设备。
背景技术
动态编译器尝试在一个或更多个平台程序执行时的运行时间期间优化代码。编译器尝试优化代码以改进处理器性能。然而,编译器代码优化任务也消耗处理器资源,如果此类优化工作消耗的处理器资源量比优化的代码本身能够节省的处理器资源量更大,则这可使得产生的优化代码的一个或更多个益处无效。
附图说明
图1是与在非易失性存储器中缓存代码的本公开内容的教导一致的处理器平台的示例部分的示意图。
图2是在图1的平台中由高速缓存管理器生成的示例代码条件评分图表。
图3是在图1的平台中由高速缓存管理器生成的示例代码性能图表。
图4是图1的示例高速缓存管理器的示意图。
图5A、5B和6是表示可执行以在非易失性存储器中缓存代码的示例机器可读指令的流程图。
图7是可执行图5A、5B和6的指令以实现图1-4的示例系统和设备的示例处理器平台的示意图。
具体实施方式
代码优化技术可在运行时间采用动态编译器以优化和/或以其它方式改进程序的执行性能。例如,解释代码可在执行期间经及时(JIT)编译器编译成机器代码并且被缓存,使得因为从高速缓冲存储器访问编译代码,处理器对一个或更多个功能(例如,过程,子例程等)的后续请求相对更快地进行。在其它示例中,动态二进制转换器以允许目标机器(例如,处理器)执行指令的方式将源指令转换成目标指令。处理器第一次请求代码(例如,函数调用)时,消耗额外的时间(例如,处理器时钟周期)以将源代码转换成处理器能够处理的格式。然而,转换的代码可存储在高速缓冲存储器中以允许处理器在后续的时间检索目标代码,其中对高速缓冲存储器的访问可比重新编译源代码更快。
在一些系统中,在启动时编译和缓存代码。然而,在启动时的此类编译消耗大量的处理器开销以生成编译代码以供以后使用。开销有时称为“预热时间”或“滞后时间”。此类工作牺牲了在程序执行中早期的处理器性能,以试图在程序在相对长的时间期内操作和/或相对频繁地反复调用相同函数的情况下长期产生更佳结果。优化的编译代码可存储在硬盘(例如,磁性硬驱动器、固态磁盘等)上以避免对重新编译原始代码的将来需要。然而,硬盘访问时间可比动态编译器重新编译原始代码所要求的时间量更慢,由此导致在启动程序时(例如,在使平台上电后)最初慢的启动时间(即,相对高的滞后时间)。换而言之,在处理器请求代码时,从存储装置检索优化的编译代码的时间量可占用比重新编译和/或重新优化原始代码更多的时间量。
虽然与硬盘访问时延相比,启用处理器高速缓存和/或访问DRAM降低了检索以前优化的编译代码的时间量,但处理器高速缓存是在电源切断时(如在平台关闭的实例期间)失去其存储器内容的易失性存储器。处理器高速缓存可包括任何数量的高速缓存层,如第1级(L1)、第2级(L2)(例如,多级高速缓存)。多级高速缓存通过允许处理器在尝试从硬盘存储装置进行相对更加耗时的代码获取前检查高速缓存中的所需代码,降低了处理器获取时延。高速缓存一般以具有低时延、高成本、更小的存储的分层方式在第1级(例如,L1)构建,并且在每个后续的级别(例如,L2、L3等)实现更慢、更大和更不昂贵的存储。
L1和L2高速缓存和/或任何其它高速缓存级别一般情况下小于与处理器和/或处理器平台相关联的随机存取存储器(RAM),但一般情况下更快并且在物理上更靠近处理器以降低获取时延。高速缓存相对也比RAM更小,这是因为在某种程度上,它可消耗一部分的处理器占用空间(例如,管芯上高速缓存)。另外,一般情况下第一级高速缓存(L1)用超出后续层高速缓存级和/或RAM的速度性能特性来制造,由此要求相对更高的价格点。后续高速缓存层一般情况下包括相对更大量的存储容量,但在物理上进一步远离和/或包括比第一层高速缓存更低的性能特性。如果处理器未在高速缓存的第一层(例如,L1高速缓存)中定位所需代码(例如,一个或更多个指令、优化的代码等),则在对外部存储装置(例如,硬盘、闪存存储器、固态磁盘等)的处理器获取前可检查高速缓存的第二或后续层(例如,L2高速缓存、DRAM)。因此,大多数高速缓存被构建成冗余存储在高速缓存的第一层(例如,L1)中、在高速缓存的所有更低级别(例如,L2、L3等)写入的数据以减少对主存储器的访问。
虽然在高速缓存中存储编译代码通过降低对重新优化、重新编译和/或主存储器访问尝试的需要而便于时延降低,但高速缓存是易失性的。当平台关闭和/或以别的方式断电时,高速缓存的所有内容丢失。在一些示例中,高速缓冲存储器(例如,L1高速缓存、L2高速缓存等)包括动态RAM (DRAM),DRAM允许在电源切断时也失去其数据的字节级可访问性。字节级可访问性允许处理器和/或二进制转换器在相对小量的信息上而不是大的存储器块上快速操作。在一些示例中,处理器只需要在代码的字节级部分而不是更大的代码块上操作。如果获取大的代码块,则浪费了额外的获取(传输)时间来检索处理器不需要的代码的部分。虽然在电源切断后闪存存储器保持存储内容,但它不能便于字节级读和/或写操作,并且替代地以块访问存储器。相应地,闪存存储器由于在块级别而不是在字节级别的相对高时延访问时间,可不用作最适合的高速缓冲存储器类型。
另一方面,非易失性(NV) RAM可展示与L1、L2高速缓存和/或动态RAM (DRAM)可比的数据传输时延特性。此外,在平台失去电源(例如,在关闭、重新启动、睡眠模式等期间)时,NV RAM保持其存储器内容以便在平台电源恢复后使用。还有,NV RAM便于字节级可访问性。然而,与传统L1高速缓冲存储器、L2高速缓冲存储器和/或DRAM相比,NV RAM具有相对短的寿命周期。与NV RAM相关联的存储器单元的寿命周期指单元在停止工作前能够执行的存储器写操作的数量。本文中公开的示例方法、设备、系统和/或制品采用基于非易失性RAM的持久代码高速缓存,该高速缓存在电源丢失期间保持存储器内容,展示类似于传统L1/L2高速缓存的时延特性,并且鉴于与NV RAM高速缓存相关联的寿命周期约束,以延长存储器寿命的方式管理写操作。
图1示出包括处理器102、RAM 104、存储装置106(例如,硬盘)、高速缓存管理器108及高速缓冲存储器系统110的示例处理器平台100的部分。虽然示例高速缓冲存储器系统110在图1的所示示例中示为以通信方式经总线122连接到示例处理器102,但示例高速缓冲存储器系统110可以是处理器102的一部分,如与处理器管芯集成。示例高速缓冲存储器系统110可包括任何数量的高速缓存装置,如第一级高速缓存112(例如,L1高速缓存)和第二级高速缓存114(例如,L2高速缓存)。在所示示列中,包括了L1和L2高速缓存,并且L2高速缓存是NV RAM高速缓存。图1的示列平台100还包括编译器116,编译器116可从存储装置106获得原始代码部分118以生成优化的编译代码120。图1的示例编译器116可以是动态编译器(例如,及时(JIT)编译器)或二进制转换器。
在操作中,示例处理器102通过先访问高速缓冲存储器系统110以试图降低时延来请求代码的一个或更多个部分。如果在第一级高速缓存112中发现请求的代码,则由处理器102从第一级高速缓存112中检索代码以进一步处理。如果在示例第一级高速缓存112中未发现请求的代码,则处理器102搜索分层高速缓存的一个或更多个另外级(如果有),如示例第二级高速缓存114。如果在示例第二级高速缓存114内找到,则处理器从第二级高速缓存检索代码以进一步处理。如果在示例高速缓冲存储器系统110的高速缓存的任何级(例如,高速缓存级112、114)中未找到请求的代码(例如,发生“高速缓存丢失”),则处理器发起到示例存储装置106的获取操作。到存储装置(例如,主存储器)116的获取操作与时延时间相关联,所述时延时间比与示例高速缓冲存储器系统110的级别相关联的时延时间相对更长。除非代码已经存储在DRAM或高速缓冲存储器中,否则,由于编译、优化和/或以其它方式经示例编译器116转换从存储装置106检索的代码,可发生另外的时延。
响应于高速缓存丢失,示例高速缓存管理器108分析处理器分析代码请求以确定请求的代码在已由示例编译器116编译、优化和/或以其它方式转换后是否应放置在示例第二级高速缓存114中。在一些示例中,可通过示例第一级高速缓存112采用最近最少使用(LRU)逐出策略级,其中,将在其中存储的最早和/或另外最少访问的代码识别为要删除的候选,以便为示例处理器102请求的备选代码分配空间。虽然从第一级高速缓存112逐出的代码能够以与高速缓存管理器策略(例如,LRU策略)一致的方式传输和/或以其它方式存储到示例第二级高速缓存114,但图1的示例高速缓存管理器108替代地评估与代码相关联的一个或更多个条件以确定它是否应存储在示例第二级高速缓存114中,或者是否应阻止和/或以其它方式忽略(override)任何当前高速缓存策略存储动作。在一些示例中,高速缓存管理器108鉴于对传统易失性RAM装置(例如,DRAM)不是限制的与NV RAM相关联的相对有限的写周期,阻止代码到第二级NV RAM高速缓存114的存储。
可影响示例高速缓存管理器108在示例第二级NV RAM高速缓存114中存储或阻止存储的判定的条件包括但不限于(1)每单位时间示例处理器102调用代码的频率(访问频率),(2)平台资源(例如,处理器周期)转换,编译和/或以其它方式优化候选代码消耗的时间量,(3)候选代码的大小,(4)处理器能够访问候选代码的时间量(高速缓存访问时延)和/或(5)代码是否与上电活动相关联(例如,启动有关的代码)。在一些示例中,图1的高速缓存管理器108比较一个或更多个条件与一个或更多个阈值以确定是否将候选代码存储到第二级高速缓存114。例如,响应于与每单位时间处理器102调用代码的次数相关联的第一条件,示例高速缓存管理器可允许在第一级高速缓存中存储代码样本,但阻止代码样本存储在第二级高速缓存中。另一方面,如果与处理器102调用代码样本的次数相关联的示例第二条件大于示例第一条件(例如,超出计数阈值),则示例高速缓存管理器108可允许代码样本存储在NV RAM高速缓存114中以便实现时延降低的将来检索。
图2的示例示出由高速缓存管理器108为与代码的示例块相关联的五个示例条件生成的代码条件评分图表200。第一示例条件包括访问频率评分202,第二示例条件包括转换时间评分204,第三示例条件包括代码大小评分206,第四示例条件包括访问时间评分208,以及第五示例条件包括启动评分210。通过跟踪示例处理器102已请求和/或示例编译器116已编译的对应代码,形成图2的所示示例中的每个评分。在一些示例中,在与示例平台100和/或在示例平台100上执行的一个或更多个程序相关联的一个或更多个仿形(profiling)迭代期间由示例编译器116确定和/或更新用于条件的评分。虽然图2示出一个示例代码样本的五个条件,但同样保持用于其它代码样本的其它图表。在一些示例中,每个条件类型的阈值基于对应代码样本的平均值,如跨代码样本的选择。
图2的示例访问频率评分202指示由处理器调用的候选代码样本的频率(例如,每单位时间调用的数量)。如果与平台和/或执行程序相关联的其它代码样本相比,相对频繁地调用候选代码样本,则示例访问频率评分202将展示相对更高值。示例高速缓存管理器108可鉴于候选代码样本的相对性能而建立阈值。另一方面,如果(例如,与处理器102调用的其它代码样本相比)相对不频繁地调用候选代码样本,则示例访问频率评分202将展示更低值。通常而言,示例图表200中更高的评分值反映在示例第二级NV RAM高速缓存114中存储候选代码样本的更强理由。另一方面,如果相对不频繁地调用代码样本,则示例高速缓存管理器108可阻止候选代码样本写入NV RAM高速缓存114以试图降低写操作的数量,由此延长NV RAM高速缓存114的可使用寿命。
图2的示例转换时间评分204反映资源(例如,编译器、转换器等)编译和/或以其它方式转换对应代码样本所用时长的指示。如果候选代码样本使用相对长的时间量来进行编译,优化和/或转换,则对应转换时间评分204将更高。通常而言,用于示例转换时间评分204的更高值指示候选代码样本应存储在示例NV RAM高速缓存114中,以降低与示例处理器102在后续的调用期间重新编译,重新优化和/或重新转换代码样本相关联的一个或更多个时延效应。另一方面,如果与其它代码样本相比,相对快速地编译,优化和/或转换候选代码样本,则示例高速缓存管理器108可将相对低的转换时间评分204指派到候选代码样本。如果转换时间评分204低于对应阈值,则高速缓存管理器108将阻止候选代码样本存储在示例NV RAM高速缓存114中,这是因为重新编译工作将不可能引入不期望的时延。一个或更多个阈值可基于例如统计分析。在一些示例中,统计分析可跨多个样本和诸如图2的示例图表200的多个图表进行。
图2的示例代码大小评分206反映在与由示例编译器116编译和/或由示例处理器102处理的其它代码样本相比时,候选代码样本消耗的相对存储空间量的指示。示例高速缓存管理器108为大小相对小的代码样本指派更高的评分值,以试图节省示例NV RAM高速缓存114的存储空间。示例访问时间评分208反映能够多快访问存储的高速缓存的指示。在与占用更长时间访问的代码样本相比时,能够相对快速访问的代码样本由示例高速缓存管理器108指派成具有相对更高的评分。在一些示例中,访问代码样本的时间量与候选代码样本的对应大小成比例。
示例启动评分210反映候选代码样本是否与启动活动(如启动过程程序)相关联的指示。在一些示例中,启动评分210可以是二元值(是/否),其中,施加更大权重到代码样本参与启动活动的环境。相应地,在对应启动代码从示例NV RAM高速缓存114访问而不是从存储装置106检索、由示例编译器116处理和/或以其它方式编译时,从以前关闭电源条件启动的平台可经历改进的启动时间。
图3的示例示出由高速缓存管理器108生成的示例代码性能图表300以识别候选代码样本之间的相对差别。图3的示例代码性能图表300包括候选代码样本A、B、C和D,每个样本包括对应条件值。图3的示例条件值(度量)包括但不限于访问频率条件302、转换时间条件304、代码大小条件306、访问时间条件308及启动条件310。每个条件可通过示例编译器116和/或高速缓存管理器108的一个或更多个简档操作填充有用于对应代码样本的对应值。
在图3的所示示例中,与访问频率条件320相关联的值表示其中对应候选代码样本已由处理器102调用的实例的计数,并且与转换时间304相关联的值表示由处理器102转换,编译和/或以其它方式优化对应候选代码样本消耗的时间或处理器周期的数量。另外,与代码大小条件306相关联的值表示用于对应候选代码样本的字节值,与访问时间308相关联的值表示由处理器102访问对应候选代码样本消耗的时间或处理器周期的数量,并且与启动条件310相关联的值表示对应候选代码样本是否参与平台的一个或更多个启动活动的二元指示。
图4是图1的示例高速缓存管理器108的示例实现的示意图。在图4的所示示例中,高速缓存管理器108包括处理器调用监视器402、代码统计引擎404、高速缓存接口406、条件阈值引擎408、NV RAM优先级简档410及警报模块412。在操作中,示例处理器调用监视器402确定示例处理器102是否尝试调用代码样本。响应于检测到示例处理器102在对代码样本进行调用,示例代码统计引擎404记录调用了哪个代码样本,并且将此类更新统计值保存到诸如图1的示例存储装置106的存储装置和/或DRAM。在所示示例中,示例代码统计引擎404培养和/或以其它方式跟踪的统计包括示例处理器102调用的特定代码样本(例如,函数、子例程等)的次数的计数(例如,调用计数、每单位时间的调用等)、平台资源编译特定代码样本消耗的周期的数量、特定代码样本的大小、从NV RAM高速缓存114检索特定代码样本的访问时间和/或特定代码样本是否与启动活动相关联。
示例高速缓存接口406确定处理器102请求的代码样本是否位于第一级高速缓存112中,并且如果是,则将请求的代码样本转发到处理器102。另一方面,如果处理器102请求的代码样本不位于第一级高速缓存112中,则示例高速缓存接口406确定请求的代码样本是否位于NV RAM高速缓存114中。如果处理器102请求的代码样本位于NV RAM高速缓存114(第二级高速缓存)中,则示例高速缓存接口406将请求的代码样本转发到处理器102。另一方面,如果请求的代码样本不位于NV RAM高速缓存114中,则示例高速缓存管理器108进行评估请求的代码样本是否应放置在NV RAM高速缓存114中以便将来访问。
为了评估请求的代码样本是否应放置在NV RAM高速缓存114中以便将来访问,示例代码统计引擎404访问与以前已存储在存储装置106中的请求代码样本有关的统计。在一些示例中,代码统计引擎404保持与自上次平台从冷启动上电起收到的每个代码样本相关联的统计,同时擦除和/或以其它方式丢弃在平台电源应用前已收集的代码的部分的任何统计。在其它示例中,代码统计引擎404保持自平台开始操作以随时间表征每个代码样本起与每个代码样本相关联的统计。如上所述,每个代码特性可具有基于示例处理器102处理和/或示例编译器116编译的代码部分的相对性能的相关联阈值(单独阈值)。如果对于给定候选代码样本,用于特定条件的单独阈值被超出,则示例高速缓存接口406将给定候选代码样本添加到NV RAM高速缓存114。
在一些示例中,对于给定候选代码样本,单独特性阈值均未被超出,但用于各种条件类型的值的合计(例如,写入频率计数、转换时间、代码大小、访问时间等)可合计成高于合计评分的值。如果这样,则图4的示例高速缓存接口406将候选代码添加到NV RAM高速缓存114。如果用于每个条件类型的单独阈值均未被超出,并且用于两个或更多个示例条件类型的合计值未达到或超出合计阈值,则所示示例的示例NV RAM优选级简档管理器410确定候选代码样本是否与启动任务相关联。如果是,则优先级简档管理器410可调用高速缓存接口406以将候选代码样本添加到NV RAM高速缓存114,使得平台将在电源周期后更快启动。示例NV RAM优先级简档管理器410可被配置和/或以其它方式修改以建立和/或调整用于每个条件类型的单独阈值,建立和/或调整用于两个或更多个条件类型的合计阈值,和/或如果它与一个或更多个启动任务相关联,则确定是否所有或一些候选代码要存储在示例NV RAM高速缓存114中。
在一些示例中,高速缓存管理器108监视NV RAM高速缓存114的有用寿命。例如,一些NV RAM类型具有10000的使用期限写计数,而其它NV RAM类型具有100000的使用期限写计数。虽然当前和/或将来NV RAM类型可具有任何其它写计数限制值,但示例高速缓存管理器108可监视此类写周期以确定有用寿命限制是否要到达。一个或更多个阈值可基于例如用于一个或更多个类型的NV RAM的特定有用寿命限制预期进行调整。在一些示例中,NV RAM可以是用户耐用的,并且如果发生故障、寿命周期结束和/或升级活动,则可替换NV RAM。在一些示例中,简档管理器410比较用于NV RAM高速缓存114的预期使用期限写入值和当前写计数值。预期使用期限写入值可在NV RAM高速缓存的一个或更多个制造商和/或模型之间不同。如果当前计数接近和/或超出使用期限计数值,则可生成一个或更多个警报。在其它示例中,图4的NV RAM优先级简档管理器410确定写周期的速率是否增大超过阈值。在任一情况下,可调用示例警报模块412以生成一个或更多个平台警报,使得在潜在故障影响平台操作前可发生用户服务。
虽然实现示例平台100和/或示例高速缓存管理器108以在非易失性存储器中缓存代码的示例方式已在图1-4中示出,但可以任何其它方式组合、划分、重新布置、省略、消除和/或实现图1-4所示的一个或更多个元素、过程和/或装置。此外,图1-4的示例高速缓存管理器108、示例第一高速缓存112、示例NV RAM高速缓存114、示例处理器调用监视器402、示例代码统计引擎404、示例高速缓存接口406、示例条件阈值引擎408、示例NV RAM优先级简档管理器410和/或示例警报模块412的任何或所有可通过硬件、软件、固件和/或硬件、软件、固件的任何组合实现。另外,并且如下所述,图1-4的示例高速缓存管理器108、示例第一高速缓存112、示例NV RAM高速缓存114、示例处理器调用监视器402、示例代码统计引擎404、示例高速缓存接口406、示例条件阈值引擎408、示例NV RAM优先级简档管理器410和/或示例警报模块412可通过硬件、软件、固件和/或硬件、软件、固件的任何组合实现。因此,例如,图1-4的示例高速缓存管理器108、示例第一高速缓存112、示例NV RAM高速缓存114、示例处理器调用监视器402、示例代码统计引擎404、示例高速缓存接口406、示例条件阈值引擎408、示例NV RAM优先级简档管理器410和/或示例警报模块412的任何项能够通过一个或更多个电路、可编程处理器、专用集成电路(ASIC)、可编程处理器、专用集成电路(ASIC)、可编程逻辑装置(PLD)和/或现场可编程逻辑装置(FPLD)等实现。在本专利的设备或系统权利要求的任何项示为包括纯软件和/或固件实现时,图1-4的示例高速缓存管理器108、示例第一高速缓存112、示例NV RAM高速缓存114、示例处理器调用监视器402、示例代码统计引擎404、示例高速缓存接口406、示例条件阈值引擎408、示例NV RAM优先级简档管理器410和/或示例警报模块412的至少一项由此明确定义为包括诸如存储器、DVD、CD、Blu-Ray等存储软件和/或固件的有形计算机可读存储媒体。还有,图1的示例平台100和图4的示例高速缓存管理器108可包括除图1-4中所示那些元素、过程和/或装置外的一个或更多个元素、过程和/或装置,或者包括一个或更多个元素、过程和/或装置,而不是图1-4中所示那些元素、过程和/或装置,和/或可包括任何或所有所示元素、过程和/或装置的不止一项。
图5A、5B和6中示出表示用于实现图1的平台100和图1-4的示例高速缓存管理器108的示例机器可读指令的流程图。在此示例中,机器可读指令包括由诸如下面结合图7所述的示例计算机700中所示处理器712的处理器执行的程序。程序可包含在有形计算机可读存储媒体上存储的软件中,所述存储媒体如CD-ROM、软盘、硬盘驱动器、数字多功能磁盘(DVD)、Blu-Ray盘或与处理器712相关联的存储器,但整个程序和/或其部分能够备选地由与处理器712不同的装置执行和/或包含在固件和/或专用硬件中。此外,虽然示例程序参照图5A、5B和6所示流程图进行描述,但备选地可使用实现示例平台100和示例高速缓存管理器108以在非易失性存储器中缓存代码的许多其它方法。例如,可更改框的执行顺序,和/或可更改、消除或组合一些框。
如上所述,图5A、5B和6的示例过程可使用在诸如硬盘驱动器、闪存存储器、只读存储器(ROM)、压缩磁盘(CD)、数字多功能磁盘(DVD)、高速缓存、随机存取存储器(RAM)和/或任何其它存储装置和/或存储光盘的有形计算机可读存储媒体上存储的编码指令(例如,计算机可读指令)实现,其中信息在任何持续时间内存储在所述存储媒体中(例如,在延长时间期内、永久地、在简短时间内、暂时缓冲和/或信息的缓存)。在本文中使用时,术语有形计算机可读存储媒体明确定义成包括任何类型的计算机可读存储装置和/或存储盘,并且不包括传播信号。另外或备选地,图5A、5B和6的示例过程可使用在诸如硬盘驱动器、闪存、只读存储器、压缩盘、数字多功能盘、高速缓存、随机存取存储器和/或任何其它存储媒体的非暂时性计算机可读存储媒体上存储的编码指令(例如,计算机可读指令)实现,其中信息在任何持续时间内存储在所述存储媒体中(例如,在延长时间期内、永久地、在简短时间内、暂时缓冲和/或信息的缓存)。在本文中使用时,术语非暂时性计算机可读存储媒体明确定义成包括任何类型的计算机可读存储装置和/或存储盘,并且不包括传播信号。在本文中使用时,在短语“至少”用作权利要求的前序中的过渡术语时,与术语“包括”是开放式的一样,它是开放式的。因此,使用“至少”作为其前序中过渡术语的权利要求可还包括除权利要求中明确叙述的那些元素外的元素。
图5A的程序500在框502开始,在框502,示例处理器调用监视器402确定示例处理器102是否对代码进行调用。如果否,则示例处理器调用监视器402等待处理器调用,但如果调用发生,则示例代码统计引擎404记录与代码调用相关联的统计(框504)。在一些示例中,一个或更多个统计在处理器调用的一个或更多个以前迭代后才可迅速可用。如上所述,监视和存储用于代码的每个候选部分的统计以试图表征示例平台100和/或在示例平台100上执行的示例代码部分。代码统计可包括但不限于候选代码由处理器102请求和/或以其它方式调用的次数;由转换、编译和/或优化候选代码消耗的处理器周期的数量或秒数(例如,毫秒);代码的大小和/或从高速缓冲存储器访问候选代码的时间(例如,L1高速缓存112访问时间、NV RAM高速缓存114访问时间等)。
如果示例高速缓存接口406确定候选代码位于第一级高速缓存112(框506)中,则代码被转发到示例处理器102(框508)。如果候选代码不在第一级高速缓存112中(框506),则示例高速缓存接口406确定候选代码是否已经在NV RAM高速缓存114中(框510)。如果是,则候选代码被转发到示例处理器102(框508),否则,示例高速缓存接口108确定候选代码是否应放置在NV RAM高速缓存114中以便将来访问(框512)。
图5B的程序512在框520开始,其中,示例代码统计引擎404访问和/或以其它方式加载与在诸如图1的示例存储装置106的盘上存储的候选代码相关联的数据。在一些示例中,统计数据从示例存储装置106加载并且存储在RAM 104中以便降低时延访问时间。示例条件阈值引擎408识别与示例处理器102请求的候选代码相关联的统计以确定一个或更多个单独的条件阈值是否被超出(框522)。如上所述,每个条件可具有不同阈值,阈值在被超出时调用示例高速缓存接口406以将候选代码添加到NV RAM高速缓存114(框524)。例如,如果以相对高频率访问候选代码(例如,在与示例处理器102请求的其它代码相比时),则其对应访问计数值可高于与图2的示例访问频率评分202相关联的阈值。在此类示例环境中,通过消除更长的时延磁盘访问时间和/或重新编译工作,将候选代码添加到NV RAM高速缓存114便于更快的代码执行。
如果单独的条件阈值被候选代码超出(框522),则示例条件阈值引擎408确定合计评分阈值是否被超出(框526)。如果是,则示例高速缓存接口406将候选代码添加到NV RAM高速缓存114(框524)。如果合计评分阈值未被超出(框526),则示例NV RAM优先级简档管理器410确定候选代码是否与启动任务相关联(框528),如启动序列代码。在一些示例中,候选代码与启动序列相关联的指定促使高速缓存接口406将候选代码添加到 NV RAM高速缓存114,使得通过消除重新编译、重新优化和/或重新转换工作,后续的启动活动操作更快。示例NV RAM优先级简档管理器410可存储与感兴趣的每个平台相关联的一个或更多个简档,以便在此类候选代码与启动任务相关联时便于有关候选代码到NV RAM高速缓存114的自动添加的用户控制的设置。如果无单独的条件阈值被超出(框522),并且无合计评分阈值被超出(框526),并且候选代码不与启动任务相关联(框528),则示例高速缓存管理器108采用一个或更多个默认高速缓存优化技术(框530),如最近最少使用(LRU)技术、默认重新编译和/或存储装置106访问。
在一些示例中,高速缓存管理器108确定示例NV RAM高速缓存114是否接近或超出其有用寿命写周期值。如上所述,虽然NV RAM高速缓存114展示与DRAM类似的有利时延特性,并且是非易失性的以避免与磁盘存储装置106相关联的相对冗长的时延访问时间,但NV RAM高速缓存114在停止工作前具有有限数量的高速缓存周期。图6的程序600在框602开始,其中,示例代码统计引擎404检索NV RAM写计数值。示例NV RAM优先级简档管理器410确定NV RAM高速缓存114的写计数是否高于其使用期限阈值(框604),并且如果是,则调用示例警报模块412以生成一个或更多个警报(框606)。示例警报模块412可调用任何类型的警报以通知平台管理器NV RAM高速缓存114处在或接近其有用寿命的结束,如在示例平台100的上电重置活动期间显示的系统生成的消息和/或提示消息。
如果NV RAM优先级简档管理器410确定NV RAM高速缓存114未处在使用期限阈值(框604),则示例NV RAM优先级简档管理器410确定写周期的速率是否高于速率阈值(框608)。在一些示例中,平台100操作可以加速每单位时间写操作的数量的方式更改,这可在相对更短时间期内缩短NV RAM高速缓存114的有用寿命。平台操作和/或写周期的速率的此类改变由示例警报模块412传递(框606),使得平台管理器能够为替换平台组件采取纠正动作和/或计划。图6的示例程序600可采用延迟(框610),以便能够在周期、非周期和/或手动基础上更新写计数值。
图7是能够执行图5A、5B和6的指令以实现图1的平台100和/或图1-4的高速缓冲管理器108的示列处理器平台700的框图。处理器平台700例如能够是服务器、个人计算机、因特网设备、移动装置或任何其它类型的计算装置。
本示例的系统700包括处理器712。例如,处理器712能够由来自任何所需系列或制造商的一个或更多个微处理器或控制器实现。
处理器712包括本地存储器713(例如,高速缓存,如高速缓存112、114),并且经总线718与包括易失性存储器714和非易失性存储器716的主存储器进行通信。易失性存储器714可通过同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM)和/或任何其他类型随机存取存储器装置实施。非易失性存储器716可由闪存和/或任何其它期望类型的存储器装置实现。对主存储器714、716的访问由存储器控制器控制。
处理器平台700也包括接口电路720。接口电路720可通过任何类型的接口标准实现,如以太网接口、通用串行总线(USB)和/或PCI express接口。
一个或更多个输入装置722连接到接口电路720。输入装置722允许用户将数据和命令输入处理器712。输入装置例如能够由键盘、鼠标、触摸屏、触摸垫、轨迹球、isopoint和/或话音识别系统实现。
一个或更多个输出装置724也连接到接口电路720。输出装置724例如能够由显示装置(例如,液晶显示器、阴极射线管显示器(CRT)、打印机和/或扬声器)实现。接口电路729因此一般包括图形驱动器卡。
接口电路720也包括诸如调制解调器或网络接口卡的通信装置,以便于经网络726(例如,以太网连接、数字订户线(DSL)、电话线、同轴电缆、蜂窝电话系统等)与外部计算机的数据交换。
处理器平台700也包括一个或更多个大容量存储装置728以便存储软件和数据。此类大容量存储装置728的示例包括软盘驱动器、硬驱动器盘、压缩盘驱动器和数字多功能盘(DVD)驱动器。
图5A、5B和6的编码指令732可在大容量存储装置728中、在易失性存储器714中、在非易失性存储器716中和/或在诸如CD或DVD的可移动存储媒体上存储。
本文中公开的在非易失性存储器中缓存代码的方法、设备、系统和制品通过降低与到磁盘存储装置的处理器获取操作相关联的时延来改进平台操作。具体而言,处理器磁盘存储装置获取操作在平台电源重置后是相对频繁的,这是因为在切断电源时不保留存储在传统高速缓存装置中以前编译、优化和/或以其它方式转换的代码。另外,本文中公开的在非易失性存储器中缓存代码的示例方法、设备、系统和制品明智地管理写入可具有有限数量的使用期限写周期的非易失性随机存取存储器的尝试。
本文中公开了在非易失性存储器中缓存代码的方法、设备、系统和制品。一些公开的示例方法包括识别对第一代码的代码请求的实例,识别第一代码是否存储在非易失性(NV)随机存取存储器(RAM)高速缓存上,以及在NV RAM高速缓存不存在第一代码时,在满足与第一代码相关联的第一条件时将第一代码添加到NV RAM高速缓存,并且在未满足第一条件时阻止第一代码到NV RAM高速缓存的存储。其它公开的方法包括确定在未满足第一条件时是否满足对应于第一条件和第二条件的合计阈值,其中,代码请求由处理器发起。在其它公开的方法中,代码请求由编译器或二进制转换器中的至少一个发起。在还有的其它公开的方法中,NV RAM高速缓存允许字节级访问,并且在一些公开的方法中,第一条件包括访问频率计数超过阈值,其中,设置用于访问频率计数的阈值是基于第二代码的访问频率计数值,和/或设置用于访问频率计数的阈值是基于与多个其它代码相关联的访问频率计数值。一些示例方法包括具有访问频率计数、转换时间、代码大小或高速缓存访问时延中的至少一个的第一条件。其它示例方法包括在将第一代码添加到NV RAM高速缓存前使用二进制转换器编译第一代码,并且还有的其它示例方法包括跟踪对第一代码的处理器请求的数量,其中,基于对第一代码的请求的数量,将第一代码添加到NV RAM高速缓存。还有的其它示例方法包括跟踪到NV RAM高速缓存的写操作的数量,其中,在到NV RAM高速缓存的写操作的数量超出与写的使用期限最大数量相关联的写阈值时生成警报。示例公开的方法也包括在第一级高速缓存不存在第一代码时忽略对NV RAM高速缓存的存储尝试,其中,对NV RAM高速缓存的存储尝试与最近最少使用存储策略相关联。
在非易失性存储器中缓存代码的示例设备包括存储编译代码的第一级高速缓存、存储编译代码的第二级非易失性(NV)随机存取存储器(RAM)高速缓存,以及如果以大于阈值频率访问编译代码,则允许编译代码存储在NV RAM中,并且如果未满足阈值频率,则阻止编译代码存储在NV RAM上的高速缓存接口。一些公开的设备包括具有动态随机存取存储器的第一级高速缓存。其它示例公开的设备包括简档管理器以比较与NV RAM高速缓存相关联的预期使用期限写计数值和NV RAM高速缓存的写计数实例的当前数量。还有的其它公开的设备包括设置与第二条件相关联的阈值以降低到NV RAM高速缓存的写计数实例的频率的条件阈值引擎。
一些公开的示例机器可读存储媒体包括指令,指令在被执行时,促使机器识别对第一代码的代码请求的实例,识别第一代码是否存储在非易失性(NV)随机存取存储器(RAM)高速缓存上,以及在NV RAM高速缓存不存在第一代码时,在满足与第一代码相关联的第一条件时将第一代码添加到NV RAM高速缓存,并且在未满足第一条件时阻止第一代码到NV RAM高速缓存的存储。一些示例机器可读存储媒体包括确定在未满足第一条件时是否满足对应于第一条件和第二条件的合计阈值,而其它存储媒体包括允许经NV RAM高速缓存的字节级访问。其它公开的示例机器可读存储媒体包括识别第一条件何时超出阈值计数访问频率,其中,设置用于访问频率计数的阈值是基于第二代码的访问频率计数值。还有的其它公开的示例机器可读存储媒体包括基于与多个其它代码相关联的访问频率计数值,设置用于访问频率计数的阈值,而其它存储媒体包括跟踪对第一代码的处理器请求的数量。其它公开的示例机器可读存储媒体包括基于对第一代码的请求的数量,将第一代码添加到NV RAM高速缓存,并且其它存储媒体包括跟踪到NV RAM高速缓存的写操作的数量,其中,在到NV RAM高速缓存的写操作的数量超出与写的使用期限最大数量相关联的写阈值时生成警报。一些公开的示例机器可读存储媒体包括在第一级高速缓存不存在第一代码时忽略对NV RAM高速缓存的存储尝试。
虽然已在本文中描述某些示例方法、设备和制品,但本专利的覆盖的范围并不限于此。相反,本专利覆盖公平地落入本专利的权利要求的范围内的所有方法、设备和制品。
Claims (31)
1. 一种缓存代码的方法,包括:
识别对第一代码的代码请求的实例;
识别所述第一代码是否存储在非易失性(NV)随机存取存储器(RAM)高速缓存上;以及
在所述NV RAM高速缓存不存在所述第一代码时,在满足与所述第一代码相关联的第一条件时将所述第一代码添加到所述NV RAM高速缓存,并且在未满足所述第一条件时阻止所述第一代码到所述NV RAM高速缓存的存储。
2. 如权利要求1所述的方法,还包括在未满足所述第一条件时,确定是否满足对应于所述第一条件和第二条件的合计阈值。
3. 如权利要求1所述的方法,其中所述代码请求由处理器发起。
4. 如权利要求1所述的方法,其中所述代码请求由编译器或二进制转换器中的至少一个发起。
5. 如权利要求1所述的方法,其中所述NV RAM高速缓存允许字节级别访问。
6. 如权利要求1所述的方法,其中所述第一条件包括访问频率计数超出阈值。
7. 如权利要求6所述的方法,还包括基于第二代码的访问频率计数值,设置用于所述访问频率计数的所述阈值。
8. 如权利要求6所述的方法,还包括基于与多个其它代码相关联的访问频率计数值,设置用于所述访问频率计数的所述阈值。
9. 如权利要求1所述的方法,其中所述第一条件包括访问频率计数、转换时间、代码大小或高速缓存访问时延中的至少一个。
10. 如权利要求1所述的方法,还包括在将所述第一代码添加到所述NV RAM高速缓存前使用二进制转换器编译所述第一代码。
11. 如权利要求1所述的方法,还包括跟踪对所述第一代码的处理器请求的数量。
12. 如权利要求11所述的方法,还包括基于对所述第一代码的请求的所述数量,将所述第一代码添加到所述NV RAM高速缓存。
13. 如权利要求1所述的方法,还包括跟踪到所述NV RAM高速缓存的写操作的数量。
14. 如权利要求13所述的方法,还包括在到所述NV RAM高速缓存的写操作的所述数量超出与写的使用期限最大数量相关联的写阈值时生成警报。
15. 如权利要求1所述的方法,还包括在第一级高速缓存不存在所述第一代码时忽略对所述NV RAM高速缓存的存储尝试。
16. 如权利要求15所述的方法,其中对所述NV RAM高速缓存的所述存储尝试与最近最少使用存储策略相关联。
17. 一种存储动态编译代码的设备,包括:
存储所述编译代码的第一级高速缓存;
存储所述编译代码的第二级非易失性(NV)随机存储存储器(RAM)高速缓存;以及
高速缓存接口,如果以大于阈值频率访问所述编译代码,则允许所述编译代码存储在所述NV RAM中,以及如果未满足所述阈值频率,则阻止所述编译代码存储在所述NV RAM上。
18. 如权利要求17所述的设备,其中所述第一级高速缓存包括动态随机存取存储器。
19. 如权利要求17所述的设备,还包括简档管理器以比较与所述NV RAM高速缓存相关联的预期使用期限写计数值和所述NV RAM高速缓存的写计数实例的当前数量。
20. 如权利要求19所述的设备,还包括设置与第二条件相关联的阈值以降低到所述NV RAM高速缓存的写计数实例的频率的条件阈值引擎。
21. 一种包括指令的有形机器可读存储媒体,所述指令在被执行时促使机器至少执行以下操作:
识别对第一代码的代码请求的实例;
识别所述第一代码是否存储在非易失性(NV)随机存取存储器(RAM)高速缓存上;以及
在所述NV RAM高速缓存不存在所述第一代码时,在满足与所述第一代码相关联的第一条件时将所述第一代码添加到所述NV RAM高速缓存,并且在未满足所述第一条件时阻止所述第一代码到所述NV RAM高速缓存的存储。
22. 如权利要求21所述的机器可读存储媒体,其中所述指令在被执行时,促使机器确定在未满足所述第一条件时是否满足对应于所述第一条件和第二条件的合计阈值。
23. 如权利要求21所述的机器可读存储媒体,其中所述指令在被执行时,促使机器允许经所述NV RAM高速缓存的字节级访问。
24. 如权利要求21所述的机器可读存储媒体,其中所述指令在被执行时,促使机器识别所述第一条件何时超出阈值计数访问频率。
25. 如权利要求24所述的机器可读存储媒体,其中所述指令在被执行时,促使机器基于第二代码的访问频率计数值,设置用于所述访问频率计数的所述阈值。
26. 如权利要求24所述的机器可读存储媒体,其中所述指令在被执行时,促使机器基于与多个其它代码相关联的访问频率计数值,设置用于所述访问频率计数的所述阈值。
27. 如权利要求21所述的机器可读存储媒体,其中所述指令在被执行时,促使机器跟踪用于所述第一代码的处理器请求的数量。
28. 如权利要求27所述的机器可读存储媒体,其中所述指令在被执行时,促使机器基于对所述第一代码的请求的所述数量,将所述第一代码添加到所述NV RAM高速缓存。
29. 如权利要求21所述的机器可读存储媒体,其中所述指令在被执行时,促使机器跟踪到所述NV RAM高速缓存的写操作的数量。
30. 如权利要求29所述的方法,其中所述指令在被执行时,促使机器在到所述NV RAM高速缓存的写操作的所述数量超出与写的使用期限最大数量相关联的写阈值时生成警报。
31. 如权利要求21所述的机器可读存储媒体,其中所述指令在被执行时,促使机器在第一级高速缓存不存在所述第一代码时忽略对所述NV RAM高速缓存的存储尝试。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/630651 | 2012-09-28 | ||
US13/630,651 US20140095778A1 (en) | 2012-09-28 | 2012-09-28 | Methods, systems and apparatus to cache code in non-volatile memory |
PCT/US2013/060624 WO2014052157A1 (en) | 2012-09-28 | 2013-09-19 | Methods, systems and apparatus to cache code in non-volatile memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104662519A true CN104662519A (zh) | 2015-05-27 |
CN104662519B CN104662519B (zh) | 2020-12-04 |
Family
ID=50386348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380044831.2A Active CN104662519B (zh) | 2012-09-28 | 2013-09-19 | 在非易失性存储器中缓存代码的方法、系统和设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20140095778A1 (zh) |
EP (1) | EP2901289A4 (zh) |
JP (1) | JP5989908B2 (zh) |
KR (1) | KR101701068B1 (zh) |
CN (1) | CN104662519B (zh) |
WO (1) | WO2014052157A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110072031A (zh) * | 2018-01-24 | 2019-07-30 | 京瓷办公信息系统株式会社 | 电子设备及记录介质 |
CN111258656A (zh) * | 2020-01-20 | 2020-06-09 | 展讯通信(上海)有限公司 | 数据处理装置及终端 |
WO2021094871A1 (en) * | 2019-11-14 | 2021-05-20 | International Business Machines Corporation | Duplicate-copy cache using heterogeneous memory types |
CN114138333A (zh) * | 2021-11-27 | 2022-03-04 | 深圳曦华科技有限公司 | 程序加载的方法及相关装置 |
US11372764B2 (en) | 2019-11-14 | 2022-06-28 | International Business Machines Corporation | Single-copy cache using heterogeneous memory types |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103581052B (zh) * | 2012-08-02 | 2017-07-21 | 华为技术有限公司 | 一种数据处理方法、路由器及ndn系统 |
KR101846757B1 (ko) * | 2013-12-27 | 2018-05-28 | 맥아피, 엘엘씨 | 빈도-기반 평판도 |
US9268543B1 (en) | 2014-09-23 | 2016-02-23 | International Business Machines Corporation | Efficient code cache management in presence of infrequently used complied code fragments |
JP2016170682A (ja) * | 2015-03-13 | 2016-09-23 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US9811324B2 (en) * | 2015-05-29 | 2017-11-07 | Google Inc. | Code caching system |
US10282182B2 (en) * | 2016-09-23 | 2019-05-07 | Intel Corporation | Technologies for translation cache management in binary translation systems |
US10599985B2 (en) * | 2017-09-01 | 2020-03-24 | Capital One Services, Llc | Systems and methods for expediting rule-based data processing |
US11164078B2 (en) * | 2017-11-08 | 2021-11-02 | International Business Machines Corporation | Model matching and learning rate selection for fine tuning |
WO2023013649A1 (ja) * | 2021-08-06 | 2023-02-09 | 株式会社エヌエスアイテクス | データキャッシュ装置およびプログラム |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100023681A1 (en) * | 2004-05-07 | 2010-01-28 | Alan Welsh Sinclair | Hybrid Non-Volatile Memory System |
CN101981551A (zh) * | 2008-06-25 | 2011-02-23 | 英特尔公司 | 用于高速缓存利用的设备和方法 |
US20110179219A1 (en) * | 2004-04-05 | 2011-07-21 | Super Talent Electronics, Inc. | Hybrid storage device |
CN102473140A (zh) * | 2009-07-17 | 2012-05-23 | 株式会社东芝 | 存储器管理装置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5175842A (en) * | 1988-05-31 | 1992-12-29 | Kabushiki Kaisha Toshiba | Data storage control system capable of reading data immediately after powered on |
JP3766181B2 (ja) * | 1996-06-10 | 2006-04-12 | 株式会社東芝 | 半導体記憶装置とそれを搭載したシステム |
JPWO2003042837A1 (ja) * | 2001-11-16 | 2005-03-10 | 株式会社ルネサステクノロジ | 半導体集積回路 |
JP3642772B2 (ja) * | 2002-09-25 | 2005-04-27 | 三菱電機株式会社 | コンピュータ装置及びプログラム実行方法 |
US7231497B2 (en) * | 2004-06-15 | 2007-06-12 | Intel Corporation | Merging write-back and write-through cache policies |
US7882499B2 (en) * | 2005-10-24 | 2011-02-01 | Microsoft Corporation | Caching dynamically compiled code to storage |
WO2007056669A2 (en) * | 2005-11-04 | 2007-05-18 | Sandisk Corporation | Enhanced first level storage cache using nonvolatile memory |
US7568189B2 (en) * | 2006-05-03 | 2009-07-28 | Sony Computer Entertainment Inc. | Code translation and pipeline optimization |
US7568068B2 (en) * | 2006-11-13 | 2009-07-28 | Hitachi Global Storage Technologies Netherlands B. V. | Disk drive with cache having volatile and nonvolatile memory |
JP4575346B2 (ja) * | 2006-11-30 | 2010-11-04 | 株式会社東芝 | メモリシステム |
US7975107B2 (en) * | 2007-06-22 | 2011-07-05 | Microsoft Corporation | Processor cache management with software input via an intermediary |
US8321850B2 (en) * | 2008-06-06 | 2012-11-27 | Vmware, Inc. | Sharing and persisting code caches |
JP2011059777A (ja) * | 2009-09-07 | 2011-03-24 | Toshiba Corp | タスクスケジューリング方法及びマルチコアシステム |
US8893280B2 (en) * | 2009-12-15 | 2014-11-18 | Intel Corporation | Sensitive data tracking using dynamic taint analysis |
JP5520747B2 (ja) * | 2010-08-25 | 2014-06-11 | 株式会社日立製作所 | キャッシュを搭載した情報装置及びコンピュータ読み取り可能な記憶媒体 |
US8984216B2 (en) * | 2010-09-09 | 2015-03-17 | Fusion-Io, Llc | Apparatus, system, and method for managing lifetime of a storage device |
KR101717081B1 (ko) * | 2011-03-23 | 2017-03-28 | 삼성전자주식회사 | 비휘발성 램과 휘발성 램을 버퍼 메모리로 사용하는 저장 장치 |
US8539463B2 (en) * | 2011-07-28 | 2013-09-17 | Qualcomm Innovation Center, Inc. | Apparatus and method for improving the performance of compilers and interpreters of high level programming languages |
-
2012
- 2012-09-28 US US13/630,651 patent/US20140095778A1/en not_active Abandoned
-
2013
- 2013-09-19 JP JP2015528725A patent/JP5989908B2/ja not_active Expired - Fee Related
- 2013-09-19 EP EP13840642.6A patent/EP2901289A4/en not_active Withdrawn
- 2013-09-19 WO PCT/US2013/060624 patent/WO2014052157A1/en active Application Filing
- 2013-09-19 CN CN201380044831.2A patent/CN104662519B/zh active Active
- 2013-09-19 KR KR1020157001860A patent/KR101701068B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110179219A1 (en) * | 2004-04-05 | 2011-07-21 | Super Talent Electronics, Inc. | Hybrid storage device |
US20100023681A1 (en) * | 2004-05-07 | 2010-01-28 | Alan Welsh Sinclair | Hybrid Non-Volatile Memory System |
CN101981551A (zh) * | 2008-06-25 | 2011-02-23 | 英特尔公司 | 用于高速缓存利用的设备和方法 |
CN102473140A (zh) * | 2009-07-17 | 2012-05-23 | 株式会社东芝 | 存储器管理装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110072031A (zh) * | 2018-01-24 | 2019-07-30 | 京瓷办公信息系统株式会社 | 电子设备及记录介质 |
WO2021094871A1 (en) * | 2019-11-14 | 2021-05-20 | International Business Machines Corporation | Duplicate-copy cache using heterogeneous memory types |
US11210227B2 (en) | 2019-11-14 | 2021-12-28 | International Business Machines Corporation | Duplicate-copy cache using heterogeneous memory types |
US11372764B2 (en) | 2019-11-14 | 2022-06-28 | International Business Machines Corporation | Single-copy cache using heterogeneous memory types |
GB2605057A (en) * | 2019-11-14 | 2022-09-21 | Ibm | Duplicate-copy cache using heterogeneous memory types |
GB2605057B (en) * | 2019-11-14 | 2023-11-15 | Ibm | Duplicate-copy cache using heterogeneous memory types |
CN111258656A (zh) * | 2020-01-20 | 2020-06-09 | 展讯通信(上海)有限公司 | 数据处理装置及终端 |
CN111258656B (zh) * | 2020-01-20 | 2022-06-28 | 展讯通信(上海)有限公司 | 数据处理装置及终端 |
CN114138333A (zh) * | 2021-11-27 | 2022-03-04 | 深圳曦华科技有限公司 | 程序加载的方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
JP5989908B2 (ja) | 2016-09-07 |
CN104662519B (zh) | 2020-12-04 |
JP2015525940A (ja) | 2015-09-07 |
KR101701068B1 (ko) | 2017-01-31 |
EP2901289A4 (en) | 2016-04-13 |
KR20150036176A (ko) | 2015-04-07 |
EP2901289A1 (en) | 2015-08-05 |
US20140095778A1 (en) | 2014-04-03 |
WO2014052157A1 (en) | 2014-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104662519A (zh) | 在非易失性存储器中缓存代码的方法、系统和设备 | |
US10564699B2 (en) | Dynamically controlling cache size to maximize energy efficiency | |
CN1321362C (zh) | 包括器件使用评估和功率状态控制的功率管理方法和系统 | |
US8990538B2 (en) | Managing memory with limited write cycles in heterogeneous memory systems | |
EP2488929B1 (en) | Memory object relocation for power savings | |
US8161304B2 (en) | Power management for large memory subsystems | |
CN103226521B (zh) | 多模式数据预取装置及其管理方法 | |
US8433931B2 (en) | Integrating energy budgets for power management | |
CN103270470B (zh) | 多核系统能耗优化 | |
CN104571954B (zh) | 一种数据存储方法及装置 | |
CN103999056A (zh) | 管理工作负载存储器分配的方法和设备 | |
US20110010569A1 (en) | Adaptive Flushing of Storage Data | |
US9244520B2 (en) | Techniques for managing power and performance of multi-socket processors | |
JP2009530709A5 (zh) | ||
CN101349996A (zh) | 在低功耗模式下保留被缓存的信息的技术 | |
US20190266098A1 (en) | Progressive Flush of Cache Memory | |
US11960738B2 (en) | Volatile memory to non-volatile memory interface for power management | |
CN103268204A (zh) | 固态硬盘的调优方法及装置 | |
CN109313604A (zh) | 压缩虚拟存储器的动态配置 | |
CN102073463A (zh) | 流预测方法和装置及预读控制方法和装置 | |
CN104965674A (zh) | 一种基于块关联的低能耗磁盘调度方法及系统 | |
US9785374B2 (en) | Storage device management in computing systems | |
Useche et al. | EXCES: External caching in energy saving storage systems | |
Sun et al. | DAC: A dynamic active and collaborative cache management scheme for solid state disks | |
CN117235088B (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 |