UI-based page migration for performance enhancement

By rating the executable files and dynamically allocating memory pages, the performance reduction caused by page migration is solved, and more efficient memory usage and response speed is achieved.

CN114730252BActive Publication Date: 2025-06-06MICRON TECHNOLOGY INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202080081203.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-11-25
Filing Date
2020-11-19
Publication Date
2025-06-06
Estimated Expiration
2040-11-19

AI Technical Summary

Technical Problem

In the prior art, page migration increases memory bus traffic, resulting in reduced computer hardware and software performance, affecting the presentation of user interface components and the responsiveness of applications.

Method used

By rating the executable files in a computing device, pages are dynamically allocated or migrated to different types of memory (such as DRAM and NVRAM) based on the number of usage of user interface elements and the access frequency of memory data, to optimize memory usage and performance.

Benefits of technology

Effectively reduce page migration, improve memory performance, improve user interface response speed and overall computer system performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114730252B_ABST
    Figure CN114730252B_ABST
Patent Text Reader

Abstract

The enhancement or reduction of page migration may include an operation including, in a computing device, scoring each executable file in at least a first group of executable files and a second group of executable files in the computing device. The executable files may be associated with user interface elements of an application and associated with pages of memory in the computing device. For each executable file, the score may be based at least in part on the number of user interface elements that use the executable file. The first group may be located at a first page of the memory, and the second group may be located at a second page. When the score of the executable files in the first group is higher than the score of the executable files in the second group, the operation may include allocating or migrating the first page to a first type of memory, and allocating or migrating the second page to a second type of memory.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Related Applications

[0002] This application claims priority to U.S. Patent Application No. 16 / 694,371, filed on November 25, 2019, and entitled “USER INTERFACE BASED PAGE MIGRATION FOR PERFORMANCE ENHANCEMENT,” the entire disclosure of which is hereby incorporated herein by reference. Technical Field

[0003] At least some embodiments disclosed herein relate to enhancement or reduction of page migration in memory based on factors related to user interface (UI) components, operations, and interactions. In other words, at least some embodiments disclosed herein relate to UI-based page migration in memory for performance enhancement. And, at least some embodiments disclosed herein relate to reduction of page migration in memory. Background Art

[0004] Memory, such as main memory, is a type of computer hardware that stores information for immediate use in a computer or computing device. Generally, memory operates at higher speeds than computer storage. Computer storage provides slower access to information, but can also provide higher capacity and better data reliability. Random access memory (RAM) is a type of memory that can have very high operating speeds.

[0005] The memory may be composed of addressable semiconductor memory cells.The memory IC and its memory cells may be implemented at least in part by silicon-based metal oxide semiconductor field effect transistors (MOSFETs).

[0006] There are two main types of memory: volatile and non-volatile. Non-volatile memory can include flash memory (which can also be used as a storage device) as well as ROM, PROM, EPROM, and EEPROM (which can be used to store firmware). Another type of non-volatile memory is non-volatile random access memory (NVRAM). Volatile memory can include main memory technologies such as dynamic random access memory (DRAM) and cache memory, which is usually implemented using static random access memory (SRAM).

[0007] In the context of memory, a page is a block of virtual memory. A page can be a fixed-length contiguous block of virtual memory. Also, a page can be described by a single entry in a page table. A page can be the smallest unit of data in virtual memory. The transfer of pages between main memory and secondary memory (such as a hard drive) can be called paging or swapping. This transfer can also be called page migration. Also, the transfer of pages within the main memory or between different types of memory can also be called page migration.

[0008] Virtual memory is a method of managing memory and memory addressing. Typically, an operating system uses a combination of computer hardware and software to map virtual memory addresses used by computer programs to physical addresses in memory.

[0009] From the perspective of a program's process or task, data storage can appear as a collection of continuous address spaces or continuous segments. For example, from the perspective of a program's process or task, data storage can appear as virtual memory pages. An operating system (OS) can manage virtual address spaces and allocate real memory to virtual memory. For example, the OS can manage page migration. In addition, the OS can also manage memory address translation hardware in the CPU. This hardware can include or be a memory management unit (MMU), which can translate virtual addresses of memory into physical addresses of memory. The OS's software can also extend this translation function to provide a virtual address space that can exceed the capacity of actual physical memory. In other words, the OS's software can reference more memory than actually exists in the computer.

[0010] Since virtual memory can virtually extend memory capacity, such virtualization can relieve individual applications from having to manage shared memory space. Also, since virtual memory creates a translation layer between reference memory and physical memory, it improves security. In other words, virtual memory improves data security through memory isolation. Moreover, by using paging or page migration or other techniques, virtual memory can actually use more memory than physically available memory. In addition, using paging or page migration or other techniques, virtual memory can provide a system that utilizes a memory hierarchy.

[0011] The memory of a computing system can be hierarchical. Often referred to as the memory hierarchy in computer architecture, the memory hierarchy is based on specific factors such as response time, complexity, capacity, persistence, and memory bandwidth. These factors can be interrelated and often result in trade-offs, which further emphasizes the usefulness of memory hierarchy.

[0012] The memory hierarchy affects the performance of a computer system. Prioritizing memory bandwidth and speed over other factors may require consideration of the limitations of the memory hierarchy, such as response time, complexity, capacity, and persistence. To manage this priority, different types of memory chips can be combined to provide a balance in terms of speed, reliability, cost, etc. Each of these different chips can be considered part of a memory hierarchy. And, for example, to reduce latency, some chips in the memory hierarchy can respond by filling buffers in parallel and then activating data transfer between the chips and the processor through signaling.

[0013] The memory hierarchy can be made up of chips with different types of memory cells. For example, the memory cell can be a DRAM cell. DRAM is a random access semiconductor memory that stores each bit of data in a memory cell, which typically contains a capacitor and a MOSFET. The capacitor can both charge and discharge, which represents two values ​​of the bit, such as "0" and "1". In DRAM, the charge on the capacitor leaks, so DRAM requires external memory refresh circuitry, which periodically rewrites the data in the capacitor by restoring the original charge of each capacitor. DRAM is considered volatile memory because the data is quickly lost after power is removed. This is different from flash memory and other types of non-volatile memory (such as NVRAM), where data storage is persistent.

[0014] One type of NVRAM is 3D XPoint memory. With 3D XPoint memory, memory cells store bits based on changes in resistance along with a stackable crossbar grid data access array. 3D XPoint memory may be more cost-effective than DRAM, but not as cost-effective as flash memory. Furthermore, 3D XPoint is both non-volatile memory and random access memory.

