US9208093B2 - Allocation of memory space to individual processor cores - Google Patents
Allocation of memory space to individual processor cores Download PDFInfo
- Publication number
- US9208093B2 US9208093B2 US12/427,598 US42759809A US9208093B2 US 9208093 B2 US9208093 B2 US 9208093B2 US 42759809 A US42759809 A US 42759809A US 9208093 B2 US9208093 B2 US 9208093B2
- Authority
- US
- United States
- Prior art keywords
- cache
- memory space
- controller
- processor cores
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
- 238000000034 method Methods 0.000 claims abstract description 30
- 230000004044 response Effects 0.000 claims 8
- 238000012545 processing Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 12
- 238000000638 solvent extraction Methods 0.000 description 11
- 238000013461 design Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 239000003153 chemical reaction reagent Substances 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000017525 heat dissipation Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000021715 photosynthesis, light harvesting Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Definitions
- Multi-core processors have emerged as a mainstream computing platform in major market segments, including personal computer (PC), server, and embedded domains. As the number of processor cores on a given chip increase, so too does the potential demand on that chip's local memory. When the processor executes an instruction, for example, the processor first looks at its on-chip cache to find the data associated with that instruction to avoid performing a more time-consuming search for the data elsewhere (e.g., off-chip or on a main memory chip). Commercial multi-core processors often use cache designs from uni-processors. Thus, multi-core processors may share a single cache. With multiple cores, multiple incoming application streams may interfere with each other while seeking shared cache space, and as a result, may cause a shared cache, and, thus, the processor to operate inefficiently. Other factors relating to multiple cores may also reduce efficiency.
- FIG. 1 is a schematic diagram illustrating a multi-core processor
- FIG. 2 is a schematic diagram illustrating a shared cache
- FIG. 3 is a schematic diagram illustrating the partitioning of a shared cache
- FIG. 4 is a block diagram illustrating a process for cache allocation
- FIG. 5A is a block diagram illustrating a system and process for cache allocation, all arranged in accordance with at least some examples of the present disclosure.
- FIG. 5B is a block diagram illustrating a computer accessible medium for cache allocation, with computer accessible instructions stored thereon in accordance with at least some examples of the present disclosure.
- This disclosure is drawn, inter alia, to methods, apparatus, systems and computer program products related to separately allocating a memory space within a cache to individual processor cores accessing the cache.
- several applications may be running in parallel on separate processor cores, each processor core with its own memory requirements.
- Memory space is finite.
- individual processor cores may have to share local memory space with one or more other processor cores.
- This local memory may include, for example, the L2 or L3 caches.
- the execution characteristics of some running applications may differ from the execution characteristics of other running applications. These execution characteristics may also change over time.
- One such execution characteristic may be the amount of local memory needed to achieve adequate processing performance. For example, one application may operate more efficiently when a large amount of cache space is available, while another application may operate efficiently with any amount of cache space available. Thus, on a chip with limited cache space, the benefit to each application of obtaining additional cache resources may vary.
- shared caches may be partitioned. For example, distinct areas of the cache may be allocated for the exclusive use of one or more of the cores. Furthermore, as application execution characteristics change over time, cache allocation may change dynamically. Thus, by reducing the interference resulting from competition for cache space among the cores, overall system performance may be improved.
- FIG. 1 is a schematic diagram illustrating a multi-core processor 100 arranged in accordance with at least some examples of the present disclosure.
- Multi-core processor 100 may include a single integrated circuit having a processing core array 102 . In other examples a multi-core processor may include processors on separate integrated chips.
- the processing core array 102 may include some number (N) of processing cores 104 ( 1 )- 104 (N). Any suitable number of processing cores 104 may be provided.
- Each processing core 104 may generally be of any desired configuration including but not limited to a microprocessor ( ⁇ P), a microcontroller ( ⁇ C), a digital signal processor (DSP), or any combination thereof.
- ⁇ P microprocessor
- ⁇ C microcontroller
- DSP digital signal processor
- each processing core 104 may include logic for executing program instructions as well as other functional blocks such as an arithmetic logic unit (ALU), a floating point unit (FPU), a digital signal processing (DSP) core, registers, accumulators, etc.
- ALU arithmetic logic unit
- FPU floating point unit
- DSP digital signal processing
- the multi-core processor 100 may include any combination of dedicated or shared resources.
- a dedicated resource may be a resource 106 dedicated to a single processing core 104 , such as a dedicated level one cache, or may be a resource 108 dedicated to any subset of the processing cores 104 .
- a shared resource may be a resource 110 shared by some or all of the cores 104 , such as a shared level two cache or a shared external bus 112 .
- Such a shared external bus 112 may support an interface between the multi-core processor 100 and another component 114 .
- Such components 114 may include, but are not limited to, input-output (I/O) devices, external sensors, or the like, or may be a resource shared by any subset of the processing cores 104 .
- I/O input-output
- a shared resource may also include main memory 120 , which may be any suitable form of memory including, but not limited to, volatile memory such as random access memory (RAM), non-volatile memory such as read only memory (ROM) and flash memory storage, data storage devices such as magnetic disk storage (e.g., hard disk drive or HDD), tape storage, optical storage (e.g., compact disk or CD, digital versatile disk or DVD), or other machine-readable storage mediums that may be removable, non-removable, volatile or non-volatile.
- volatile memory such as random access memory (RAM)
- non-volatile memory such as read only memory (ROM) and flash memory storage
- data storage devices such as magnetic disk storage (e.g., hard disk drive or HDD), tape storage, optical storage (e.g., compact disk or CD, digital versatile disk or DVD), or other machine-readable storage mediums that may be removable, non-removable, volatile or non-volatile.
- multi-core processor 100 may have any suitable number of processing cores 104 .
- multi-core processor 100 may have two (2) cores, four (4) cores, tens of cores, and even hundreds or more of processing cores.
- Some multi-core processors may be homogenous, such that each of the processing cores uses a single core design.
- Other multi-core processors may be heterogeneous, such that one or more of the processing cores may be different from one or more of other processing cores, and each core or subset of cores may be designed for a different role in the multi-core processor 100 .
- the multi-core processor 100 may include a core controller, or core interface 116 .
- Core controller 116 may determine which processing tasks are to be processed by individual processing cores 104 .
- One or more switches 118 may be provided. In one example, processing tasks may be routed to selected processing cores using switches 118 .
- FIG. 1 is an illustrative schematic of a multi-core processor and does not illustrate physical location of the components illustrated therein. It is appreciated that the multi-core processor 100 described herein is illustrative and that examples and modifications are possible. Design choices may be driven by, for example, considerations of hardware size and complexity versus performance, thermal energy and heat dissipation, processor speed, overall throughput, etc.
- the multi-core processor 100 may be provided in a suitable computing environment, such as a personal computer (PC).
- a computing environment may include the multi-core processor 100 , system memory, one or more buses, and one or more I/O devices, such as a keyboard, mouse, touch screen, display device, such as a CRT or LCD based monitor, universal serial bus (USB) or other port connections, CD drives, DVD drives, and the like.
- Bus connections among the various components may be implemented using bus protocols such as Peripheral Component Interconnect (PCI), PCI Express, Accelerated Graphics Port (AGP), HyperTransport, or any other suitable bus protocol, and connections between different devices may use different protocols.
- PCI Peripheral Component Interconnect
- AGP Accelerated Graphics Port
- HyperTransport or any other suitable bus protocol
- a PC may operate in a networked environment using logical connections to one or more remote computers.
- Such remote computers may be, for example, other PCs, servers, routers, network PCs, peer devices, or other common network nodes, and may include many or all of the elements described above relative to multi-core processor 100 .
- Logical connections may comprise, for example, a local-area network (LAN) or a wide-area network (WAN), intranets and the Internet.
- FIG. 2 is a schematic diagram illustrating a shared cache arranged in accordance with at least some examples of the present disclosure.
- FIG. 2 illustrates a plurality of processor cores 201 - 204 , suitable for use in a multi-core processor system.
- processor cores 201 - 204 may have differing performance characteristics, as represented by the varying sizes of cores 201 - 204 .
- the larger cores 201 and 203 may be of higher performance, suitable for more complex software applications, as compared to the smaller cores 202 and 204 , which may be suitable for processing software applications of less complexity.
- more or fewer cores may be provided, that the cores may be of uniform or varying size, and that specific descriptions of the cores herein are not intended to be limiting.
- a suitable shared cache 300 is depicted in FIG. 2 for use with the plurality of processor cores 201 - 204 .
- Each of cores 201 - 204 may transfer data to and from shared cache 300 .
- Shared cache 300 may be partitioned such that individual of cores 201 - 204 may only have access to certain areas within the cache.
- the partitioning of shared cache 300 may be controlled by core controller 116 .
- larger cores 201 and 203 may be allocated a larger portion of cache 300 than smaller cores 202 and 204 .
- processor cores 201 - 204 may control the partitioning of cache 300 by any suitable means and based at least in part on any of the hardware attributes that the cores 201 - 204 may possess.
- partitioning of shared cache 300 may be done based at least in part on application threads of execution (hereinafter referred to as “threads”) that are running on processor cores 201 - 204 .
- threads application threads of execution
- one application may operate more efficiently when a large amount of cache space is available, while another application may operate efficiently with any amount of cache space available.
- the threads which may benefit from a larger cache allocation may be apportioned a larger area of shared cache 300 by core controller 116
- the threads which may not benefit from a larger cache allocation may be apportioned a smaller area of shared cache 300 by core controller 116 .
- FIG. 3 is a schematic diagram illustrating the partitioning of a shared cache 300 in accordance with the present disclosure.
- the rows in FIG. 3 represent the 1 through m lines in shared cache 300 .
- the columns in FIG. 3 represent the 1 through n ways into shared cache 300 .
- block 401 in FIG. 3 represents way “1” into cache line “1” in shared cache 300 .
- block 408 represents way “n” into cache line “2” in shared cache 300 .
- FIG. 3 depicts one possible partitioning of shared cache 300 .
- Block 200 depicts a plurality of processor cores which may be associated with the shared cache 300 .
- a first processor core “A” is depicted as having been allocated ways “1” and “2” into cache line “1”.
- a second processor core “B” is depicted as having been allocated ways “3” through “n” into cache line “1”.
- processor core “B” has been allocated a larger portion of shared cache 300 than processor core “A”.
- processor core “C” is depicted as having been allocated all the ways “1” through “n” into cache line “2”.
- processor core “C” has been allocated a larger portion of shared cache 300 that either processor cores “A” or “B”.
- processor cores 200 may be partitioned shared cache 300 space in any combination of cache lines and ways, and that some processor cores 200 may share any combination of lines and ways.
- the specific partitioning of shared cache 300 in FIG. 3 is not in any way intended to be limiting.
- cache partitioning may be accomplished by reference to the locality of a thread. For example, within an application program, some instructions may be looped (executed more than once), while other instructions may be non-looped (only executed a single time). Such non-looped instructions are referred to as strided references. Because strided references are non-looped, e.g., they do not repeat the same instructions more than once, strided references may not benefit from cache memory.
- FIG. 4 is a block diagram illustrating a process for cache allocation in accordance with the present disclosure.
- instructions from a computing environment 500 which may contain a plurality of threads of execution 501 - 502 , may be sent to a branch predictor 600 for a determination of whether the instruction is looped (e.g., whether the branch predictor 600 has seen this instruction more than once), or non-looped. If the branch predictor 600 determines that an instruction is non-looped, thus a strided reference, the instruction may be marked with a non-cacheable flag such that the instruction is never sent to a cache [block 601 ]. Alternatively, if the branch predictor 600 determines that an instruction is looped [block 602 ], the instruction may then be sent to a shared cache 300 . Thus, access to a shared cache may be limited to those instructions which may have greater benefit from the cache space.
- cache partitioning may be configured to change over time in a dynamic manner.
- FIG. 5A is a block diagram illustrating a system and process for cache allocation in accordance with at least some examples of the present disclosure.
- a computer system 700 may include a processor 701 configured for performing an example of a process for partitioning a shared cache. In other examples, various operations or portions of various operations of the process may be performed outside of the processor 701 .
- the process may include determining characteristics of at least one thread of execution associated with at least one of the processor cores.
- the process may include a core controller separately allocating a memory space within the cache to individual processor cores using software coupled to the multi-core processor, based at least in part on the characteristics of the thread.
- FIG. 5B is a block diagram illustrating a system and process for cache allocation in accordance with at least some examples of the present disclosure.
- a computer accessible medium 700 may include computer accessible instructions 701 stored thereon for performing an example procedure for allocating a shared cache space within a multi-core processor computing system.
- the procedure may include determining characteristics of at least one thread of execution associated with at least one of the processor cores.
- the procedure may include a core controller separately allocating a memory space within the cache to individual processor cores using software coupled to the multi-core processor, based at least in part on the characteristics of the thread.
- processor based cache allocation includes various examples of processor based cache allocation. Following are specific examples of methods and systems of processor based cache allocation. These are for illustration only and are not intended to be limiting.
- a computing system comprising a multi-core processor, at least one cache that is accessible to at least two of the processor cores, and software coupled to the multi-core processor for separately allocating memory space within the cache to individual processor cores accessing the cache by a core controller.
- the memory space within the cache may be allocated to the processor cores based at least in part on hardware characteristics of the processor cores.
- the memory space within the cache may be allocated to the processor cores based at least in part on the execution characteristics of one or more threads of execution associated with the processor cores.
- allocation of the memory space within the cache may be accomplished by restricting the number of ways the processor cores have access into the cache.
- way restriction may also be determined at each cache line.
- the system includes one or more branch predictors configured for identifying strided references, and the software includes instructions for allocating memory space within the cache based at least in part on the identification.
- the strided references may be marked with a non-cacheable flag such that they are not stored within the cache.
- Disclosed in a second example is a process for allocating memory space within a shared cache in a multi-core processor computing system, the cache being accessible by at least two of a plurality of processor cores, the process comprising determining characteristics of at least one thread of execution associated with at least one of the processor cores and separately allocating a memory space within the cache to each processor core by a core controller using software coupled to the multi-core processor, based at least in part on the characteristics of the thread.
- the memory space within the cache may be allocated to the processor cores based at least in part on hardware characteristics of the processor cores.
- allocation of the memory space within the cache may be accomplished by restricting the number of ways the processor cores have access into the cache.
- way restriction may also be determined at each cache line.
- the process includes using one or more branch predictors configured for identifying strided references, and further using software that includes instructions for allocating memory space within the cache based at least in part on the identification.
- the strided references may be marked with a non-cacheable flag such that they are not stored within the cache.
- Disclosed in a third example is a computer accessible medium having stored thereon computer executable instructions for performing a procedure for partitioning a shared cache space within a multi-core processor computing system, where the procedure includes separately allocating a memory space within the cache to each processor core by a core controller using software coupled to the multi-core processor based at least in part on at least one thread of execution.
- the memory space within the cache may be allocated to the processor cores based at least in part on hardware characteristics of the processor cores.
- the memory space within the cache may be allocated to the processor cores based at least in part on the execution characteristics of one or more threads of execution associated with the processor cores.
- any two components so associated may also be viewed as being “operably connected”, or “operably coupled”, to each other to achieve the desired functionality, and any two components capable of being so associated may also be viewed as being “operably couplable”, to each other to achieve the desired functionality.
- operably couplable include but are not limited to physically mateable and/or physically interacting components and/or wirelessly interactable and/or wirelessly interacting components and/or logically interacting and/or logically interactable components.
- a range includes each individual member.
- a group having 1-3 cells refers to groups having 1, 2, or 3 cells.
- a group having 1-5 cells refers to groups having 1, 2, 3, 4, or 5 cells, and so forth.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/427,598 US9208093B2 (en) | 2009-04-21 | 2009-04-21 | Allocation of memory space to individual processor cores |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/427,598 US9208093B2 (en) | 2009-04-21 | 2009-04-21 | Allocation of memory space to individual processor cores |
Publications (2)
Publication Number | Publication Date |
---|---|
US20100268891A1 US20100268891A1 (en) | 2010-10-21 |
US9208093B2 true US9208093B2 (en) | 2015-12-08 |
Family
ID=42981863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/427,598 Active 2031-09-26 US9208093B2 (en) | 2009-04-21 | 2009-04-21 | Allocation of memory space to individual processor cores |
Country Status (1)
Country | Link |
---|---|
US (1) | US9208093B2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170212838A1 (en) * | 2016-01-26 | 2017-07-27 | Nanning Fugui Precision Industrial Co., Ltd. | System and method for managing cache space and electronic device employing same |
US9864681B2 (en) | 2012-08-05 | 2018-01-09 | Advanced Micro Devices, Inc. | Dynamic multithreaded cache allocation |
US10409723B2 (en) | 2014-12-10 | 2019-09-10 | Alibaba Group Holding Limited | Multi-core processor supporting cache consistency, method, apparatus and system for data reading and writing by use thereof |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8244982B2 (en) * | 2009-08-21 | 2012-08-14 | Empire Technology Development Llc | Allocating processor cores with cache memory associativity |
EP2689336A1 (en) * | 2011-03-25 | 2014-01-29 | BlackBerry Limited | Dynamic power management of cache memory in a multi-core processing system |
JP6281442B2 (en) * | 2014-08-14 | 2018-02-21 | 富士通株式会社 | Assignment control program, assignment control method, and assignment control apparatus |
KR102434840B1 (en) * | 2017-08-28 | 2022-08-22 | 에스케이하이닉스 주식회사 | Data storage device |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5689653A (en) * | 1995-02-06 | 1997-11-18 | Hewlett-Packard Company | Vector memory operations |
US5860151A (en) | 1995-12-07 | 1999-01-12 | Wisconsin Alumni Research Foundation | Data cache fast address calculation system and method |
US20040260883A1 (en) * | 2003-01-28 | 2004-12-23 | Sun Microsystems, Inc. | Computer system employing bundled prefetching |
US20080040554A1 (en) * | 2006-08-14 | 2008-02-14 | Li Zhao | Providing quality of service (QoS) for cache architectures using priority information |
US20080209133A1 (en) | 2007-02-22 | 2008-08-28 | Arm Limited | Managing cache coherency in a data processing apparatus |
US20090106495A1 (en) | 2007-10-23 | 2009-04-23 | Sun Microsystems, Inc. | Fast inter-strand data communication for processors with write-through l1 caches |
US20110047333A1 (en) | 2009-08-21 | 2011-02-24 | Andrew Wolfe | Allocating processor cores with cache memory associativity |
-
2009
- 2009-04-21 US US12/427,598 patent/US9208093B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5689653A (en) * | 1995-02-06 | 1997-11-18 | Hewlett-Packard Company | Vector memory operations |
US5860151A (en) | 1995-12-07 | 1999-01-12 | Wisconsin Alumni Research Foundation | Data cache fast address calculation system and method |
US20040260883A1 (en) * | 2003-01-28 | 2004-12-23 | Sun Microsystems, Inc. | Computer system employing bundled prefetching |
US20080040554A1 (en) * | 2006-08-14 | 2008-02-14 | Li Zhao | Providing quality of service (QoS) for cache architectures using priority information |
US20080209133A1 (en) | 2007-02-22 | 2008-08-28 | Arm Limited | Managing cache coherency in a data processing apparatus |
US20090106495A1 (en) | 2007-10-23 | 2009-04-23 | Sun Microsystems, Inc. | Fast inter-strand data communication for processors with write-through l1 caches |
US20110047333A1 (en) | 2009-08-21 | 2011-02-24 | Andrew Wolfe | Allocating processor cores with cache memory associativity |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9864681B2 (en) | 2012-08-05 | 2018-01-09 | Advanced Micro Devices, Inc. | Dynamic multithreaded cache allocation |
US10409723B2 (en) | 2014-12-10 | 2019-09-10 | Alibaba Group Holding Limited | Multi-core processor supporting cache consistency, method, apparatus and system for data reading and writing by use thereof |
US20170212838A1 (en) * | 2016-01-26 | 2017-07-27 | Nanning Fugui Precision Industrial Co., Ltd. | System and method for managing cache space and electronic device employing same |
US10042769B2 (en) * | 2016-01-26 | 2018-08-07 | Nanning Fugui Precision Industrial Co., Ltd. | System and method for managing cache space and electronic device employing same |
Also Published As
Publication number | Publication date |
---|---|
US20100268891A1 (en) | 2010-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9189282B2 (en) | Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter | |
US8131970B2 (en) | Compiler based cache allocation | |
US8244982B2 (en) | Allocating processor cores with cache memory associativity | |
US9208093B2 (en) | Allocation of memory space to individual processor cores | |
US9734079B2 (en) | Hybrid exclusive multi-level memory architecture with memory management | |
US10037222B2 (en) | Virtualization of hardware accelerator allowing simultaneous reading and writing | |
US10048976B2 (en) | Allocation of virtual machines to physical machines through dominant resource assisted heuristics | |
US8302098B2 (en) | Hardware utilization-aware thread management in multithreaded computer systems | |
Ahn et al. | Dynamic virtual machine scheduling in clouds for architectural shared resources | |
US8145723B2 (en) | Complex remote update programming idiom accelerator | |
US9710306B2 (en) | Methods and apparatus for auto-throttling encapsulated compute tasks | |
US8656405B2 (en) | Pulling heavy tasks and pushing light tasks across multiple processor units of differing capacity | |
TW201734758A (en) | Multi-core communication acceleration using hardware queue device | |
JP2013537346A (en) | Application scheduling on heterogeneous multiprocessor computing platforms | |
KR20090046609A (en) | Processor and memory control method | |
US9256470B1 (en) | Job assignment in a multi-core processor | |
US20150163324A1 (en) | Approach to adaptive allocation of shared resources in computer systems | |
KR102239229B1 (en) | Dynamic load balancing of hardware threads in clustered processor cores using shared hardware resources, and related circuits, methods, and computer-readable media | |
US20180275991A1 (en) | Compiler-assisted inter-simd-group register sharing | |
US9032099B1 (en) | Writeback mechanisms for improving far memory utilization in multi-level memory architectures | |
US9940170B2 (en) | Dynamically managing distribution of data and computation across cores for sequential programs | |
US8671232B1 (en) | System and method for dynamically migrating stash transactions | |
US9442759B2 (en) | Concurrent execution of independent streams in multi-channel time slice groups | |
US12086622B2 (en) | Optimizing virtual machine scheduling on non-uniform cache access (NUCA) systems | |
JP2013114538A (en) | Information processing apparatus, information processing method and control program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: LSTAR TECHNOLOGIES LLC, DELAWARE Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CONTE, THOMAS M., MR.;WOLFE, ANDREW, MR.;SIGNING DATES FROM 20090608 TO 20090611;REEL/FRAME:026531/0152 |
|
AS | Assignment |
Owner name: EMPIRE TECHNOLOGY DEVELOPMENT LLC, DELAWARE Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LSTAR TECHNOLOGIES LLC;REEL/FRAME:027128/0226 Effective date: 20110623 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
AS | Assignment |
Owner name: CRESTLINE DIRECT FINANCE, L.P., TEXAS Free format text: SECURITY INTEREST;ASSIGNOR:EMPIRE TECHNOLOGY DEVELOPMENT LLC;REEL/FRAME:048373/0217 Effective date: 20181228 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FEPP | Fee payment procedure |
Free format text: 7.5 YR SURCHARGE - LATE PMT W/IN 6 MO, LARGE ENTITY (ORIGINAL EVENT CODE: M1555); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |