Assignment 1: One-Level Cache Simulator Due: Wednesday 04/04/12 (before class)

Size: px
Start display at page:

Download "Assignment 1: One-Level Cache Simulator Due: Wednesday 04/04/12 (before class)"

Transcription

1 Assignment 1: One-Level Cache Simulator Due: Wednesday 04/04/12 (before class) In this assignment, you will write a one-level cache simulator. You will take in the blocksize (in bytes), the total cache size (in bytes or kilobytes), the associativity, and write policy, using the following flags: -b <blksz> -B <cachesz> -K <cacheszkb> -W <t/b> -a <assoc> Assume that kilobytes prefixes refer to 1024 (not 1000). The W flag indicates the write policy, with t indicating write-through and no write-allocate, while b indicates write-back and write-allocate behavior. Setting <assoc> to 0 indicates fully-associative. Your GetFlags routine should ensure that the block size is a power of two (why must this be true?). Default behavior should be the equivalent of: -b 32 -K 16 -W t -a 1 For those of you who are unfamiliar with getting command-line arguments in C, here is a code fragment that would do so if our only flag was b: int main(int nargs, char **args)... for (i=1; i < nargs; i++) { if (args[i][0]!= - ) PrintUsage(args[0], i); switch(args[i][1]) { case b : if (++i == nargs) PrintUsage(args[0], i); *blksz = atoi(args[i]); break; default: PrintUsage(args[0], i); In your header, you will print this given information, plus the number of sets in the cache (conceptually, the number of rows), the number of total blocks the cache holds, the total size of the cache exluding tag storage (either in kilobytes if a multiple of 1024, else in bytes), the amount of extra storage (in bytes; rounded down if necessary) required to store the tags, the number of bits taken up by the block offset, the number of bits in the index, and the number of bits in the tag, with some other statistics (as shown in the example). You should assume a machine with a 24-bit address space. The simulator will read in a memory trace, which has the following form: <R/W>:<address> Where R indicates a read access, and W indicates a write, and <address> indicates the memory address being referenced expressed as a hex number. For each access, you will print the address (in hex), and access type, the address as a binary number (see below for help) the tag, the set number, the block offset, the way of the associativity that it was found in (Way), and the way that was updated (UWay), and the number of main memory reads and writes caused by this access. If the 1

2 block was not found in the cache, then Way will be -1, while UWay will indicate what way the memory location was stored in. If the block is found in the cache, then Way indicates what way it was found in, and a UWay of -1 indicates that we did not update the cache at all, a UWay of of -2 indicates that we only updated our LRU bits for this access, and any positive UWay indicates we actually had to store a value to that way location. You can format your output lines as: "%6x%c %26s %8d %5d %3d %4d %4d %4d %4d\n" Notice that there are 26 bits of space for for the binary address: this is because you need to insert spaces between the block offset and index bits (see printouts later for details). You will implement LRU replacement policy. The summary statistics are printed after the entire trace has been processed. They will indicate the number of hits and misses in the cache, the hit and miss rate, the number of main memory reads, and the number of main memory writes (including dirty bit evictions). In this assignment you must use and store the tag, not the full address in order to determine if an address is in the cache. Further, you are allowed to use only integer bit-level operations to compute the tag, set number, and block offset (i.e. no division, modulo or scanning the output of a string function such as Int2Bits). The TA will examine the code, and if these restrictions are not adhered to, your final grade will be 75% of your achieved score. In this assignment, you will need to implement all the functions yourself. I have provided you with a Makefile and example trace file at: ~whaley/classes/spring12/cs3853/cachesim/makefile ~whaley/classes/spring12/cs3853/cachesim/trace.in Students who are unfamiliar with bit-level operations will need to work on them. Here are two useful routines to get you started: unsigned int GetMask(int nset) /* * RETURNS: int with nset least significant bits set to 1, others to 0 */ { unsigned int mask, i; assert(nset <= 32); /* otherwise default int won t work */ /* * Following two implementations are equivalent, but loop-based one may * be easier to understand at first */ #ifdef FAST mask = (((long long)1))<<nset) - 1; #else for (mask=i=0; i < nset; i++) mask = (1<<i); #endif return(mask); char *Int2Bits(unsigned int bits) /* * RETURNS: string indicating binary bit pattern in integer bits */ 2

3 { static char cbits[nbits+1]; /* NBITS macro defined elsewhere */ int i; cbits[nbits] = \0 ; for (i=0; i < NBITS; i++) cbits[nbits-1-i] = (bits == ((1<<i) bits))? 1 : 0 ; return(cbits); This whole assignment should be written in a single file, called cachesim.c, which will be compiled using the provided Makefile on a UTSA Linux machine (eg. elk01). At the top of the program, put a comment that includes your name and the assignment number. You should the source code for cachesim.c to lul@cs.utsa.edu before class on the due date. In order to aid in debugging, and to enable you to match my output exactly, you can run my executable from any UTSA Linux machine: ~whaley/classes/spring12/cs3853/cachesim/xcachesim Your output should match mine exactly. For debugging, you have the examples worked in class, as well as the cases given here, but you should also make your own input files, and run tests with varying inputs. To help you with generating input files, I have provided a program that simulates addresses like they would come from array accesses in a loop. For flags, it takes the number of iteration of the loop (-N), the bytesize of the elements of the array (-S), and the number of arrays to simulate (-n). Addresses and accesses are then randomly generated, so if you want different results, you should vary the seed using the -s flag. You can also use the simulator to generate particular access starting at given addresses using the -a flag, instead of using the random model. The -a expects an argument saying how many arrays to simulate, and then for each array it takes an argument whether the array is read or write, and what address it should start at. Therefore -a 2 R0ac WF8 -S 1 simulates two character arrays in a loop, where the array beginning at 0xac is read, and the array beginning at 0xF8 is written. Note that beginning addresses will be aligned to the element size. If you want to test particular attributes (write-back eviction, etc), you usually need to plan the file, but for large testing, generating a bunch of lines is handy. You can also mix generated traces with hand-tuned ones, for targeted and widespread tests. This program is available ~whaley/classes/spring12/cs3853/cachesim/xarraygen The provided Makefile also has a target set up to allow you to automatically compare your output to mine using the unix tool diff. Assuming your memory trace is stored in the file mytrace.in, and that you want to simulate a direct-mapped cache with a cache line size of 8 bytes and and a total size of 4 kilobytes you would get the following: elk01>make diff trace=mytrace.in conf="-k 4 -a 1 -b 8" rm -f stud.out prof.out./xcachesim -K 4 -a 1 -b 8 < mytrace.in > stud.out /home/whaley/classes/spring12/cs3853/cachesim/xcachesim -K 4 -a 1 -b 8 < mytrace.in > prof.out diff stud.out prof.out What we would hope to see is that the diff command shows no output at all, which means that your simulator produces the same answer as mine. If the above invocation shows difference (even if merely in spacing), then you need to debug until you find the problem (note that after each diff invocation, the file stud.out will contain the complete output from your simulator, and prof.out will contain the complete output from my simulator). Usually, the problem will be in your code, 3

4 but the first student to discover a particular error in my simulator output will receive extra credit on the assignment. Using this framework, you can build a variety of test tracefiles, and whenever you make a change, quickly retest all the inputs. The tracefile generator can be used for some heavy automated testing, but you should also construct cases that will do particular things (eg., force an eviction, or use all ways in a set, or provide certain access based on LRU, etc). Remember that you need to test with varying arguments using the conf macro as well. I recommend you tackle this problem in the following way, testing at each step against the provided executable using the appropriate input: 1. Compute and print header info, and make it match mine exactly. 2. Get your routine to correctly compute tag, set, and block offset. 3. Add 1-way associative simulator. Treat all accesses as reads. As long as you create read-only tracefiles, you can get your output to exactly match mine. 4. Add support for write-through and write back handling of writes. 5. Add counters to allow for summary info, and make sure it matches mine exactly. 6. Add support for N 1 associativity, including LRU replacement and the fact that N = 0 really means fully associative. Collaboration: As I have given you access to my executable for testing, and have discussed the general implementation strategy, students should not collaborate in any way on this assignment. If you need debugging help, ask the TA during the recitation (preferred), or a fellow student not enrolled in this class. Do not consult with anyone on detailed implementation issues. 4

5 Example runs: >cat trace.in R:c0e7 W:376 R:c0ef W:37e R:c0f7 W:386 R:c0ff W:38e R:c107 W:396 R:c10f W:39e R:c117 W:3a6 R:c11f W:3ae >./xcachesim < trace.in 16KB 1-way associative cache: Block size = 32 bytes Number of [sets,blocks] = [512,512] Extra space for tag storage = 640 bytes ( 3.91%) Bits for [tag,index,offset] = [10, 9, 5] = 24 Write policy = Write-through Hex Binary Address Set Blk Memory Address (tag/index/offset) Tag Index off Way UWay Read Writ ======= ========================== ======== ===== === ==== ==== ==== ==== c0e7r W c0efr eW c0f7r W c0ffr eW c107r W c10fr eW c117r a6W c11fr aeW nref=16, nread=8, nwrite=8 hits = 6, hit rate = 0.38 misses = 10, miss rate = 0.62 main memory reads=2, main memory writes=8 5

6 >./xcachesim -W b < trace.in 16KB 1-way associative cache: Block size = 32 bytes Number of [sets,blocks] = [512,512] Extra space for tag storage = 640 bytes ( 3.91%) Bits for [tag,index,offset] = [10, 9, 5] = 24 Write policy = Write-back Hex Binary Address Set Blk Memory Address (tag/index/offset) Tag Index off Way UWay Read Writ ======= ========================== ======== ===== === ==== ==== ==== ==== c0e7r W c0efr eW c0f7r W c0ffr eW c107r W c10fr eW c117r a6W c11fr aeW nref=16, nread=8, nwrite=8 hits = 11, hit rate = 0.69 misses = 5, miss rate = 0.31 main memory reads=5, main memory writes=0 6

7 >cat traceevict.in W:10 W:810 W:1800 R:14 W:2000 W:2800 W:3000 >./xcachesim -W b -a 4 -b 32 -B 2048 < traceevict.in 2KB 4-way associative cache: Block size = 32 bytes Number of [sets,blocks] = [16,64] Extra space for tag storage = 120 bytes ( 5.86%) Bits for [tag,index,offset] = [15, 4, 5] = 24 Write policy = Write-back Hex Binary Address Set Blk Memory Address (tag/index/offset) Tag Index off Way UWay Read Writ ======= ========================== ======== ===== === ==== ==== ==== ==== 10W W W R W W W nref=7, nread=1, nwrite=6 hits = 1, hit rate = 0.14 misses = 6, miss rate = 0.86 main memory reads=6, main memory writes=2 7

Carnegie Mellon. Cache Lab. Recitation 7: Oct 11 th, 2016

Carnegie Mellon. Cache Lab. Recitation 7: Oct 11 th, 2016 1 Cache Lab Recitation 7: Oct 11 th, 2016 2 Outline Memory organization Caching Different types of locality Cache organization Cache lab Part (a) Building Cache Simulator Part (b) Efficient Matrix Transpose

More information

CSC/ECE 506: Computer Architecture and Multiprocessing Program 3: Simulating DSM Coherence Due: Tuesday, Nov 22, 2016

CSC/ECE 506: Computer Architecture and Multiprocessing Program 3: Simulating DSM Coherence Due: Tuesday, Nov 22, 2016 CSC/ECE 506: Computer Architecture and Multiprocessing Program 3: Simulating DSM Coherence Due: Tuesday, Nov 22, 2016 1. Overall Problem Description In this project, you will add new features to a trace-driven

More information

COMP 3500 Introduction to Operating Systems Project 5 Virtual Memory Manager

COMP 3500 Introduction to Operating Systems Project 5 Virtual Memory Manager COMP 3500 Introduction to Operating Systems Project 5 Virtual Memory Manager Points Possible: 100 Submission via Canvas No collaboration among groups. Students in one group should NOT share any project

More information

It is academic misconduct to share your work with others in any form including posting it on publicly accessible web sites, such as GitHub.

It is academic misconduct to share your work with others in any form including posting it on publicly accessible web sites, such as GitHub. p4: Cache Simulator 1. Logistics 1. This project must be done individually. It is academic misconduct to share your work with others in any form including posting it on publicly accessible web sites, such

More information

CSC/ECE 506: Architecture of Parallel Computers Program 2: Bus-Based Cache Coherence Protocols Due: Wednesday, October 25, 2017

CSC/ECE 506: Architecture of Parallel Computers Program 2: Bus-Based Cache Coherence Protocols Due: Wednesday, October 25, 2017 CSC/ECE 506: Architecture of Parallel Computers Program 2: Bus-Based Cache Coherence Protocols Due: Wednesday, October 25, 2017 1. Overall Problem Description In this project, you will add new features

More information

Second Midterm Exam March 21, 2017 CS162 Operating Systems

Second Midterm Exam March 21, 2017 CS162 Operating Systems University of California, Berkeley College of Engineering Computer Science Division EECS Spring 2017 Ion Stoica Second Midterm Exam March 21, 2017 CS162 Operating Systems Your Name: SID AND 162 Login:

More information

Distributed: Monday, Nov. 30, Due: Monday, Dec. 7 at midnight

Distributed: Monday, Nov. 30, Due: Monday, Dec. 7 at midnight cs281: Introduction to Computer Systems Project Lab: The Cachelab Simulating a Cache Controler Distributed: Monday, Nov. 30, Due: Monday, Dec. 7 at midnight Introduction This assignment will help you understand

More information

Figure 1: Organisation for 128KB Direct Mapped Cache with 16-word Block Size and Word Addressable

Figure 1: Organisation for 128KB Direct Mapped Cache with 16-word Block Size and Word Addressable Tutorial 12: Cache Problem 1: Direct Mapped Cache Consider a 128KB of data in a direct-mapped cache with 16 word blocks. Determine the size of the tag, index and offset fields if a 32-bit architecture

More information

CS 433 Homework 5. Assigned on 11/7/2017 Due in class on 11/30/2017

CS 433 Homework 5. Assigned on 11/7/2017 Due in class on 11/30/2017 CS 433 Homework 5 Assigned on 11/7/2017 Due in class on 11/30/2017 Instructions: 1. Please write your name and NetID clearly on the first page. 2. Refer to the course fact sheet for policies on collaboration.

More information

Part I: Pen & Paper Exercises, Cache

Part I: Pen & Paper Exercises, Cache Fall Term 2016 SYSTEMS PROGRAMMING AND COMPUTER ARCHITECTURE Assignment 11: Caches & Virtual Memory Assigned on: 8th Dec 2016 Due by: 15th Dec 2016 Part I: Pen & Paper Exercises, Cache Question 1 The following

More information

Lab 03 - x86-64: atoi

Lab 03 - x86-64: atoi CSCI0330 Intro Computer Systems Doeppner Lab 03 - x86-64: atoi Due: October 1, 2017 at 4pm 1 Introduction 1 2 Assignment 1 2.1 Algorithm 2 3 Assembling and Testing 3 3.1 A Text Editor, Makefile, and gdb

More information

Your submitted proj3.c must compile and run on linprog as in the following example:

Your submitted proj3.c must compile and run on linprog as in the following example: CDA3101 Project 3: Cache Simulator Due 8/3 I. Purpose The purpose of this project is to exercise your understanding of caches of various sizes and configurations, as well as the write policies of write-through

More information

CS 385 Operating Systems Fall 2011 Homework Assignment 4 Simulation of a Memory Paging System

CS 385 Operating Systems Fall 2011 Homework Assignment 4 Simulation of a Memory Paging System CS 385 Operating Systems Fall 2011 Homework Assignment 4 Simulation of a Memory Paging System Due: Tuesday November 15th. Electronic copy due at 2:30, optional paper copy at the beginning of class. Overall

More information

UW CSE 351, Winter 2013 Final Exam

UW CSE 351, Winter 2013 Final Exam Full Name: Student ID #: UW CSE 351, Winter 2013 Final Exam March 20, 2013 2:30pm - 4:20pm Instructions: Write your full name and UW student ID number on the front of the exam. When the exam begins, make

More information

CS 5513 Entry Quiz. Systems Programming (CS2213/CS3423))

CS 5513 Entry Quiz. Systems Programming (CS2213/CS3423)) Name (please print): CS 5513 Entry Quiz Systems Programming (CS2213/CS3423)) 1. What is a compiler? In addition to the definition, give examples of compilers you have used. A compiler is a program that

More information

Cache Lab Implementation and Blocking

Cache Lab Implementation and Blocking Cache Lab Implementation and Blocking Lou Clark February 24 th, 2014 1 Welcome to the World of Pointers! 2 Class Schedule Cache Lab Due Thursday. Start soon if you haven t yet! Exam Soon! Start doing practice

More information

Computer Architecture Assignment 4 - Cache Simulator

Computer Architecture Assignment 4 - Cache Simulator Computer Architecture Assignment 4 - Cache Simulator Instructor : Abhishek Bhattacharjee Due : April 15, 11:55 PM 1 Overview The goal of this assignment is to help you understand caches better. You are

More information

CSE 351, Spring 2010 Lab 7: Writing a Dynamic Storage Allocator Due: Thursday May 27, 11:59PM

CSE 351, Spring 2010 Lab 7: Writing a Dynamic Storage Allocator Due: Thursday May 27, 11:59PM CSE 351, Spring 2010 Lab 7: Writing a Dynamic Storage Allocator Due: Thursday May 27, 11:59PM 1 Instructions In this lab you will be writing a dynamic storage allocator for C programs, i.e., your own version

More information

ECEC 355: Cache Design

ECEC 355: Cache Design ECEC 355: Cache Design November 28, 2007 Terminology Let us first define some general terms applicable to caches. Cache block or line. The minimum unit of information (in bytes) that can be either present

More information

1. Overview This project will help you understand address spaces and virtual memory management.

1. Overview This project will help you understand address spaces and virtual memory management. Project 2--Memory Worth: 12 points Assigned: Due: 1. Overview This project will help you understand address spaces and virtual memory management. In this project, you will implement an external pager,

More information

Your submitted proj3.c must compile and run on linprog as in the following example:

Your submitted proj3.c must compile and run on linprog as in the following example: CDA3101 Project 3: Cache Simulator Due 12/7 I. Purpose The purpose of this project is to exercise your understanding of caches of various sizes and configurations, as well as the write policies of write-through

More information

exercise 4 byte blocks, 4 sets index valid tag value 00

exercise 4 byte blocks, 4 sets index valid tag value 00 Caching (part 2) 1 exercise 3 address (hex) result 00000000 (00) 00000001 (01) 01100011 (63) 01100001 (61) 01100010 (62) 00000000 (00) 01100100 (64) 4 byte blocks, 4 sets index valid tag value 00 01 10

More information

CSCI 356 Spring 2018 Project 5: Understanding Cache Memories Due: Thursday, April 5, 11:59PM

CSCI 356 Spring 2018 Project 5: Understanding Cache Memories Due: Thursday, April 5, 11:59PM CSCI 356 Spring 2018 Project 5: Understanding Cache Memories Due: Thursday, April 5, 11:59PM This lab will help you understand the impact that cache memories can have on the performance of your C programs.

More information

Lab 1: Dynamic Memory: Heap Manager

Lab 1: Dynamic Memory: Heap Manager Lab 1: Dynamic Memory: Heap Manager Introduction to Systems, Duke University 1 Introduction For this lab you implement a basic heap manager. The standard C runtime library provides a standard heap manager

More information

Virtual Memory 1. Virtual Memory

Virtual Memory 1. Virtual Memory Virtual Memory 1 Virtual Memory key concepts virtual memory, physical memory, address translation, MMU, TLB, relocation, paging, segmentation, executable file, swapping, page fault, locality, page replacement

More information

Virtual Memory 1. Virtual Memory

Virtual Memory 1. Virtual Memory Virtual Memory 1 Virtual Memory key concepts virtual memory, physical memory, address translation, MMU, TLB, relocation, paging, segmentation, executable file, swapping, page fault, locality, page replacement

More information

Recitation 7 Caches and Blocking. 9 October 2017

Recitation 7 Caches and Blocking. 9 October 2017 15-213 Recitation 7 Caches and Blocking 9 October 2017 Agenda Reminders Revisiting Cache Lab Caching Review Blocking to reduce cache misses Cache alignment Reminders Cache Lab is due Thursday! Exam1 is

More information

CS 433 Homework 4. Assigned on 10/17/2017 Due in class on 11/7/ Please write your name and NetID clearly on the first page.

CS 433 Homework 4. Assigned on 10/17/2017 Due in class on 11/7/ Please write your name and NetID clearly on the first page. CS 433 Homework 4 Assigned on 10/17/2017 Due in class on 11/7/2017 Instructions: 1. Please write your name and NetID clearly on the first page. 2. Refer to the course fact sheet for policies on collaboration.

More information

Cache and Virtual Memory Simulations

Cache and Virtual Memory Simulations Cache and Virtual Memory Simulations Does it really matter if you pull a USB out before it safely ejects? Data structure: Cache struct Cache { }; Set *sets; int set_count; int line_count; int block_size;

More information

Malloc Lab & Midterm Solutions. Recitation 11: Tuesday: 11/08/2016

Malloc Lab & Midterm Solutions. Recitation 11: Tuesday: 11/08/2016 Malloc Lab & Midterm Solutions Recitation 11: Tuesday: 11/08/2016 Malloc 2 Important Notes about Malloc Lab Malloc lab has been updated from previous years Supports a full 64 bit address space rather than

More information

CSE351 Spring 2010 Final Exam (9 June 2010)

CSE351 Spring 2010 Final Exam (9 June 2010) CSE351 Spring 2010 Final Exam (9 June 2010) Please read through the entire examination first! We designed this exam so that it can be completed in 100 minutes and, hopefully, this estimate will prove to

More information

CS 326 Operating Systems C Programming. Greg Benson Department of Computer Science University of San Francisco

CS 326 Operating Systems C Programming. Greg Benson Department of Computer Science University of San Francisco CS 326 Operating Systems C Programming Greg Benson Department of Computer Science University of San Francisco Why C? Fast (good optimizing compilers) Not too high-level (Java, Python, Lisp) Not too low-level

More information

More on C programming

More on C programming Applied mechatronics More on C programming Sven Gestegård Robertz sven.robertz@cs.lth.se Department of Computer Science, Lund University 2017 Outline 1 Pointers and structs 2 On number representation Hexadecimal

More information

Computer Systems Principles Cache Simulator

Computer Systems Principles Cache Simulator Computer Systems Principles Cache Simulator Contents Cache Simulator 1 Overview...................................... 1 Source Files and Compilation........................... 2 Description.....................................

More information

ECE 206, Fall 2001: Lab 3

ECE 206, Fall 2001: Lab 3 ECE 206, : Lab 3 Data Movement Instructions Learning Objectives This lab will give you practice with a number of LC-2 programming constructs. In particular you will cover the following topics: - Load/store

More information

MCS-284, Fall 2018 Cache Lab: Understanding Cache Memories Assigned: Friday, 11/30 Due: Friday, 12/14, by midnight (via Moodle)

MCS-284, Fall 2018 Cache Lab: Understanding Cache Memories Assigned: Friday, 11/30 Due: Friday, 12/14, by midnight (via Moodle) MCS-284, Fall 2018 Cache Lab: Understanding Cache Memories Assigned: Friday, 11/30 Due: Friday, 12/14, by midnight (via Moodle) 1 Logistics This is an individual project. All hand-ins are electronic via

More information

ECE 463/521: Fall 2002 Project #1: Data-Cache System Design Due: Monday, Sept. 30, 11:00 PM

ECE 463/521: Fall 2002 Project #1: Data-Cache System Design Due: Monday, Sept. 30, 11:00 PM ECE 463/521: Fall 2002 Project #1: Data-Cache System Design Due: Monday, Sept. 30, 11:00 PM Project rules 1. All students are encouraged to work in teams of two, using pair programming. Pair programming

More information

Memory Hierarchy. Mehran Rezaei

Memory Hierarchy. Mehran Rezaei Memory Hierarchy Mehran Rezaei What types of memory do we have? Registers Cache (Static RAM) Main Memory (Dynamic RAM) Disk (Magnetic Disk) Option : Build It Out of Fast SRAM About 5- ns access Decoders

More information

ECE331 Homework 4. Due Monday, August 13, 2018 (via Moodle)

ECE331 Homework 4. Due Monday, August 13, 2018 (via Moodle) ECE331 Homework 4 Due Monday, August 13, 2018 (via Moodle) 1. Below is a list of 32-bit memory address references, given as hexadecimal byte addresses. The memory accesses are all reads and they occur

More information

CS201: Lab #4 Writing a Dynamic Storage Allocator

CS201: Lab #4 Writing a Dynamic Storage Allocator CS201: Lab #4 Writing a Dynamic Storage Allocator In this lab you will write a dynamic storage allocator for C programs, i.e., your own version of the malloc, free and realloc routines. You are encouraged

More information

Recitation 2/18/2012

Recitation 2/18/2012 15-213 Recitation 2/18/2012 Announcements Buflab due tomorrow Cachelab out tomorrow Any questions? Outline Cachelab preview Useful C functions for cachelab Cachelab Part 1: you have to create a cache simulator

More information

CSE351 Spring 2018, Final Exam June 6, 2018

CSE351 Spring 2018, Final Exam June 6, 2018 CSE351 Spring 2018, Final Exam June 6, 2018 Please do not turn the page until 2:30. Last Name: First Name: Student ID Number: Name of person to your left: Name of person to your right: Signature indicating:

More information

Student Name: University of California at Berkeley College of Engineering Department of Electrical Engineering and Computer Science

Student Name: University of California at Berkeley College of Engineering Department of Electrical Engineering and Computer Science University of California at Berkeley College of Engineering Department of Electrical Engineering and Computer Science CS 162 Spring 2011 I. Stoica FIRST MIDTERM EXAMINATION Wednesday, March 9, 2011 INSTRUCTIONS

More information

- b: size of block in bytes. - s: number of sets in the cache (or total number of sets between split caches). - n: associativity of cache.

- b: size of block in bytes. - s: number of sets in the cache (or total number of sets between split caches). - n: associativity of cache. CDA3101 Project 3: Cache Simulator (Graduate Version) Due 8/1 I. Purpose The purpose of this project is to exercise your understanding of caches of various sizes and configurations, as well as the write

More information

ΗΥ345 Operating Systems. Recitation 2 Memory Management - Solutions -

ΗΥ345 Operating Systems. Recitation 2 Memory Management - Solutions - ΗΥ345 Operating Systems Recitation 2 Memory Management - Solutions - Problem 7 Consider the following C program: int X[N]; int step = M; //M is some predefined constant for (int i = 0; i < N; i += step)

More information

Advanced Assembly, Branching, and Monitor Utilities

Advanced Assembly, Branching, and Monitor Utilities 2 Advanced Assembly, Branching, and Monitor Utilities 2.1 Objectives: There are several different ways for an instruction to form effective addresses to acquire data, called addressing modes. One of these

More information

Basic C Programming (2) Bin Li Assistant Professor Dept. of Electrical, Computer and Biomedical Engineering University of Rhode Island

Basic C Programming (2) Bin Li Assistant Professor Dept. of Electrical, Computer and Biomedical Engineering University of Rhode Island Basic C Programming (2) Bin Li Assistant Professor Dept. of Electrical, Computer and Biomedical Engineering University of Rhode Island Data Types Basic Types Enumerated types The type void Derived types

More information

Problem 3. (12 points):

Problem 3. (12 points): Problem 3. (12 points): This problem tests your understanding of basic cache operations. Harry Q. Bovik has written the mother of all game-of-life programs. The Game-of-life is a computer game that was

More information

ECE 463/521: Spring 2005 Project 1: Data-Cache System Design Due: Wednesday, February 23, 2005, 11:00 PM

ECE 463/521: Spring 2005 Project 1: Data-Cache System Design Due: Wednesday, February 23, 2005, 11:00 PM ECE 463/521: Spring 2005 Project 1: Data-Cache System Design Due: Wednesday, February 23, 2005, 11:00 PM Project rules 1. All students are encouraged to work in teams of two, using pair programming. Pair

More information

3) Cache, money. Dollar bills, y all. (24 min, 15 pts)