[0015] Flash memory is another type of non-volatile memory. One advantage of flash memory is that it can be electrically erased and reprogrammed. Flash memory is considered to be of two main types: NAND-type flash memory and NOR-type flash memory, which are named after the NAND and NOR memory organizations that indicate how the memory cells of the flash memory are connected. The combination of flash memory cells exhibits similar characteristics to the corresponding gates. NAND-type flash memory consists of memory cells organized as NAND gates. NOR-type flash memory consists of memory cells organized as NOR gates. NAND-type flash memory can be written and read in blocks, which can be smaller than the entire device. NOR-type flash allows single bytes to be written to erased locations or read independently. Due to the capacity advantage of NAND-type flash memory, this type of memory is often used in memory cards, USB flash drives, and solid-state drives. However, a major trade-off of using flash memory is that it can only perform relatively few write cycles in a particular block compared to other types of memory (such as DRAM and NVRAM).

[0016] Because virtual memory, memory hierarchy, and page migration each have their own benefits, tradeoffs need to be made. For example, when an application (e.g., a mobile application) is brought from the background of a computing device (e.g., a mobile device) to the foreground, the execution of the application may be delayed, and the user interface components of the application may include latency issues when the application is reactivated from the background to the foreground. At the same time, the responsiveness of the application may be limited, and the user experience may become delayed, clumsy, or defective; especially when the user frequently switches between multiple applications. And, for example, page migration increases memory bus traffic. And, page migration leads to a reduction in the performance of computer hardware and software, at least to some extent. For example, page migration may cause a delay in the presentation of user interface elements to some extent, and may sometimes cause a delayed, clumsy, or defective user experience of computer applications. And, for example, page migration may hinder the speed of data processing or other computer program tasks that rely on the use of the memory bus. This is especially true when the data processing or task relies heavily on the use of the memory bus. BRIEF DESCRIPTION OF THE DRAWINGS

[0017] The present disclosure will be more fully understood from the detailed description provided below and the accompanying drawings of various embodiments of the present disclosure.

[0018] Figure 1-3 Flowcharts illustrating example operations according to some embodiments of the present disclosure that may provide for enhancement or reduction of page migration in memory based on factors related to computing device components and operations (eg, factors related to UI components, operations, and interactions).

[0019] Figure 4A and4B It is shown that at least some embodiments of the present disclosure can be implemented Figure 1-3 An example computing device for example operations shown in FIG.

[0020] Figure 5 An example networked system according to some embodiments of the present disclosure is shown, which includes a computing device that can provide enhanced or reduced page migration in memory based on factors related to computing device components and operations (e.g., factors related to UI components, operations, and interactions) for one or more devices in the networked system and for the entire networked system. DETAILED DESCRIPTION

[0021] At least some embodiments disclosed herein relate to enhancement or reduction of page migration in memory based on factors related to UI components, operations, and interactions. In other words, at least some embodiments disclosed herein relate to UI-based page migration in memory for performance enhancement. And, at least some embodiments disclosed herein relate to reduction of page migration in memory.

[0022] The enhancement or reduction of page migration may include an operation, the operation including: in a computing device (e.g., by a processor of the computing device), scoring each executable file in at least a first executable file group and a second executable file group in the computing device. The executable file is associated with a user interface element of an application and is associated with a page of a memory in the computing device. For each executable file, the score may be based at least in part on the number of user interface elements that use the executable file. For modular executable files composed of various libraries, the score may be for executable file parts. Some executable file parts are shared among other executable files. In this case, the score may be a composite score for all executable files that share these parts. Furthermore, an increase in the use of the executable file between user interface elements increases the score of the executable file or the related parts included. Furthermore, an increase in at least one of the recency, frequency, or a combination thereof of the processor of the computing device accessing the data of the executable file in the memory may further increase the score of the executable file.

[0023] The first group may be located at a first plurality of pages of the memory, and the second group may be located at a second plurality of pages of the memory. When the scores of the executable files in the first group are at least higher than the scores of the executable files in the second group, the operations may include at least partially allocating or migrating the first plurality of pages to the first type of memory, and at least partially allocating or migrating the second plurality of pages to the second type of memory. And, when the scores of the executable files in the second group are at least higher than the scores of the executable files in the first group, the operations may include at least partially allocating or migrating the second plurality of pages to the first type of memory, and at least partially allocating or migrating the first plurality of pages to the second type of memory.

[0024] The operations may also include performing the allocation or migration of the first plurality of pages or the second plurality of pages during a time period when one or more sensors of the computing device detect that the user is not aware of the output of the computing device. The detection of the user's absence from the output of the computing device may be performed by the one or more sensors detecting that the distance between the user's face and the computing device exceeds a threshold distance.

[0025] The operations may also include performing allocation or migration of the first plurality of pages or the second plurality of pages during a time period when usage of the respective memory buses of the first type of memory and the second type of memory is below a threshold. The operations may also include identifying that usage of the respective memory buses of the first type of memory and the second type of memory is below a threshold when a frames per second (FPS) associated with a user interface element of the application is below an FPS threshold.

[0026] The operations may also include placing the executable files of the first group in a foreground list and placing the executable files of the second group in a background list when the scores of the executable files in the first group are at least higher than the scores of the executable files in the second group. The operations may also include placing the executable files of the second group in a foreground list and placing the executable files of the first group in a background list when the scores of the executable files in the second group are at least higher than the scores of the executable files in the first group. The operations may also include allocating or migrating the first plurality of pages of the memory to a third type of memory at a slower rate than the first and second types of memory when the scores of the executable files of the first group are below a threshold value for final garbage collection of the pages at the third type of memory. And, the operations may also include allocating or migrating the second plurality of pages of the memory to the third type of memory at least in part for final garbage collection of the pages at the third type of memory when the scores of the executable files of the second group are below a threshold value. The third type of memory may include flash memory cells. The first type of memory may include DRAM cells. And, the second type of memory may include NVRAM cells. The NVRAM cells may include 3D XPoint memory cells. Also, the first and second types of memory may be communicatively coupled to the processor, and the first type of memory may be communicatively coupled to the processor at a closer location than the second type of memory.

