A Report on Coloring with Live Ranges Split

Size: px
Start display at page:

Download "A Report on Coloring with Live Ranges Split"

Transcription

1 A Report on Coloring with Live Ranges Split Xidong Wang Li Yang Computer Science Department University of Wisconsin Madison December 17, Introduction One idea to improve Chaitin-style coloring algorithm [2] in register allocation is to split live ranges. Chaitin-style algorithm we have implemented in assignment 2 simply gives up allocating a register to a live range, if the live range has too many neighbors. Intuitively the idea of live range split can increase the chance of allocating a register to a live range. Actually the smaller a live range is, the fewer neighbors it would interfere with and hence the more chance we would have to allocate a register to it. Priority-based algorithm [1] addressed this issue, but usually the solution can not achieve practically acceptable results as its live range split strategy only aims to color as many live ranges as possible, without taking into account if a split implies negative or positive gains. Current work in the field of live range split goes into three categories, depending on the place where live range split happens. 1) Pre-allocation split applies live range split before the register allocation phase. 2) Post-allocation split applies live range split after the register allocation phase. And 3) Interallocation split only applies live range split when it happens that a live range can not be allocated a register and has to be spilled. In this project we try to design and implement three live range split algorithms corresponding to the three different categories respectively and compare their optimization effects. The remaining sections are arranged as follows. In section 2, we describe our algorithms in details. Performance evaluation of the three algorithms is discussed after the experiment in section 3. 2 Algorithm Description We design and implement three different algorithms to achieve live range split. they are named as post-algorithm, pre-algorithm and inter-algorithm, corresponding to the three categories of live range split strategies that we listed

2 in the previous section. The algorithms are based on the following two facts that we believe existing in most programs: 1. For a live range, there exist some holes. By hole, we mean that the basic blocks in a live range are not contiguous. 2. The variable corresponding to a live range is not used evenly within the range. That means in some basic blocks, it is used more frequently than in others. One special case is loop-body. We expect to save much load/store overhead if a loop-body can be allocated a register. Similar techniques are used in these three algorithms. For a live range to be split, To save and restore the value of the variable belonging to the live range, some compensation code is instrumented on the boundary where a pending split will happen. Compensation code is referred as portal in the report. Given a live range, we come up with a evaluation model to determine whether or not to split it. First of all its boundary is recognized, and the benefit of register utilization and the cost of portal compensation code due to the pending split has to be compared in advance. This evaluation model is called benifit-cost model. Different from priority-based approach, we commit a pending split when it is beneficial of doing so. 2.1 Post-algorithm Imagine that some live range may have been allocated a register, but in some of its blocks, the register is not used very frequently. If some variables have not been assigned in those blocks but they are used very often, switching the register to those frequently used variables would be valuable. This algorithm is to find out this kind of live ranges. In a extreme, some registers are not assigned to variables in some blocks due to color register allocation algorithms, utilizing this kind of free registers would help improve performance. Below is the detailed algorithm description. 1. Recognize the holes in a long live range. In implementation, the maximum variable usage in a block is computed, then any block in which the variable usage is less than 10% of that maximum usage is considered as a hole. 2. Merge the holes into a continuous hole range, to decrease the number of possible portals. maximize the split benefit. 3. For each block in hole range, find a unassigned variable whose usage in this block is maximum, assign the free register to it. 4. Compute the benefit-cost of this split. Benefit is the decreased memory access of variables assigned free register, while cost is the save-restore happens in portals and memory access of that split variable victim. 2

3 2.2 Pre-algorithm The idea of our pre-algorithm is inspired by the breakdown of post-algorithm in most cases. We had expected that by using post-algorithm, we could use registers stolen from holes of live ranges for other basic blocks and gain some profit. But the result of experiments is somehow out of our expectation. After thinking it over, we recognized that most of basic blocks seen in programs are composed of only three or five instructions and what we can gain often can not balance the price we have to pay to save contents of free registers from original live ranges. We decide to try an algorithm to place our live range split process before register allocation. Pre-algorithm s key idea is based on an observation: in a program, most of memory access happens in a portion of its blocks, referred as core, which are usually located in blocks belonging to a loop structure. If registers are carefully scheduled and allocated in core range, the overall register allocation of the whole program will be improved. Therefore, if a live range spans a core and some other non-core blocks, the non-core blocks will interfere with the register allocation of core blocks, impacting the overall allocation performance. Based on the discussion, pre-algorithm is proposed. Live range is split aggressively upon the core boundary before register allocation phase. We use our usage model to decide how to split a live range, which usually splits a live range at the loop boundary. The flow of the pre-algorithm goes as follows after the initial Interference Graph is constructed. 1. For each live range in Interference Graph, mark each basic block in the live range as either core or non-core similarly as the hole-recognition in post-algorithm. 2. Split that live range into some cores and a non-core set. Core is usually split in loop boundary, or it is recognized as core in step 1. The other blocks go to a non- core set category. Cores and non-core set will be independently assigned register in allocation phase. 3. Rebuild Interference Graph. After all the live ranges have been visited, go to register allocation and code generation phase. 2.3 Inter-algorithm Post-algorithm and pre-algorithm both can not achieve optimal results. In pre-algorithm, the problem stems from the fact that we split live ranges too aggressively before register allocation. Actually before register allocation, we are lack of enough information to make a decision upon which live ranges should be split and which should not. This aggressive approach will split almost all live ranges with loops inside, even though some of them can actually be assigned a color. And in some cases, despite of the fact that one live range has been split, it can not be assigned a color yet, as other live ranges have much more cost than it does. All these circumstances will result in unbalanced overhead of a live range split. Based on the discussions above, we try to find a compromise 3

