Demand fetching is commonly employed to bring the data
|
|
- Bennett Allison
- 6 years ago
- Views:
Transcription
1 Proceedings of 2nd Annual Conference on Theoretical and Applied Computer Science, November 2010, Stillwater, OK 14 Markov Prediction Scheme for Cache Prefetching Pranav Pathak, Mehedi Sarwar, Sohum Sohoni ECE Department Oklahoma state University, Stillwater OK Abstract Cache prefetching improves hit rates in cache memories. In this paper we are testing the effectiveness of Markov prefetching scheme based on Markov models in order to predict memory references that will cause a miss in L1 cache. Our experiments show that Markov history table size of 32 is sufficient and a prefetch buffer size of eight can help achieve hit rates of up to twenty percent in L1 miss stream depending on the locality of reference present in instruction and data set of the application. Index Terms Markov model, Prefetching I. INTRODUCTION L1 miss stream L1 Cache Microprocessor Prefetch Buffer Makov Prefetch engine and Miss History table Prefetched data Demand fetching is commonly employed to bring the data from main memory to the processor as and when required for the processor. In contrast prefetching tries to get the data from the main memory before processor requests for it. Memories are orders of magnitude slower than processors. Predicting and issuing prefetches for future memory references by the processors is one of the many techniques employed to overcome this difference in the speeds. In this paper we are trying to test the usefulness of a stochastic Markov model to predict memory block addresses that will be prefetched. Andrei Markov proposed Markov model [1]. Markov property states that, if present state is known then we can predict the future states, irrespective of what the past states were. To put it in other words if present state is known then future and past states are independent. A Markov chain is a sequence of random variables with the Markov property. Markov predictors find diverse applications in computer science. Optimal resource allocation and higher quality of service is much needed requirement in case of wireless networks. In order to improve the above factors, intelligent prediction of network behavior plays a very important role. Gani[Et.al] show the use of Markov tools to predict the number of wireless devices that are connected to a specific instant of time[2]. Bartels uses Markov based of implementation of prediction by partial matching to learn and predict the access patterns of real applications. Further they us this PPM scheme for adaptive memory prefetching from disk to memory.[3] When it comes to prefetching cache blocks, Jouppi Et.al [4] introduced stream buffers as a significant method for improved direct mapped cache performance [4]. Doug Joseph Et. al [5] use the ground work laid by Jouppi and show that a simple effective and realizable Markov prefetcher can be built as an off-chip component. 1 miss history table: It stores history of miss addresses. It records which block occurred after a given block in miss stream from L1 cache. It is a LRU structure. A sample is shown in Table 1 L2 Cache Main memory Fig.1 Memory Hierarchy and Markov prefetch engine. This figure shows modified memory hierarchy along with Markov prefetch engine and prefetch buffer. They compare the performance of Markov predictors with other prefetching schemes like static predictors, indirect stream predictors and correlation based prefetching, stride prefetchers and stream buffers. Comparison of all these models showed that Markov prefetcher is the best choice for prefetching. We take this idea further by implementing Markov prediction based prefetching scheme and try to find out best possible choices for how large these prefetch buffers should be and how much history should be stored so that Markov prediction model can significantly improve L1 cache miss rates. In our case the prefetcher has to predict a future memory reference and fetch it from the main memory before the processor actually asks for it. We have the current cache state or dataset used by the processor; if we consider a large number of memory references in order to be able predict the next address then size of miss history table 1 becomes a huge overhead. Hence choosing a model that can predict the future only with present state independent of the future is a good idea. Markov model comes close to satisfying these criteria hence it is a good choice for address prediction. Fig 1 shows our experimental memory hierarchy that includes Markov miss-history table and a prefetch buffer 2.To implement prefetching one way is to consider all the memory references by the processor. But that way the prefetcher will have to handle multiple addresses every cycle and will be inundated by the number of requests it has to handle. 2 Prefetch Buffer: It is an on chip buffer that holds blocks of data prefetched by Markov prefetch buffer. It is FIFO structure. When a miss occurs in L1 cache this prefetch buffer is checked concurrently with L2 cache.
2 Proceedings of 2nd Annual Conference on Theoretical and Applied Computer Science, November 2010, Stillwater, OK 15 Miss Address (Current Miss) Next Miss Address Prediction (Most frequently used) A B[2] C[1] D[1] E[1] B D[2] A[1] C E[1] D A[3] E[1] E D[1] B[1] Table 1 Miss History table. Miss history table populated for miss sequence of A-B-D-A-C-E-D-A-B-D-E-B-A-D-A-E. Also all the prefetcher hardware will be on chip making it even more costly. Instead we decided to prefetch based on stream of misses from L1 cache. This will reduce the complexity of the prefetcher. Fig. 1 shows the block diagram of memory hierarchy and where a Markov prefetcher will be placed. As seen from the diagram the Markov prefetch engine and history table are placed between L1 and L2 caches and prefetch buffer is placed alongside the L1 cache. The Markov prefetch engine monitors the stream of L1 misses and updates miss history table.this history table then helps decide addresses to be prefetched into on chip buffer. Whenever a miss occurs in L1 cache then along with L2 cache prefetch buffer is checked concurrently. If the prediction engine is good enough then we can get more and more hits in the prefetch buffer. This way we reduce effective miss rate of the L1 cache. Consider following example miss address stream from L1 cache A-B-D-A-C-E-D-A-B-D-E-B-A-D-A-E. In this sequence A occurs four times, B follows A twice and C and D once each. Probability of getting B after you get A is 50% for C it is 25% and D it is 25%. Now whenever the Markov prefetch engine sees miss reference A, It will try to prefetch B which is most likely. Table 1 shows the state of miss-history table for above mentioned stream of misses from L1 cache. The number inside the square bracket indicates the number of occurrences of that particular block after the current miss address. Prefetched blocks are stored into prefetch buffer. This prefetch buffer is a FIFO structure with finite number of entries. Whenever a miss occurs in L1 cache this prefetch buffer can be checked concurrently with L2 cache and if a hit occurs in this prefetch buffer we are reducing the L1 miss penalty significantly. Now we extend the same example to see how prediction is performed. We use the L1 miss stream to build a history. Here we basically find out which block is most likely to follow a certain block in the miss stream. State of the Markov table populated with frequently missed addresses for the sequence of cache misses (A,B,D,A,C,E,D,A,B,D,E,B,A,D,A,E). The numbers inside parenthesis denote the count value to keep track of the most frequently missed addresses. II. EXPERIMENTAL SET UP In our experiment we did a trace driven simulation to check the effectiveness of the Markov prefetcher. We generated Fig.2 Transition probabilities for example miss sequence. Transitions probabilities are calculated from example miss sequence and shown here. traces from three applications. The first two traces are from the SPECCPU 2006 benchmark [8]. They are GZIP and GCC. GZIP is a commonly used compression program. Here we have a trace of GZIP compressing a file. The compression algorithm shows temporal as well as spatial locality of reference. Second trace that we have used is that of GC compiler compiling a C program, Compilation trace displays less locality of reference in contrast with GZIP trace But is still uses same set of instructions to compile a piece of code and hence is not completely random in its memory access behavior. The third trace that we used for simulation is of a custom program. This program creates large array of numbers, then calls a function to generate random numbers and uses these random numbers as array indices to access array elements. Mathematical operations are performed on these numbers in the array. Hence we are expecting least locality of reference in addresses accessed by the processor in this trace. Thus we have traces from three different programs that exhibit different amounts of locality of reference. In our experiment we use separate Instruction and Data caches at level 1. This is usually the case for most of the modern processors. Each cache is 32KB, Block size of 32 and 4 way set associative. We gauge the effectiveness of the Markov prefetching strategy by monitoring L1 miss stream. For this a Markov history table is maintained that helps predicting the next address. The address is brought into a prefetch buffer and prefetch buffer will be checked for every miss in the L1 cache. Our simulator program records the number of hits in this prefetch buffer. We find out the percentage of hits in the prefetch buffer with respect to number of misses in L1 cache. We use this percentage of hits to quantify the effectiveness of prefetch strategy.
3 Proceedings of 2nd Annual Conference on Theoretical and Applied Computer Science, November 2010, Stillwater, OK 16 Simulation is performed using a Java program. This program takes the trace file as its input. This trace file contains memory references issued by processor. Each trace file entry has the address of the data used and also has a field to indicate whether it is an Instruction Read, Data Read or Data Write. Depending on this classification simulator will send this address to L1 instruction or L1 Data cache. Simulator program instantiates a java class to simulate the operation of a cache. In our case two instances are created one for L1 instruction cache and another for L1 Data cache. Values for cache size block size and associativity of cache can be set by user. The simulator program reads trace file line by line and depending on whether it is instruction or data, it is sent to the corresponding cache. Whenever a miss occurs in L1 cache that memory reference is sent to Markov history table. Here history table is updated and prefetch buffer is checked. Also counts are maintained for hits and misses in the prefetch buffer. Every simulation terminates by outputting number of hits and misses in prefetch buffer out of total misses in L1 cache. In our simulation we vary two parameters; first parameter is prefetch buffer size. We simulate for prefetch buffer sizes 1, 2,4,8,16,32 and 64. Second parameter that we can change is the history table size. We simulate for history table size of 4, 32 and 128. Thus overall we perform 21 iterations of the simulation. III. RESULTS Figures 3, 4, 5 and 6 show the results obtained from the simulation when trace generated by GZIP application was used as an input to the simulator. We varied prefetch buffer size in powers of two up to 64 and this experiment was repeated for three different history table sizes 4*4, 32*4 and 128*4. As seen from Figure 3 and 4, for a fixed miss history table size hit rates increases with prefetch buffer size. A larger size allows the prefetch buffer to retain the prefetched blocks longer and hence it avoids any capacity misses. It is also observed that best results are obtained around the buffer size of eight. Any buffer size below eight produces very low prefetch buffer hit rate on the other hand increasing prefetch buffer size beyond eight produces diminishing returns 3. Another observation from figures is Data read Accesses produce best hit rates in the prefetch buffer than other types. This means Markov prefetcher captures locality in Data Read type of accesses better for the case of GZIP application. As seen in Figure 5 if we have a large enough Miss history table then for any prefetch buffer size beyond eight the hit rate for Data Read accesses is double than the hit rate for Instruction Read Accesses. Figure 6 is plot of hit rates for varying miss history table sizes. Miss history table size of four does not produce any usable results with any prefetch buffer size but as we increase this Miss history table size we see more and more hits in the prefetch buffer. This increase in miss history table size means more history is captured and it allows better prediction results from the Markov prefetcher. 3 Diminishing return: up to buffer size 8 increasing buffer sizes gives better hit rates but beyond 8 the hit rate slows down against increasing hardware costs. The improvement achieved does not justify the hardware cost. Fig 3: GZIP application with Miss history table size of 4*4. X axis plots prefetch buffer size. Y axis shows % hit rates of prefetch buffer. Figure shows that the History table size of 4 doesn t produce any usable results. Fig 4: GZIP application with Miss history table size of 32*4. X axis plots prefetch buffer size. Y axis shows % hit rates of prefetch buffer. Upto buffer size of 8 hit rates increase with buffer size after that only Data Read accesses respond increased buffer size. Fig 5: GZIP application with Miss history table size of 128*4 X axis plots prefetch buffer size. X axis plots prefetch buffer size. Y axis shows % hit rates of prefetch buffer. Hit rates increase upto prefetch buffer size of 8 and beyond 8 respond to icnreasing buffer size with very slow increase. Fig 6: GZIP application with varying Miss history table size and prefetch buffer size of 32. X axis plots prefetch buffer size. Y axis shows % hit rates of prefetch buffer. Increasing History Table size produces higher hit rates for given prefetch buffer size.
4 Proceedings of 2nd Annual Conference on Theoretical and Applied Computer Science, November 2010, Stillwater, OK 17 Figures 7, 8, 9 and 10 show the results obtained from the simulation when trace generated by GCC application was used as an input to the simulator. As seen from figure 7 and figure 8 as we increase the prefetch buffer size for a fixed miss history table size we get more hits in the prefetch buffer.a larger size allows the prefetch buffer to retain the prefetched blocks longer and hence it reduces any misses that occurred due to smaller capacity in the prefetch buffer. Another observation from the figures is that Instruction Read Accesses produce best hit rates in the prefetch buffer as compared to other types. This means Markov prefetcher captures the locality of reference in Instruction read type of accesses better for the case of GCC application. In fact as seen from Fig. 7 and fig 8 only Instruction read type of accesses responds to increased prefetch buffer size with increasing hit rates. Fig. 10 is plot of hit rates for varying miss history table sizes. Miss history table size of four does not produce any usable results with any prefetch buffer size but as we increase this Miss history table size we see more and more hits in the prefetch buffer. This increase in miss history table size means more history is captured and it allows better prediction results from the Markov prefetcher. It is seen from the Fig. 10 that only Instruction Read Accesses respond to increasing history table size thus we can see that Markov prefetcher captures locality of reference in insturction read access stream from the GCC application. It can be also stated that GCC application does not exhibit a locality of reference in Data Read and Write Accesses. This fact seems logical when we consider that GCC trace has the memory references of a complier which runs a set of instructions again and again to compile a program. Hence instructions executed by the processor will be same but they will operate on different datasets. That is the reason why hit rate for data accesses does not increase with prefetch buffer size. From this observation we can also say that GCC s L1 miss stream does not exhibit much locality that can be captured by our Markov modeled prefetching. Apart from Instruction Read accesses other accesses do not respond to increase in buffer size. Thus increasing buffer size does not give us sufficient improvement in hit rate and returns on hardware investment are diminishing. Looking at Fig. 10 for varying table sizes we observe that increasing history table size from 4 to 32 leads to better hit rates by around three times for Instruction Read Accesses but at table size of 128 results do not get any better so we can say that table size of 32*4 is a modest choice for GCC application. Figures 11, 12, 13 and 14 show results obtained for simulation when trace generated by Random program application was used as an input to the simulator. As seen from Fig. 11, 12, 13 and 14, as we increase the prefetch buffer size for a fixed miss history table size we get more hits in the prefetch buffer. A larger size allows the prefetch buffer to retain the prefetched blocks longer and hence it reduces any misses that may have occured due to smaller capacity in the prefetch buffer. This is specifically true for Data Read and Write Accesses. Fig. 7: GCC application with Miss history table size of 4*4 and varying buffer sizes. X axis plots prefetch buffer size. Y axis shows % hit rates of prefetch buffer. Instruction Read Data Accesses produce better hit rates with increasing buffer size. Hit rates are very small for small history table size. Fig. 8: GCC application with Miss history table size of 32*4 and varying buffer sizes. X axis plots prefetch buffer size. Y axis shows % hit rates of prefetch buffer. Hit rates for Instruction Read Accesses increases with increaseing buffer size. Hit rates for data are very small for all buffer sizes. Fig. 9: GCC application with Miss history table size of 128*4 and varying buffer sizes.. X axis plots prefetch buffer size. Y axis shows % hit rates of prefetch buffer. Hit rates for Instruction Read Accesses increase rapidly upto buffer size of 8, beyond that increase slows down. Fig. 10: GCC application with varying Miss history table size and prefetch buffer size of 32. X axis plots prefetch buffer size. Y axis shows % hit rates of prefetch buffer. Instruction Read Accesses respond with higher hit rates to increasing History Table size.
5 Proceedings of 2nd Annual Conference on Theoretical and Applied Computer Science, November 2010, Stillwater, OK 18 Fig. 11: Random application with Miss history table size of 4*4 and varying buffer sizes. X axis plots prefetch buffer size. Y axis shows % hit rates of prefetch buffer. Another observation from the figures is that Instruction Read Accesses produce better hit rates for larger size of Miss history table size. This fact is very evident from figure 14. Figure 14 is plot of hit rates for varying miss history table sizes. Miss history table size does not affect the hit rates in prefetch buffer. This fact is evident in Data Read and Data Write Access streams. This phenomenon can be explained if look at type of program this random application is. This random application creates a huge array of numbers and performs mathematical operation on values at random array indices. This means instructions for generating random numbers and performing mathematical operations will be repeated and will have more locality of reference and data access stream will not exhibit such trend. Thus increased miss history table size does not help data access stream. It is seen from the figure 14 that only Instruction Read Accesses responds to increasing history table size thus we can see that Markov prefetcher captures locality of reference in Instruction read access stream from the random application. It can be also stated that random application does not exhibit a locality of reference in Data Read and Write accesses. Fig. 12: Random application with Miss history table size of 32*4 and varying buffer sizes.. X axis plots prefetch buffer size. Y axis shows % hit rates of prefetch buffer. Fig. 13: Random application with Miss history table size of 128*4 and varying buffer sizes.. X axis plots prefetch buffer size. Y axis shows % hit rates of prefetch buffer. IV. CONCLUSIONS From all the above results we conclude that for a fixed Miss History table size increasing prefetch buffer size produces larger hit rates. This is because with increasing prefetch buffer size we reduce the number of capacity misses occurring in prefetch buffer. We allow the prefetch buffer to retain the prefetched data longer before it gets evicted by new prefetches thereby increasing the chances of getting a hit. It can also be observed that larger Miss History table sizes produce better hit rates in the prefetch buffer. This is due to the fact the larger miss history table means more history will be captured this means we have more accurate transition probabilities for addresses and hence predictions coming from Markov prefetcher will be more accurate. GZIP shows good locality of reference in accessing data as well as instructions hence prefetcher produced best results for GZIP. Random program showed least locality of reference in data accesses hence prefetcher results are poor. Results for GCC show more locality in accessing instructions and hence more and more instructions accesses are captured by the prefetch buffer for increasing prediction resources. Overall the percentages of hits for GC compiler trace lie between those for GZIP and random program. Looking at the results from all three applications we can conclude that a Miss History table size of 32 * 4 and prefetch buffer size of 8 is a good choice to improve the effective hit rate in L1 cache for all three applications. This way we limit the hardware cost and still reap the benefits of prefetching to improve the effective L1 miss rate. Fig. 14: Random application with varying Miss history table size and prefetch buffer size of 32.. X axis plots prefetch buffer size. Y axis shows % hit rates of prefetch buffer. For all figures of random application, Hit rates increase with prefetch buffer size upto buffer size of 8, beyond that hit rates stabilize. Instruction Accesses respond better to increasing buffer size. V. FUTURE WORK We would like to extend our experiment to a more diverse and complete set of applications. We are looking at SPEC CPU 2006 benchmark for our further experiments. This will cover a diverse set of applications and allow us test the performance of Markov prefetching for different datasets and
6 Proceedings of 2nd Annual Conference on Theoretical and Applied Computer Science, November 2010, Stillwater, OK 19 gauge its effectiveness. Also, we will be able to come up with a prefetch buffer size and a miss history table size that can perform well across a diverse set of applications and hence can be used on a general purpose computer. Testing the timeliness of algorithm is the next logical step. For that we have to use an execution driven simulator and find the number of prefetches that were available on time for the processor to use. VI. REFERENCES [1] AA Markov Extension of the law of large numbers to dependent events Bull. Soc. Phys. Math. Kazan, 1906 [2] MD. Osman Gani, H. Sarwar, C. M. Rahman Prediction of State of Wireless Network Using Markov and Hidden Markov Model. Journal of Networks, 2009 [3] G.E. Bartels Markov Prediction for adaptive network memory prefetching GE Bartels [4] D. Joseph and D. Grunwald, Prefetching using Markov predictors IEEE TRANSACTIONS ON COMPUTERS, VOL. 48, NO. 2, FEBRUARY 1999 [5] N.P. Jouppi Improving direct-mapped cache performance by the addition of a small fully-associative cache and prefetch buffers Computer Architecture, Proceedings., 17th, ieeexplore.ieee.org [6] A. Agarwal, M. Horowitz, J. Hennessey An Analytical cache model, ACM Transactions on Computer Systems, Vol. 7, No. 2, May 1989 [7] University of Central Florida Mathematics Department, presentation about Markov Model. Conditional Probability More on Markov Model [8] JL Henning SPEC CPU2006 benchmark descriptions ACM SIGARCH Computer Architecture News, portal.acm.org
Tradeoff between coverage of a Markov prefetcher and memory bandwidth usage
Tradeoff between coverage of a Markov prefetcher and memory bandwidth usage Elec525 Spring 2005 Raj Bandyopadhyay, Mandy Liu, Nico Peña Hypothesis Some modern processors use a prefetching unit at the front-end
Threshold-Based Markov Prefetchers
Threshold-Based Markov Prefetchers Carlos Marchani Tamer Mohamed Lerzan Celikkanat George AbiNader Rice University, Department of Electrical and Computer Engineering ELEC 525, Spring 26 Abstract In this
Cache memories are small, fast SRAM-based memories managed automatically in hardware. Hold frequently accessed blocks of main memory
Cache Memories Cache memories are small, fast SRAM-based memories managed automatically in hardware. Hold frequently accessed blocks of main memory CPU looks first for data in caches (e.g., L1, L2, and
2 Improved Direct-Mapped Cache Performance by the Addition of a Small Fully-Associative Cache and Prefetch Buffers [1]
EE482: Advanced Computer Organization Lecture #7 Processor Architecture Stanford University Tuesday, June 6, 2000 Memory Systems and Memory Latency Lecture #7: Wednesday, April 19, 2000 Lecturer: Brian
Efficient Prefetching with Hybrid Schemes and Use of Program Feedback to Adjust Prefetcher Aggressiveness
Journal of Instruction-Level Parallelism 13 (11) 1-14 Submitted 3/1; published 1/11 Efficient Prefetching with Hybrid Schemes and Use of Program Feedback to Adjust Prefetcher Aggressiveness Santhosh Verma
Cache Memories. From Bryant and O Hallaron, Computer Systems. A Programmer s Perspective. Chapter 6.
Cache Memories From Bryant and O Hallaron, Computer Systems. A Programmer s Perspective. Chapter 6. Today Cache memory organization and operation Performance impact of caches The memory mountain Rearranging
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
Understanding The Effects of Wrong-path Memory References on Processor Performance
Understanding The Effects of Wrong-path Memory References on Processor Performance Onur Mutlu Hyesoon Kim David N. Armstrong Yale N. Patt The University of Texas at Austin 2 Motivation Processors spend
A Scheme of Predictor Based Stream Buffers. Bill Hodges, Guoqiang Pan, Lixin Su
A Scheme of Predictor Based Stream Buffers Bill Hodges, Guoqiang Pan, Lixin Su Outline Background and motivation Project hypothesis Our scheme of predictor-based stream buffer Predictors Predictor table
Improving Data Cache Performance via Address Correlation: An Upper Bound Study
Improving Data Cache Performance via Address Correlation: An Upper Bound Study Peng-fei Chuang 1, Resit Sendag 2, and David J. Lilja 1 1 Department of Electrical and Computer Engineering Minnesota Supercomputing
A Hybrid Adaptive Feedback Based Prefetcher
A Feedback Based Prefetcher Santhosh Verma, David M. Koppelman and Lu Peng Department of Electrical and Computer Engineering Louisiana State University, Baton Rouge, LA 78 sverma@lsu.edu, koppel@ece.lsu.edu,
Locality. Cache. Direct Mapped Cache. Direct Mapped Cache
Locality A principle that makes having a memory hierarchy a good idea If an item is referenced, temporal locality: it will tend to be referenced again soon spatial locality: nearby items will tend to be
Selective Fill Data Cache
Selective Fill Data Cache Rice University ELEC525 Final Report Anuj Dharia, Paul Rodriguez, Ryan Verret Abstract Here we present an architecture for improving data cache miss rate. Our enhancement seeks
Chapter 6 Memory 11/3/2015. Chapter 6 Objectives. 6.2 Types of Memory. 6.1 Introduction
Chapter 6 Objectives Chapter 6 Memory Master the concepts of hierarchical memory organization. Understand how each level of memory contributes to system performance, and how the performance is measured.
Cray XE6 Performance Workshop
Cray XE6 Performance Workshop Mark Bull David Henty EPCC, University of Edinburgh Overview Why caches are needed How caches work Cache design and performance. 2 1 The memory speed gap Moore s Law: processors
Fall 2011 Prof. Hyesoon Kim. Thanks to Prof. Loh & Prof. Prvulovic
Fall 2011 Prof. Hyesoon Kim Thanks to Prof. Loh & Prof. Prvulovic Reading: Data prefetch mechanisms, Steven P. Vanderwiel, David J. Lilja, ACM Computing Surveys, Vol. 32, Issue 2 (June 2000) If memory
Introduction to OpenMP. Lecture 10: Caches
Introduction to OpenMP Lecture 10: Caches Overview Why caches are needed How caches work Cache design and performance. The memory speed gap Moore s Law: processors speed doubles every 18 months. True for
SF-LRU Cache Replacement Algorithm
SF-LRU Cache Replacement Algorithm Jaafar Alghazo, Adil Akaaboune, Nazeih Botros Southern Illinois University at Carbondale Department of Electrical and Computer Engineering Carbondale, IL 6291 alghazo@siu.edu,
Lecture 14: Cache Innovations and DRAM. Today: cache access basics and innovations, DRAM (Sections )
Lecture 14: Cache Innovations and DRAM Today: cache access basics and innovations, DRAM (Sections 5.1-5.3) 1 Reducing Miss Rate Large block size reduces compulsory misses, reduces miss penalty in case
Combining Local and Global History for High Performance Data Prefetching
Combining Local and Global History for High Performance Data ing Martin Dimitrov Huiyang Zhou School of Electrical Engineering and Computer Science University of Central Florida {dimitrov,zhou}@eecs.ucf.edu
AN OVERVIEW OF HARDWARE BASED CACHE OPTIMIZATION TECHNIQUES
AN OVERVIEW OF HARDWARE BASED CACHE OPTIMIZATION TECHNIQUES Swadhesh Kumar 1, Dr. P K Singh 2 1,2 Department of Computer Science and Engineering, Madan Mohan Malaviya University of Technology, Gorakhpur,
An Analysis of the Performance Impact of Wrong-Path Memory References on Out-of-Order and Runahead Execution Processors
An Analysis of the Performance Impact of Wrong-Path Memory References on Out-of-Order and Runahead Execution Processors Onur Mutlu Hyesoon Kim David N. Armstrong Yale N. Patt High Performance Systems Group
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
211: Computer Architecture Summer 2016
211: Computer Architecture Summer 2016 Liu Liu Topic: Assembly Programming Storage - Assembly Programming: Recap - Call-chain - Factorial - Storage: - RAM - Caching - Direct - Mapping Rutgers University
Caching Basics. Memory Hierarchies
Caching Basics CS448 1 Memory Hierarchies Takes advantage of locality of reference principle Most programs do not access all code and data uniformly, but repeat for certain data choices spatial nearby
CS161 Design and Architecture of Computer Systems. Cache $$$$$
CS161 Design and Architecture of Computer Systems Cache $$$$$ Memory Systems! How can we supply the CPU with enough data to keep it busy?! We will focus on memory issues,! which are frequently bottlenecks
The Impact of Write Back on Cache Performance
The Impact of Write Back on Cache Performance Daniel Kroening and Silvia M. Mueller Computer Science Department Universitaet des Saarlandes, 66123 Saarbruecken, Germany email: kroening@handshake.de, smueller@cs.uni-sb.de,
Why memory hierarchy? Memory hierarchy. Memory hierarchy goals. CS2410: Computer Architecture. L1 cache design. Sangyeun Cho
Why memory hierarchy? L1 cache design Sangyeun Cho Computer Science Department Memory hierarchy Memory hierarchy goals Smaller Faster More expensive per byte CPU Regs L1 cache L2 cache SRAM SRAM To provide
Memory. Objectives. Introduction. 6.2 Types of Memory
Memory Objectives Master the concepts of hierarchical memory organization. Understand how each level of memory contributes to system performance, and how the performance is measured. Master the concepts
Cache Performance! ! Memory system and processor performance:! ! Improving memory hierarchy performance:! CPU time = IC x CPI x Clock time
Cache Performance!! 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 = Pipeline time +
10/16/2017. Miss Rate: ABC. Classifying Misses: 3C Model (Hill) Reducing Conflict Misses: Victim Buffer. Overlapping Misses: Lockup Free Cache
Classifying Misses: 3C Model (Hill) Divide cache misses into three categories Compulsory (cold): never seen this address before Would miss even in infinite cache Capacity: miss caused because cache is
CS24: INTRODUCTION TO COMPUTING SYSTEMS. Spring 2014 Lecture 14
CS24: INTRODUCTION TO COMPUTING SYSTEMS Spring 2014 Lecture 14 LAST TIME! Examined several memory technologies: SRAM volatile memory cells built from transistors! Fast to use, larger memory cells (6+ transistors
CMPSC 311- Introduction to Systems Programming Module: Caching
CMPSC 311- Introduction to Systems Programming Module: Caching Professor Patrick McDaniel Fall 2016 Reminder: Memory Hierarchy L0: Registers CPU registers hold words retrieved from L1 cache Smaller, faster,
Cost-Driven Hybrid Configuration Prefetching for Partial Reconfigurable Coprocessor
Cost-Driven Hybrid Configuration Prefetching for Partial Reconfigurable Coprocessor Ying Chen, Simon Y. Chen 2 School of Engineering San Francisco State University 600 Holloway Ave San Francisco, CA 9432
CS7810 Prefetching. Seth Pugsley
CS7810 Prefetching Seth Pugsley Predicting the Future Where have we seen prediction before? Does it always work? Prefetching is prediction Predict which cache line will be used next, and place it in the
Chapter 02. Authors: John Hennessy & David Patterson. Copyright 2011, Elsevier Inc. All rights Reserved. 1
Chapter 02 Authors: John Hennessy & David Patterson Copyright 2011, Elsevier Inc. All rights Reserved. 1 Figure 2.1 The levels in a typical memory hierarchy in a server computer shown on top (a) and in
Cache Performance! ! Memory system and processor performance:! ! Improving memory hierarchy performance:! CPU time = IC x CPI x Clock time
Cache Performance!! 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 = Pipeline time +
A Review on Cache Memory with Multiprocessor System
A Review on Cache Memory with Multiprocessor System Chirag R. Patel 1, Rajesh H. Davda 2 1,2 Computer Engineering Department, C. U. Shah College of Engineering & Technology, Wadhwan (Gujarat) Abstract
EECS 470. Lecture 15. Prefetching. Fall 2018 Jon Beaumont. History Table. Correlating Prediction Table
Lecture 15 History Table Correlating Prediction Table Prefetching Latest A0 A0,A1 A3 11 Fall 2018 Jon Beaumont A1 http://www.eecs.umich.edu/courses/eecs470 Prefetch A3 Slides developed in part by Profs.
CHAPTER 6 Memory. CMPS375 Class Notes (Chap06) Page 1 / 20 Dr. Kuo-pao Yang
CHAPTER 6 Memory 6.1 Memory 341 6.2 Types of Memory 341 6.3 The Memory Hierarchy 343 6.3.1 Locality of Reference 346 6.4 Cache Memory 347 6.4.1 Cache Mapping Schemes 349 6.4.2 Replacement Policies 365
Storage Efficient Hardware Prefetching using Delta Correlating Prediction Tables
Storage Efficient Hardware Prefetching using Correlating Prediction Tables Marius Grannaes Magnus Jahre Lasse Natvig Norwegian University of Science and Technology HiPEAC European Network of Excellence
Announcements. ! Previous lecture. Caches. Inf3 Computer Architecture
Announcements! Previous lecture Caches Inf3 Computer Architecture - 2016-2017 1 Recap: Memory Hierarchy Issues! Block size: smallest unit that is managed at each level E.g., 64B for cache lines, 4KB for
A Time-Predictable Instruction-Cache Architecture that Uses Prefetching and Cache Locking
A Time-Predictable Instruction-Cache Architecture that Uses Prefetching and Cache Locking Bekim Cilku, Daniel Prokesch, Peter Puschner Institute of Computer Engineering Vienna University of Technology
The Processor Memory Hierarchy
Corrected COMP 506 Rice University Spring 2018 The Processor Memory Hierarchy source code IR Front End Optimizer Back End IR target code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved.
Chapter 6 Caches. Computer System. Alpha Chip Photo. Topics. Memory Hierarchy Locality of Reference SRAM Caches Direct Mapped Associative
Chapter 6 s Topics Memory Hierarchy Locality of Reference SRAM s Direct Mapped Associative Computer System Processor interrupt On-chip cache s s Memory-I/O bus bus Net cache Row cache Disk cache Memory
Portland State University ECE 587/687. Caches and Memory-Level Parallelism
Portland State University ECE 587/687 Caches and Memory-Level Parallelism Revisiting Processor Performance Program Execution Time = (CPU clock cycles + Memory stall cycles) x clock cycle time For each
Memory Hierarchies. Instructor: Dmitri A. Gusev. Fall Lecture 10, October 8, CS 502: Computers and Communications Technology
Memory Hierarchies Instructor: Dmitri A. Gusev Fall 2007 CS 502: Computers and Communications Technology Lecture 10, October 8, 2007 Memories SRAM: value is stored on a pair of inverting gates very fast
CS 136: Advanced Architecture. Review of Caches
1 / 30 CS 136: Advanced Architecture Review of Caches 2 / 30 Why Caches? Introduction Basic goal: Size of cheapest memory... At speed of most expensive Locality makes it work Temporal locality: If you
Portland State University ECE 587/687. Caches and Memory-Level Parallelism
Portland State University ECE 587/687 Caches and Memory-Level Parallelism Copyright by Alaa Alameldeen, Zeshan Chishti and Haitham Akkary 2017 Revisiting Processor Performance Program Execution Time =
Chapter 6 Objectives
Chapter 6 Memory Chapter 6 Objectives Master the concepts of hierarchical memory organization. Understand how each level of memory contributes to system performance, and how the performance is measured.
Page 1. Multilevel Memories (Improving performance using a little cash )
Page 1 Multilevel Memories (Improving performance using a little cash ) 1 Page 2 CPU-Memory Bottleneck CPU Memory Performance of high-speed computers is usually limited by memory bandwidth & latency Latency
The 2-way Thrashing-Avoidance Cache (TAC): An Efficient Instruction Cache Scheme for Object-Oriented Languages
The 2- Thrashing-voidance Cache (): n Efficient Instruction Cache Scheme for Object-Oriented Languages Yul Chu and M. R. Ito Electrical and Computer Engineering Department, University of British Columbia
Cache Justification for Digital Signal Processors
Cache Justification for Digital Signal Processors by Michael J. Lee December 3, 1999 Cache Justification for Digital Signal Processors By Michael J. Lee Abstract Caches are commonly used on general-purpose
Relative Performance of a Multi-level Cache with Last-Level Cache Replacement: An Analytic Review
Relative Performance of a Multi-level Cache with Last-Level Cache Replacement: An Analytic Review Bijay K.Paikaray Debabala Swain Dept. of CSE, CUTM Dept. of CSE, CUTM Bhubaneswer, India Bhubaneswer, India
Lecture: Large Caches, Virtual Memory. Topics: cache innovations (Sections 2.4, B.4, B.5)
Lecture: Large Caches, Virtual Memory Topics: cache innovations (Sections 2.4, B.4, B.5) 1 Techniques to Reduce Cache Misses Victim caches Better replacement policies pseudo-lru, NRU Prefetching, cache
Lecture: Large Caches, Virtual Memory. Topics: cache innovations (Sections 2.4, B.4, B.5)
Lecture: Large Caches, Virtual Memory Topics: cache innovations (Sections 2.4, B.4, B.5) 1 More Cache Basics caches are split as instruction and data; L2 and L3 are unified The /L2 hierarchy can be inclusive,
Roadmap. Java: Assembly language: OS: Machine code: Computer system:
Roadmap C: car *c = malloc(sizeof(car)); c->miles = 100; c->gals = 17; float mpg = get_mpg(c); free(c); Assembly language: Machine code: get_mpg: pushq movq... popq ret %rbp %rsp, %rbp %rbp 0111010000011000
Chapter Seven. Memories: Review. Exploiting Memory Hierarchy CACHE MEMORY AND VIRTUAL MEMORY
Chapter Seven CACHE MEMORY AND VIRTUAL MEMORY 1 Memories: Review SRAM: value is stored on a pair of inverting gates very fast but takes up more space than DRAM (4 to 6 transistors) DRAM: value is stored
Memory Management 3/29/14 21:38
Presentation for use with the textbook Data Structures and Algorithms in Java, 6 th edition, by M. T. Goodrich, R. Tamassia, and M. H. Goldwasser, Wiley, 2014 Memory Management Diagram of a 4 4 plane of
and data combined) is equal to 7% of the number of instructions. Miss Rate with Second- Level Cache, Direct- Mapped Speed
5.3 By convention, a cache is named according to the amount of data it contains (i.e., a 4 KiB cache can hold 4 KiB of data); however, caches also require SRAM to store metadata such as tags and valid
Locality. CS429: Computer Organization and Architecture. Locality Example 2. Locality Example
Locality CS429: Computer Organization and Architecture Dr Bill Young Department of Computer Sciences University of Texas at Austin Principle of Locality: Programs tend to reuse data and instructions near
Computer Systems Architecture I. CSE 560M Lecture 17 Guest Lecturer: Shakir James
Computer Systems Architecture I CSE 560M Lecture 17 Guest Lecturer: Shakir James Plan for Today Announcements and Reminders Project demos in three weeks (Nov. 23 rd ) Questions Today s discussion: Improving
Lecture 13: Cache Hierarchies. Today: cache access basics and innovations (Sections )
Lecture 13: Cache Hierarchies Today: cache access basics and innovations (Sections 5.1-5.2) 1 The Cache Hierarchy Core L1 L2 L3 Off-chip memory 2 Accessing the Cache Byte address 101000 Offset 8-byte words
5 Memory-Hierarchy Design
5 Memory-Hierarchy Design 1 5.1 Introduction 5.2 The ABCs of Caches 5.3 Reducing Cache Misses 5.4 Reducing Cache Miss Penalty 5.5 Reducing Hit Time 5.6 Main Memory 5.7 Virtual Memory 5.8 Protection and
L2 cache provides additional on-chip caching space. L2 cache captures misses from L1 cache. Summary
HY425 Lecture 13: Improving Cache Performance Dimitrios S. Nikolopoulos University of Crete and FORTH-ICS November 25, 2011 Dimitrios S. Nikolopoulos HY425 Lecture 13: Improving Cache Performance 1 / 40
CPE300: Digital System Architecture and Design
CPE300: Digital System Architecture and Design Fall 2011 MW 17:30-18:45 CBC C316 Virtual Memory 11282011 http://www.egr.unlv.edu/~b1morris/cpe300/ 2 Outline Review Cache Virtual Memory Projects 3 Memory
Recall from Tuesday. Our solution to fragmentation is to split up a process s address space into smaller chunks. Physical Memory OS.
Paging 11/10/16 Recall from Tuesday Our solution to fragmentation is to split up a process s address space into smaller chunks. Physical Memory OS Process 3 Process 3 OS: Place Process 3 Process 1 Process
LSN 7 Cache Memory. ECT466 Computer Architecture. Department of Engineering Technology
LSN 7 Cache Memory Department of Engineering Technology LSN 7 Cache Memory Join large storage device to high-speed memory Contains copies of regions of the main memory Uses locality of reference to increase
The levels of a memory hierarchy. Main. Memory. 500 By 1MB 4GB 500GB 0.25 ns 1ns 20ns 5ms
The levels of a memory hierarchy CPU registers C A C H E Memory bus Main Memory I/O bus External memory 500 By 1MB 4GB 500GB 0.25 ns 1ns 20ns 5ms 1 1 Some useful definitions When the CPU finds a requested
CS356: Discussion #9 Memory Hierarchy and Caches. Marco Paolieri Illustrations from CS:APP3e textbook
CS356: Discussion #9 Memory Hierarchy and Caches Marco Paolieri (paolieri@usc.edu) Illustrations from CS:APP3e textbook The Memory Hierarchy So far... We modeled the memory system as an abstract array
Survey results. CS 6354: Memory Hierarchy I. Variety in memory technologies. Processor/Memory Gap. SRAM approx. 4 6 transitors/bit optimized for speed
Survey results CS 6354: Memory Hierarchy I 29 August 2016 1 2 Processor/Memory Gap Variety in memory technologies SRAM approx. 4 6 transitors/bit optimized for speed DRAM approx. 1 transitor + capacitor/bit
Computer Systems Architecture
Computer Systems Architecture Lecture 12 Mahadevan Gomathisankaran March 4, 2010 03/04/2010 Lecture 12 CSCE 4610/5610 1 Discussion: Assignment 2 03/04/2010 Lecture 12 CSCE 4610/5610 2 Increasing Fetch
Cache Designs and Tricks. Kyle Eli, Chun-Lung Lim
Cache Designs and Tricks Kyle Eli, Chun-Lung Lim Why is cache important? CPUs already perform computations on data faster than the data can be retrieved from main memory and microprocessor execution speeds
Stride- and Global History-based DRAM Page Management
1 Stride- and Global History-based DRAM Page Management Mushfique Junayed Khurshid, Mohit Chainani, Alekhya Perugupalli and Rahul Srikumar University of Wisconsin-Madison Abstract To improve memory system
Skewed-Associative Caches: CS752 Final Project
Skewed-Associative Caches: CS752 Final Project Professor Sohi Corey Halpin Scot Kronenfeld Johannes Zeppenfeld 13 December 2002 Abstract As the gap between microprocessor performance and memory performance
AS the processor-memory speed gap continues to widen,
IEEE TRANSACTIONS ON COMPUTERS, VOL. 53, NO. 7, JULY 2004 843 Design and Optimization of Large Size and Low Overhead Off-Chip Caches Zhao Zhang, Member, IEEE, Zhichun Zhu, Member, IEEE, and Xiaodong Zhang,
Virtual Memory. Chapter 8
Virtual Memory 1 Chapter 8 Characteristics of Paging and Segmentation Memory references are dynamically translated into physical addresses at run time E.g., process may be swapped in and out of main memory
CS 6354: Memory Hierarchy I. 29 August 2016
1 CS 6354: Memory Hierarchy I 29 August 2016 Survey results 2 Processor/Memory Gap Figure 2.2 Starting with 1980 performance as a baseline, the gap in performance, measured as the difference in the time
Memory Hierarchy. Slides contents from:
Memory Hierarchy Slides contents from: Hennessy & Patterson, 5ed Appendix B and Chapter 2 David Wentzlaff, ELE 475 Computer Architecture MJT, High Performance Computing, NPTEL Memory Performance Gap Memory
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
Feedback Directed Prefetching: Improving the Performance and Bandwidth-Efficiency of Hardware Prefetchers
Feedback Directed Prefetching: Improving the Performance and Bandwidth-Efficiency of Hardware Prefetchers Microsoft ssri@microsoft.com Santhosh Srinath Onur Mutlu Hyesoon Kim Yale N. Patt Microsoft Research
Eastern Mediterranean University School of Computing and Technology CACHE MEMORY. Computer memory is organized into a hierarchy.
Eastern Mediterranean University School of Computing and Technology ITEC255 Computer Organization & Architecture CACHE MEMORY Introduction Computer memory is organized into a hierarchy. At the highest
LECTURE 4: LARGE AND FAST: EXPLOITING MEMORY HIERARCHY
LECTURE 4: LARGE AND FAST: EXPLOITING MEMORY HIERARCHY Abridged version of Patterson & Hennessy (2013):Ch.5 Principle of Locality Programs access a small proportion of their address space at any time Temporal
Execution-based Prediction Using Speculative Slices
Execution-based Prediction Using Speculative Slices Craig Zilles and Guri Sohi University of Wisconsin - Madison International Symposium on Computer Architecture July, 2001 The Problem Two major barriers
ECE331: Hardware Organization and Design
ECE331: Hardware Organization and Design Lecture 24: Cache Performance Analysis Adapted from Computer Organization and Design, Patterson & Hennessy, UCB Overview Last time: Associative caches How do we
Queue. Processor. Processor. + L1 Cache. Prefetch
computing for Prefetching Introspective project for CS252, Spring 2000) (Class Andrew Y. Ng and Eric Xing fang,epxingg@cs.berkeley.edu Berkeley UC Introspective computing Secondary processor (may be DSP
Low Power Set-Associative Cache with Single-Cycle Partial Tag Comparison
Low Power Set-Associative Cache with Single-Cycle Partial Tag Comparison Jian Chen, Ruihua Peng, Yuzhuo Fu School of Micro-electronics, Shanghai Jiao Tong University, Shanghai 200030, China {chenjian,
Flexible Cache Cache for afor Database Management Management Systems Systems Radim Bača and David Bednář
Flexible Cache Cache for afor Database Management Management Systems Systems Radim Bača and David Bednář Department ofradim Computer Bača Science, and Technical David Bednář University of Ostrava Czech
Reducing the SPEC2006 Benchmark Suite for Simulation Based Computer Architecture Research
Reducing the SPEC2006 Benchmark Suite for Simulation Based Computer Architecture Research Joel Hestness jthestness@uwalumni.com Lenni Kuff lskuff@uwalumni.com Computer Science Department University of
Lecture 17: Memory Hierarchy: Cache Design
S 09 L17-1 18-447 Lecture 17: Memory Hierarchy: Cache Design James C. Hoe Dept of ECE, CMU March 24, 2009 Announcements: Project 3 is due Midterm 2 is coming Handouts: Practice Midterm 2 solutions The
CHAPTER 4 OPTIMIZATION OF WEB CACHING PERFORMANCE BY CLUSTERING-BASED PRE-FETCHING TECHNIQUE USING MODIFIED ART1 (MART1)
71 CHAPTER 4 OPTIMIZATION OF WEB CACHING PERFORMANCE BY CLUSTERING-BASED PRE-FETCHING TECHNIQUE USING MODIFIED ART1 (MART1) 4.1 INTRODUCTION One of the prime research objectives of this thesis is to optimize
Two-Level Address Storage and Address Prediction
Two-Level Address Storage and Address Prediction Enric Morancho, José María Llabería and Àngel Olivé Computer Architecture Department - Universitat Politècnica de Catalunya (Spain) 1 Abstract. : The amount
Cache Memory COE 403. Computer Architecture Prof. Muhamed Mudawar. Computer Engineering Department King Fahd University of Petroleum and Minerals
Cache Memory COE 403 Computer Architecture Prof. Muhamed Mudawar Computer Engineering Department King Fahd University of Petroleum and Minerals Presentation Outline The Need for Cache Memory The Basics
Computer Architecture and System Software Lecture 09: Memory Hierarchy. Instructor: Rob Bergen Applied Computer Science University of Winnipeg
Computer Architecture and System Software Lecture 09: Memory Hierarchy Instructor: Rob Bergen Applied Computer Science University of Winnipeg Announcements Midterm returned + solutions in class today SSD
LRU. Pseudo LRU A B C D E F G H A B C D E F G H H H C. Copyright 2012, Elsevier Inc. All rights reserved.
LRU A list to keep track of the order of access to every block in the set. The least recently used block is replaced (if needed). How many bits we need for that? 27 Pseudo LRU A B C D E F G H A B C D E
Caches and Memory Hierarchy: Review. UCSB CS240A, Winter 2016
Caches and Memory Hierarchy: Review UCSB CS240A, Winter 2016 1 Motivation Most applications in a single processor runs at only 10-20% of the processor peak Most of the single processor performance loss
Branch-directed and Pointer-based Data Cache Prefetching
Branch-directed and Pointer-based Data Cache Prefetching Yue Liu Mona Dimitri David R. Kaeli Department of Electrical and Computer Engineering Northeastern University Boston, M bstract The design of the
Memory Management! How the hardware and OS give application pgms:" The illusion of a large contiguous address space" Protection against each other"
Memory Management! Goals of this Lecture! Help you learn about:" The memory hierarchy" Spatial and temporal locality of reference" Caching, at multiple levels" Virtual memory" and thereby " How the hardware
Agenda Cache memory organization and operation Chapter 6 Performance impact of caches Cache Memories
Agenda Chapter 6 Cache Memories Cache memory organization and operation Performance impact of caches The memory mountain Rearranging loops to improve spatial locality Using blocking to improve temporal
ARCHITECTURAL APPROACHES TO REDUCE LEAKAGE ENERGY IN CACHES
ARCHITECTURAL APPROACHES TO REDUCE LEAKAGE ENERGY IN CACHES Shashikiran H. Tadas & Chaitali Chakrabarti Department of Electrical Engineering Arizona State University Tempe, AZ, 85287. tadas@asu.edu, chaitali@asu.edu