[0027] In some embodiments, the score may be based at least in part on the number of user interface elements that use the executable file, and at least in part on at least one of the number, recency, frequency, or a combination thereof, of data accessed by a processor of the computing device in memory of the executable file. In such embodiments, an increase in the use of the executable file between user interface elements increases the score of the executable file, and an increase in at least one of the number, recency, frequency, or a combination thereof of data accessed by the processor in memory of the executable file further increases the score of the executable file. And, in such embodiments and other embodiments, when the score of the executable files in the first group is at least higher than the score of the executable files in the second group, the operation may include at least partially allocating or migrating a first plurality of pages of the memory to a first type of memory that is faster than the second type of memory, and at least partially allocating or migrating a second plurality of pages of the memory to the second type of memory. And, when the score of the executable files in the second group is at least higher than the score of the executable files in the first group, the operation may include at least partially allocating or migrating a second plurality of pages of the memory to the first type of memory, and at least partially allocating or migrating a first plurality of pages of the memory to the second type of memory.

[0028] In such and other embodiments, operations may also include performing allocation or migration of the first plurality of pages or the second plurality of pages during a time period when one or more sensors of the computing device detect that the user is not aware of the output of the computing device. The detection of the user's absence from the output of the computing device may be performed by the one or more sensors detecting that the distance between the user's face and the computing device exceeds a threshold distance.

[0029] In such and other embodiments, the operations may further include performing allocation or migration of the first plurality of pages or the second plurality of pages during a time period when usage of the respective memory buses of the first type of memory and the second type of memory is below a predetermined threshold. The operations may further include identifying that usage of the respective bus is below a predetermined threshold when an FPS (frames per second) transmitted through each of the respective memory buses of the first type of memory and the second type of memory is below an FPS threshold. Alternatively, the FPS detection may be done at the display bus output.

[0030] In such and other embodiments, the operations may further include when the scores of the executable files in the first group are at least higher than the scores of the executable files in the second group: placing the executable files of the first group in the foreground list; and placing the executable files of the second group in the background list. And, the operations may further include when the scores of the executable files in the second group are at least higher than the scores of the executable files in the first group: placing the executable files of the second group in the foreground list; and placing the executable files of the first group in the background list.

[0031] In some embodiments, a non-transitory computer-readable storage medium is tangibly encoded with computer-executable instructions that, when executed by a processor associated with a computing device, may perform a method, such as a method including any one or more of the foregoing operations or any one or more of the operations described herein.

[0032] When an application (e.g., a mobile application) is brought from the background to the foreground of a device (e.g., a smartphone), it may have a suspended execution path and its context may experience latency when it is reactivated. At the same time, the responsiveness of the application is very important to the user experience, especially when the user frequently switches between multiple applications on the device. The execution path of the application can be accelerated by loading corresponding components and / or objects from slower memory (e.g., NVRAM) to faster memory (e.g., DRAM). This can be achieved by gradually migrating or directly allocating certain predetermined components and / or objects to faster memory. The determination of these components can be accomplished by scoring or ranking the importance of their responsiveness during the process from the background to the foreground.

[0033] Also, shared pages may have a higher priority to stay in faster memory. The more applications that share a shared page, the higher the priority of the shared page in faster memory. Since faster memory is a valuable resource, the OS of the computing device may limit the migration of components and / or objects to faster memory by limiting based on sharing level, priority, recency, and access frequency.

[0034] In addition, in order to free up space in the faster memory for the newly migrated components and / or objects, the OS can arrange to evict pages from the faster memory without degrading UI performance. For example, some components and / or objects can be evicted from the faster memory without degrading UI performance, such as unimportant UI components and / or objects. Such evicted components and / or objects can be private to application components and / or objects located in a heap (e.g., a JAVA heap), non-critical shared libraries (without current active sharing) deeper in the stack, and other objects whose access latency is masked by a slower communication network.

[0035] Evictions can be scheduled in bursts when certain scheduled UI operations do not occupy the memory bus. The OS agent can actively monitor UI metrics (such as FPS and dropped frames) to detect the time when certain scheduled UI operations do not occupy the memory bus. In addition, when the presented UI is not fully used by the user, the device can create such idle periods (i.e., periods when the memory bus is not occupied by certain scheduled UI operations). To achieve this, the device can use a camera or sensor to detect the proximity, angle, and / or position of the user's face and / or eyes, including detecting the point at which the eyes are looking. After detecting such parameters, many measures can be taken, such as the device can slow down frame rendering due to the creation of idle time on the memory bus.

[0036] Furthermore, the OS of the device can track the impact of the placement of components and / or objects on UI performance and enhance the user experience based on the tracking analysis to achieve the target performance. Tracking of page migration can be used to integrate page migration activities with garbage collection. For example, highly critical objects determined based on the score can be pushed to faster memory (e.g., to stacked DRAM). However, non-critical objects determined based on the score (such as objects determined to be non-critical in the memory heap) can be evicted to slower memory (e.g., evicted to NVRAM) or the slowest memory in the device for future garbage collection.

[0037] Figure 1-3 Flowcharts illustrating example operations according to some embodiments of the present disclosure that may provide for enhancement or reduction of page migration in memory based on factors related to computing device components and operations (eg, factors related to UI components, operations, and interactions).

[0038] Figure 1 A flowchart specifically illustrates example operations of method 100 according to some embodiments of the present disclosure, which may be performed by one or more aspects of one of the computing devices described herein, such as by an OS of one of the computing devices described herein.

[0039] exist Figure 1 In the method 100, step 102 begins by executing, in a computing device, for example, a processor (e.g., see Figure 4A and 4B 4) and / or an OS (e.g., see operating system 414) in the computing device, scores each executable file in at least a first executable file group and a second executable file group (e.g., see first object and executable file group 412a and second object and executable file group 412b) in the computing device. The first group may be located at a first plurality of pages of the memory (e.g., see first plurality of pages 410a), and the second group may be located at a second plurality of pages of the memory (e.g., see second plurality of pages 410b). The executable files may be related to user interface elements of the application and are associated with pages of the memory in the computing device.

[0040] For the executable file, the score may be based at least in part on the number of user interface elements that use the executable file. And, for each executable file, an increase in the use of the executable file among the user interface elements increases the score of the executable file. And, for each executable file, an increase in at least one of the number, recency, frequency, or a combination thereof of data accessed by the processor in memory for the executable file may further increase the score of the executable file. For each executable file, the score may be based at least in part on the number of user interface elements that use the executable file and at least in part on at least one of the number, recency, frequency, or a combination thereof of data accessed by the processor in memory for the executable file.