4 between post-algorithm and pre-algorithm, and put the live range split process during the course of register allocation. The idea of inter-algorithm is that, if a live range can not been assigned a register with graph coloring algorithm, and if it can be split into core and non-core sets, split that live range and redo the register allocation. Because the live range is minimized in length, we hope that it can be assigned a register in allocation phase. The flow of the inter-algorithm goes as follows after the initial Interference Graph is constructed. 1. Register allocation with graph coloring algorithm. 2. Once there is a live range that will have to be spilled and contains core, split it into cores and non-core set as in pre-algorithm 3. Repeat Step 2 until all live ranges, which cant be assigned a color, have been evaluated. 4. Redo the graph coloring register allocation. 3 Experiment Evaluation Yacc.c is taken as a typical benchmark and we have run three algorithms with real programs in assignment 2 test directory. They seem to share the same pattern, and therefore yacc is used to analyze algorithm performance. When only one or two machine registers are available, the competition of register allocation is high and live range split is likely to happen. 3.1 Memory access performance for post-algorithm In yacc, 9 live ranges are taken as split candidates, after benefit-cost computation, only 2 of them is split finally, saving 29 memory accesses totally. Considering yacc is a real program and the total memory access is in millisecond magnitude, the improvement is very poor. We tried on other test programs, the similar performance result is gathered. Two factors can contribute to the breakdown of post-algorithm. First, we have to admit, graph coloring algorithm is successful in register allocation, very few live ranges are long enough and skewed enough to be recognized as split candidates. Second, basic blocks are very short, usually 3-5 instructions each. Therefore portal compensation code is a big burden. We can see that only two out of nine candidates in yacc pass the benefit-cost model, the other seven candidates can not find out enough benefit from split to balance the portal cost. Plus these two negative factors, another phenomenon suggests that we stop post-algorithm and try other ways. The split live range does not split on loop boundary and let others to use free registers in loop range, therefore, the benefit from post-algorithm can not be large. All performance data seems to lead us to pre-algorithm. 4

5 3.2 Memory access performance for pre-algorithm In yacc, pre-algorithm aggressively splits live ranges before register allocation. Some better performance is achieved. In one procedure, memory accesses happen without pre-algorithm, while memory accesses happen with pre-algorithm. In another test case, 963 with pre-algorithm and 1111 without pre-algorithm. That is an encouraging result, showing that live range split is helpful in register allocation. However, we still have to say that the improvement is very little, no more than 1% of the total memory accesses. We analyzed the algorithm running in detail and found a couple of factors contributing to the poor improvement. First of all, the long live range usually is filled with holes, it is not common to see that 90% of a long live range is holes. However, the split of long live range can help. One reason is that machine registers are so few that in blocks within loop boundary, the registers have already fully utilized by graphing coloring algorithm, leave almost no space for split live range. Second, even if cores from long live range split are assigned register, the compensation cost in portal will offset the benefit. If we increase the amount of machine registers, the register usage pressure within loop boundary is decreased, then the split core can grab some unassigned machine register. But as the amount of register increase, the graph coloring algorithm will decrease the memory access hugely. The 17915/18282 case in two registers, mentioned above, is now 953/1415 if five registers can be allocated. That means live range split can improve the register allocation, but that improvement will not promote total performance a lot. 3.3 Memory access performance for inter-algorithm Similar performance data as pre-algorithm. The split does not bring about significant performance improvement, since the cores after split are not allocated registers. In pre- algorithm 17915/18282 case, the memory access number in inter-algorithm is 17893, a very little improvement. 4 Conclusion Live range split is hard. Although it is very intuitive that live range split is a good idea of optimization and also there are a lot of feasible ideas to implement live range split, all the three algorithms we have developed can not gain as much as what we expect. Algorithms of live range split are still good in some sense but they are intended to be programs-sensitive. That is to say, for some programs, they work better. Some degree of optimization can be achieved, but the profit is not noticeable. In some other cases, it could be even worse and the overhead of live range split can not be balanced by what we gain via live range split. It seems that graph coloring algorithm can work well in core parts of program, usually within the loop boundary. Therefore, even the long live range is split, the cores can not grab machine registers, therefore little improvement 5

6 can be provided. Also the compensation cost in portal, to store and re-load in order to keep value integrity, also is a big burden to benefit-cost model in live range split. Our three algorithms can provide some hints about live range split. Although the performance improvement is not significant, the prevailing holes in long live ranges make it a challenging issue to register allocation research still. References [1] Hennesey, Chow, The Priority-Based Coloring Approach to Register Allocation, ACM TOPLAS, Oct [2] G. Chaitin, Register Allocation via Coloring, Computer Languages, [3] Guei-Yuan Lueh, Fusion-Based Register Allocation, Lueh School of Computer Science, CMU. [4] William M. Waite, Global Register Allocation, Department of Electrical and Computer Engineering, University of Colorado. 6

Register Allocation via Hierarchical Graph Coloring

Register Allocation via Hierarchical Graph Coloring Register Allocation via Hierarchical Graph Coloring by Qunyan Wu A THESIS Submitted in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE IN COMPUTER SCIENCE MICHIGAN TECHNOLOGICAL

More information

Global Register Allocation via Graph Coloring

