SimBench. A Portable Benchmarking Methodology for Full-System Simulators. Harry Wagstaff Bruno Bodin Tom Spink Björn Franke

Size: px
Start display at page:

Download "SimBench. A Portable Benchmarking Methodology for Full-System Simulators. Harry Wagstaff Bruno Bodin Tom Spink Björn Franke"

Transcription

1 SimBench A Portable Benchmarking Methodology for Full-System Simulators Harry Wagstaff Bruno Bodin Tom Spink Björn Franke Institute for Computing Systems Architecture University of Edinburgh ISPASS

2 Motivation Instruction Set Simulation Evaluating Simulation Tools The SimBench Methodology Overview Implementation Porting SimBench Evaluation 2

3 Instruction Set Simulation Instruction Set Simulation is used in a wide variety of contexts: Motivation Instruction Set Simulation 3

4 Instruction Set Simulation Instruction Set Simulation is used in a wide variety of contexts: Design Space Exploration Gem5 Multi2Sim Motivation Instruction Set Simulation 3

5 Instruction Set Simulation Instruction Set Simulation is used in a wide variety of contexts: Design Space Exploration Software Development QEMU Android Emulator Motivation Instruction Set Simulation 3

6 Instruction Set Simulation Instruction Set Simulation is used in a wide variety of contexts: Design Space Exploration Software Development Backwards Compatibility Apple Rosetta Nintendo NES Classic Motivation Instruction Set Simulation 3

7 Instruction Set Simulation Instruction Set Simulation is used in a wide variety of contexts: Design Space Exploration Software Development Backwards Compatibility Simulators can be broken up into several categories: Functional Only Profiling/Performance Modelling User-Mode Full System Motivation Instruction Set Simulation 3

8 User-Mode Simulation Simulated CPU Flat Memory Execute a single binary Emulate System Calls Simplified Memory System Syscall Emulation Layer Host Console Host Timers Host File System Motivation Instruction Set Simulation 4

9 Full-System Simulation Simulated CPU Boot out of reset System-mode Instructions Simulated MMU Physical Memory Memory Translation Asynchronous Interrupts External Devices Simulated Serial Port Simulated Timers Simulated Storage Device Host Console Host Timers Host File System Motivation Instruction Set Simulation 5

10 Fast Simulation We want to make our simulators go fast! To be clear, we want the simulator itself to be efficient. Motivation Instruction Set Simulation 6

11 Fast Simulation We want to make our simulators go fast! To be clear, we want the simulator itself to be efficient. How? Dynamic Binary Translation Memory-Related Techniques Efficient Interrupt Modelling Control Flow Handling Motivation Instruction Set Simulation 6

12 Fast Simulation We want to make our simulators go fast! To be clear, we want the simulator itself to be efficient. How? Dynamic Binary Translation Memory-Related Techniques Efficient Interrupt Modelling Control Flow Handling How do we evaluate the effectiveness of these techniques in spite of complex interactions? Motivation Instruction Set Simulation 6

13 Typical Benchmarking Approaches Most common approaches fall into two categories: Large, complex macrobenchmark suites Small, targeted but ad-hoc microbenchmarks Both approaches are problematic for several reasons. Motivation Evaluating Simulation Tools 7

14 Macrobenchmarking The most common approach is to use large macrobenchmarks However, this presents several problems: Benchmark runtimes are long Difficult to perform detailed analysis Aggregated runtimes may hide interesting results Speedup sjeng SPEC (overall) mcf rc rc rc2 QEMU Version Motivation Evaluating Simulation Tools 8

15 Ad-Hoc Microbenchmarking Many papers also attempt to use ad-hoc microbenchmarks to assess performance. However, these also have problems: Source code may be unavailable, damaging reproducibility Secondary effects may not be taken into account Motivation Evaluating Simulation Tools 9

16 Sum Two Arrays - Source Code float out[array_size]; float a[array_size]; float b[array_size];... void foo() { for(int i = 0; i < ARRAY_SIZE; ++i) { out[i] = a[i] + b[i]; } } Motivation Evaluating Simulation Tools 10

17 Sum Two Arrays - Assembly Code foo: 0: add r3, r0, #512 ; 0x200 4: vldmia r0!, {s15} 8: vldmia r1!, {s14} c: cmp r0, r3 10: vadd.f32 s15, s15, s14 14: vstmia r2!, {s15} 18: bne 4 <foo+0x4> 1c: bx lr Motivation Evaluating Simulation Tools 11

18 Sum Two Arrays - Assembly Code foo: 0: add r3, r0, #512 ; 0x200 4: vldmia r0!, {s15} 8: vldmia r1!, {s14} c: cmp r0, r3 10: vadd.f32 s15, s15, s14 14: vstmia r2!, {s15} 18: bne 4 <foo+0x4> 1c: bx lr Instruction Page Fault Code Generation Instruction Page fault, Code generation Motivation Evaluating Simulation Tools 11

19 Sum Two Arrays - Assembly Code foo: 0: add r3, r0, #512 ; 0x200 4: vldmia r0!, {s15} 8: vldmia r1!, {s14} c: cmp r0, r3 10: vadd.f32 s15, s15, s14 14: vstmia r2!, {s15} 18: bne 4 <foo+0x4> 1c: bx lr Instruction Page Fault Code Generation Cold Memory Access Data Page Fault Cold memory access, Data Page fault Motivation Evaluating Simulation Tools 11

20 Sum Two Arrays - Assembly Code foo: 0: add r3, r0, #512 ; 0x200 4: vldmia r0!, {s15} 8: vldmia r1!, {s14} c: cmp r0, r3 10: vadd.f32 s15, s15, s14 14: vstmia r2!, {s15} 18: bne 4 <foo+0x4> 1c: bx lr Instruction Page Fault Code Generation Cold Memory Access Data Page Fault Hot Memory Access Hot memory access Motivation Evaluating Simulation Tools 11

21 Sum Two Arrays - Assembly Code foo: 0: add r3, r0, #512 ; 0x200 4: vldmia r0!, {s15} 8: vldmia r1!, {s14} c: cmp r0, r3 10: vadd.f32 s15, s15, s14 14: vstmia r2!, {s15} 18: bne 4 <foo+0x4> 1c: bx lr Instruction Page Fault Code Generation Cold Memory Access Data Page Fault Hot Memory Access FP Operation FP Operation Motivation Evaluating Simulation Tools 11