3) Cache, money. Dollar bills, y all. (24 min, 15 pts) Login: cs61c- Answers 3) Cache, money. Dollar bills, y all. (24 min, 15 pts) Suppose we have a standard 32-bit byte-addressed MIPS machine, a single direct-mapped 32KiB cache, a write-through policy, and

More information

1 Do not confuse the MPU with the Nios II memory management unit (MMU). The MPU does not provide memory mapping or management.

1 Do not confuse the MPU with the Nios II memory management unit (MMU). The MPU does not provide memory mapping or management. Nios II MPU Usage March 2010 AN-540-1.0 Introduction This application note covers the basic features of the Nios II processor s optional memory protection unit (MPU), describing how to use it without the

More information

Virtual Memory Overview

Virtual Memory Overview Virtual Memory Overview Virtual address (VA): What your program uses Virtual Page Number Page Offset Physical address (PA): What actually determines where in memory to go Physical Page Number Page Offset

More information

Using the KD30 Debugger

Using the KD30 Debugger ELEC3730 Embedded Systems Tutorial 3 Using the KD30 Debugger 1 Introduction Overview The KD30 debugger is a powerful software tool that can greatly reduce the time it takes to develop complex programs

More information

Programming Assignment 3 Due Monday, March 24 (Note the change in the due date)