Global Register Allocation via Graph Coloring Global Register Allocation via Graph Coloring Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University have explicit permission

More information

Global Register Allocation Based on Graph Fusion

Global Register Allocation Based on Graph Fusion Global Register Allocation Based on Graph Fusion Guei-Yuan Lueh, Thomas Gross, and Ali-Reza Adl-Tabatabai March 1996 CMU-CS-96-16 School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213

More information

CSC D70: Compiler Optimization Register Allocation

CSC D70: Compiler Optimization Register Allocation CSC D70: Compiler Optimization Register Allocation Prof. Gennady Pekhimenko University of Toronto Winter 2018 The content of this lecture is adapted from the lectures of Todd Mowry and Phillip Gibbons

More information

General Objective:To understand the basic memory management of operating system. Specific Objectives: At the end of the unit you should be able to:

General Objective:To understand the basic memory management of operating system. Specific Objectives: At the end of the unit you should be able to: F2007/Unit6/1 UNIT 6 OBJECTIVES General Objective:To understand the basic memory management of operating system Specific Objectives: At the end of the unit you should be able to: define the memory management

More information

The C2 Register Allocator. Niclas Adlertz

The C2 Register Allocator. Niclas Adlertz The C2 Register Allocator Niclas Adlertz 1 1 Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated

More information

Lecture 7. Memory Management

Lecture 7. Memory Management Lecture 7 Memory Management 1 Lecture Contents 1. Memory Management Requirements 2. Memory Partitioning 3. Paging 4. Segmentation 2 Memory Memory is an array of words or bytes, each with its own address.

More information

Code generation for modern processors

Code generation for modern processors Code generation for modern processors Definitions (1 of 2) What are the dominant performance issues for a superscalar RISC processor? Refs: AS&U, Chapter 9 + Notes. Optional: Muchnick, 16.3 & 17.1 Instruction

More information

Code generation for modern processors

Code generation for modern processors Code generation for modern processors What are the dominant performance issues for a superscalar RISC processor? Refs: AS&U, Chapter 9 + Notes. Optional: Muchnick, 16.3 & 17.1 Strategy il il il il asm

More information

Caching for NASD. Department of Computer Science University of Wisconsin-Madison Madison, WI 53706

Caching for NASD. Department of Computer Science University of Wisconsin-Madison Madison, WI 53706 Caching for NASD Chen Zhou Wanli Yang {chenzhou, wanli}@cs.wisc.edu Department of Computer Science University of Wisconsin-Madison Madison, WI 53706 Abstract NASD is a totally new storage system architecture,

More information

Architecture Tuning Study: the SimpleScalar Experience

Architecture Tuning Study: the SimpleScalar Experience Architecture Tuning Study: the SimpleScalar Experience Jianfeng Yang Yiqun Cao December 5, 2005 Abstract SimpleScalar is software toolset designed for modeling and simulation of processor performance.

More information

Multiprocessors II: CC-NUMA DSM. CC-NUMA for Large Systems

Multiprocessors II: CC-NUMA DSM. CC-NUMA for Large Systems Multiprocessors II: CC-NUMA DSM DSM cache coherence the hardware stuff Today s topics: what happens when we lose snooping new issues: global vs. local cache line state enter the directory issues of increasing

More information

Frequency Oriented Scheduling on Parallel Processors

Frequency Oriented Scheduling on Parallel Processors School of Mathematics and Systems Engineering Reports from MSI - Rapporter från MSI Frequency Oriented Scheduling on Parallel Processors Siqi Zhong June 2009 MSI Report 09036 Växjö University ISSN 1650-2647

More information

Mapping Vector Codes to a Stream Processor (Imagine)

Mapping Vector Codes to a Stream Processor (Imagine) Mapping Vector Codes to a Stream Processor (Imagine) Mehdi Baradaran Tahoori and Paul Wang Lee {mtahoori,paulwlee}@stanford.edu Abstract: We examined some basic problems in mapping vector codes to stream

More information

Input/Output Management

Input/Output Management Chapter 11 Input/Output Management This could be the messiest aspect of an operating system. There are just too much stuff involved, it is difficult to develop a uniform and consistent theory to cover

More information

Operating Systems Unit 6. Memory Management

Operating Systems Unit 6. Memory Management Unit 6 Memory Management Structure 6.1 Introduction Objectives 6.2 Logical versus Physical Address Space 6.3 Swapping 6.4 Contiguous Allocation Single partition Allocation Multiple Partition Allocation

More information

Compiler Design. Register Allocation. Hwansoo Han

Compiler Design. Register Allocation. Hwansoo Han Compiler Design Register Allocation Hwansoo Han Big Picture of Code Generation Register allocation Decides which values will reside in registers Changes the storage mapping Concerns about placement of

More information

Operating Systems Virtual Memory. Lecture 11 Michael O Boyle

Operating Systems Virtual Memory. Lecture 11 Michael O Boyle Operating Systems Virtual Memory Lecture 11 Michael O Boyle 1 Paged virtual memory Allows a larger logical address space than physical memory All pages of address space do not need to be in memory the

More information

Graph Structure Over Time

Graph Structure Over Time Graph Structure Over Time Observing how time alters the structure of the IEEE data set Priti Kumar Computer Science Rensselaer Polytechnic Institute Troy, NY Kumarp3@rpi.edu Abstract This paper examines

More information

CHAPTER 3: DAILY PROCEDURES

CHAPTER 3: DAILY PROCEDURES Chapter 3: Daily Procedures CHAPTER 3: DAILY PROCEDURES Training Objectives Actively participating during this chapter helps you to: Understand the different types of transactions and the procedures for