[0041] At step 104 , the method 100 continues by determining whether the score of the first group is higher than the score of the second group.

[0042] At step 106, method 100 continues by at least partially allocating or migrating the first plurality of pages to the first type of memory when the scores of the executable files in the first group are at least higher than the scores of the executable files in the second group. At step 107, method 100 continues by at least partially allocating or migrating the second plurality of pages to the second type of memory when the scores of the executable files in the first group are at least higher than the scores of the executable files in the second group. At step 108, method 100 continues by at least partially allocating or migrating the second plurality of pages to the first type of memory when the scores of the executable files in the second group are at least higher than the scores of the executable files in the first group. At step 109, method 100 continues by at least partially allocating or migrating the first plurality of pages to the second type of memory when the scores of the executable files in the second group are at least higher than the scores of the executable files in the first group.

[0043] Alternatively, at step 106, method 100 continues by at least partially allocating or migrating the first plurality of pages to a first memory module of the memory (e.g., see FIG. 1 ) when the scores of the executable files in the first group are at least higher than the scores of the executable files in the second group. Figure 4A and 4B At step 107, method 100 continues by at least partially allocating or migrating the second plurality of pages to a second memory module of the memory (e.g., see second memory module 408b) when the scores of the executable files in the first group are at least higher than the scores of the executable files in the second group. At step 108, method 100 continues by at least partially allocating or migrating the second plurality of pages to the first memory module when the scores of the executable files in the second group are at least higher than the scores of the executable files in the first group. At step 109, method 100 continues by at least partially allocating or migrating the first plurality of pages to the second memory module when the scores of the executable files in the second group are at least higher than the scores of the executable files in the first group.

[0044] For purposes of this disclosure, it should be understood that in the computing devices described herein, a single memory module may include one or more types of memory, depending on the embodiment. Also, the individual memory modules described herein as a whole may include one or more types of memory, depending on the embodiment.

[0045] In some embodiments, the allocation or migration of the first plurality of pages or the second plurality of pages may occur during a time period when one or more sensors of the computing device detect that the user is not present at an output of the computing device. The detection of the user's absence from the output of the computing device may be performed by the one or more sensors detecting that the user's face is separated from the computing device by more than a threshold distance.

[0046] In some embodiments, the allocation or migration of the first plurality of pages or the second plurality of pages may occur during a time period when usage of the respective memory buses of the first type of memory and the second type of memory is below a threshold value (e.g., a predetermined threshold value). Thus, prior to the allocation or migration, the method 100 may include identifying that usage of the respective memory buses of the first type of memory and the second type of memory is below a threshold value when an FPS associated with a user interface element of the application is below an FPS threshold value.

[0047] Figure 2 A flowchart of an example operation of a method 200 according to some embodiments of the present disclosure is specifically shown, and the method may be performed by one or more aspects of one of the computing devices described herein, such as by an OS of one of the computing devices described herein. As shown, the method 200 includes steps 102 to 109 of the method 100, and further includes steps 202 to 205.

[0048] Method 200 may begin with method 100, and then at step 202, method 200 continues by placing the executable files of the first group in a foreground list when the scores of the executable files in the first group are at least higher than the scores of the executable files in the second group. At step 203, the method continues by placing the executable files of the second group in a background list when the scores of the executable files in the first group are at least higher than the scores of the executable files in the second group. At step 204, the method continues by placing the executable files of the second group in a foreground list when the scores of the executable files in the second group are at least higher than the scores of the executable files in the first group. At step 205, the method continues by placing the executable files of the first group in a background list when the scores of the executable files in the second group are at least higher than the scores of the executable files in the first group.

[0049] Figure 3 A flowchart of an example operation of a method 300 according to some embodiments of the present disclosure is specifically shown, and the method may be performed by one or more aspects of one of the computing devices described herein, such as by an OS of one of the computing devices described herein. As shown, the method 300 includes steps 102 to 109 of the method 100 and steps 202 to 205 of the method 200, and further includes steps 302 to 308.

[0050] Method 300 begins at step 102 of method 100, and then at step 302 following step 102 of method 100, method 300 continues by determining whether the score of the executable files of the first group is below a threshold. At step 304, method 300 continues by at least partially allocating or migrating the first plurality of pages of the memory to a third type of memory at a slower rate than the first and second types of memory when the score of the executable files of the first group is below the threshold for eventual garbage collection of the pages at the third type of memory. Otherwise, method 300 may continue with step 104 of method 100. For method 300 to continue with step 104 of method 100, the scores of the first group and the second group must both be above the threshold.

[0051] And, method 300 may proceed to step 306 which may follow step 102 of method 100. At step 306, method 300 proceeds to determine whether the score of the executable files of the second group is below a threshold. At step 308, method 300 proceeds to, when the score of the executable files of the second group is below the threshold, at least partially allocating or migrating the second plurality of pages of the memory to a third type of memory for eventual garbage collection of the pages at the third type of memory. Otherwise, method 300 may proceed to step 104 of method 100. For method 300 to proceed to step 104 of method 100, the scores of the first group and the second group must both be above the threshold.

[0052] Alternatively, in some embodiments, the aforementioned allocation or migration to the third type of memory is to a third memory module rather than the third type of memory (eg, see Figure 4A and 4B 408c). Also, for purposes of this disclosure, it is understood that a single memory module in a computing device described herein, such as a third memory module, may include one or more types of memory, depending on the embodiment, such that it may include the third type of memory. Also, the individual memory modules described herein as a whole may include one or more types of memory, depending on the embodiment. For example, a second memory module (e.g., a second memory module closest to a processor of a computing device) may include a second type of memory and a third type of memory.

[0053] Also, in some embodiments, the third type of memory may include flash memory cells. The first type of memory may include DRAM cells. And, the second type of memory may include NVRAM cells. The NVRAM cells may include 3DXPoint memory cells. And, the first and second types of memory may be communicatively coupled to the processor, and the first type of memory may be communicatively coupled to the processor at a closer location than the second type of memory. And, in such embodiments, the third type of memory may be farthest from the processor.

[0054] In some embodiments, it should be understood that the steps of methods 100, 200, and / or 300 can be implemented as a continuous process, for example, each step can be independently operated by monitoring input data, performing operations, and outputting data to subsequent steps. Also, the steps can be implemented as a discrete event process, for example, each step can be triggered on the event it should trigger and produce a specific output. It should also be understood that Figure 1 , 2 Each of and 3 represents a minimum method in a possibly larger computer system method than in Figure 1-3 The middle part is more complex.