22 Sum Two Arrays - Assembly Code foo: 0: add r3, r0, #512 ; 0x200 4: vldmia r0!, {s15} 8: vldmia r1!, {s14} c: cmp r0, r3 10: vadd.f32 s15, s15, s14 14: vstmia r2!, {s15} 18: bne 4 <foo+0x4> 1c: bx lr Instruction Page Fault Code Generation Cold Memory Access Data Page Fault Hot Memory Access FP Operation Hot memory access Motivation Evaluating Simulation Tools 11

23 Sum Two Arrays - Assembly Code foo: 0: add r3, r0, #512 ; 0x200 4: vldmia r0!, {s15} 8: vldmia r1!, {s14} c: cmp r0, r3 10: vadd.f32 s15, s15, s14 14: vstmia r2!, {s15} 18: bne 4 <foo+0x4> 1c: bx lr Instruction Page Fault Code Generation Cold Memory Access Data Page Fault Hot Memory Access FP Operation Direct Control Flow Interrupt Direct control flow, Interrupt Motivation Evaluating Simulation Tools 11

24 Sum Two Arrays - Assembly Code foo: 0: add r3, r0, #512 ; 0x200 4: vldmia r0!, {s15} 8: vldmia r1!, {s14} c: cmp r0, r3 10: vadd.f32 s15, s15, s14 14: vstmia r2!, {s15} 18: bne 4 <foo+0x4> 1c: bx lr Instruction Page Fault Code Generation Cold Memory Access Data Page Fault Hot Memory Access FP Operation Direct Control Flow Interrupt Code generation Motivation Evaluating Simulation Tools 11

25 Sum Two Arrays - Assembly Code foo: 0: add r3, r0, #512 ; 0x200 4: vldmia r0!, {s15} 8: vldmia r1!, {s14} c: cmp r0, r3 10: vadd.f32 s15, s15, s14 14: vstmia r2!, {s15} 18: bne 4 <foo+0x4> 1c: bx lr Instruction Page Fault Code Generation Cold Memory Access Data Page Fault Hot Memory Access FP Operation Direct Control Flow Interrupt Code generation Motivation Evaluating Simulation Tools 11

26 Sum Two Arrays - Assembly Code foo: 0: add r3, r0, #512 ; 0x200 4: vldmia r0!, {s15} 8: vldmia r1!, {s14} c: cmp r0, r3 10: vadd.f32 s15, s15, s14 14: vstmia r2!, {s15} 18: bne 4 <foo+0x4> 1c: bx lr Instruction Page Fault Code Generation Cold Memory Access Data Page Fault Hot Memory Access FP Operation Direct Control Flow Interrupt Indirect Control Flow Indirect control flow, Interrupt Motivation Evaluating Simulation Tools 11

27 SimBench We present SimBench, which is designed to address some of these problems. The SimBench Methodology Overview 12

28 SimBench We present SimBench, which is designed to address some of these problems. SimBench... Contains a range of targeted microbenchmarks The SimBench Methodology Overview 12

29 SimBench We present SimBench, which is designed to address some of these problems. SimBench... Contains a range of targeted microbenchmarks Is aimed at full-system simulation techniques The SimBench Methodology Overview 12

30 SimBench We present SimBench, which is designed to address some of these problems. SimBench... Contains a range of targeted microbenchmarks Is aimed at full-system simulation techniques Is easily portable to new platforms and architectures The SimBench Methodology Overview 12

31 SimBench We present SimBench, which is designed to address some of these problems. SimBench... Contains a range of targeted microbenchmarks Is aimed at full-system simulation techniques Is easily portable to new platforms and architectures Runs bare-metal on the guest (i.e., without an OS) The SimBench Methodology Overview 12

32 Guest System Benchmarks Platform Library Arch. Library Timing Application Host System The SimBench Methodology Overview 13

33 Guest System Benchmarks Platform Library Arch. Library Timing Application Host System The SimBench Methodology Overview 14

34 Categories SimBench currently features five categories of benchmark: Code Generation Control Flow Exception Handling I/O Memory System A total of 18 benchmarks are in the suite. The SimBench Methodology Overview 15

35 Implementation The benchmarks are implemented entirely in C: No inline assembly in the benchmarks No weird intrinsics or builtins Some extensions used for code alignment The SimBench Methodology Implementation 16

36 Implementation - Defeating Optimisations We want to preserve interesting operations while still using our compiler optimisations: Use of empty volatile assembly statements Volatile memory accesses where necessary Indirect jumps via opaque pointers where necessary Benchmarks split into many objects to defeat inlining for(int i = 0; i < ITERATIONS; ++i) { volatile asm ("" ::: memory); } The SimBench Methodology Implementation 17

37 Implementation - Defeating Optimisations We want to preserve interesting operations while still using our compiler optimisations: Use of empty volatile assembly statements Volatile memory accesses where necessary Indirect jumps via opaque pointers where necessary Benchmarks split into many objects to defeat inlining static volatile uint32_t value = 0;... value = value; value = value; value = value; The SimBench Methodology Implementation 17

38 Implementation - Defeating Optimisations We want to preserve interesting operations while still using our compiler optimisations: Use of empty volatile assembly statements Volatile memory accesses where necessary Indirect jumps via opaque pointers where necessary Benchmarks split into many objects to defeat inlining static benchmark_kernel_t fn_table[];... while(iterations-- > 0) { fn_table[i % FN_TABLE_SIZE](); } The SimBench Methodology Implementation 17

39 Implementation - Defeating Optimisations We want to preserve interesting operations while still using our compiler optimisations: Use of empty volatile assembly statements Volatile memory accesses where necessary Indirect jumps via opaque pointers where necessary Benchmarks split into many objects to defeat inlining inter-page-direct.c: void ipd-fn-10();... ipd-fn-10(); inter-page-direct-10.c: void ipd-fn-9(); void ipd-fn-10() { ipd-fn-9(); } The SimBench Methodology Implementation 17

40 Guest System Benchmarks Platform Library Arch. Library Timing Application Host System The SimBench Methodology Porting SimBench 18

41 Porting To A New Platform To port SimBench to a new platform (where the architecture is already supported), 4 main components are required: A simple UART driver An IRQ Controller driver A description of the memory layout A linker script Lines of Code C ASM 0 ARM x86 The SimBench Methodology Porting SimBench 19

42 Porting To A New Architecture Porting to a new architecture is somewhat more complex. Bring system out of reset Manage page tables Manage interrupt/exception vectors Lines of Code C ASM 0 ARM X86 The SimBench Methodology Porting SimBench 20