Programming Assignment 3 Due Monday, March 24 (Note the change in the due date) Department of Computer Science Parallel and Distributed Computing Programming Assignment 3 Due Monday, March 24 (Note the change in the due date) For programming assignment 3 you should write a C program

More information

Programming for Engineers Iteration

Programming for Engineers Iteration Programming for Engineers Iteration ICEN 200 Spring 2018 Prof. Dola Saha 1 Data type conversions Grade average example,-./0 class average = 23450-67 893/0298 Grade and number of students can be integers

More information

associativity terminology

associativity terminology Caching 1 2 associativity terminology direct-mapped one block per set E-way set associative E blocks per set E ways in the cache fully associative one set total (everything in one set) 3 Tag-Index-Offset

More information

CS152 Computer Architecture and Engineering CS252 Graduate Computer Architecture Spring Caches and the Memory Hierarchy

CS152 Computer Architecture and Engineering CS252 Graduate Computer Architecture Spring Caches and the Memory Hierarchy CS152 Computer Architecture and Engineering CS252 Graduate Computer Architecture Spring 2019 Caches and the Memory Hierarchy Assigned February 13 Problem Set #2 Due Wed, February 27 http://inst.eecs.berkeley.edu/~cs152/sp19

More information

OPERATING SYSTEMS ASSIGNMENT 3 MEMORY MANAGEMENT

OPERATING SYSTEMS ASSIGNMENT 3 MEMORY MANAGEMENT OPERATING SYSTEMS ASSIGNMENT 3 MEMORY MANAGEMENT Introduction Memory management and memory abstraction is one of the most important features of any operating system. In this assignment we will examine

More information

Assignment 6: The Power of Caches

Assignment 6: The Power of Caches Assignment 6: The Power of Caches Due by: April 20, 2018 before 10:00 pm Collaboration: Individuals or Registered Pairs (see Piazza). It is mandatory for every student to register on Piazza. Grading: Packaging

More information

EECS 470 Final Exam Fall 2015

EECS 470 Final Exam Fall 2015 EECS 470 Final Exam Fall 2015 Name: unique name: Sign the honor code: I have neither given nor received aid on this exam nor observed anyone else doing so. Scores: Page # Points 2 /17 3 /11 4 /13 5 /10

More information

Cache memories are small, fast SRAM-based memories managed automatically in hardware. Hold frequently accessed blocks of main memory

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

More information

Key Point. What are Cache lines

Key Point. What are Cache lines Caching 1 Key Point What are Cache lines Tags Index offset How do we find data in the cache? How do we tell if it s the right data? What decisions do we need to make in designing a cache? What are possible

More information

13-1 Memory and Caches

13-1 Memory and Caches 13-1 Memory and Caches 13-1 See also cache study guide. Contents Supplement to material in section 5.2. Includes notation presented in class. 13-1 EE 4720 Lecture Transparency. Formatted 13:15, 9 December

More information

Programming Standards: You must conform to good programming/documentation standards. Some specifics:

Programming Standards: You must conform to good programming/documentation standards. Some specifics: CS3114 (Spring 2011) PROGRAMMING ASSIGNMENT #3 Due Thursday, April 7 @ 11:00 PM for 100 points Early bonus date: Wednesday, April 6 @ 11:00 PM for a 10 point bonus Initial Schedule due Thursday, March

More information

Spring 2016, Malloc Lab: Writing Dynamic Memory Allocator

Spring 2016, Malloc Lab: Writing Dynamic Memory Allocator 1. Introduction Spring 2016, Malloc Lab: Writing Dynamic Memory Allocator Assigned: Mar. 03 Due: Mar. 17, 15:59 In this lab you will be writing a dynamic memory allocator for C programs, i.e., your own

More information

System Programming And C Language

System Programming And C Language System Programming And C Language Prof. Jin-soo Kim. (jinsookim@skku.edu) Pintos TA Jin-yeong, Bak. (dongdm@gmail.com) Kyung-min, Go. (gkm2164@gmail.com) 2010.09.28 1 Contents Important thing in system

More information

Pointer Casts and Data Accesses

Pointer Casts and Data Accesses C Programming Pointer Casts and Data Accesses For this assignment, you will implement a C function similar to printf(). While implementing the function you will encounter pointers, strings, and bit-wise

More information

Review of Scientific Programming in C and Fortran. Michael McLennan Software Architect HUBzero Platform for Scientific Collaboration

Review of Scientific Programming in C and Fortran. Michael McLennan Software Architect HUBzero Platform for Scientific Collaboration Review of Scientific Programming in C and Fortran Michael McLennan Software Architect HUBzero Platform for Scientific Collaboration Monte Carlo Simulator Simulate by randomly generating thousands of tracks?

More information

cs3157: another C lecture (mon-21-feb-2005) C pre-processor (3).

cs3157: another C lecture (mon-21-feb-2005) C pre-processor (3). cs3157: another C lecture (mon-21-feb-2005) C pre-processor (1). today: C pre-processor command-line arguments more on data types and operators: booleans in C logical and bitwise operators type conversion

More information

Caches and Memory Hierarchy: Review. UCSB CS240A, Fall 2017

Caches and Memory Hierarchy: Review. UCSB CS240A, Fall 2017 Caches and Memory Hierarchy: Review UCSB CS24A, Fall 27 Motivation Most applications in a single processor runs at only - 2% of the processor peak Most of the single processor performance loss is in the

More information

LAB A Translating Data to Binary

LAB A Translating Data to Binary LAB A Translating Data to Binary Create a directory for this lab and perform in it the following groups of tasks: LabA1.java 1. Write the Java app LabA1 that takes an int via a command-line argument args[0]

More information

ECE454, Fall 2014 Homework3: Dynamic Memory Allocation Assigned: Oct 9th, Due: Nov 6th, 11:59PM

ECE454, Fall 2014 Homework3: Dynamic Memory Allocation Assigned: Oct 9th, Due: Nov 6th, 11:59PM ECE454, Fall 2014 Homework3: Dynamic Memory Allocation Assigned: Oct 9th, Due: Nov 6th, 11:59PM The TA for this assignment is Xu Zhao (nuk.zhao@mail.utoronto.ca). 1 Introduction OptsRus is doing really

More information

Exercise Session 2 Systems Programming and Computer Architecture

Exercise Session 2 Systems Programming and Computer Architecture Systems Group Department of Computer Science ETH Zürich Exercise Session 2 Systems Programming and Computer Architecture Herbstsemester 216 Agenda Linux vs. Windows Working with SVN Exercise 1: bitcount()

More information

PRINCIPLES OF OPERATING SYSTEMS

PRINCIPLES OF OPERATING SYSTEMS PRINCIPLES OF OPERATING SYSTEMS Tutorial-1&2: C Review CPSC 457, Spring 2015 May 20-21, 2015 Department of Computer Science, University of Calgary Connecting to your VM Open a terminal (in your linux machine)

More information

Chapter 6 Caches. Computer System. Alpha Chip Photo. Topics. Memory Hierarchy Locality of Reference SRAM Caches Direct Mapped Associative

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

More information

Operating Systems. IV. Memory Management

Operating Systems. IV. Memory Management Operating Systems IV. Memory Management Ludovic Apvrille ludovic.apvrille@telecom-paristech.fr Eurecom, office 470 http://soc.eurecom.fr/os/ @OS Eurecom Outline Basics of Memory Management Hardware Architecture

More information

6.Porting Code to N32 and 64-Bit Silicon Graphics Systems

6.Porting Code to N32 and 64-Bit Silicon Graphics Systems Chapter 6 6.Porting Code to N32 and 64-Bit Silicon Graphics Systems This section explains the levels of compatibility between the new 32-bit compilation mode (n32), the old 32-bit mode, and 64-bit programs.

More information

CMU : Advanced Computer Architecture Handout 5: Cache Prefetching Competition ** Due 10/11/2005 **

CMU : Advanced Computer Architecture Handout 5: Cache Prefetching Competition ** Due 10/11/2005 ** 1. Introduction CMU 18-741: Advanced Computer Architecture Handout 5: Cache Prefetching Competition ** Due 10/11/2005 ** Architectural innovations along with accelerating processor speeds have led to a

More information

Caches and Memory Hierarchy: Review. UCSB CS240A, Winter 2016

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

More information

CpSc 1011 Lab 5 Conditional Statements, Loops, ASCII code, and Redirecting Input Characters and Hurricanes

CpSc 1011 Lab 5 Conditional Statements, Loops, ASCII code, and Redirecting Input Characters and Hurricanes CpSc 1011 Lab 5 Conditional Statements, Loops, ASCII code, and Redirecting Input Characters and Hurricanes Overview For this lab, you will use: one or more of the conditional statements explained below

More information

To obtain the current global trace mask, call meitraceget(...). To modify the global trace mask, call meitraceset(...).

To obtain the current global trace mask, call meitraceget(...). To modify the global trace mask, call meitraceset(...). Trace Objects Trace Objects Introduction Use the Trace module to selectively produce trace output on a global and/or per-object basis for your application. You can specify the types of trace output when

More information

CSC258: Computer Organization. Memory Systems

CSC258: Computer Organization. Memory Systems CSC258: Computer Organization Memory Systems 1 Summer Independent Studies I m looking for a few students who will be working on campus this summer. In addition to the paid positions posted earlier, I have

More information

Fig 7.30 The Cache Mapping Function. Memory Fields and Address Translation

Fig 7.30 The Cache Mapping Function. Memory Fields and Address Translation 7-47 Chapter 7 Memory System Design Fig 7. The Mapping Function Example: KB MB CPU Word Block Main Address Mapping function The cache mapping function is responsible for all cache operations: Placement

More information

CS 351 Exam 3, Fall 2011

CS 351 Exam 3, Fall 2011 CS 351 Exam 3, Fall 2011 Your name: Rules You may use one handwritten 8.5 x 11 cheat sheet (front and back). This is the only resource you may consult during this exam. Include explanations and comments

More information

Memory: Paging System

Memory: Paging System Memory: Paging System Instructor: Hengming Zou, Ph.D. In Pursuit of Absolute Simplicity 求于至简, 归于永恒 Content Paging Page table Multi-level translation Page replacement 2 Paging Allocate physical memory in

More information

Machine Problem 1: A Simple Memory Allocator. 100 points Due date: To Be Announced

Machine Problem 1: A Simple Memory Allocator. 100 points Due date: To Be Announced Machine Problem 1: A Simple Memory Allocator Introduction 100 points Due date: To Be Announced In this machine problem, you are to develop a simple memory allocator that implements the functions my malloc()

More information

EE 472 Embedded Systems. Name solutions. Instructions:

EE 472 Embedded Systems. Name solutions. Instructions: Name solutions Instructions: Write your name and student id on every page. You may not consult any other materials or anyone in the class. If you are unsure of what a question is asking, write your assumptions

More information

CS24: INTRODUCTION TO COMPUTING SYSTEMS. Spring 2014 Lecture 14

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

More information

5DV118 Computer Organization and Architecture Umeå University Department of Computing Science Stephen J. Hegner

5DV118 Computer Organization and Architecture Umeå University Department of Computing Science Stephen J. Hegner 5DV8 Computer Organization and Architecture Umeå University Department of Computing Science Stephen J. Hegner Topic 5: The Memory Hierarchy Part B: Address Translation These slides are mostly taken verbatim,

More information

ECE Lab 8. Logic Design for a Direct-Mapped Cache. To understand the function and design of a direct-mapped memory cache.

ECE Lab 8. Logic Design for a Direct-Mapped Cache. To understand the function and design of a direct-mapped memory cache. ECE 201 - Lab 8 Logic Design for a Direct-Mapped Cache PURPOSE To understand the function and design of a direct-mapped memory cache. EQUIPMENT Simulation Software REQUIREMENTS Electronic copy of your

More information

LECTURE 11. Memory Hierarchy

LECTURE 11. Memory Hierarchy LECTURE 11 Memory Hierarchy MEMORY HIERARCHY When it comes to memory, there are two universally desirable properties: Large Size: ideally, we want to never have to worry about running out of memory. Speed

More information

Physical memory vs. Logical memory Process address space Addresses assignment to processes Operating system tasks Hardware support CONCEPTS 3.

Physical memory vs. Logical memory Process address space Addresses assignment to processes Operating system tasks Hardware support CONCEPTS 3. T3-Memory Index Memory management concepts Basic Services Program loading in memory Dynamic memory HW support To memory assignment To address translation Services to optimize physical memory usage COW

More information

Programming Assignment 1 (PA1) - Display Bowtie

Programming Assignment 1 (PA1) - Display Bowtie Programming Assignment 1 (PA1) - Display Bowtie Milestone Due: Final Due: Wednesday, April 18 @ 11:59 pm Wednesday, April 25 @ 11:59 pm Example Input Milestone Functions Unit Testing Extra Credit Detailed

More information

Chapter 3. More Flow of Control. Copyright 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

Chapter 3. More Flow of Control. Copyright 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 3 More Flow of Control Overview 3.1 Using Boolean Expressions 3.2 Multiway Branches 3.3 More about C++ Loop Statements 3.4 Designing Loops Slide 3-3 Flow Of Control Flow of control refers to the

More information

ME 461 C review Session Fall 2009 S. Keres

ME 461 C review Session Fall 2009 S. Keres ME 461 C review Session Fall 2009 S. Keres DISCLAIMER: These notes are in no way intended to be a complete reference for the C programming material you will need for the class. They are intended to help

More information

CSci 4061 Introduction to Operating Systems. Programs in C/Unix

CSci 4061 Introduction to Operating Systems. Programs in C/Unix CSci 4061 Introduction to Operating Systems Programs in C/Unix Today Basic C programming Follow on to recitation Structure of a C program A C program consists of a collection of C functions, structs, arrays,

More information

Lab 1 Implementing a Simon Says Game

Lab 1 Implementing a Simon Says Game ECE2049 Embedded Computing in Engineering Design Lab 1 Implementing a Simon Says Game In the late 1970s and early 1980s, one of the first and most popular electronic games was Simon by Milton Bradley.

More information

Structure of Computer Systems

Structure of Computer Systems 222 Structure of Computer Systems Figure 4.64 shows how a page directory can be used to map linear addresses to 4-MB pages. The entries in the page directory point to page tables, and the entries in a

More information

OPERATING SYSTEMS ASSIGNMENT 4 FILE SYSTEM

OPERATING SYSTEMS ASSIGNMENT 4 FILE SYSTEM OPERATING SYSTEMS ASSIGNMENT 4 FILE SYSTEM Introduction The File system is an integral part of every operating system. The use of files enables the user to save persistent data. Files can also be used

More information

Lab 1 Implementing a Simon Says Game

Lab 1 Implementing a Simon Says Game ECE2049 Embedded Computing in Engineering Design Lab 1 Implementing a Simon Says Game In the late 1970s and early 1980s, one of the first and most popular electronic games was Simon by Milton Bradley.

More information