More information

!! What is virtual memory and when is it useful? !! What is demand paging? !! When should pages in memory be replaced?

!! What is virtual memory and when is it useful? !! What is demand paging? !! When should pages in memory be replaced? Chapter 10: Virtual Memory Questions? CSCI [4 6] 730 Operating Systems Virtual Memory!! What is virtual memory and when is it useful?!! What is demand paging?!! When should pages in memory be replaced?!!

More information

Chapter One. Concepts BACKUP CONCEPTS

Chapter One. Concepts BACKUP CONCEPTS Chapter One 1 Concepts Backup and recovery is not a single, discrete subject, but a collection of methods, strategies, and procedures to protect the data in your database and provide a means of recovery

More information

16 Sharing Main Memory Segmentation and Paging

16 Sharing Main Memory Segmentation and Paging Operating Systems 64 16 Sharing Main Memory Segmentation and Paging Readings for this topic: Anderson/Dahlin Chapter 8 9; Siberschatz/Galvin Chapter 8 9 Simple uniprogramming with a single segment per

More information

Rematerialization. Graph Coloring Register Allocation. Some expressions are especially simple to recompute: Last Time

Rematerialization. Graph Coloring Register Allocation. Some expressions are especially simple to recompute: Last Time Graph Coloring Register Allocation Last Time Chaitin et al. Briggs et al. Today Finish Briggs et al. basics An improvement: rematerialization Rematerialization Some expressions are especially simple to

More information

VIDEO 1: WHY IS THE USER EXPERIENCE CRITICAL TO CONTEXTUAL MARKETING?

VIDEO 1: WHY IS THE USER EXPERIENCE CRITICAL TO CONTEXTUAL MARKETING? VIDEO 1: WHY IS THE USER EXPERIENCE CRITICAL TO CONTEXTUAL MARKETING? Hello again! I m Angela with HubSpot Academy. In this class, you re going to learn about the user experience. Why is the user experience

More information

Rule partitioning versus task sharing in parallel processing of universal production systems

Rule partitioning versus task sharing in parallel processing of universal production systems Rule partitioning versus task sharing in parallel processing of universal production systems byhee WON SUNY at Buffalo Amherst, New York ABSTRACT Most research efforts in parallel processing of production

More information

A Generalized Method to Solve Text-Based CAPTCHAs

A Generalized Method to Solve Text-Based CAPTCHAs A Generalized Method to Solve Text-Based CAPTCHAs Jason Ma, Bilal Badaoui, Emile Chamoun December 11, 2009 1 Abstract We present work in progress on the automated solving of text-based CAPTCHAs. Our method

More information

COS 597C Project: Bitbank

COS 597C Project: Bitbank COS 597C Project: Bitbank An Implementation of a Distributed File Storage System and the Performance Analysis Qian Xi & Wei Dong Computer Science Department 1/23/2006 1 The relative source code of this

More information

15 Sharing Main Memory Segmentation and Paging

15 Sharing Main Memory Segmentation and Paging Operating Systems 58 15 Sharing Main Memory Segmentation and Paging Readings for this topic: Anderson/Dahlin Chapter 8 9; Siberschatz/Galvin Chapter 8 9 Simple uniprogramming with a single segment per

More information

BFS preconditioning for high locality, data parallel BFS algorithm N.Vasilache, B. Meister, M. Baskaran, R.Lethin. Reservoir Labs

BFS preconditioning for high locality, data parallel BFS algorithm N.Vasilache, B. Meister, M. Baskaran, R.Lethin. Reservoir Labs BFS preconditioning for high locality, data parallel BFS algorithm N.Vasilache, B. Meister, M. Baskaran, R.Lethin Problem Streaming Graph Challenge Characteristics: Large scale Highly dynamic Scale-free

More information

A Private Heap for HDF5 Quincey Koziol Jan. 15, 2007

A Private Heap for HDF5 Quincey Koziol Jan. 15, 2007 A Private Heap for HDF5 Quincey Koziol Jan. 15, 2007 Background The HDF5 library currently stores variable-sized data in two different data structures in its files. Variable-sized metadata (currently only

More information

Managing Storage: Above the Hardware

Managing Storage: Above the Hardware Managing Storage: Above the Hardware 1 Where we are Last time: hardware HDDs and SSDs Today: how the DBMS uses the hardware to provide fast access to data 2 How DBMS manages storage "Bottom" two layers

More information

Cache Performance (H&P 5.3; 5.5; 5.6)

Cache Performance (H&P 5.3; 5.5; 5.6) Cache Performance (H&P 5.3; 5.5; 5.6) Memory system and processor performance: CPU time = IC x CPI x Clock time CPU performance eqn. CPI = CPI ld/st x IC ld/st IC + CPI others x IC others IC CPI ld/st

More information

The data quality trends report

The data quality trends report Report The 2015 email data quality trends report How organizations today are managing and using email Table of contents: Summary...1 Research methodology...1 Key findings...2 Email collection and database

More information

Virtual Memory. Chapter 8

Virtual Memory. Chapter 8 Chapter 8 Virtual Memory What are common with paging and segmentation are that all memory addresses within a process are logical ones that can be dynamically translated into physical addresses at run time.

More information

EXOCHI: Architecture and Programming Environment for A Heterogeneous Multicore Multithreaded System

EXOCHI: Architecture and Programming Environment for A Heterogeneous Multicore Multithreaded System EXOCHI: Architecture and Programming Environment for A Heterogeneous Multicore Multithreaded System By Perry H. Wang, Jamison D. Collins, Gautham N. Chinya, Hong Jiang, Xinmin Tian, Milind Girkar, Nick

More information

Memory Management. Dr. Yingwu Zhu

Memory Management. Dr. Yingwu Zhu Memory Management Dr. Yingwu Zhu Big picture Main memory is a resource A process/thread is being executing, the instructions & data must be in memory Assumption: Main memory is infinite Allocation of memory

More information

Parallel Algorithms for the Third Extension of the Sieve of Eratosthenes. Todd A. Whittaker Ohio State University

Parallel Algorithms for the Third Extension of the Sieve of Eratosthenes. Todd A. Whittaker Ohio State University Parallel Algorithms for the Third Extension of the Sieve of Eratosthenes Todd A. Whittaker Ohio State University whittake@cis.ohio-state.edu Kathy J. Liszka The University of Akron liszka@computer.org

More information

An Anomaly in Unsynchronized Pointer Jumping in Distributed Memory Parallel Machine Model

An Anomaly in Unsynchronized Pointer Jumping in Distributed Memory Parallel Machine Model An Anomaly in Unsynchronized Pointer Jumping in Distributed Memory Parallel Machine Model Sun B. Chung Department of Quantitative Methods and Computer Science University of St. Thomas sbchung@stthomas.edu

More information

A Graph-based Approach to Compute Multiple Paths in Mobile Ad Hoc Networks

A Graph-based Approach to Compute Multiple Paths in Mobile Ad Hoc Networks A Graph-based Approach to Compute Multiple Paths in Mobile Ad Hoc Networks Gunyoung Koh, Duyoung Oh 1 and Heekyoung Woo 2 1 School of Electrical Engineering and Computer Science Seoul National University,

More information

Optimising for the p690 memory system

Optimising for the p690 memory system Optimising for the p690 memory Introduction As with all performance optimisation it is important to understand what is limiting the performance of a code. The Power4 is a very powerful micro-processor

More information

I always recommend diversifying and testing more than one source, but make sure it is as targeted as possible.

I always recommend diversifying and testing more than one source, but make sure it is as targeted as possible. With traffic there are two real kinds - free and paid. I always recommend diversifying and testing more than one source, but make sure it is as targeted as possible. More often than not, I've had people

More information

Outline. Register Allocation. Issues. Storing values between defs and uses. Issues. Issues P3 / 2006

Outline. Register Allocation. Issues. Storing values between defs and uses. Issues. Issues P3 / 2006 P3 / 2006 Register Allocation What is register allocation Spilling More Variations and Optimizations Kostis Sagonas 2 Spring 2006 Storing values between defs and uses Program computes with values value

More information

Virtualizing the SAP Infrastructure through Grid Technology. WHITE PAPER March 2007

Virtualizing the SAP Infrastructure through Grid Technology. WHITE PAPER March 2007 Virtualizing the SAP Infrastructure through Grid Technology WHITE PAPER March 2007 TABLE OF CONTENTS TABLE OF CONTENTS 2 Introduction 3 The Complexity of the SAP Landscape 3 Specific Pain Areas 4 Virtualizing

More information

VMem. By Stewart Lynch.

VMem. By Stewart Lynch. VMem By Stewart Lynch. 1 Contents Introduction... 3 Overview... 4 Getting started... 6 Fragmentation... 7 Virtual Regions... 8 The FSA... 9 Biasing... 10 The Coalesce allocator... 11 Skewing indices...

More information

Chapter 3: Towards the Simplex Method for Efficient Solution of Linear Programs

Chapter 3: Towards the Simplex Method for Efficient Solution of Linear Programs Chapter 3: Towards the Simplex Method for Efficient Solution of Linear Programs The simplex method, invented by George Dantzig in 1947, is the basic workhorse for solving linear programs, even today. While

More information

11.1 Segmentation: Generalized Base/Bounds

11.1 Segmentation: Generalized Base/Bounds 11 Segmentation So far we have been putting the entire address space of each process in memory. With the base and bounds registers, the OS can easily relocate processes to different parts of physical memory.

More information

COMP 346 WINTER 2018 MEMORY MANAGEMENT (VIRTUAL MEMORY)

COMP 346 WINTER 2018 MEMORY MANAGEMENT (VIRTUAL MEMORY) COMP 346 WINTER 2018 1 MEMORY MANAGEMENT (VIRTUAL MEMORY) VIRTUAL MEMORY A process may be broken up into pieces (pages or segments) that do not need to be located contiguously in main memory. Memory references

More information

10 Hidden IT Risks That Might Threaten Your Business

10 Hidden IT Risks That Might Threaten Your Business (Plus 1 Fast Way to Find Them) Your business depends on intelligence. But can you count on your technology? You may not be in the intelligence technology business, but it s probably impossible to imagine

More information

Adaptive-Mesh-Refinement Pattern

Adaptive-Mesh-Refinement Pattern Adaptive-Mesh-Refinement Pattern I. Problem Data-parallelism is exposed on a geometric mesh structure (either irregular or regular), where each point iteratively communicates with nearby neighboring points

More information

(Refer Slide Time: 00:51)

(Refer Slide Time: 00:51) Programming, Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science and Engineering Indian Institute Technology, Madras Module 10 E Lecture 24 Content Example: factorial

More information

Workshop 1: Basic Skills

Workshop 1: Basic Skills Workshop 1: Basic Skills 14.5 Release Introduction to ANSYS Fluent Meshing 2011 ANSYS, Inc. December 21, 2012 1 I Introduction Workshop Description: This workshop shows some of the clean up tools in Tgrid

More information

Barrelfish Project ETH Zurich. Message Notifications

Barrelfish Project ETH Zurich. Message Notifications Barrelfish Project ETH Zurich Message Notifications Barrelfish Technical Note 9 Barrelfish project 16.06.2010 Systems Group Department of Computer Science ETH Zurich CAB F.79, Universitätstrasse 6, Zurich

More information

A Survey of Software Packages for Teaching Linear and Integer Programming

A Survey of Software Packages for Teaching Linear and Integer Programming A Survey of Software Packages for Teaching Linear and Integer Programming By Sergio Toledo Spring 2018 In Partial Fulfillment of Math (or Stat) 4395-Senior Project Department of Mathematics and Statistics

More information

Global Register Allocation - Part 2

Global Register Allocation - Part 2 Global Register Allocation - Part 2 Y N Srikant Computer Science and Automation Indian Institute of Science Bangalore 560012 NPTEL Course on Compiler Design Outline Issues in Global Register Allocation

More information

SR college of engineering, Warangal, Andhra Pradesh, India 1

SR college of engineering, Warangal, Andhra Pradesh, India   1 POWER OPTIMIZATION IN SYSTEM ON CHIP BY IMPLEMENTATION OF EFFICIENT CACHE ARCHITECTURE 1 AKKALA SUBBA RAO, 2 PRATIK GANGULY 1 Associate Professor, 2 Senior Research Fellow, Dept. of. Electronics and Communications

More information

Research on the value of search engine optimization based on Electronic Commerce WANG Yaping1, a

Research on the value of search engine optimization based on Electronic Commerce WANG Yaping1, a 6th International Conference on Machinery, Materials, Environment, Biotechnology and Computer (MMEBC 2016) Research on the value of search engine optimization based on Electronic Commerce WANG Yaping1,

More information

SSA-Form Register Allocation

SSA-Form Register Allocation SSA-Form Register Allocation Foundations Sebastian Hack Compiler Construction Course Winter Term 2009/2010 saarland university computer science 2 Overview 1 Graph Theory Perfect Graphs Chordal Graphs 2

More information

(INTERFERENCE AND CONGESTION AWARE ROUTING PROTOCOL)

(INTERFERENCE AND CONGESTION AWARE ROUTING PROTOCOL) Qos of Network Using Advanced Hybrid Routing in WMN, Abstract - Maximizing the network throughput in a multichannel multiradio wireless mesh network various efforts have been devoted. The recent solutions

More information

// The Value of a Standard Schedule Quality Index

// The Value of a Standard Schedule Quality Index // The Value of a Standard Schedule Quality Index Dr. Dan Patterson, PMP CEO & President, Acumen March 2012 Table of Contents INTRODUCTION... 3 WHAT IS THE SCHEDULE INDEX?... 3 HOW IS IT CALCULATED?...

More information

THE PRESIDENT S COMMISSION

THE PRESIDENT S COMMISSION THE PRESIDENT S COMMISSION ON THE UNITED STATES POSTAL SERVICE SUMMARY OF FINDINGS REPORT FROM A CONSUMER SURVEY ABOUT THE U.S. POSTAL SERVICE CONDUCTED BY Black & Veatch Peter D. Hart Research/American

More information

Register Allocation. Register Allocation. Local Register Allocation. Live range. Register Allocation for Loops

Register Allocation. Register Allocation. Local Register Allocation. Live range. Register Allocation for Loops DF00100 Advanced Compiler Construction Register Allocation Register Allocation: Determines values (variables, temporaries, constants) to be kept when in registers Register Assignment: Determine in which

More information

SIS Operation & Maintenance 15 minutes

SIS Operation & Maintenance 15 minutes 2005 Emerson Process Management. All rights reserved. View this and other courses online at www.plantwebuniversity.com. SIS 301 - Operation & Maintenance 15 minutes In this course: 1 Overview 2 Planning

More information

Chapter 3 - Memory Management

Chapter 3 - Memory Management Chapter 3 - Memory Management Luis Tarrataca luis.tarrataca@gmail.com CEFET-RJ L. Tarrataca Chapter 3 - Memory Management 1 / 222 1 A Memory Abstraction: Address Spaces The Notion of an Address Space Swapping

More information

Chapter 9: Virtual Memory

Chapter 9: Virtual Memory Chapter 9: Virtual Memory Silberschatz, Galvin and Gagne 2013 Chapter 9: Virtual Memory Background Demand Paging Copy-on-Write Page Replacement Allocation of Frames Thrashing Memory-Mapped Files Allocating

More information

User Interfaces Assignment 3: Heuristic Re-Design of Craigslist (English) Completed by Group 5 November 10, 2015 Phase 1: Analysis of Usability Issues Homepage Error 1: Overall the page is overwhelming

More information

register allocation saves energy register allocation reduces memory accesses.

register allocation saves energy register allocation reduces memory accesses. Lesson 10 Register Allocation Full Compiler Structure Embedded systems need highly optimized code. This part of the course will focus on Back end code generation. Back end: generation of assembly instructions

More information

Summary: Issues / Open Questions:

Summary: Issues / Open Questions: Summary: The paper introduces Transitional Locking II (TL2), a Software Transactional Memory (STM) algorithm, which tries to overcomes most of the safety and performance issues of former STM implementations.

More information

Register Allocation in Just-in-Time Compilers: 15 Years of Linear Scan

Register Allocation in Just-in-Time Compilers: 15 Years of Linear Scan Register Allocation in Just-in-Time Compilers: 15 Years of Linear Scan Kevin Millikin Google 13 December 2013 Register Allocation Overview Register allocation Intermediate representation (IR): arbitrarily

More information

12: Memory Management

12: Memory Management 12: Memory Management Mark Handley Address Binding Program goes through multiple steps from compilation to execution. At some stage, addresses in the program must be bound to physical memory addresses:

More information

We have already seen the transportation problem and the assignment problem. Let us take the transportation problem, first.

We have already seen the transportation problem and the assignment problem. Let us take the transportation problem, first. Advanced Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras Lecture 19 Network Models In this lecture, we will discuss network models. (Refer

More information

How To Make 3-50 Times The Profits From Your Traffic

How To Make 3-50 Times The Profits From Your Traffic 1 How To Make 3-50 Times The Profits From Your Traffic by Chris Munch of Munchweb.com Copyright Munchweb.com. All Right Reserved. This work cannot be copied, re-published, or re-distributed. No re-sell

More information

CS370 Operating Systems

CS370 Operating Systems CS370 Operating Systems Colorado State University Yashwant K Malaiya Spring 2018 L20 Virtual Memory Slides based on Text by Silberschatz, Galvin, Gagne Various sources 1 1 Questions from last time Page

More information

Operating Systems. File Systems. Thomas Ropars.

Operating Systems. File Systems. Thomas Ropars. 1 Operating Systems File Systems Thomas Ropars thomas.ropars@univ-grenoble-alpes.fr 2017 2 References The content of these lectures is inspired by: The lecture notes of Prof. David Mazières. Operating

More information

Register Allocation. Stanford University CS243 Winter 2006 Wei Li 1

Register Allocation. Stanford University CS243 Winter 2006 Wei Li 1 Register Allocation Wei Li 1 Register Allocation Introduction Problem Formulation Algorithm 2 Register Allocation Goal Allocation of variables (pseudo-registers) in a procedure to hardware registers Directly

More information

CS370 Operating Systems

CS370 Operating Systems CS370 Operating Systems Colorado State University Yashwant K Malaiya Fall 2017 Lecture 23 Virtual memory Slides based on Text by Silberschatz, Galvin, Gagne Various sources 1 1 FAQ Is a page replaces when

More information

Practice Exercises 449

Practice Exercises 449 Practice Exercises 449 Kernel processes typically require memory to be allocated using pages that are physically contiguous. The buddy system allocates memory to kernel processes in units sized according

More information

Clustering Techniques A Technical Whitepaper By Lorinda Visnick

Clustering Techniques A Technical Whitepaper By Lorinda Visnick Clustering Techniques A Technical Whitepaper By Lorinda Visnick 14 Oak Park Bedford, MA 01730 USA Phone: +1-781-280-4000 www.objectstore.net Introduction Performance of a database can be greatly impacted

More information

REGULATED DOMESTIC ROAMING RESEARCH REPORT 2017

REGULATED DOMESTIC ROAMING RESEARCH REPORT 2017 REGULATED DOMESTIC ROAMING RESEARCH REPORT 2017 Researching the attitudes and perceptions of regional and remote Australians towards mobile providers and domestic roaming Vodafone Regional Roaming Research

More information

Memory Management. Virtual Memory. By : Kaushik Vaghani. Prepared By : Kaushik Vaghani

Memory Management. Virtual Memory. By : Kaushik Vaghani. Prepared By : Kaushik Vaghani Memory Management Virtual Memory By : Kaushik Vaghani Virtual Memory Background Page Fault Dirty Page / Dirty Bit Demand Paging Copy-on-Write Page Replacement Objectives To describe the benefits of a virtual

More information

CS370 Operating Systems

CS370 Operating Systems CS370 Operating Systems Colorado State University Yashwant K Malaiya Fall 2016 Lecture 32 Virtual Memory Slides based on Text by Silberschatz, Galvin, Gagne Various sources 1 1 Questions for you What is

More information

Chapter 9: Virtual Memory. Operating System Concepts 9 th Edition

Chapter 9: Virtual Memory. Operating System Concepts 9 th Edition Chapter 9: Virtual Memory Silberschatz, Galvin and Gagne 2013 Chapter 9: Virtual Memory Background Demand Paging Copy-on-Write Page Replacement Allocation of Frames Thrashing Memory-Mapped Files Allocating

More information

FORE DGE COMPANY PROFILE. Services

FORE DGE COMPANY PROFILE. Services FOR DG COMPANY PROFIL Websites and -commerce Web Consultancy Responsive Websites Strategy and Branding Print Media Solutions Internet Marketing & SO Creative and UI Designs Corporate Presentations About

More information

Knowing something about how to create this optimization to harness the best benefits will definitely be advantageous.

Knowing something about how to create this optimization to harness the best benefits will definitely be advantageous. Blog Post Optimizer Contents Intro... 3 Page Rank Basics... 3 Using Articles And Blog Posts... 4 Using Backlinks... 4 Using Directories... 5 Using Social Media And Site Maps... 6 The Downfall Of Not Using

More information

Towards a Memory-Efficient Knapsack DP Algorithm

Towards a Memory-Efficient Knapsack DP Algorithm Towards a Memory-Efficient Knapsack DP Algorithm Sanjay Rajopadhye The 0/1 knapsack problem (0/1KP) is a classic problem that arises in computer science. The Wikipedia entry http://en.wikipedia.org/wiki/knapsack_problem

More information

20-EECE-4029 Operating Systems Spring, 2013 John Franco

20-EECE-4029 Operating Systems Spring, 2013 John Franco 20-EECE-4029 Operating Systems Spring, 2013 John Franco Second Exam name: Question 1: Translation Look-aside Buffer (a) Describe the TLB. Include its location, why it is located there, its contents, and

More information

Submission guidelines. This guidebook will cover all the best practices and pitfalls while creating most compelling design presentations on Uni.

Submission guidelines. This guidebook will cover all the best practices and pitfalls while creating most compelling design presentations on Uni. Submission guidelines This guidebook will cover all the best practices and pitfalls while creating most compelling design presentations on Uni.xyz There is a considerable difference in various electronic

More information

Survey: Users Share Their Storage Performance Needs. Jim Handy, Objective Analysis Thomas Coughlin, PhD, Coughlin Associates

Survey: Users Share Their Storage Performance Needs. Jim Handy, Objective Analysis Thomas Coughlin, PhD, Coughlin Associates Survey: Users Share Their Storage Performance Needs Jim Handy, Objective Analysis Thomas Coughlin, PhD, Coughlin Associates Table of Contents The Problem... 1 Application Classes... 1 IOPS Needs... 2 Capacity

More information

Reducing Hit Times. Critical Influence on cycle-time or CPI. small is always faster and can be put on chip

Reducing Hit Times. Critical Influence on cycle-time or CPI. small is always faster and can be put on chip Reducing Hit Times Critical Influence on cycle-time or CPI Keep L1 small and simple small is always faster and can be put on chip interesting compromise is to keep the tags on chip and the block data off

More information

UNIT - IV. What is virtual memory?

UNIT - IV. What is virtual memory? UNIT - IV Virtual Memory Demand Paging Process creation Page Replacement Allocation of frames Thrashing- File Concept - Access Methods Directory Structure File System Mounting File Sharing Protection.

More information

ECE902 Virtual Machine Final Project: MIPS to CRAY-2 Binary Translation

ECE902 Virtual Machine Final Project: MIPS to CRAY-2 Binary Translation ECE902 Virtual Machine Final Project: MIPS to CRAY-2 Binary Translation Weiping Liao, Saengrawee (Anne) Pratoomtong, and Chuan Zhang Abstract Binary translation is an important component for translating

More information

RiMOM Results for OAEI 2010

RiMOM Results for OAEI 2010 RiMOM Results for OAEI 2010 Zhichun Wang 1, Xiao Zhang 1, Lei Hou 1, Yue Zhao 2, Juanzi Li 1, Yu Qi 3, Jie Tang 1 1 Tsinghua University, Beijing, China {zcwang,zhangxiao,greener,ljz,tangjie}@keg.cs.tsinghua.edu.cn

More information

Promoting Component Architectures in a Dysfunctional Organization

Promoting Component Architectures in a Dysfunctional Organization Promoting Component Architectures in a Dysfunctional Organization by Raj Kesarapalli Product Manager Rational Software When I first began my career as a software developer, I didn't quite understand what

More information

Linear Scan Register Allocation. Kevin Millikin

Linear Scan Register Allocation. Kevin Millikin Linear Scan Register Allocation Kevin Millikin Register Allocation Register Allocation An important compiler optimization Compiler: unbounded # of virtual registers Processor: bounded (small) # of registers

More information

Character Recognition

Character Recognition Character Recognition 5.1 INTRODUCTION Recognition is one of the important steps in image processing. There are different methods such as Histogram method, Hough transformation, Neural computing approaches

More information

Concept: Solving Inequalities Name:

Concept: Solving Inequalities Name: Concept: Solving Inequalities Name: You should have completed Equations Section 7 Part A: Solving Inequalities before beginning this handout. COMPUTER COMPONENT Instructions: In follow the Content Menu

More information

Website Designs Australia

Website Designs Australia Proudly Brought To You By: Website Designs Australia Contents Disclaimer... 4 Why Your Local Business Needs Google Plus... 5 1 How Google Plus Can Improve Your Search Engine Rankings... 6 1. Google Search

More information

Register Allocation. Note by Baris Aktemur: Our slides are adapted from Cooper and Torczon s slides that they prepared for COMP 412 at Rice.

Register Allocation. Note by Baris Aktemur: Our slides are adapted from Cooper and Torczon s slides that they prepared for COMP 412 at Rice. Register Allocation Note by Baris Aktemur: Our slides are adapted from Cooper and Torczon s slides that they prepared for COMP at Rice. Copyright 00, Keith D. Cooper & Linda Torczon, all rights reserved.

More information

Scalable Trigram Backoff Language Models

Scalable Trigram Backoff Language Models Scalable Trigram Backoff Language Models Kristie Seymore Ronald Rosenfeld May 1996 CMU-CS-96-139 School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 This material is based upon work

More information

August 1994 / Features / Cache Advantage. Cache design and implementation can make or break the performance of your high-powered computer system.

August 1994 / Features / Cache Advantage. Cache design and implementation can make or break the performance of your high-powered computer system. Cache Advantage August 1994 / Features / Cache Advantage Cache design and implementation can make or break the performance of your high-powered computer system. David F. Bacon Modern CPUs have one overriding

More information