43 Guest System Benchmarks Platform Library Arch. Library Timing Application Host System The SimBench Methodology Porting SimBench 21

44 Timing SimBench uses the Host system to collect benchmark timings: We don t trust the timing accuracy of the Guest Guest might report simulated cycles instead of real time Only needs platform-specific UART rather than Timer+IRQ+handler+... Guest Startup Prepare Benchmark Benchmark Kernel Cleanup Benchmark Guest Sends '[' Guest Sends ']' Host Time Benchmark Time The SimBench Methodology Porting SimBench 22

45 Evaluation We ran SimBench on a variety of platforms A range of full system simulators including QEMU A virtualized system, using KVM Natively on real hardware Evaluation 23

46 Categories - ARM Guest Simulators on x86 Host, QEMU-KVM and Hardware on ARM Host Speedup over QEMU-DBT Code Generation Control Flow Exception Handling I/O Memory System 0.01 QEMU-DBT SimIt-ARM Gem5 QEMU-KVM Hardware Evaluation 24

47 Categories Speedup v2.1.3 v2.1.2 v2.1.1 v2.1.0 v2.0.2 v2.0.1 v2.0.0 v1.7.2 v1.7.1 v1.7.0 Control Flow, QEMU-ARM on x86 Same-Page-Indirect Inter-Page-Indirect Same-Page-Direct Inter-Page-Direct v2.5.0-rc2 v2.5.0-rc1 v2.5.0-rc0 v2.4.1 v2.4.0 v v2.3.1 v2.3.0 v2.2.1 v2.2.0 Evaluation QEMU Version 25

48 Categories This represents 13% of executed instructions! Speedup v2.1.3 v2.1.2 v2.1.1 v2.1.0 v2.0.2 v2.0.1 v2.0.0 v1.7.2 v1.7.1 v1.7.0 Control Flow, QEMU-ARM on x86 Same-Page-Indirect Inter-Page-Indirect Same-Page-Direct Inter-Page-Direct v2.5.0-rc2 v2.5.0-rc1 v2.5.0-rc0 v2.4.1 v2.4.0 v v2.3.1 v2.3.0 v2.2.1 v2.2.0 Evaluation QEMU Version 26

49 Summary In summary: Existing benchmarking methods have several shortcomings SimBench is capable of addressing these shortcomings But SimBench does not replace application benchmarks Future Work: Additional categories of benchmark Ports to new architectures & platforms Improve robustness of existing benchmarks Summary 27

50 Thanks for Listening! Any Questions? SimBench is available now at 28

51 Benchmarks Code Generation Small Blocks Large Blocks Control Flow I/O Inter-Page Direct Inter-Page Indirect Intra-Page Direct Intra-Page Indirect Memory Mapped Device Coprocessor Access Exception Handling Data Access Fault Instruction Access Fault Undefined Instruction System Call External Software Interrupt Memory Cold Memory Access Hot Memory Access Nonprivileged Access TLB Eviction TLB Flush Extra Slides Benchmarks 29

52 Evaluation Platforms Machine ODROID-XU3 HP z440 CPU Exynos 5422 Xeon E v3 CPU GHz 2.0 (A15) 1.4 (A7) 3.5 (3.6 Boost) Memory 2GB 16GB Compiler gcc gcc OS Name Ubuntu Fedora 21 OS Kernel Extra Slides Benchmarks 30

Cross-architecture Virtualisation

Cross-architecture Virtualisation Cross-architecture Virtualisation Tom Spink Harry Wagstaff, Björn Franke School of Informatics University of Edinburgh Virtualisation Many of you will be familiar with same-architecture virtualisation

More information

KVM/ARM. Linux Symposium Christoffer Dall and Jason Nieh

KVM/ARM. Linux Symposium Christoffer Dall and Jason Nieh KVM/ARM Linux Symposium 2010 Christoffer Dall and Jason Nieh {cdall,nieh}@cs.columbia.edu Slides: http://www.cs.columbia.edu/~cdall/ols2010-presentation.pdf We like KVM It s Fast, Free, Open, and Simple!

More information

Microkernels and Portability. What is Portability wrt Operating Systems? Reuse of code for different platforms and processor architectures.

Microkernels and Portability. What is Portability wrt Operating Systems? Reuse of code for different platforms and processor architectures. Microkernels and Portability What is Portability wrt Operating Systems? Reuse of code for different platforms and processor architectures. Contents Overview History Towards Portability L4 Microkernels

More information

A Fast Instruction Set Simulator for RISC-V

A Fast Instruction Set Simulator for RISC-V A Fast Instruction Set Simulator for RISC-V Maxim.Maslov@esperantotech.com Vadim.Gimpelson@esperantotech.com Nikita.Voronov@esperantotech.com Dave.Ditzel@esperantotech.com Esperanto Technologies, Inc.

More information

Lec 22: Interrupts. Kavita Bala CS 3410, Fall 2008 Computer Science Cornell University. Announcements

Lec 22: Interrupts. Kavita Bala CS 3410, Fall 2008 Computer Science Cornell University. Announcements Lec 22: Interrupts Kavita Bala CS 3410, Fall 2008 Computer Science Cornell University HW 3 HW4: due this Friday Announcements PA 3 out Nov 14 th Due Nov 25 th (feel free to turn it in early) Demos and

More information

Virtualization. Operating Systems, 2016, Meni Adler, Danny Hendler & Amnon Meisels

Virtualization. Operating Systems, 2016, Meni Adler, Danny Hendler & Amnon Meisels Virtualization Operating Systems, 2016, Meni Adler, Danny Hendler & Amnon Meisels 1 What is virtualization? Creating a virtual version of something o Hardware, operating system, application, network, memory,

More information

Hypervisors on ARM Overview and Design choices

Hypervisors on ARM Overview and Design choices Hypervisors on ARM Overview and Design choices Julien Grall Root Linux Conference 2017 ARM 2017 About me Working on ARM virtualization for the past 4 years With ARM since 2016 Co-maintaining

More information

ECE 598 Advanced Operating Systems Lecture 4

ECE 598 Advanced Operating Systems Lecture 4 ECE 598 Advanced Operating Systems Lecture 4 Vince Weaver http://www.eece.maine.edu/~vweaver vincent.weaver@maine.edu 28 January 2016 Announcements HW#1 was due HW#2 was posted, will be tricky Let me know

More information

A Framework for Safe Automatic Data Reorganization

A Framework for Safe Automatic Data Reorganization Compiler Technology A Framework for Safe Automatic Data Reorganization Shimin Cui (Speaker), Yaoqing Gao, Roch Archambault, Raul Silvera IBM Toronto Software Lab Peng Peers Zhao, Jose Nelson Amaral University

More information

Advanced Operating Systems Embedded from Scratch: System boot and hardware access. Federico Terraneo

Advanced Operating Systems Embedded from Scratch: System boot and hardware access. Federico Terraneo Embedded from Scratch: System boot and hardware access federico.terraneo@polimi.it Outline 2/28 Bare metal programming HW architecture overview Linker script Boot process High level programming languages

More information

Cortex-A9 MPCore Software Development

Cortex-A9 MPCore Software Development Cortex-A9 MPCore Software Development Course Description Cortex-A9 MPCore software development is a 4 days ARM official course. The course goes into great depth and provides all necessary know-how to develop

More information

Under the Compiler's Hood: Supercharge Your PLAYSTATION 3 (PS3 ) Code. Understanding your compiler is the key to success in the gaming world.

Under the Compiler's Hood: Supercharge Your PLAYSTATION 3 (PS3 ) Code. Understanding your compiler is the key to success in the gaming world. Under the Compiler's Hood: Supercharge Your PLAYSTATION 3 (PS3 ) Code. Understanding your compiler is the key to success in the gaming world. Supercharge your PS3 game code Part 1: Compiler internals.

More information

CS5460: Operating Systems

CS5460: Operating Systems CS5460: Operating Systems Lecture 2: OS Hardware Interface (Chapter 2) Course web page: http://www.eng.utah.edu/~cs5460/ CADE lab: WEB L224 and L226 http://www.cade.utah.edu/ Projects will be on Linux

More information

CS533 Concepts of Operating Systems. Jonathan Walpole

CS533 Concepts of Operating Systems. Jonathan Walpole CS533 Concepts of Operating Systems Jonathan Walpole Improving IPC by Kernel Design & The Performance of Micro- Kernel Based Systems The IPC Dilemma IPC is very import in µ-kernel design - Increases modularity,

More information

CSE 237B Fall 2009 Virtualization, Security and RTOS. Rajesh Gupta Computer Science and Engineering University of California, San Diego.

CSE 237B Fall 2009 Virtualization, Security and RTOS. Rajesh Gupta Computer Science and Engineering University of California, San Diego. CSE 237B Fall 2009 Virtualization, Security and RTOS Rajesh Gupta Computer Science and Engineering University of California, San Diego. Overview What is virtualization? Types of virtualization and VMs

More information

Last Time. Compiler requirements C preprocessor Volatile

Last Time. Compiler requirements C preprocessor Volatile Last Time Compiler requirements C preprocessor Volatile Today Coding and translation of interrupt handlers Coding inline assembly Compiler intrinsics Interrupts 30-second interrupt review: Interrupts are

More information

Making Dynamic Instrumentation Great Again

Making Dynamic Instrumentation Great Again Making Dynamic Instrumentation Great Again Malware Research Team @ @xabiugarte [advertising space ] Deep Packer Inspector https://packerinspector.github.io https://packerinspector.com Many instrumentation

More information

Porting bhyve on ARM. Mihai Carabas, Peter Grehan BSDCan 2016 University of Ottawa Ottawa, Canada June 10 11, 2016

Porting bhyve on ARM. Mihai Carabas, Peter Grehan BSDCan 2016 University of Ottawa Ottawa, Canada June 10 11, 2016 Porting bhyve on ARM Mihai Carabas, Peter Grehan {mihai,grehan}@freebsd.org BSDCan 2016 University of Ottawa Ottawa, Canada June 10 11, 2016 About me University POLITEHNICA of Bucharest PhD Student: virtualization

More information

Anne Bracy CS 3410 Computer Science Cornell University

Anne Bracy CS 3410 Computer Science Cornell University Anne Bracy CS 3410 Computer Science Cornell University The slides were originally created by Deniz ALTINBUKEN. P&H Chapter 4.9, pages 445 452, appendix A.7 Manages all of the software and hardware on the

More information

An Overview of the BLITZ System

An Overview of the BLITZ System An Overview of the BLITZ System Harry H. Porter III Department of Computer Science Portland State University Introduction The BLITZ System is a collection of software designed to support a university-level

More information

24-vm.txt Mon Nov 21 22:13: Notes on Virtual Machines , Fall 2011 Carnegie Mellon University Randal E. Bryant.

24-vm.txt Mon Nov 21 22:13: Notes on Virtual Machines , Fall 2011 Carnegie Mellon University Randal E. Bryant. 24-vm.txt Mon Nov 21 22:13:36 2011 1 Notes on Virtual Machines 15-440, Fall 2011 Carnegie Mellon University Randal E. Bryant References: Tannenbaum, 3.2 Barham, et al., "Xen and the art of virtualization,"

More information

64-bit ARM Unikernels on ukvm

64-bit ARM Unikernels on ukvm 64-bit ARM Unikernels on ukvm Wei Chen Senior Software Engineer Tokyo / Open Source Summit Japan 2017 2017-05-31 Thanks to Dan Williams, Martin Lucina, Anil Madhavapeddy and other Solo5

More information

Advanced Systems Security: Virtual Machine Systems

Advanced Systems Security: Virtual Machine Systems Systems and Internet Infrastructure Security Network and Security Research Center Department of Computer Science and Engineering Pennsylvania State University, University Park PA Advanced Systems Security:

More information

Real Safe Times in the Jailhouse Hypervisor Unrestricted Siemens AG All rights reserved

Real Safe Times in the Jailhouse Hypervisor Unrestricted Siemens AG All rights reserved Siemens Corporate Technology Real Safe Times in the Jailhouse Hypervisor Real Safe Times in the Jailhouse Hypervisor Agenda Jailhouse introduction Safe isolation Architecture support Jailhouse application

More information

Implementing Secure Software Systems on ARMv8-M Microcontrollers

Implementing Secure Software Systems on ARMv8-M Microcontrollers Implementing Secure Software Systems on ARMv8-M Microcontrollers Chris Shore, ARM TrustZone: A comprehensive security foundation Non-trusted Trusted Security separation with TrustZone Isolate trusted resources

More information

Dan Noé University of New Hampshire / VeloBit

Dan Noé University of New Hampshire / VeloBit Dan Noé University of New Hampshire / VeloBit A review of how the CPU works The operating system kernel and when it runs User and kernel mode Device drivers Virtualization of memory Virtual memory Paging

More information

LIA. Large Installation Administration. Virtualization

LIA. Large Installation Administration. Virtualization LIA Large Installation Administration Virtualization 2 Virtualization What is Virtualization "a technique for hiding the physical characteristics of computing resources from the way in which other systems,

More information

Malware

Malware reloaded Malware Research Team @ @xabiugarte Motivation Design principles / architecture Features Use cases Future work Dynamic Binary Instrumentation Techniques to trace the execution of a binary (or

More information

AArch64 Virtualization

AArch64 Virtualization Connect AArch64 User Virtualization Guide Version Version 0.11.0 Page 1 of 13 Revision Information The following revisions have been made to this User Guide. Date Issue Confidentiality Change 03 March

More information

Xen on ARM ARMv7 with virtualization extensions

Xen on ARM ARMv7 with virtualization extensions Xen on ARM ARMv7 with virtualization extensions Stefano Stabellini Why? Why? smartphones: getting smarter Quad-core 1.4 GHz Cortex-A9 ARM Servers coming to market 4GB RAM, 4 cores per node 3 x 6 x 4 x

More information

Computer Organization & Assembly Language Programming (CSE 2312)

Computer Organization & Assembly Language Programming (CSE 2312) Computer Organization & Assembly Language Programming (CSE 2312) Lecture 15: Running ARM Programs in QEMU and Debugging with gdb Taylor Johnson Announcements and Outline Homework 5 due Thursday Midterm

More information

Back To The Future: A Radical Insecure Design of KVM on ARM

Back To The Future: A Radical Insecure Design of KVM on ARM Back To The Future: A Radical Insecure Design of KVM on ARM Abstract In ARM, there are certain instructions that generate exceptions. Such instructions are typically executed to request a service from

More information

Syscalls, exceptions, and interrupts, oh my!

Syscalls, exceptions, and interrupts, oh my! Syscalls, exceptions, and interrupts, oh my! Hakim Weatherspoon CS 3410 Computer Science Cornell University [Altinbuken, Weatherspoon, Bala, Bracy, McKee, and Sirer] Announcements P4-Buffer Overflow is

More information

Lecture 5. KVM for ARM. Christoffer Dall and Jason Nieh. 5 November, Operating Systems Practical. OSP Lecture 5, KVM for ARM 1/42

Lecture 5. KVM for ARM. Christoffer Dall and Jason Nieh. 5 November, Operating Systems Practical. OSP Lecture 5, KVM for ARM 1/42 Lecture 5 KVM for ARM Christoffer Dall and Jason Nieh Operating Systems Practical 5 November, 2014 OSP Lecture 5, KVM for ARM 1/42 Contents Virtualization KVM Virtualization on ARM KVM/ARM: System architecture

More information

9/19/18. COS 318: Operating Systems. Overview. Important Times. Hardware of A Typical Computer. Today CPU. I/O bus. Network

9/19/18. COS 318: Operating Systems. Overview. Important Times. Hardware of A Typical Computer. Today CPU. I/O bus. Network Important Times COS 318: Operating Systems Overview Jaswinder Pal Singh and a Fabulous Course Staff Computer Science Department Princeton University (http://www.cs.princeton.edu/courses/cos318/) u Precepts:

More information

Comprehensive Kernel Instrumentation via Dynamic Binary Translation

Comprehensive Kernel Instrumentation via Dynamic Binary Translation Comprehensive Kernel Instrumentation via Dynamic Binary Translation Peter Feiner Angela Demke Brown Ashvin Goel University of Toronto 011 Complexity of Operating Systems 012 Complexity of Operating Systems

More information

QEMU: Architecture and Internals Lecture for the Embedded Systems Course CSD, University of Crete (April 18, 2016)

QEMU: Architecture and Internals Lecture for the Embedded Systems Course CSD, University of Crete (April 18, 2016) QEMU: Architecture and Internals Lecture for the Embedded Systems Course CSD, University of Crete (April 18, 2016) ManolisMarazakis (maraz@ics.forth.gr) Institute of Computer Science (ICS) Foundation for

More information

Advanced Systems Security: Virtual Machine Systems

Advanced Systems Security: Virtual Machine Systems Systems and Internet Infrastructure Security Network and Security Research Center Department of Computer Science and Engineering Pennsylvania State University, University Park PA Advanced Systems Security:

More information

Trusted Firmware Deep Dive. Dan Handley Charles Garcia-Tobin

Trusted Firmware Deep Dive. Dan Handley Charles Garcia-Tobin Trusted Firmware Deep Dive Dan Handley Charles Garcia-Tobin 1 Agenda Architecture overview Memory usage Code organisation Cold boot deep dive PSCI deep dive 2 Example System Architecture Normal World Secure

More information

COS 318: Operating Systems. Overview. Prof. Margaret Martonosi Computer Science Department Princeton University

COS 318: Operating Systems. Overview. Prof. Margaret Martonosi Computer Science Department Princeton University COS 318: Operating Systems Overview Prof. Margaret Martonosi Computer Science Department Princeton University http://www.cs.princeton.edu/courses/archive/fall11/cos318/ Announcements Precepts: Tue (Tonight)!

More information

Advanced Computer Architecture

Advanced Computer Architecture ECE 563 Advanced Computer Architecture Fall 2007 Lecture 14: Virtual Machines 563 L14.1 Fall 2009 Outline Types of Virtual Machine User-level (or Process VMs) System-level Techniques for implementing all

More information

What is KVM? KVM patch. Modern hypervisors must do many things that are already done by OSs Scheduler, Memory management, I/O stacks

What is KVM? KVM patch. Modern hypervisors must do many things that are already done by OSs Scheduler, Memory management, I/O stacks LINUX-KVM The need for KVM x86 originally virtualization unfriendly No hardware provisions Instructions behave differently depending on privilege context(popf) Performance suffered on trap-and-emulate

More information

Multi-core processors are here, but how do you resolve data bottlenecks in native code?

Multi-core processors are here, but how do you resolve data bottlenecks in native code? Multi-core processors are here, but how do you resolve data bottlenecks in native code? hint: it s all about locality Michael Wall October, 2008 part I of II: System memory 2 PDC 2008 October 2008 Session

More information

Operating Systems 4/27/2015

Operating Systems 4/27/2015 Virtualization inside the OS Operating Systems 24. Virtualization Memory virtualization Process feels like it has its own address space Created by MMU, configured by OS Storage virtualization Logical view

More information

Efficient Software Based Fault Isolation. Software Extensibility

Efficient Software Based Fault Isolation. Software Extensibility Efficient Software Based Fault Isolation Robert Wahbe, Steven Lucco Thomas E. Anderson, Susan L. Graham Software Extensibility Operating Systems Kernel modules Device drivers Unix vnodes Application Software

More information

Xen. past, present and future. Stefano Stabellini

Xen. past, present and future. Stefano Stabellini Xen past, present and future Stefano Stabellini Xen architecture: PV domains Xen arch: driver domains Xen: advantages - small surface of attack - isolation - resilience - specialized algorithms (scheduler)

More information

Secure software guidelines for ARMv8-M. for ARMv8-M. Version 0.1. Version 2.0. Copyright 2017 ARM Limited or its affiliates. All rights reserved.

Secure software guidelines for ARMv8-M. for ARMv8-M. Version 0.1. Version 2.0. Copyright 2017 ARM Limited or its affiliates. All rights reserved. Connect Secure software User Guide guidelines for ARMv8-M Version 0.1 Version 2.0 Page 1 of 19 Revision Information The following revisions have been made to this User Guide. Date Issue Confidentiality

More information

AN316 Determining the stack usage of applications

AN316 Determining the stack usage of applications Determining the stack usage of applications AN 316, Summer 2018, V 1.0 feedback@keil.com Abstract Determining the required stack sizes for a software project is a crucial part of the development process.

More information

CARE: the Comprehensive Archiver for Reproducible Execution

CARE: the Comprehensive Archiver for Reproducible Execution Introducing CARE CARE: the Comprehensive Archiver for Reproducible Execution STMicroelectronics, Grenoble, France TRUST 14 June 12th, 2014 Outline Introducing CARE 1 Introducing CARE 2 Typical use cases

More information

Operating Systems CMPSCI 377 Spring Mark Corner University of Massachusetts Amherst

Operating Systems CMPSCI 377 Spring Mark Corner University of Massachusetts Amherst Operating Systems CMPSCI 377 Spring 2017 Mark Corner University of Massachusetts Amherst Last Class: Intro to OS An operating system is the interface between the user and the architecture. User-level Applications

More information

Performance analysis basics

Performance analysis basics Performance analysis basics Christian Iwainsky Iwainsky@rz.rwth-aachen.de 25.3.2010 1 Overview 1. Motivation 2. Performance analysis basics 3. Measurement Techniques 2 Why bother with performance analysis

More information

KVM/ARM. Marc Zyngier LPC 12

KVM/ARM. Marc Zyngier LPC 12 KVM/ARM Marc Zyngier LPC 12 For example: if a processor is in Supervisor mode and Secure state, it is in Secure Supervisor mode ARM Architecture if a processor is Virtualization

More information

64 bit Bare Metal Programming on RPI-3. Tristan Gingold

64 bit Bare Metal Programming on RPI-3. Tristan Gingold 64 bit Bare Metal Programming on RPI-3 Tristan Gingold gingold@adacore.com What is Bare Metal? Images: Wikipedia No box What is Bare Metal? No Operating System Your application is the OS Why Bare Board?

More information

INSTRUCTION LEVEL PARALLELISM

INSTRUCTION LEVEL PARALLELISM INSTRUCTION LEVEL PARALLELISM Slides by: Pedro Tomás Additional reading: Computer Architecture: A Quantitative Approach, 5th edition, Chapter 2 and Appendix H, John L. Hennessy and David A. Patterson,

More information

ARM Trusted Firmware: Changes for Axxia

ARM Trusted Firmware: Changes for Axxia ARM Trusted Firmware: Changes for Axxia atf_84091c4_axxia_1.39 Clean up klocwork issues, Critical and Error only, and only in code added to support Axxia. atf_84091c4_axxia_1.38 Allow non-secure access

More information

ARM Processors for Embedded Applications

ARM Processors for Embedded Applications ARM Processors for Embedded Applications Roadmap for ARM Processors ARM Architecture Basics ARM Families AMBA Architecture 1 Current ARM Core Families ARM7: Hard cores and Soft cores Cache with MPU or

More information

To EL2, and Beyond! connect.linaro.org. Optimizing the Design and Implementation of KVM/ARM

To EL2, and Beyond! connect.linaro.org. Optimizing the Design and Implementation of KVM/ARM To EL2, and Beyond! Optimizing the Design and Implementation of KVM/ARM LEADING COLLABORATION IN THE ARM ECOSYSTEM Christoffer Dall Shih-Wei Li connect.linaro.org

More information

CSCI 8530 Advanced Operating Systems. Part 19 Virtualization

CSCI 8530 Advanced Operating Systems. Part 19 Virtualization CSCI 8530 Advanced Operating Systems Part 19 Virtualization Virtualization This is a very old idea It appears in many different forms A variety of commercial products exist The idea has become hot again

More information

SFO17-403: Optimizing the Design and Implementation of KVM/ARM

SFO17-403: Optimizing the Design and Implementation of KVM/ARM SFO17-403: Optimizing the Design and Implementation of KVM/ARM Christoffer Dall connect.linaro.org Efficient, isolated duplicate of the real machine Popek and Golberg [Formal requirements for virtualizable

More information

Performance Aspects of x86 Virtualization

Performance Aspects of x86 Virtualization TA68 Performance Aspects of x86 Virtualization Ole Agesen Principal Engineer VMware Talk Outline Part 1. Problem statement Part 2. Instruction set virtualization techniques Part 3. Memory virtualization

More information

Cortex-A15 MPCore Software Development

Cortex-A15 MPCore Software Development Cortex-A15 MPCore Software Development Course Description Cortex-A15 MPCore software development is a 4 days ARM official course. The course goes into great depth and provides all necessary know-how to

More information

PathFinder-XD for MIPS Powered Devices. Simulator

PathFinder-XD for MIPS Powered Devices. Simulator v.1.0.6, 15 th January 2013 PathFinder-XD for MIPS Powered Devices Simulator Contents 1. Introduction 2 2. Installation 2 2.1 Windows Installation 2 2.2 Linux Installation 2 3. Using PathFinder-XD with

More information

How to cross compile with LLVM based tools. Peter Smith, Linaro

How to cross compile with LLVM based tools. Peter Smith, Linaro How to cross compile with LLVM based tools Peter Smith, Linaro Introduction and assumptions What we are covering Today About me What is cross compilation? How does cross compilation work with Clang and

More information

System Simulator for x86

System Simulator for x86 MARSS Micro Architecture & System Simulator for x86 CAPS Group @ SUNY Binghamton Presenter Avadh Patel http://marss86.org Present State of Academic Simulators Majority of Academic Simulators: Are for non

More information

Virtualization. Adam Belay

Virtualization. Adam Belay Virtualization Adam Belay What is a virtual machine Simulation of a computer Running as an application on a host computer Accurate Isolated Fast Why use a virtual machine? To run multiple

More information

Program SoC using C Language

Program SoC using C Language Program SoC using C Language 1 Module Overview General understanding of C, program compilation, program image, data storage, data type, and how to access peripherals using C language; Program SoC using

More information

CS 410/510. Mark P Jones Portland State University

CS 410/510. Mark P Jones Portland State University CS 41/51 Languages & Low-Level Programming Mark P Jones Portland State University Fall 21 Week 2: Bare Metal and the Boot Process 1 Copyright Notice These slides are distributed under the Creative Commons

More information

Written Exam / Tentamen

Written Exam / Tentamen Written Exam / Tentamen Computer Organization and Components / Datorteknik och komponenter (IS1500), 9 hp Computer Hardware Engineering / Datorteknik, grundkurs (IS1200), 7.5 hp KTH Royal Institute of

More information

Introduction to gem5. Nizamudheen Ahmed Texas Instruments

Introduction to gem5. Nizamudheen Ahmed Texas Instruments Introduction to gem5 Nizamudheen Ahmed Texas Instruments 1 Introduction A full-system computer architecture simulator Open source tool focused on architectural modeling BSD license Encompasses system-level

More information

QEMU for Xilinx ZynqMP. V Aug-20

QEMU for Xilinx ZynqMP. V Aug-20 QEMU for Xilinx ZynqMP Edgar E. Iglesias V2 2015-Aug-20 ZynqMP SoC New Chip (Zynq NG) Aggressive target for QEMU as early SW platform emulating WiP chip BootROMs, Boot-loaders,

More information

I/O and virtualization

I/O and virtualization I/O and virtualization CSE-C3200 Operating systems Autumn 2015 (I), Lecture 8 Vesa Hirvisalo Today I/O management Control of I/O Data transfers, DMA (Direct Memory Access) Buffering Single buffering Double

More information

Virtualization. Dr. Yingwu Zhu

Virtualization. Dr. Yingwu Zhu Virtualization Dr. Yingwu Zhu Virtualization Definition Framework or methodology of dividing the resources of a computer into multiple execution environments. Types Platform Virtualization: Simulate a

More information

Advanced Operating Systems (CS 202) Virtualization

Advanced Operating Systems (CS 202) Virtualization Advanced Operating Systems (CS 202) Virtualization Virtualization One of the natural consequences of the extensibility research we discussed What is virtualization and what are the benefits? 2 Virtualization

More information

Changpeng Liu. Senior Storage Software Engineer. Intel Data Center Group

Changpeng Liu. Senior Storage Software Engineer. Intel Data Center Group Changpeng Liu Senior Storage Software Engineer Intel Data Center Group Legal Notices and Disclaimers Intel technologies features and benefits depend on system configuration and may require enabled hardware,

More information

An Overview of the BLITZ Computer Hardware

An Overview of the BLITZ Computer Hardware An Overview of the BLITZ Computer Hardware Introduction Harry H. Porter III Department of Computer Science Portland State University The BLITZ computer was designed solely to support the development of

More information

Accelerating Pointer Chasing in 3D-Stacked Memory: Challenges, Mechanisms, Evaluation Kevin Hsieh

Accelerating Pointer Chasing in 3D-Stacked Memory: Challenges, Mechanisms, Evaluation Kevin Hsieh Accelerating Pointer Chasing in 3D-Stacked : Challenges, Mechanisms, Evaluation Kevin Hsieh Samira Khan, Nandita Vijaykumar, Kevin K. Chang, Amirali Boroumand, Saugata Ghose, Onur Mutlu Executive Summary

More information

ECE254 Lab3 Tutorial. Introduction to MCB1700 Hardware Programming. Irene Huang

ECE254 Lab3 Tutorial. Introduction to MCB1700 Hardware Programming. Irene Huang ECE254 Lab3 Tutorial Introduction to MCB1700 Hardware Programming Irene Huang Lab3 Requirements : API Dynamic Memory Management: void * os_mem_alloc (int size, unsigned char flag) Flag takes two values:

More information

CSCE 410/611: Virtualization!

CSCE 410/611: Virtualization! CSCE 410/611: Virtualization! Definitions, Terminology! Why Virtual Machines?! Mechanics of Virtualization! Virtualization of Resources (Memory)! Some slides made available Courtesy of Gernot Heiser, UNSW.!

More information

PROTECTING VM REGISTER STATE WITH AMD SEV-ES DAVID KAPLAN LSS 2017

PROTECTING VM REGISTER STATE WITH AMD SEV-ES DAVID KAPLAN LSS 2017 PROTECTING VM REGISTER STATE WITH AMD SEV-ES DAVID KAPLAN LSS 2017 BACKGROUND-- HARDWARE MEMORY ENCRYPTION AMD Secure Memory Encryption (SME) / AMD Secure Encrypted Virtualization (SEV) Hardware AES engine

More information

QuartzV: Bringing Quality of Time to Virtual Machines

QuartzV: Bringing Quality of Time to Virtual Machines QuartzV: Bringing Quality of Time to Virtual Machines Sandeep D souza and Raj Rajkumar Carnegie Mellon University IEEE RTAS @ CPS Week 2018 1 A Shared Notion of Time Coordinated Actions Ordering of Events

More information

COMPUTER ORGANIZATION AND DESI

COMPUTER ORGANIZATION AND DESI COMPUTER ORGANIZATION AND DESIGN 5 Edition th The Hardware/Software Interface Chapter 4 The Processor 4.1 Introduction Introduction CPU performance factors Instruction count Determined by ISA and compiler

More information

Initial Explorations of ARM Processors for Scientific Computing

Initial Explorations of ARM Processors for Scientific Computing Initial Explorations of ARM Processors for Scientific Computing Peter Elmer - Princeton University David Abdurachmanov - Vilnius University Giulio Eulisse, Shahzad Muzaffar - FNAL Power limitations for

More information

Lab11 - Bare Metal Programming. Department of Computer Science and Information Engineering National Taiwan University

Lab11 - Bare Metal Programming. Department of Computer Science and Information Engineering National Taiwan University Lab11 - Bare Metal Programming 1 / 16 Understand the process of OS development Write a minimal kernel for RPi 2 2 / 16 Host System Windows Build System Ubuntu 15.10 (or above) 64-bit Target System Raspberry

More information

Cloud Computing Virtualization

Cloud Computing Virtualization Cloud Computing Virtualization Anil Madhavapeddy anil@recoil.org Contents Virtualization. Layering and virtualization. Virtual machine monitor. Virtual machine. x86 support for virtualization. Full and

More information

A Survey on Virtualization Technologies

A Survey on Virtualization Technologies A Survey on Virtualization Technologies Virtualization is HOT Microsoft acquires Connectix Corp. EMC acquires VMware Veritas acquires Ejascent IBM, already a pioneer Sun working hard on it HP picking up

More information

Table of Contents. 2.7 Self-modifying code and translated code invalidation test-i linux-test... 9

Table of Contents. 2.7 Self-modifying code and translated code invalidation test-i linux-test... 9 QEMU Internals i Table of Contents 1 Introduction..................................... 1 1.1 Features........................................................ 1 1.2 x86 and x86-64 emulation.......................................

More information

Darek Mihocka, Emulators.com Stanislav Shwartsman, Intel Corp. June

Darek Mihocka, Emulators.com Stanislav Shwartsman, Intel Corp. June Darek Mihocka, Emulators.com Stanislav Shwartsman, Intel Corp. June 21 2008 Agenda Introduction Gemulator Bochs Proposed ISA Extensions Conclusions and Future Work Q & A Jun-21-2008 AMAS-BT 2008 2 Introduction

More information

Alex Bennée stsquad on #qemu Virtualization Linaro Projects: QEMU, KVM, ARM 2. 1

Alex Bennée stsquad on #qemu Virtualization Linaro Projects: QEMU, KVM, ARM 2. 1 VECTORS MEET VIRTUALIZATION ALEX BENNÉE FOSDEM 2018 1 INTRODUCTION Alex Bennée alex.bennee@linaro.org stsquad on #qemu Virtualization Developer @ Linaro Projects: QEMU, KVM, ARM 2. 1 WHAT IS QEMU? From:

More information

Pre-virtualization internals

Pre-virtualization internals Pre-virtualization internals Joshua LeVasseur 3 March 2006 L4Ka.org Universität Karlsruhe (TH) Compile time overview Compiler C code Assembler code OS source code Hand-written assembler Afterburner Assembler

More information

button.c The little button that wouldn t

button.c The little button that wouldn t Goals for today The little button that wouldn't :( the volatile keyword Pointer operations => ARM addressing modes Implementation of C function calls Management of runtime stack, register use button.c

More information

Cortex-A5 MPCore Software Development

Cortex-A5 MPCore Software Development Cortex-A5 MPCore Software Development תיאורהקורס קורסDevelopment Cortex-A5 MPCore Software הינו הקורס הרשמי שלחברת ARM בן 4 ימים, מעמיקמאודומכסהאתכלהנושאיםהקשוריםבפיתוחתוכנה לפלטפורמותמבוססותליבת.Cortex-A5

More information

Administrivia. Lab 1 due Friday 12pm. We give will give short extensions to groups that run into trouble. But us:

Administrivia. Lab 1 due Friday 12pm. We give will give short extensions to groups that run into trouble. But  us: Administrivia Lab 1 due Friday 12pm. We give will give short extensions to groups that run into trouble. But email us: - How much is done & left? - How much longer do you need? Attend section Friday at

More information

The Challenges of X86 Hardware Virtualization. GCC- Virtualization: Rajeev Wankar 36

The Challenges of X86 Hardware Virtualization. GCC- Virtualization: Rajeev Wankar 36 The Challenges of X86 Hardware Virtualization GCC- Virtualization: Rajeev Wankar 36 The Challenges of X86 Hardware Virtualization X86 operating systems are designed to run directly on the bare-metal hardware,

More information

Using kgdb and the kgdb Internals

Using kgdb and the kgdb Internals Using kgdb and the kgdb Internals Jason Wessel jason.wessel@windriver.com Tom Rini trini@kernel.crashing.org Amit S. Kale amitkale@linsyssoft.com Using kgdb and the kgdb Internals by Jason Wessel by Tom

More information

F28HS Hardware-Software Interface: Systems Programming

F28HS Hardware-Software Interface: Systems Programming F28HS Hardware-Software Interface: Systems Programming Hans-Wolfgang Loidl School of Mathematical and Computer Sciences, Heriot-Watt University, Edinburgh Semester 2 2017/18 0 No proprietary software has

More information

CPUs. Caching: The Basic Idea. Cache : MainMemory :: Window : Caches. Memory management. CPU performance. 1. Door 2. Bigger Door 3. The Great Outdoors

CPUs. Caching: The Basic Idea. Cache : MainMemory :: Window : Caches. Memory management. CPU performance. 1. Door 2. Bigger Door 3. The Great Outdoors CPUs Caches. Memory management. CPU performance. Cache : MainMemory :: Window : 1. Door 2. Bigger Door 3. The Great Outdoors 4. Horizontal Blinds 18% 9% 64% 9% Door Bigger Door The Great Outdoors Horizontal

More information

The benefits and costs of writing a POSIX kernel in a high-level language

The benefits and costs of writing a POSIX kernel in a high-level language 1 / 38 The benefits and costs of writing a POSIX kernel in a high-level language Cody Cutler, M. Frans Kaashoek, Robert T. Morris MIT CSAIL Should we use high-level languages to build OS kernels? 2 / 38

More information

CS 471 Operating Systems. Yue Cheng. George Mason University Fall 2017

CS 471 Operating Systems. Yue Cheng. George Mason University Fall 2017 CS 471 Operating Systems Yue Cheng George Mason University Fall 2017 Outline o Process concept o Process creation o Process states and scheduling o Preemption and context switch o Inter-process communication

More information

Last Time. Low-level parts of the toolchain for embedded systems. Any weak link in the toolchain will hinder development

Last Time. Low-level parts of the toolchain for embedded systems. Any weak link in the toolchain will hinder development Last Time Low-level parts of the toolchain for embedded systems Ø Linkers Ø Programmers Ø Booting an embedded CPU Ø Debuggers Ø JTAG Any weak link in the toolchain will hinder development Today: Intro

More information

EECS 213 Introduction to Computer Systems Dinda, Spring Homework 3. Memory and Cache

EECS 213 Introduction to Computer Systems Dinda, Spring Homework 3. Memory and Cache Homework 3 Memory and Cache 1. Reorder the fields in this structure so that the structure will (a) consume the most space and (b) consume the least space on an IA32 machine on Linux. struct foo { double

More information