[0055] Figure 4A and 4B It is shown that at least some embodiments of the present disclosure can be implemented Figure 1-3 4. An example computing device 402 of the example operation shown in FIG.

[0056] As shown, computing device 402 includes controller 404 (e.g., CPU), memory 406, and memory modules within the memory (e.g., see memory modules 408a, 408b, and 408c). Each memory module is shown as having a corresponding plurality of pages (e.g., see plurality of pages 410a, 410b, and 410c). Each corresponding plurality of pages is shown as having a corresponding group of objects and executable files (e.g., see object and executable file groups 412a, 412b, and 412c). Memory 406 is shown as also having stored instructions of operating system 414 (OS 414). Figure 4A and 4B The OS 414 and object and executable files shown in 402 include instructions stored in the memory 406. The instructions are executable by the controller 404 to perform various operations and tasks within the computing device 402.

[0057] Also, as shown, the computing device 402 includes a main memory bus 416 and a respective memory bus for each memory module of the computing device (e.g., see memory bus 418a for first memory module 408a, memory bus 418b for second memory module 408b, and memory bus 418c for Nth memory module 408c). The main memory bus 416 may include a respective memory bus for each memory module.

[0058] And, as shown in the figure, Figure 4A The computing device 402 depicted in Figure 4B The computing devices depicted in FIG. are in different states. Figure 4A In , the computing device 402 is in a first state, wherein there are a first plurality of pages 410a in the first memory module 408a and a second plurality of pages 410b in the second memory module 408b. Figure 4B , the computing device 402 is in a second state, wherein the first plurality of pages 410a are in the second memory module 408b and the second plurality of pages 410b are in the first memory module 408a.

[0059] Also, as shown, the computing device 402 includes other components 420, which are connected to at least the controller 404 via a bus (the bus is not depicted). The other components 420 may include one or more user interfaces (e.g., GUI, auditory user interface, tactile user interface, etc.), a display, different types of sensors, tactile, audio and / or visual input / output devices, additional dedicated memory, one or more additional controllers (e.g., GPU), one or more additional storage systems, or any combination thereof. The other components 420 may also include a network interface. Also, the one or more user interfaces of the other components 420 may include any type of user interface (UI), including a tactile UI (touch), a visual UI (sight), an auditory UI (sound), an olfactory UI (smell), a balance UI (balance), and / or a taste UI (taste).

[0060] In some embodiments, OS 414 may be configured to score each object and executable file in at least first object and executable file group 412a and second object and executable file group 412b in computing device 402 (e.g., via controller 404). Objects and executable files in first object and executable file group 412a and second object and executable file group 412b are related to user interface elements of an application and are associated with pages of memory 406 in computing device 402. The user interface elements may be part of other components 420. For each executable file, the score may be based at least in part on the number of user interface elements that use the executable file. Furthermore, an increase in the use of the executable file between user interface elements increases the score of the executable file. Furthermore, an increase in at least one of the recency, frequency, or a combination thereof of data accessed by controller 404 in memory 406 may further increase the score of the executable file.

[0061] A first group of objects and executables 412a may be located at a first plurality of pages 410a of the memory 406 and a second group of objects and executables 412b may be located at a second plurality of pages 410b of the memory 406 .

[0062] When the scores of the objects and executable files in the first group 412a are at least higher than the scores of the objects and executable files in the second group 412b, the OS 414 may be configured to at least partially allocate or migrate the first plurality of pages 410a to the first type of memory and / or the first memory module 408a, and at least partially allocate or migrate the second plurality of pages 410b to the second type of memory and / or the second memory module 408b. And, when the scores of the objects and executable files in the second group 412b are at least higher than the scores of the objects and executable files in the first group 412a, the OS 414 may be configured to at least partially allocate or migrate the second plurality of pages 410b to the first type of memory and / or the first memory module 408a, and at least partially allocate or migrate the first plurality of pages 410a to the second type of memory and / or the second memory module 408b.

[0063] OS 414 may also be configured to perform allocation or migration of first plurality of pages 410a or second plurality of pages 410b during a time period when one or more sensors of computing device 402 detect that the user is not present at the output of the computing device. The sensor may be part of other components 420. Detection of the user's absence from the output of computing device 402 may be performed by the one or more sensors detecting that the user's face is separated from the computing device by more than a threshold distance.

[0064] The OS 414 may also be configured to perform allocation or migration of the first plurality of pages 410a or the second plurality of pages 410b during a time period when usage of corresponding memory buses (e.g., see memory buses 418a and 418b) of the first type of memory (or first memory module 408a) and the second type of memory (or second memory module 408b) is below a threshold. The operation may also include identifying that usage of corresponding memory buses (e.g., see memory buses 418a and 418b) of the first type of memory and the second type of memory is below a threshold when a frames per second (FPS) associated with a user interface element of the application is below an FPS threshold.

[0065] The OS 414 may also be configured to place the objects and executable files of the first group 412a in a foreground list and the objects and executable files of the second group in a background list when the scores of the objects and executable files in the first group 412a are at least higher than the scores of the objects and executable files in the second group 412b. The OS 414 may also be configured to place the objects and executable files of the second group in a foreground list and the objects and executable files of the first group in a background list when the scores of the objects and executable files in the second group 412b are at least higher than the scores of the objects and executable files in the first group 412a. The OS 414 may also be configured to at least partially allocate or migrate the first plurality of pages 410a to a third type of memory and / or a third memory module (e.g., see the Nth memory module 408c) at a slower rate than the first and second types of memory or memory modules for eventual garbage collection of the pages at the third type of memory or the third memory module when the scores of the objects and executable files in the first group 412a are below a threshold. Furthermore, the OS 414 may be further configured to allocate or migrate the second plurality of pages 410b to a third type of memory at least in part for eventual garbage collection of the pages at the third type of memory or a third memory module when the scores of the objects and executable files of the second group 412b are below a threshold. The third type of memory may include flash memory cells. The first type of memory may include DRAM cells. And, the second type of memory may include NVRAM cells. The NVRAM cells may include 3D XPoint memory cells. And, the first and second types of memory may be communicatively coupled to the controller 404, the first type of memory may be communicatively coupled to the controller at a location closer than the second type of memory. And, the third type of memory may be communicatively coupled to the controller 404 at a location further away than the first and second types of memory.

