2 Optimization Techniques Basic Concepts Programming Algorithm and Techniques
3 Optimization Techniques Basic Concepts What is Optimization Methods Space and Time Optimization Evaluation When not to Optimize Identify Critical Area Confusion to Source Level Debugger
4 Optimization Techniques Methods Choice of Complier Compiler setting Programming Algorithm and Techniques Rewrite Program in Assembly Code Profilers Disassemble Code Analysis
5 Optimization Techniques Programming Algorithm & Techniques Data Handling Flow Control Other Handling
6 Optimization Techniques Data Handling RAM Usage Data Type Usage Avoid Type Conversions Unsigned Advantage Float and Double Constant and Volatile Data Alignment Arrangement and Packing Pass by Reference Register Store and Restore
7 Optimization Techniques Flow Control Use of Switch Statement Inline Function Loop Unrolling Loop Hoisting Loop Overhead
8 Optimization Techniques Other Handling Use of Operators Inline Assembly Fixed Point and Floating Point
9 Definition Optimization is a process of improving efficiency of a program in time (speed) or space (size)
11 Cont.. It can be observed that optimization with one method may affect the other. A general phenomenon is faster operating code will have a bigger code size, whereas smaller code size will have a slower execution speed. However this may not be always true.
12 Evaluation A program s optimization level can be evaluated based on the measurement of: Total code size Total number of execution cycles (time taken). These are determined by the basic component of a program, which is the assembly code (Instruction set / Op-code / Mnemonic).
13 Cont.. In the MCU manual, these assembly codes characteristic are detailed: Instruction length -> Determine Code Size Number of execution states -> Determine Execution Speed
14 Do Not Optimize It is suggested that unless necessary, optimization shall be omitted. This process should be planned for, and not done at the end of the development cycle, whereby most scenarios had been tested. This may cause changes to the initial design and introduce more wastage of time and resources in debugging.
15 Data Type Usage The use of correct data type is important in a recursive calculation or large array processing. The extra size, which is not required, is taking up much space and processing time.
16 RAM Usage Shortage of RAM space is a common concern. The nominal RAM size for most 8-bit MCU is a mere 1 to 4K bytes size. Three main components of RAM are: Stack Heap Global data The reduction in one component will enable the increase in the others. Unlike stack and heap, which are dynamic in nature, global data is fixed in size. Programmers may like to consider the reduction of global data usage, and place more emphasis on local variables control in stack and registers.
17 I/O considerations Instead of accessing external bus for two times, it may be better to read the data as a word (16-bit external data bus), and process it as a byte.
18 Use Variables of the Same Type for Processing Programmers should plan to use the same type of variables for processing. Type conversion must be avoided. Otherwise, precious cycles will be waste to convert one type to another (Unsigned and signed variables are considered as different types).
19 Use of Unsigned Type All variables must be defined as unsigned unless mathematical calculation for the signed bit is necessary. The signed-bit may create complication, unwanted failure, slower processing and extra ROM size.
20 Float and Double Maximum value of Float = 0x7F7F FFFF Maximum value of Double = 0x7F7F FFFF FFFF FFFF To avoid the unnecessary type conversion or confusion, programmers can assign the letter f following the numeric value. x = y + 0.2f;
21 Data Declaration - Constant The const keyword is to define the data as a constant, which will allocate it in the ROM space. Otherwise a RAM space will also be reserved for this data. This is unnecessary as the constant data is supposed to be read-only.
22 Data Initialization at Declaration Data should be initialized at declaration.
23 Data Definition Arrangement and Packing The declaration of the components in a structure will determine how the components are being stored. Due to the memory alignment, it is possible to have dummy area within the structure. It is advised to place all similar size variables in the same group.
24 Data Arrangement
25 Structure Padding As the structure is packed, integer b will not be aligned. This will improve the RAM size but operational speed will be degraded, as the access of b will take up two cycles.
26 Global and Local Variables Local variable is preferred over the global variable in a function. Generally, global variables are stored in the memory, whereas, local variables are stored in the register. Since register access is faster than the memory access, implementing local variables will improve speed operation. Moreover, code portability also encourages the use of local variables. However if there are more local variables than the available registers, the local variables will be temporary stored in the stack.
27 Passing Reference as Parameters Larger numbers of parameters may be costly due to the number of pushing and popping actions on each function call. It is more efficient to pass structure reference as parameters to reduce this overhead.
28 Return Value The return value of a function will be stored in a register. If this return data has no intended usage, time and space are wasted in storing this information. Programmer should define the function as void to minimize the extra handling in the function.
29 Array & Structure Initialization A simple illustration of implementation:
30 Inline Function The technique will cause the compiler to replace all calls to the function, with a copy of the function s code. This will eliminate the runtime overhead associated with the function call. This is most effective if the function is called frequently, but contains only a few lines of code.
31 Inline function
32 SWITCH & and Non-contiguous Case Expressions Use if-else statements in place of switch statements that have noncontiguous case expressions. If the case expressions are contiguous or nearly contiguous integer values, most compilers translate the switch statement as a jump table instead of a comparison chain.
33 Switch contd... Jump tables generally improve performance because: They reduce the number of branches to a single procedure call. The size of the control-flow code is the same no matter how many cases there are. The amount of control-flow code that the processor must execute is the same for all values of the switch expression.
34 Switch contd... However, if the case expressions are noncontiguous values, most compilers translate the switch statement as a comparison chain. Comparison chains are undesirable because: They use dense sequences of conditional branches, which interfere with the processor s ability to successfully perform branch prediction. The size of the control-flow code increases with the number of cases. The amount of control-flow code that the processor must execute varies with the value of the switch expression.
35 Switch Example 1 A switch statement like this one, provides good performance:
36 Switch Example 2 Because the case expressions in the following switch statement are not contiguous values, the compiler will likely translate the code into a comparison chain instead of a jump table:
37 If-Else statements To avoid a comparison chain and its undesirable effects on branch prediction, replace the switch statement with a series of if-else statements, as follows:
38 Arranging Cases by Probability of Occurrence Arrange switch statement cases by probability of occurrence, from most probable to least probable. Avoid switch statements such as the following, in which the cases are not arranged by probability of occurrence:
39 Switch case - Contd... Instead, arrange the cases to test for frequently occurring values first:
40 Use of Function Prototypes In general, use prototypes for all functions. Prototypes can convey additional information to the compiler that might enable more aggressive optimizations.
41 Generic Loop Hoisting To improve the performance of inner loops, reduce redundant constant calculations Avoid:
42 Generic Loop Hoisting Preferred optimization
43 Contd... Un-optimized code
45 Local Static Functions Declare as static functions that are not used outside the file where they are defined. Declaring a function as static forces internal linkage. Functions that are not declared as static default to external linkage, which may inhibit certain optimizations for example, aggressive in-lining with some compilers.
46 Explicit Parallelism in Code Where possible, break long dependency chains into several independent dependency chains that can then be executed in parallel, exploiting the execution units in each pipeline. Avoid:
47 Contd... Notice that the four-way unrolling is chosen to exploit the four-stage fully pipelined floating-point adder. Each stage of the floating-point adder is occupied on every clock cycle, ensuring maximum sustained utilization.
48 Extracting Common Sub expressions Manually extract common sub expressions where C compilers may be unable to extract them from floating-point expressions due to the guarantee against reordering of such expressions in the ANSI standard.
49 Contd... Manually optimize Example 1
50 Contd... Manually optimize Example 2
51 Replacing Integer Division with Multiplication Replace integer division with multiplication when there are multiple divisions in an expression. This is possible only if no overflow will occur during the computation of the product. The possibility of an overflow can be determined by considering the possible ranges of the divisors. Integer division is the slowest of all integer arithmetic operations.
52 Contd... Example - Replace division by multiplication
53 Sign of Integer Operands Where there is a choice of using either a signed or an unsigned type, take into consideration that some operations are faster with unsigned types while others are faster for signed types.
55 Contd... Signed vs. Unsigned int division
56 Contd... In summary, use unsigned types for: Division and remainders Loop counters Array indexing Use signed types for: Integer-to-floating-point conversion
57 Loop Unrolling
59 Loop Invariant IF Code Floating Incorrect
60 Else Clause Removal A jump condition is inevitable in the first case, whereas the second case gives the higher possibility process (Condition_A) to have a sequential execution. This technique is possible only if Undo DoThat() process is possible.
61 Loop Overhead The MCU have a conditional branch mechanism that works well when counting down from positive number to zero. It is easier to detect Zero (Branch non zero single instruction) than a predefined number (Compare and perform jump two instructions)
62 Specify Optimization Type for Each Module #pragma option can be used to limit and control the optimization regions.
63 Horner s Rule of Polynomial Evaluation The rules state that a polynomial can be rewritten as a nested factorization. The reduced arithmetic operations will have better efficiency and execution speed.
64 Factorization The compiler may be able to perform better when the formula
65 Use Finite Differences to Avoid Multiplies
67 Constant in Shift Operations For shift operations, if the shift count is a variable, the compiler calls a runtime routine to process the operation. If the shift count is a constant, the compiler does not call the routine, which give significant speed improvement.
68 Use Formula Use formula instead of loops What is the formula for sum of naturals numbers?
70 Simplify Condition Un-optimized Example 1
71 Contd.. Optimized
76 Absolute value
77 Profiling What is profiling Memory profiling Leaks Memory usage CPU Usage Cache
78 Stay connected About us: Emertxe is India s one of the top IT finishing schools & self learning kits provider. Our primary focus is on Embedded with diversification focus on Java, Oracle and Android areas Emertxe Information Technologies, No-1, 9th Cross, 5th Main, Jayamahal Extension, Bangalore, Karnataka T: E:
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection
Keil C51 Cross Compiler ANSI C Compiler Generates fast compact code for the 8051 and it s derivatives Advantages of C over Assembler Do not need to know the microcontroller instruction set Register allocation
1 The Java Virtual Machine About the Spec Format This document describes the Java virtual machine and the instruction set. In this introduction, each component of the machine is briefly described. This
Why study the Alpha (assembly)? The Alpha architecture is the first 64-bit load/store RISC (as opposed to CISC) architecture designed to enhance computer performance by improving clock speeding, multiple
8051 Programming The 8051 may be programmed using a low-level or a high-level programming language. Low-Level Programming Assembly language programming writes statements that the microcontroller directly
We Use High Level Languages High Level Language temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; There are many high level languages (HLLs) Java, C, C++, C#, Fortran, Basic, Pascal, Lisp, Ada, Matlab, etc. HLLs
Run-Time Data Structures Stack Allocation Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers,
Instruction Set Architecture (ISA) * Instruction set architecture of a machine fills the semantic gap between the user and the machine. * ISA serves as the starting point for the design of a new machine
CHAPTER 7: The CPU and Memory The Architecture of Computer Hardware, Systems Software & Networking: An Information Technology Approach 4th Edition, Irv Englander John Wiley and Sons 2010 PowerPoint slides
Lecture Handout Computer Architecture Lecture No. 2 Reading Material Vincent P. Heuring&Harry F. Jordan Chapter 2,Chapter3 Computer Systems Design and Architecture 2.1, 2.2, 3.2 Summary 1) A taxonomy of
C++ Keywords There are many keywords in C++ that are not used in other languages. bool, const_cast, delete, dynamic_cast, const, enum, extern, register, sizeof, typedef, explicit, friend, inline, mutable,
COMPUTER SCIENCE AND ENGINEERING VI SEM CSE Principles of Compiler Design Unit-IV Question and answers UNIT IV CODE GENERATION 9 Issues in the design of code generator The target machine Runtime Storage
Instruction Set Architecture or How to talk to computers if you aren t in Star Trek The Instruction Set Architecture Application Compiler Instr. Set Proc. Operating System I/O system Instruction Set Architecture
An Overview of a Compiler Department of Computer Science and Automation Indian Institute of Science Bangalore 560 012 NPTEL Course on Principles of Compiler Design Outline of the Lecture About the course
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
İSTANBUL AYDIN UNIVERSITY FACULTY OF ENGİNEERİNG SOFTWARE ENGINEERING THE PROJECT OF THE INSTRUCTION SET COMPUTER ORGANIZATION GÖZDE ARAS B1205.090015 Instructor: Prof. Dr. HASAN HÜSEYİN BALIK DECEMBER
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
Certificate in Advanced Programming - C++ Language Page 1 of 7 BHARATHIAR UNIVERSITY: COIMBATORE 641046 CENTRE FOR COLLABORATION OF INDUSTRY AND INSTITUTIONS(CCII) CERTIFICATE IN ADVANCED PROGRAMMING C++
JVM memory model The leitmotiv of JAVA is its famous WOTA: write once, run anywhere. In order to apply it, Sun Microsystems created the Java Virtual Machine, an abstraction of the underlying OS that interprets
Using the Instruction for Performance Monitoring http://developer.intel.com/drg/pentiumii/appnotes/pm1.htm Using the Instruction for Performance Monitoring Information in this document is provided in connection
CHAPTER 4 MARIE: An Introduction to a Simple Computer 4.1 Introduction 145 4.1.1 CPU Basics and Organization 145 4.1.2 The Bus 147 4.1.3 Clocks 151 4.1.4 The Input/Output Subsystem 153 4.1.5 Memory Organization
Assembly Language Ľudmila Jánošíková Department of Transportation Networks Faculty of Management Science and Informatics University of Žilina Ludmila.Janosikova@fri.uniza.sk 041/5134 220 Recommended texts
OSMIC CSoft ware C Language manual Rev. 1.1 Copyright COSMIC Software 1999, 2003 All rights reserved. Table of Contents Preface Chapter 1 Historical Introduction Chapter 2 C Language Overview C Files...2-1
Intermediate Code and Optimizations We have discussed Runtime organization Simple stack machine code generation Improvements to stack machine code generation Our compiler goes directly from AST to assembly
29 This section describes data types and addressing modes available to programmers of the Intel Architecture processors. 29.1 Fundamental Data Types The fundamental data types of the Intel Architecture
FUJITSU SEMICONDUCTOR CONTROLLER MANUAL CM71-00324-1E FR FAMILY 32-BIT MICROCONTROLLER EMBEDDED C PROGRAMMING MANUAL FOR fcc911 FR FAMILY 32-BIT MICROCONTROLLER EMBEDDED C PROGRAMMING MANUAL FOR fcc911
Date: 3.10 Not all questions are of equal difficulty. Please review the entire quiz first and then budget your time carefully. Name: Course: Solutions in Red 1. [5 points] Prior to the early 1980s, machines
The Assembly Language Level Translators can be divided into two groups. When the source language is essentially a symbolic representation for a numerical machine language, the translator is called an assembler,
Selected Solutions to Problem-Set #1 COE608: Computer Organization and Architecture Introduction, Instruction Set Architecture and Computer Arithmetic Chapters 1, 2 and 3 a. Chapter 1: Exercises: 1.1.1
PART OF THE PICTURE: Computer Architecture 1 PART OF THE PICTURE: Computer Architecture BY WILLIAM STALLINGS At a top level, a computer consists of processor, memory, and I/O components, with one or more
Department of Electrical and Computer Engineering Faculty of Engineering and Architecture American University of Beirut Course Information Course title: Computer Organization Course number: EECE 321 Catalog
Instruction Set Design Instruction Set Architecture: to what purpose? ISA provides the level of abstraction between the software and the hardware One of the most important abstraction in CS It s narrow,
CS107 Handout 12 Spring 2008 April 18, 2008 Computer Architecture: Take I Computer architecture Handout written by Julie Zelenski and Nick Parlante A simplified picture with the major features of a computer
IA-64 Application Developer s Architecture Guide The IA-64 architecture was designed to overcome the performance limitations of today s architectures and provide maximum headroom for the future. To achieve
Parallel and Distributed Computing Programming Assignment 1 Due Monday, February 7 For programming assignment 1, you should write two C programs. One should provide an estimate of the performance of ping-pong
C++ Programming: From Problem Analysis to Program Design, Fifth Edition Chapter 2: Basic Elements of C++ Objectives In this chapter, you will: Become familiar with the basic components of a C++ program,
Subroutines and Control Abstraction CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2012 Reading: Chapter 8 Abstractions as Program Building Blocks
1 VLIW Processors VLIW ( very long instruction word ) processors instructions are scheduled by the compiler a fixed number of operations are formatted as one big instruction (called a bundle) usually LIW
Introduction to Design of a Tiny Computer (Background of LAB#4) Objective In this lab, we will build a tiny computer in Verilog. The execution results will be displayed in the HEX[3:0] of your board. Unlike
EMBEDDED FIRMWARE The control algorithm (Program instructions) and or the configuration settings that an embedded system developer dumps into the code (Program) memory of the embedded system The embedded
SYSTEM UNIT Basic Computer Structure Input Unit Central Processing Unit Main Memory Output Unit Backing Store The Central Processing Unit (CPU) is the unit in the computer which operates the whole computer
Lecture 22: C Programming 4 Embedded Systems Today s Goals Basic C programming process Variables and constants in C Pointers to access addresses Using a High Level Language High-level languages More human
A4-R3: COMPUTER ORGANISATION NOTE: 1. There are TWO PARTS in this Module/Paper. PART ONE contains FOUR questions and PART TWO contains FIVE questions. 2. PART ONE is to be answered in the TEAR-OFF ANSWER
Basic C Syntax Comp-206 : Introduction to Software Systems Lecture 10 Alexandre Denault Computer Science McGill University Fall 2006 Next Week I'm away for the week. I'll still check my mails though. No
Unit 5 Central Processing Unit (CPU) Introduction Part of the computer that performs the bulk of data-processing operations is called the central processing unit (CPU). It consists of 3 major parts: Register
Arithmetic Operations Dongbing Gu School of Computer Science and Electronic Engineering University of Essex UK Spring 2013 D. Gu (Univ. of Essex) Arithmetic Operations Spring 2013 1 / 34 Outline 1 Introduction
More on Pipelining and Pipelines in Real Machines CS 333 Fall 2006 Main Ideas Data Hazards RAW WAR WAW More pipeline stall reduction techniques Branch prediction» static» dynamic bimodal branch prediction
1 GMP implementation on CUDA - A Backward Compatible Design With Performance Tuning Hao Jun Liu, Chu Tong Edward S. Rogers Sr. Department of Electrical and Computer Engineering University of Toronto firstname.lastname@example.org,
Chapter 8 :: Subroutines and Control Abstraction Programming Language Pragmatics Michael L. Scott Introduction abstraction association of a name with a potentially complicated program fragment that can
C How to Program, H. M. Deitel and P. J. Deitel, Prentice Hall, 5 th edition (3 rd edition or above is also OK). Introduction to C Programming Dr. Hasan Demirel Programming Languages There are three types
Atmel AVR4027: Tips and Tricks to Optimize Your C Code for 8-bit AVR Microcontrollers Features Atmel AVR core and Atmel AVR GCC introduction Tips and tricks to reduce code size Tips and tricks to reduce
5 Computer Organization 5.1 Foundations of Computer Science Cengage Learning Objectives After studying this chapter, the student should be able to: List the three subsystems of a computer. Describe the
98 CHAPTER 2 MACHINE INSTRUCTIONS AND PROGRAMS PROBLEMS (Cap. 4 - Istruzioni macchina) 2.1 Represent the decimal values 5, 2, 14, 10, 26, 19, 51, and 43, as signed, 7-bit numbers in the following binary
This sub chapter discusses another architecture, that of the JVM (Java Virtual Machine). In general, a VM (Virtual Machine) is a hypothetical machine (implemented in either hardware or software) that directly
Integer multiplication Suppose we have two unsigned integers, A and B, and we wish to compute their product. Let A be the multiplicand and B the multiplier: A n 1... A 1 A 0 multiplicand B n 1... B 1 B
Compiler Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore Module No. # 02 Lecture No. # 05 Run-time Environments-Part 3 and Local Optimizations
C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,
KINGS COLLEGE OF ENGINEERING DEPARTMENT OF ELECTRONICS AND COMMUNICATION ENGINEERING QUESTION BANK SUBJECT CODE: CS1358 YEAR : III SUBJECT NAME: COMPUTER ARCHITECTURE SEM : VI 1. Define interrupt and ISR.
Advanced computer Architecture 1. Define Instruction level parallelism. All processors use pipelining to overlap the execution of instructions and improve performance. This potential overlap among instructions
Engineering 9859 CoE Fundamentals Computer Architecture Instruction Set Principles Dennis Peters 1 Fall 2007 1 Based on notes from Dr. R. Venkatesan RISC vs. CISC Complex Instruction Set Computers (CISC)
Instruction Set Architecture Consider x := y+z. (x, y, z are memory variables) 1-address instructions 2-address instructions LOAD y (r :=y) ADD y,z (y := y+z) ADD z (r:=r+z) MOVE x,y (x := y) STORE x (x:=r)
MIPS Assembly Language Programming Robert Britton Computer Science Department California State University, Chico Chico, California Instructors are granted permission to make copies of this beta version
Fast Arithmetic Coding (FastAC) Implementations Amir Said 1 Introduction This document describes our fast implementations of arithmetic coding, which achieve optimal compression and higher throughput by
C Programming Language CIS 218 Description C is a procedural languages designed to provide lowlevel access to computer system resources, provide language constructs that map efficiently to machine instructions,
Code Generation I Stack machines The MIPS assembly language A simple source language Stack-machine implementation of the simple language Readings: 9.1-9.7 Stack Machines A simple evaluation model No variables
Final Exam Review CS 1428 Fall 2011 Jill Seaman 1 Final Exam Friday, December 9, 11:00am to 1:30pm Derr 241 (here) Closed book, closed notes, clean desk Comprehensive (covers entire course) 25% of your
Representation of Data In contrast with higher-level programming languages, C does not provide strong abstractions for representing data. Indeed, while languages like Racket has a rich notion of data type
Programming the Basic Computer lecture 8 Programming the Basic Computer A computer system includes both hardware and software. Hardware consist of the physical components. Software refers to computer programs.
Introduction to C for Atmel XMega 1 Menu Overview of C Basics Variables, Types, and Definitions Conditionals Ports and Registers Interrupts Pointers Strongly Using C with Assembly 2 1 Overview of C Basics
ACADEMIC YEAR: 0 7 VALLIAMMAI ENGINEERING COLLEGE SRM NAGAR, KATTANKULATHUR 0 0 SEMESTER: ODD BRANCH: MCA YEAR: I SEMESTER: I SUBJECT CODE AND NAME: MC70 Problem Solving and Programming NAME OF THE FACULTY
ASSEMBLY PROGRAMMING ON A VIRTUAL COMPUTER Pierre A. von Kaenel Mathematics and Computer Science Department Skidmore College Saratoga Springs, NY 12866 (518) 580-5292 email@example.com ABSTRACT This paper
AN INTEL COMPANY WIND RIVER DIAB COMPILER Boost application performance, reduce memory footprint, and produce high-quality, standards-compliant object code for embedded systems with Wind River Diab Compiler.
Operating Systems: Internals and Design Principles Chapter 1 Computer System Overview Eighth Edition By William Stallings Operating System Exploits the hardware resources of one or more processors Provides
Seat No. : FBCA-02 April-2007 Programming in C Language BCA-102 (New Course) Time : 3 Hours] [Max. Marks : 70 Instructions : (1) Figures to the right indicate full marks of the question. (2) Make and state
Introduction MICROPROCESSOR AND MICROCOMPUTER BASICS At present there are many types and sizes of computers available. These computers are designed and constructed based on digital and Integrated Circuit
picojava TM : A Hardware Implementation of the Java Virtual Machine Marc Tremblay and Michael O Connor Sun Microelectronics Slide 1 The Java picojava Synergy Java s origins lie in improving the consumer
Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,
Getting Started with Intel Cilk Plus Array Notations Introduction Array Notations is an Intel-specific language extension that is a part of Intel Cilk Plus feature supported by the Intel C++ Compiler that
Last Class: Introduction to Operating Systems User apps OS Virtual machine interface hardware physical machine interface An operating system is the interface between the user and the architecture. History
A First Book of C++ Chapter 2 Data Types, Declarations, and Displays Objectives In this chapter, you will learn about: Data Types Arithmetic Operators Variables and Declarations Common Programming Errors
Study Questions for Digital Logic, Processors and Caches G22.0201 Fall 2009 ANSWERS Digital Logic Read: Sections 3.1 3.3 in the textbook. Handwritten digital lecture notes on the course web page. Study
Chapter 2 Instructions: Assembly Language Reading: The corresponding chapter in the 2nd edition is Chapter 3, in the 3rd edition it is Chapter 2 and Appendix A and in the 4th edition it is Chapter 2 and