Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Evaluating the performance of cache-affinity scheduling in shared-memory multiprocessors
Journal of Parallel and Distributed Computing
Object-oriented design patterns recovery
Journal of Systems and Software
Using Processor-Cache Affinity Information in Shared-Memory Multiprocessor Scheduling
IEEE Transactions on Parallel and Distributed Systems
Automatic Design Pattern Detection
IWPC '03 Proceedings of the 11th IEEE International Workshop on Program Comprehension
Mining Design Patterns from C++ Source Code
ICSM '03 Proceedings of the International Conference on Software Maintenance
Fair Cache Sharing and Partitioning in a Chip Multiprocessor Architecture
Proceedings of the 13th International Conference on Parallel Architectures and Compilation Techniques
Journal of Parallel and Distributed Computing
Application of graph theory to OO software engineering
Proceedings of the 2006 international workshop on Workshop on interdisciplinary software engineering research
Design Pattern Detection Using Similarity Scoring
IEEE Transactions on Software Engineering
Locality-Aware Distributed Loop Scheduling for Chip Multiprocessors
VLSID '07 Proceedings of the 20th International Conference on VLSI Design held jointly with 6th International Conference: Embedded Systems
Thread clustering: sharing-aware scheduling on SMP-CMP-SMT multiprocessors
Proceedings of the 2nd ACM SIGOPS/EuroSys European Conference on Computer Systems 2007
Programming the grid with POP-C++
Future Generation Computer Systems - Special section: Data mining in grid computing environments
A New Task Graph Model for Mapping Message Passing Applications
IEEE Transactions on Parallel and Distributed Systems
Application mapping for chip multiprocessors
Proceedings of the 45th annual Design Automation Conference
A Bridging Model for Multi-core Computing
ESA '08 Proceedings of the 16th annual European symposium on Algorithms
Optimal Multicore Scheduling: An Application of ASP Techniques
LPNMR '09 Proceedings of the 10th International Conference on Logic Programming and Nonmonotonic Reasoning
A concurrent dynamic analysis framework for multicore hardware
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
A matrix-based approach to recovering design patterns
IEEE Transactions on Systems, Man, and Cybernetics, Part A: Systems and Humans
Reinventing scheduling for multicore systems
HotOS'09 Proceedings of the 12th conference on Hot topics in operating systems
EURO-PDP'00 Proceedings of the 8th Euromicro conference on Parallel and distributed processing
Exploring implicit parallelism in class diagrams
Journal of Systems and Software
Memory system performance in a NUMA multicore multiprocessor
Proceedings of the 4th Annual International Conference on Systems and Storage
Toward Dark Silicon in Servers
IEEE Micro
Model Driven Cache-Aware Scheduling of Object Oriented Software for Chip Multiprocessors
DSD '11 Proceedings of the 2011 14th Euromicro Conference on Digital System Design
ISCIS'06 Proceedings of the 21st international conference on Computer and Information Sciences
Hi-index | 0.00 |
In recent years, processor technology has evolved towards multicore processors, which include multiple processing units (cores) in a single package. Those cores, having their own private caches, often share a higher level cache memory dedicated to each processor die. This multi-level cache hierarchy in multicore processors raises the importance of cache utilization problem. Assigning parallel-running software components with common data to processor cores that do not share a common cache increases the number of cache misses. In this paper we present a novel approach that uses model-based information to guide the OS scheduler in assigning appropriate core affinities to software objects at run-time. We build graph models of software and cache hierarchies of processors and devise a graph matcher algorithm that provides mapping between these two graphs. Using this mapping we obtain candidate core sets that each software object can be affiliated with at run-time. These affiliations are determined based on the idea that software components that have the potential to share common data at run-time should run on cores that share a common cache. We also develop an object dispatcher algorithm that keeps track of object affiliations at run-time and dispatches objects by using the information from the compile-time graph matcher. We apply our approach on design pattern implementations and two different application program running on servers using CFS scheduling. Our results show that cache-aware dispatching based on information obtained from software model, decreases number of cache misses significantly and improves CFS' scheduling performance.