[0066] In some embodiments, the score performed by OS 414 may be based at least in part on the number of user interface elements that use the executable file and at least in part on at least one of the number, recency, frequency, or combination thereof of data accessed by controller 404 in memory 406 for the executable file. In such embodiments, an increase in the use of the executable file between user interface elements increases the score of the executable file, and an increase in at least one of the number, recency, frequency, or combination thereof of data accessed by controller 404 in memory 406 for the executable file further increases the score of the executable file. Also, in such and other embodiments, when the scores of objects and executable files in first group 412a are at least higher than the scores of objects and executable files in second group 412b, OS 414 may also be configured to at least partially allocate or migrate first plurality of pages 410a to first type of memory and / or first memory module 408a that may be faster than second type of memory and / or second memory module 408b, and at least partially allocate or migrate second plurality of pages 410b to second type of memory and / or memory module. Furthermore, when the scores of the objects and executable files in the second group 412b are at least higher than the scores of the objects and executable files in the first group 412a, the OS 414 may also be configured to at least partially allocate or migrate the second plurality of pages 410b to the first type of memory and / or the first memory module 408a, and to at least partially allocate or migrate the first plurality of pages 410a to the second type of memory and / or the second memory module 408b.

[0067] In such and other embodiments, the OS 414 may also be configured to perform allocation or migration of the first plurality of pages 410a or the second plurality of pages 410b during a time period when one or more sensors of the computing device detect that the user is not aware of the output of the computing device 402. The detection of the user's absence from the output of the computing device 402 may be performed by the one or more sensors detecting that the user's face is separated from the computing device by more than a threshold distance.

[0068] In such embodiments and other embodiments, the OS 414 may also be configured to perform allocation or migration of the first plurality of pages 410a or the second plurality of pages 410b during a time period when the usage of the corresponding memory buses (e.g., see memory buses 418a, 418b, and 418c) of the first type of memory (or first memory module) and the second type of memory (or second memory module) is below a predetermined threshold. The OS 414 may also be configured to identify that the usage of the corresponding bus is below a threshold when the FPS transmitted through each of the corresponding memory buses (e.g., see memory buses 418a, 418b, and 418c) of the first type of memory (or first memory module) and the second type of memory (or second memory module) is below an FPS threshold. Some FPS-related objects may be cached at a processor cache. Therefore, the correlation between FPS and memory bus usage is weak. To compensate for this, the method may perform parallel FPS monitoring on the memory bus and the display bus, where each bus has a respective threshold.

[0069] In such and other embodiments, OS 414 may also be configured to: place the objects and executable files of the first group 412a in the foreground list; and place the objects and executable files of the second group in the background list when the scores of the objects and executable files in the first group 412a are at least higher than the scores of the objects and executable files in the second group 412b. Also, OS 414 may also be configured to: place the objects and executable files of the second group in the foreground list; and place the objects and executable files of the first group in the background list when the scores of the objects and executable files in the second group 412b are at least higher than the scores of the objects and executable files in the first group 412a.

[0070] In some embodiments, a non-transitory computer-readable storage medium is tangibly encoded with computer-executable instructions (e.g., see memory 406) that, when executed by a processor (e.g., see controller 404) associated with a computing device (e.g., see computing device 402), may perform a method, such as a method including any one or more of the operations described herein.

[0071] Figure 5 An example networked system 500 is shown according to some embodiments of the present disclosure, which includes computing devices (e.g., see computing devices 502, 520, 530, and 540) that can provide enhanced or reduced page migration in memory based on factors related to computing device components and operations (e.g., factors related to UI components, operations, and interactions) for one or more devices in the networked system and for the entire networked system.

[0072] The networked system 500 is connected to the network via one or more communication networks. The communication network described herein may include at least one device local network (e.g., Bluetooth, etc.), a wide area network (WAN), a local area network (LAN), an intranet, a mobile wireless network (e.g., 4G or 5G), an extranet, the Internet, and / or any combination thereof. The networked system 500 may be part of a peer-to-peer network, a client-server network, a cloud computing environment, and the like. Furthermore, any of the computing devices described herein may include a certain type of computer system. Furthermore, such a computer system may include a network interface to other devices in a LAN, an intranet, an extranet, and / or the Internet (e.g., see network 515). The computer system may also operate as a server or client machine in a client-server network environment, as a peer machine in a peer-to-peer (or distributed) network environment, or as a server or client machine in a cloud computing infrastructure or environment.

[0073] and, Figure 5 At least some of the components shown in FIG. 1 may be similar in function and / or structure to Figure 4A and 4B 4. For example, computing devices 502, 520, 530, and 540 may each have features and / or functionality similar to computing device 402. Other components 516 may have features and / or functionality similar to other components 420. Controller 508 may have features and / or functionality similar to controller 404. Bus 506 (which may be more than one bus) may have features and / or functionality similar to bus 416 and 418a to 418c. And, network interface 512 may have features and / or functionality similar to a network interface (not depicted) of computing device 402.

[0074] The networked system 500 includes computing devices 502, 520, 530, and 540, and each of the computing devices may include one or more buses, controllers, memories, network interfaces, storage systems, and other components. Figure 5 Each computing device shown in the figure may be or include a part of a mobile device, etc., such as a smartphone, a tablet, an IoT device, a smart TV, a smart watch, a glass or other smart home appliance, an in-vehicle information system, a wearable smart device, a game console, a PC, a digital camera, or any combination thereof. As shown, the computing device can be connected to a communication network 515, which includes at least one device local network (such as Bluetooth, etc.), a wide area network (WAN), a local area network (LAN), an intranet, a mobile wireless network (such as 4G or 5G), an extranet, the Internet, and / or any combination thereof.

[0075] Each of the computing or mobile devices described herein (e.g., computing devices 402, 502, 520, 530, and 540) may be or be replaced by a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a cellular phone, a network appliance, a server, a network router, a switch or bridge, or any machine capable of executing a set of instructions (sequentially or otherwise) that specify actions to be taken by the machine.

[0076] And, despite the Figure 5 The computing device 502 shown in and the computing device 402 shown in FIG. 4 show a single machine, but the term "machine" should also be considered to include any collection of machines that execute a set (or multiple sets) of instructions to perform any one or more methods or operations discussed herein, either individually or in combination. In addition, each of the computing or mobile devices shown may each include at least one bus and / or motherboard, one or more controllers (e.g., one or more CPUs), a main memory that may include a temporary data storage device, at least one type of network interface, a storage system that may include a permanent data storage device, and / or any combination thereof. In some multi-device embodiments, one device may complete some parts of the method described herein, and then send the completion results to another device via a network so that the other device can continue to perform other steps of the method described herein.

[0077] Figure 5Also shown is an example portion of an example computing device 502. The computing device 502 can be communicatively coupled to a network 515, as shown. The computing device 502 includes at least one bus 506, a controller 508 (e.g., a CPU), a memory 510, a network interface 512, a data storage system 514, and other components 516 (which can be any type of component found in a mobile or computing device, such as a GPS component, an I / O component such as various types of user interface components, and sensors, and a camera). The other components 516 may include one or more user interfaces (e.g., a GUI, an auditory user interface, a tactile user interface, etc.), a display, different types of sensors, tactile, audio and / or visual input / output devices, additional dedicated memory, one or more additional controllers (e.g., a GPU), or any combination thereof. The bus 506 communicatively couples the controller 508, the memory 510, the network interface 512, the data storage system 514, and the other components 516. The computing device 502 includes a computer system that includes at least a controller 508, a memory 510 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), static random access memory (SRAM), cross-point or crossbar memory, crossbar memory, etc.), and a data storage system 514, which communicate with each other via a bus 506 (which may include multiple buses).

[0078] in other words, Figure 5 5 is a block diagram of a computing device 502 having a computer system in which embodiments of the present disclosure may operate. In some embodiments, the computer system may include a set of instructions that, when executed, cause the machine to perform any one or more of the methodologies discussed herein. In such embodiments, the machine may be connected (e.g., via a network interface 512 for network connectivity) to other machines in a LAN, an intranet, an extranet, and / or the Internet (e.g., network 515). The machine may operate as a server or a client machine in a client-server network environment, as a peer machine in a peer-to-peer (or distributed) network environment, or as a server or a client machine in a cloud computing infrastructure or environment.

[0079] Controller 508 represents one or more general processing devices, such as microprocessors, central processing units, and the like. More specifically, the processing device may be a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, a single instruction multiple data (SIMD), a multiple instruction multiple data (MIMD), or a processor implementing other instruction sets, or a processor implementing a combination of instruction sets. Controller 508 may also be one or more special-purpose processing devices, such as ASICs, programmable logic such as FPGAs, digital signal processors (DSPs), network processors, and the like. Controller 508 is configured to execute instructions to perform the operations and steps discussed herein. Controller 508 may further include a network interface device, such as a network interface 512, to communicate through one or more communication networks (e.g., network 515).

[0080] The data storage system 514 may include a machine-readable storage medium (also referred to as a computer-readable medium) having stored thereon one or more sets of instructions or software embodying any one or more of the methods or functions described herein. The data storage system 514 may have execution capabilities, for example, it may at least partially execute instructions residing in the data storage system. The instructions may also reside completely or at least partially within the memory 510 and / or within the controller 508 during execution by the computer system, the memory 510 and the controller 508 also constituting machine-readable storage media. The memory 510 may be or include the main memory of the computing device 502. The memory 510 may have execution capabilities, for example, it may at least partially execute instructions residing in the memory.

[0081] Although the memory, controller, and data storage portions are each shown as being a single portion in the example embodiment, each portion should be considered to include a single portion or multiple portions that can store instructions and perform their corresponding operations. The term "machine-readable storage medium" should also be considered to include any medium that can store or encode a set of instructions for execution by a machine and cause the machine to perform any one or more of the methods of the present disclosure. The term "machine-readable storage medium" should accordingly be considered to include, but not be limited to, solid-state memory, optical media, and magnetic media.

[0082] Some portions of the previous detailed description have been presented with respect to algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the most effective means for those skilled in the art of data processing to communicate the content of their work to others skilled in the art. Here and in general, an algorithm is conceived as a self-consistent sequence of operations that produce a desired result. The operations are those that require physical manipulation of physical quantities. Typically, but not necessarily, these quantities take the form of electrical or magnetic signals that can be stored, combined, compared, and otherwise manipulated. It has been demonstrated that it is sometimes convenient to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, etc., primarily for common reasons.

[0083] It should be borne in mind, however, that all of these and similar terms should be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. The present disclosure may be directed to the actions and processes of a computer system or similar electronic computing device that manipulates and transforms data represented as physical (electronic) quantities within a computer system's registers and memories into other data similarly represented as physical quantities within the computer system's memories or registers or other such information storage systems.

[0084] The present disclosure also relates to an apparatus for performing the operations described herein. This apparatus may be specially constructed for the intended use, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer-readable storage medium, such as any type of disk, including floppy disks, optical disks, CD-ROMs and magnetic optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of medium suitable for storing electronic instructions, which are respectively coupled to a computer system bus.

[0085] The algorithms and displays presented herein are not inherently related to any particular computer or other device. Various general purpose systems may be used with the program according to the teachings herein, or it may prove convenient to construct more specialized equipment to perform the methods. The structures of a variety of these systems will be presented as set forth in the description below. In addition, the present disclosure is described without reference to any particular programming language. It should be appreciated that a variety of programming languages ​​may be used to implement the teachings of the present disclosure described herein.

[0086] The present disclosure may be provided as a computer program product or software, which may include a machine-readable medium having instructions stored thereon, which may be used to program a computer system (or other electronic device) to perform a process according to the present disclosure. The machine-readable medium includes any mechanism for storing information in a form readable by a machine (e.g., a computer). In some embodiments, the machine-readable (e.g., computer-readable) medium includes a machine (e.g., computer) readable storage medium, such as a read-only memory ("ROM"), a random access memory ("RAM"), a disk storage medium, an optical storage medium, a flash memory component, etc.

[0087] In the foregoing description, embodiments of the present disclosure have been described with reference to specific example embodiments of the present disclosure. It will be apparent that various modifications may be made to the present disclosure without departing from the broad spirit and scope of the embodiments of the present disclosure as set forth in the appended claims. Therefore, the description and drawings should be viewed in an illustrative rather than a restrictive sense.

Claims

1. A method wherein include: In a computing device, scoring each executable file in at least a first group of executable files and a second group of executable files in the computing device, the executable files being related to user interface elements of an application and being associated with pages of memory in the computing device, wherein the score is based at least in part on a number of user interface elements that utilize the executable file, wherein an increase in usage of the executable file among user interface elements increases the score of the executable file, wherein the first group is located at a first plurality of pages of the memory, and wherein the second group is located at a second plurality of pages of the memory; When the scores of the executable files in the first group are at least higher than the scores of the executable files in the second group: allocating or migrating, at least in part, the first plurality of pages to a first type of memory; and allocating or migrating, at least in part, the second plurality of pages to a second type of memory; as well as When the scores of the executable files in the second group are at least higher than the scores of the executable files in the first group: allocating or migrating, at least in part, the second plurality of pages to memory of the first type; and The first plurality of pages are allocated or migrated, at least in part, to the second type of memory.

2. The method of claim 1, comprising performing the allocating or migrating of the first plurality of pages or the second plurality of pages during a time period when one or more sensors of the computing device detect that a user is not perceiving an output of the computing device.

3. The method of claim 2, wherein the detection of the user not being aware of the output of the computing device is performed by the one or more sensors detecting that the user's face is separated from the computing device by a distance exceeding a threshold distance.

4. The method of claim 1, comprising performing the allocating or migrating of the first plurality of pages or the second plurality of pages during a time period when usage of respective memory buses of the first type of memory and the second type of memory is below a threshold.

5. The method of claim 4, comprising identifying that usage of corresponding memory buses of the first type of memory and the second type of memory is below a threshold when a frames per second (FPS) associated with a user interface element of an application is below a FPS threshold.

6. The method according to claim 1, include: When the scores of the executable files in the first group are at least higher than the scores of the executable files in the second group: placing the executable files of the first group in a foreground list; and placing the executable files of the second group in a background list; as well as When the scores of the executable files in the second group are at least higher than the scores of the executable files in the first group: placing the executable files of the second group in the foreground list; and The executable files of the first group are placed in the background list.

7. The method according to claim 6, wherein include: when the score of the executable files of the first group is below a threshold, allocating or migrating, at least in part, the first plurality of pages of memory to a third type of memory that is slower than the first and second types of memory for eventual garbage collection of pages at the third type of memory; as well as When the score of the executable files of the second group is below a threshold, the second plurality of pages of memory are at least partially allocated or migrated to the third type of memory for eventual garbage collection of pages at the third type of memory.

8. The method of claim 7, wherein the third type of memory comprises flash memory cells.

9. The method of claim 1, wherein the first type of memory comprises dynamic random access memory (DRAM) cells.

10. The method of claim 9, wherein the second type of memory comprises a non-volatile random access memory (NVRAM) cell.

11. The method of claim 10, wherein the NVRAM cells comprise 3D XPoint memory cells.

12. The method of claim 1, wherein the first and second types of memory are communicatively coupled to a processor, and wherein the first type of memory is communicatively coupled to the processor at a closer location than the second type of memory.

13. The method of claim 1, wherein an increase in at least one of recency, frequency, or a combination thereof, of processor accessing data of the executable file in the memory further increases the score of the executable file.

14. A method, wherein include: scoring, by a processor in a computing device, each executable file in at least a first group of executable files and a second group of executable files in the computing device that are associated with a user interface element of an application program, wherein the score is based at least in part on a number of user interface elements that use the executable file and at least in part on at least one of a quantity, recency, frequency, or a combination thereof, of data accessed by the processor in memory to access the executable file, wherein an increase in usage of the executable file among user interface elements increases the score of the executable file, wherein an increase in at least one of the amount, recency, frequency, or a combination thereof of data accessed by the processor in the memory for the executable file further increases the score for the executable file, wherein the first group is located at a first plurality of pages of the memory of the computing device, and wherein the second group is located at a second plurality of pages of the memory; When the scores of the executable files in the first group are at least higher than the scores of the executable files in the second group: allocating or migrating, at least in part, the first plurality of pages of memory to a first type of memory that is faster than a second type of memory; and allocating or migrating, at least in part, the second plurality of pages of memory to memory of the second type; as well as When the scores of the executable files in the second group are at least higher than the scores of the executable files in the first group: allocating or migrating, at least in part, the second plurality of pages of memory to memory of the first type; and The first plurality of pages of memory are at least partially allocated or migrated to the second type of memory.

15. The method of claim 14, comprising performing the allocating or migrating of the first plurality of pages or the second plurality of pages during a time period in which one or more sensors of the computing device detect that a user is not perceiving an output of the computing device.

16. The method of claim 15, wherein the detection of the user not being aware of the output of the computing device is performed by the one or more sensors detecting that the user's face is separated from the computing device by a distance exceeding a threshold distance.

17. The method of claim 14, comprising performing the allocating or migrating of the first plurality of pages or the second plurality of pages during a time period when usage of respective memory buses of the first type of memory and the second type of memory is below a predetermined threshold.

18. The method of claim 17, comprising identifying that usage of the first type of memory and the second type of memory's respective memory buses is below the predetermined threshold when the frames per second (FPS) transmitted through each of the respective memory buses is below an FPS threshold.

19. The method according to claim 14, further comprising: include: When the scores of the executable files in the first group are at least higher than the scores of the executable files in the second group: placing the executable files of the first group in a foreground list; and placing the executable files of the second group in a background list; as well as When the scores of the executable files in the second group are at least higher than the scores of the executable files in the first group: placing the executable files of the second group in the foreground list; and The executable files of the first group are placed in the background list.

20. A non-transitory computer-readable storage medium tangibly encoded with computer-executable instructions that, when executed by a processor associated with a computing device, perform a method, the method include: scoring, by a processor in a computing device, each executable file in at least a first group of executable files and a second group of executable files associated with user interface elements of an application program in the computing device, wherein the score is based at least in part on a number of user interface elements that use the executable file, wherein an increase in usage of the executable file among user interface elements increases the score of the executable file, wherein the first group is located at a first plurality of pages of a memory of the computing device, and wherein the second group is located at a second plurality of pages of the memory; When the scores of the executable files in the first group are at least higher than the scores of the executable files in the second group: allocating or migrating, at least in part, the first plurality of pages of memory to a first type of memory that is faster than a second type of memory; and allocating or migrating, at least in part, the second plurality of pages of memory to memory of the second type; as well as When the scores of the executable files in the second group are at least higher than the scores of the executable files in the first group: allocating or migrating, at least in part, the second plurality of pages of memory to memory of the first type; and The first plurality of pages of memory are at least partially allocated or migrated to the second type of memory.

Citation Information

Patent Citations

  • Data operations in flash memories utilizing direct data file stroage

    CN101233498A

  • Data migration method, system and device at host machine end

    CN103106045A