gcc link time optimization and the Linux kernel Andi Kleen Intel OTC Apr 2013
|
|
|
- Bridget Bell
- 9 years ago
- Views:
Transcription
1 gcc link time optimization and the Linux kernel Andi Kleen Intel OTC Apr 2013
2 Acknowledgments Lots of people helped/contributed Ralf Baechle, Richard Biener, Tim Bird, Honza Hubicka, H.J. Lu, Joe Mario, Markus Trippelsdorf, Changlong Xie, others
3 Why LTO? Optimize over the whole binary Not just function (3.0) or file (<4.5) Avoid inline dependency hell in header files Without changing Makefiles significantly
4 gcc 4.7+ LTO WHOPR crash course Compiler parses files, writes GIMPLE to object files (LGEN) Function optimization summaries are computed Linker calls lto1 with all files for sequential whole program analysis (WPA) Merges types, Generates global callgraph, IPA optimization summaries, writes partitions Generate code per partition in parallel (LTRANS) Inline inside partition, run IPA optimizations for real, run per function optimizations, generate object code
5 LTO IPA optimizations (4.8) Inlining between files Function cloning for specific arguments Remove unused code (fwhole-program) Increase alignment Discover pure/const Keep globals/statics alive over calls De-virtualization Change ABI (SSE) Constant propagation Scalar replacement of aggregates Constructor / destructor merging green: does not benefit kernel today
6 Build time Build time small User time Gcc 4.7 Gcc lto 4.8 -lto user time (s) small config Gcc 4.7 Gcc lto 4.8 -lto User time / real time Parallelism Gcc 4.7 Gcc lto 4.8 -lto Faults (M) Faults small config Gcc 4.7 Gcc lto 4.8 -lto LTO is slow and not parallel enough
7 Parallelism small build 4.7 Object file generation Parsing / LGEN 60 Runnable processes LTO kernel build small config Modules without job server 50 runnable (p) r LTRANS code generation WPA + real linker Type merging 4 times Small config parallelism time (s) User time / Runtime 15 time (s) gcc 4.8 Gcc 4.7 Gcc 4.7 no lto Gcc 4.8 no lto WHOPR still has poor parallelism
8 Multilink vmlinux links 2-4x: runs LTO that often Generates integrated symbol table (kallsyms) So far not fixed KALLSYMS can be disabled One of those unexpected quirks of real build systems Gcc 4.8 no lto Gcc 4.8 w/o kallsyms Gcc 4.7 with kallsyms
9 Memory usage 4.7 small build Active memory Kernel LTO build small config active mem (GB) time (s) Faults (M) Faults small config Gcc 4.7 Gcc lto 4.8 -lto Even small build swaps in 4GB system Memory peaks all in WPA
10 Memory consumption Temporary data can be a problem, together with WPA Early many swap storms with /tmp = tmpfs Partitioning algorithm was improved Use TMPDIR=objdir With modules need to avoid too large -j* for parallel WPA Jobserver has to be disabled, makes it worse
11 Large build 4.8 (allyes) Linux allyes nosym runnable 4.8 -j Kallsyms disabled (disables various features) runnable (p) ~ 42mins ~1h 11min with kallsyms ~15GB peak time (s) Linux allyes nosym gcc 4.8 memory active mem (G) time (s)
12 WPA cycle profile 4.8 Samples: 257K of event 'cycles', Event count (approx.): % lto1 wpa lto1 [.] htab_find_slot_with_hash htab_find_slot_with_hash % gimple_type_hash(void const*) % gimple_register_type_1(tree_node*, bool) % visit(tree_node*, sccs*, unsigned int, vec<tree_node*, va_heap, v % iterative_hash_canonical_type(tree_node*, unsigned int) % iterative_hash_gimple_type(tree_node*, unsigned int, vec<tree_nod % symtab_get_node(tree_node const*) % gimple_type_eq(void const*, void const*) % build_int_cst_wide(tree_node*, unsigned long, long) % streamer_string_index(output_block*, char const*, unsigned int, b % lto1 wpa libc 2.17.so [.] _int_malloc % lto1 wpa lto1 [.] iterative_hash_hashval_t(unsigned i % lto1 wpa lto1 [.] gimple_type_eq(void const*, void co % lto1 wpa libc 2.17.so [.] memset_sse % lto1 wpa libc 2.17.so [.] malloc_consolidate % lto1 wpa libc 2.17.so [.] _int_free % lto1 wpa lto1 [.] tree_map_base_eq(void const*, void % lto1 wpa lto1 [.] pointer_map_insert(pointer_map_t*, % lto1 wpa lto1 [.] inflate_fast % lto1 wpa lto1 [.] lto_output_tree(output_block*, tree Most time spent in hashing types for type merging
13 Type merging struct foo ** Complicated iterative hash consisting of 4 hash tables (including two hash cache hashes ) pointer_type Each LGEN has its own types, need to be unified pointer_type Struct foo (record_type) Members
14 Hashing improvements Use tcmalloc instead of glibc malloc build time -9%; peak mem +35% Start with large type hash tables / caches Use murmur for hashing / fix iterative / fix pointer hash to handle all bits (collisions 90%->70%->64%) Splay trees for type merging (bad idea) 12.00% 10.00% 8.00% time (s) delta 6.00% 4.00% 2.00% 0.00% Build time Improvement hash changes 4.8, build time small config tcmalloc murmur fullhash
15 Possible future hash improvements Precompute hash in LGEN And stream types out in hash order Requires even larger hash tables to avoid collisions (or a good tree) Only merge per partition? And do that in parallel Parallelize WPA further?
16 Incremental linking Kernel build system uses ld -r / ar extensively Linker merges all sections with the same name Added random postfixes to LTO sections Still problem with pure assembler files.s assembler code dropped during LTO Originally attempted to fix with slim LTO Then fixed in Linux binutils Unfortunately changes not merged into mainline binutils Use Linux binutils for kernel
17 Kernel modifications (excerpt) Section attributes const initconst char * vs initconst char * const Toplevel inline assembler Need globals and visible for any symbols Lots of externally_visible Various changes for dot NUMBER symbols Disable LTO for some files Workarounds for 4.7 partitioning bugs (visible) Gcc-ld A few fixes for optimizations (rare) Kernel changes: 108 files changed, 740 insertions(+), 313 deletions(-) (v3.8; without most section attributes)
18 Debugging Kernel debugging: more difficult with more inlining Especially with initialization functions May need inline aware backtracer ( dwarf kallsyms ) Compiler No simple test cases. Lots of regressions; Complicated delta. Complex multi process Hard to find right process to attach/profile -dh (core dumps) are most useful LTO has challenges for debugging
19 Global Optimizations (small config) Inlining 21k new inlines between files 13k unique Scalar replacement No change Partial Inline +16% Constant Propagation +40% Cloning for constant propagation (CONFIG_LTO_CLONE) 266->1052 const clones +2% text (~200k)
20 Static instruction changes Generated code 4.8 small LTO Changes in static instructions (vmlinux) More = Better 12.00% 10.00% 8.00% delta 6.00% 4.00% 2.00% 0.00% calls functions fsize avg push pop mov instruction
21 Runtime Runtime Mixed results LKP dbench tbench AIM7 OLTP Sandy Bridge 0% 0% +3% 0% Nehalem 0% 0% +4% +6% Likely need some more optimizations Open: Atom testing (more sensitive to bad code)
22 Text size Text size Slight increase for large configs, but lower for small configs small config +3% allno shrinks -50k The smaller the kernel the less infrastructure is used. But EXPORT_SYMBOL defeats it again.
23 ARM embedded improvements (Tim Bird) vmlinux.non-lto => vmlinux.lto baseline other change percent text: % data: % bss: % total: % Kernel: non-lto lto time for full build: 1m5.87s 3m22s time for incremental build: 0m5.24s 2m12s kernel image size: compressed uimage size: system meminfo MemTotal: kb kb system meminfo MemFree: kb kb boot time:
24 gcc LTO improvements wish list Per file options (partial patch) Fix passing through of options Standard gcc-ld Don't error for section mismatches Better procedure for LTO error reporting Better messages for type mismatches No.XXXX postfixes -fno-toplevel-reorder by symbol? Automatic procedure for externally_visible discovery? Better syntax for symbol visible to toplevel assembler
25 Status Tested on x86, ARM, MIPS Uptodate with Linux 3.8 Some options disabled (function-trace, gcov, modversions)
26 References LTO kernel tree Branch lto-3.x (x increasing) Linux binutils Tcmalloc
27 Backup
28 Future kernel improvements Avoid multi-link Use constructors to allow disabling -fnotoplevel-reorder Support new option to disable instrument_function
29 Quick HOWTO for LTO kernel Get git://github.com/andikleen/linux-misc lto-3.x tree Need gcc 4.7+ set up for LTO / Linux binutils Enable CONFIG_LTO Make sure FUNCTION_PROFILER et.al./modversions are disabled make CC=compiler LD=linux-ld AR=gcc-ld -jx Check LTO does not get disabled See Documentation/lto-build for more details
LLVMLinux: Embracing the Dragon
LLVMLinux: Embracing the Dragon Presented by: Behan Webster ( lead) Presentation Date: 2014.08.22 Clang/LLVM LLVM is a Toolchain Toolkit (libraries from which compilers and related technologies can be
Applying Clang Static Analyzer to Linux Kernel
Applying Clang Static Analyzer to Linux Kernel 2012/6/7 FUJITSU COMPUTER TECHNOLOGIES LIMITED Hiroo MATSUMOTO 管 理 番 号 1154ka1 Copyright 2012 FUJITSU COMPUTER TECHNOLOGIES LIMITED Abstract Now there are
C++ Programming Language
C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract
COS 318: Operating Systems
COS 318: Operating Systems File Performance and Reliability Andy Bavier Computer Science Department Princeton University http://www.cs.princeton.edu/courses/archive/fall10/cos318/ Topics File buffer cache
KITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php [email protected] [email protected] Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
Where is the memory going? Memory usage in the 2.6 kernel
Where is the memory going? Memory usage in the 2.6 kernel Sep 2006 Andi Kleen, SUSE Labs [email protected] Why save memory Weaker reasons "I ve got 1GB of memory. Why should I care about memory?" Old machines
RISC-V Software Ecosystem. Andrew Waterman UC Berkeley [email protected]!
RISC-V Software Ecosystem Andrew Waterman UC Berkeley [email protected]! 2 Tethered vs. Standalone Systems Tethered systems are those that cannot stand alone - They depend on a host system to
PART-A Questions. 2. How does an enumerated statement differ from a typedef statement?
1. Distinguish & and && operators. PART-A Questions 2. How does an enumerated statement differ from a typedef statement? 3. What are the various members of a class? 4. Who can access the protected members
Introducing PgOpenCL A New PostgreSQL Procedural Language Unlocking the Power of the GPU! By Tim Child
Introducing A New PostgreSQL Procedural Language Unlocking the Power of the GPU! By Tim Child Bio Tim Child 35 years experience of software development Formerly VP Oracle Corporation VP BEA Systems Inc.
C Programming Review & Productivity Tools
Review & Productivity Tools Giovanni Agosta Piattaforme Software per la Rete Modulo 2 Outline Preliminaries 1 Preliminaries 2 Function Pointers Variadic Functions 3 Build Automation Code Versioning 4 Preliminaries
Rethinking SIMD Vectorization for In-Memory Databases
SIGMOD 215, Melbourne, Victoria, Australia Rethinking SIMD Vectorization for In-Memory Databases Orestis Polychroniou Columbia University Arun Raghavan Oracle Labs Kenneth A. Ross Columbia University Latest
System/Networking performance analytics with perf. Hannes Frederic Sowa <[email protected]>
System/Networking performance analytics with perf Hannes Frederic Sowa Prerequisites Recent Linux Kernel CONFIG_PERF_* CONFIG_DEBUG_INFO Fedora: debuginfo-install kernel for
C++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
Pattern Insight Clone Detection
Pattern Insight Clone Detection TM The fastest, most effective way to discover all similar code segments What is Clone Detection? Pattern Insight Clone Detection is a powerful pattern discovery technology
I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation. Mathias Payer, ETH Zurich
I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation Mathias Payer, ETH Zurich Motivation Applications often vulnerable to security exploits Solution: restrict application
Lecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc()
CS61: Systems Programming and Machine Organization Harvard University, Fall 2009 Lecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc() Prof. Matt Welsh October 6, 2009 Topics for today Dynamic
File System Management
Lecture 7: Storage Management File System Management Contents Non volatile memory Tape, HDD, SSD Files & File System Interface Directories & their Organization File System Implementation Disk Space Allocation
1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++
Answer the following 1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++ 2) Which data structure is needed to convert infix notations to postfix notations? Stack 3) The
Using Code Coverage Tools in the Linux Kernel
Using Code Coverage Tools in the Linux Kernel Nigel Hinds Paul Larson Hubertus Franke Marty Ridgeway { nhinds, plars, frankeh, mridge } @ us.ibm.com Defining software reliability is hard enough, let alone
Compiler-Assisted Binary Parsing
Compiler-Assisted Binary Parsing Tugrul Ince [email protected] PD Week 2012 26 27 March 2012 Parsing Binary Files Binary analysis is common for o Performance modeling o Computer security o Maintenance
CpSc212 Goddard Notes Chapter 6. Yet More on Classes. We discuss the problems of comparing, copying, passing, outputting, and destructing
CpSc212 Goddard Notes Chapter 6 Yet More on Classes We discuss the problems of comparing, copying, passing, outputting, and destructing objects. 6.1 Object Storage, Allocation and Destructors Some objects
NEON. Support in Compilation Tools. Development Article. Copyright 2009 ARM Limited. All rights reserved. DHT 0004A (ID081609)
NEON Support in Compilation Tools Development Article Copyright 2009 ARM Limited. All rights reserved. DHT 0004A () NEON Support in Compilation Tools Development Article Copyright 2009 ARM Limited. All
The C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
CSE 326: Data Structures B-Trees and B+ Trees
Announcements (4//08) CSE 26: Data Structures B-Trees and B+ Trees Brian Curless Spring 2008 Midterm on Friday Special office hour: 4:-5: Thursday in Jaech Gallery (6 th floor of CSE building) This is
10CS35: Data Structures Using C
CS35: Data Structures Using C QUESTION BANK REVIEW OF STRUCTURES AND POINTERS, INTRODUCTION TO SPECIAL FEATURES OF C OBJECTIVE: Learn : Usage of structures, unions - a conventional tool for handling a
DATA STRUCTURES USING C
DATA STRUCTURES USING C QUESTION BANK UNIT I 1. Define data. 2. Define Entity. 3. Define information. 4. Define Array. 5. Define data structure. 6. Give any two applications of data structures. 7. Give
Object Oriented Software Design II
Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February
Physical Data Organization
Physical Data Organization Database design using logical model of the database - appropriate level for users to focus on - user independence from implementation details Performance - other major factor
Object Oriented Programming With C++(10CS36) Question Bank. UNIT 1: Introduction to C++
Question Bank UNIT 1: Introduction to C++ 1. What is Procedure-oriented Programming System? Dec 2005 2. What is Object-oriented Programming System? June 2006 3. Explain the console I/O functions supported
THE VELOX STACK Patrick Marlier (UniNE)
THE VELOX STACK Patrick Marlier (UniNE) 06.09.20101 THE VELOX STACK / OUTLINE 2 APPLICATIONS Real applications QuakeTM Game server C code with OpenMP Globulation 2 Real-Time Strategy Game C++ code using
File Systems Management and Examples
File Systems Management and Examples Today! Efficiency, performance, recovery! Examples Next! Distributed systems Disk space management! Once decided to store a file as sequence of blocks What s the size
Storage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas
CS 110B - Rule Storage Classes Page 18-1 Attributes are distinctive features of a variable. Data type, int or double for example, is an attribute. Storage class is another attribute. There are four storage
2) Write in detail the issues in the design of code generator.
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
Optimizing unit test execution in large software programs using dependency analysis
Optimizing unit test execution in large software programs using dependency analysis Taesoo Kim, Ramesh Chandra, and Nickolai Zeldovich MIT CSAIL Abstract TAO is a system that optimizes the execution of
1 Abstract Data Types Information Hiding
1 1 Abstract Data Types Information Hiding 1.1 Data Types Data types are an integral part of every programming language. ANSI-C has int, double and char to name just a few. Programmers are rarely content
Automatic System for Linux Kernel Performance Testing
Automatic System for Linux Kernel Performance Testing Alexander Ufimtsev University College Dublin [email protected] Liam Murphy University College Dublin [email protected] Abstract We introduce an automatic
Memory Management Outline. Background Swapping Contiguous Memory Allocation Paging Segmentation Segmented Paging
Memory Management Outline Background Swapping Contiguous Memory Allocation Paging Segmentation Segmented Paging 1 Background Memory is a large array of bytes memory and registers are only storage CPU can
Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: [email protected] Alfonso Ortega: alfonso.ortega@uam.
Compilers Spring term Mick O Donnell: [email protected] Alfonso Ortega: [email protected] Lecture 1 to Compilers 1 Topic 1: What is a Compiler? 3 What is a Compiler? A compiler is a computer
Elemental functions: Writing data-parallel code in C/C++ using Intel Cilk Plus
Elemental functions: Writing data-parallel code in C/C++ using Intel Cilk Plus A simple C/C++ language extension construct for data parallel operations Robert Geva [email protected] Introduction Intel
GDB Tutorial. A Walkthrough with Examples. CMSC 212 - Spring 2009. Last modified March 22, 2009. GDB Tutorial
A Walkthrough with Examples CMSC 212 - Spring 2009 Last modified March 22, 2009 What is gdb? GNU Debugger A debugger for several languages, including C and C++ It allows you to inspect what the program
Chapter 13: Query Processing. Basic Steps in Query Processing
Chapter 13: Query Processing! Overview! Measures of Query Cost! Selection Operation! Sorting! Join Operation! Other Operations! Evaluation of Expressions 13.1 Basic Steps in Query Processing 1. Parsing
1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D.
1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D. base address 2. The memory address of fifth element of an array can be calculated
Compiler Construction
Compiler Construction Lecture 1 - An Overview 2003 Robert M. Siegfried All rights reserved A few basic definitions Translate - v, a.to turn into one s own language or another. b. to transform or turn from
How To Write Portable Programs In C
Writing Portable Programs COS 217 1 Goals of Today s Class Writing portable programs in C Sources of heterogeneity Data types, evaluation order, byte order, char set, Reading period and final exam Important
Binary compatibility for library developers. Thiago Macieira, Qt Core Maintainer LinuxCon North America, New Orleans, Sept. 2013
Binary compatibility for library developers Thiago Macieira, Qt Core Maintainer LinuxCon North America, New Orleans, Sept. 2013 Who am I? Open Source developer for 15 years C++ developer for 13 years Software
Monitoring, Tracing, Debugging (Under Construction)
Monitoring, Tracing, Debugging (Under Construction) I was already tempted to drop this topic from my lecture on operating systems when I found Stephan Siemen's article "Top Speed" in Linux World 10/2003.
Multi-Threading Performance on Commodity Multi-Core Processors
Multi-Threading Performance on Commodity Multi-Core Processors Jie Chen and William Watson III Scientific Computing Group Jefferson Lab 12000 Jefferson Ave. Newport News, VA 23606 Organization Introduction
SAP HANA - Main Memory Technology: A Challenge for Development of Business Applications. Jürgen Primsch, SAP AG July 2011
SAP HANA - Main Memory Technology: A Challenge for Development of Business Applications Jürgen Primsch, SAP AG July 2011 Why In-Memory? Information at the Speed of Thought Imagine access to business data,
Linux Driver Devices. Why, When, Which, How?
Bertrand Mermet Sylvain Ract Linux Driver Devices. Why, When, Which, How? Since its creation in the early 1990 s Linux has been installed on millions of computers or embedded systems. These systems may
Installation Guide for Basler pylon 2.3.x for Linux
Installation Guide for Basler pylon 2.3.x for Linux Version 2.3.x Document ID Number: AW00100401000 Revision Date: May 27, 2011 Subject to Change Without Notice Basler Vision Technologies Installation
MatrixSSL Porting Guide
MatrixSSL Porting Guide Electronic versions are uncontrolled unless directly accessed from the QA Document Control system. Printed version are uncontrolled except when stamped with VALID COPY in red. External
Google File System. Web and scalability
Google File System Web and scalability The web: - How big is the Web right now? No one knows. - Number of pages that are crawled: o 100,000 pages in 1994 o 8 million pages in 2005 - Crawlable pages might
Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C
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
C Compiler Targeting the Java Virtual Machine
C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the
C++ Crash Kurs. C++ Object-Oriented Programming
C++ Crash Kurs C++ Object-Oriented Programming Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer C++ classes A class is user-defined type
Logistics. Software Testing. Logistics. Logistics. Plan for this week. Before we begin. Project. Final exam. Questions?
Logistics Project Part 3 (block) due Sunday, Oct 30 Feedback by Monday Logistics Project Part 4 (clock variant) due Sunday, Nov 13 th Individual submission Recommended: Submit by Nov 6 th Scoring Functionality
Performance Counter. Non-Uniform Memory Access Seminar Karsten Tausche 2014-12-10
Performance Counter Non-Uniform Memory Access Seminar Karsten Tausche 2014-12-10 Performance Counter Hardware Unit for event measurements Performance Monitoring Unit (PMU) Originally for CPU-Debugging
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive
Performance monitoring at CERN openlab. July 20 th 2012 Andrzej Nowak, CERN openlab
Performance monitoring at CERN openlab July 20 th 2012 Andrzej Nowak, CERN openlab Data flow Reconstruction Selection and reconstruction Online triggering and filtering in detectors Raw Data (100%) Event
Leak Check Version 2.1 for Linux TM
Leak Check Version 2.1 for Linux TM User s Guide Including Leak Analyzer For x86 Servers Document Number DLC20-L-021-1 Copyright 2003-2009 Dynamic Memory Solutions LLC www.dynamic-memory.com Notices Information
Instruction Set Architecture (ISA) Design. Classification Categories
Instruction Set Architecture (ISA) Design Overview» Classify Instruction set architectures» Look at how applications use ISAs» Examine a modern RISC ISA (DLX)» Measurement of ISA usage in real computers
CORBA Programming with TAOX11. The C++11 CORBA Implementation
CORBA Programming with TAOX11 The C++11 CORBA Implementation TAOX11: the CORBA Implementation by Remedy IT TAOX11 simplifies development of CORBA based applications IDL to C++11 language mapping is easy
Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)
Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the
Lecture 22: C Programming 4 Embedded Systems
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
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
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.
Partitioning under the hood in MySQL 5.5
Partitioning under the hood in MySQL 5.5 Mattias Jonsson, Partitioning developer Mikael Ronström, Partitioning author Who are we? Mikael is a founder of the technology behind NDB
Lumousoft Visual Programming Language and its IDE
Lumousoft Visual Programming Language and its IDE Xianliang Lu Lumousoft Inc. Waterloo Ontario Canada Abstract - This paper presents a new high-level graphical programming language and its IDE (Integration
Virtualization and Other Tricks.
Virtualization and Other Tricks. Pavel Parízek, Tomáš Kalibera, Peter Libič DEPARTMENT OF DISTRIBUTED AND DEPENDABLE SYSTEMS http://d3s.mff.cuni.cz CHARLES UNIVERSITY PRAGUE Faculty of Mathematics and
Continuous integration End of the big bang integration era
Continuous integration End of the big bang integration era Patrick Laurent Partner Technology & Enterprise Applications Deloitte Mario Deserranno Manager Technology & Enterprise Applications Deloitte The
SMock A Test Platform for the Evaluation of Monitoring Tools
SMock A Test Platform for the Evaluation of Monitoring Tools User Manual Ruth Mizzi Faculty of ICT University of Malta June 20, 2013 Contents 1 Introduction 3 1.1 The Architecture and Design of SMock................
Fast Arithmetic Coding (FastAC) Implementations
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
Keil C51 Cross Compiler
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
MPLAB TM C30 Managed PSV Pointers. Beta support included with MPLAB C30 V3.00
MPLAB TM C30 Managed PSV Pointers Beta support included with MPLAB C30 V3.00 Contents 1 Overview 2 1.1 Why Beta?.............................. 2 1.2 Other Sources of Reference..................... 2 2
umps software development
Laboratorio di Sistemi Operativi Anno Accademico 2006-2007 Software Development with umps Part 2 Mauro Morsiani Software development with umps architecture: Assembly language development is cumbersome:
Raima Database Manager Version 14.0 In-memory Database Engine
+ Raima Database Manager Version 14.0 In-memory Database Engine By Jeffrey R. Parsons, Senior Engineer January 2016 Abstract Raima Database Manager (RDM) v14.0 contains an all new data storage engine optimized
Virtual Servers. Virtual machines. Virtualization. Design of IBM s VM. Virtual machine systems can give everyone the OS (and hardware) that they want.
Virtual machines Virtual machine systems can give everyone the OS (and hardware) that they want. IBM s VM provided an exact copy of the hardware to the user. Virtual Servers Virtual machines are very widespread.
RED HAT DEVELOPER TOOLSET Build, Run, & Analyze Applications On Multiple Versions of Red Hat Enterprise Linux
RED HAT DEVELOPER TOOLSET Build, Run, & Analyze Applications On Multiple Versions of Red Hat Enterprise Linux Dr. Matt Newsome Senior Engineering Manager, Tools RED HAT ENTERPRISE LINUX RED HAT DEVELOPER
GPGPU Parallel Merge Sort Algorithm
GPGPU Parallel Merge Sort Algorithm Jim Kukunas and James Devine May 4, 2009 Abstract The increasingly high data throughput and computational power of today s Graphics Processing Units (GPUs), has led
MatrixSSL Developer s Guide
MatrixSSL Developer s Guide This document discusses developing with MatrixSSL. It includes instructions on integrating MatrixSSL into an application and a description of the configurable options for modifying
Towards Fast SQL Query Processing in DB2 BLU Using GPUs A Technology Demonstration. Sina Meraji [email protected]
Towards Fast SQL Query Processing in DB2 BLU Using GPUs A Technology Demonstration Sina Meraji [email protected] Please Note IBM s statements regarding its plans, directions, and intent are subject to
User-level processes (clients) request services from the kernel (server) via special protected procedure calls
Linux System Call What is System Call? User-level processes (clients) request services from the kernel (server) via special protected procedure calls System calls provide: An abstraction layer between
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)
Today: Source code control CPSC 491 Source Code (Version) Control Exercise: 1. Pretend like you don t have a version control system (e. g., no git, subversion, cvs, etc.) 2. How would you manage your source
Data Structure Reverse Engineering
Data Structure Reverse Engineering Digging for Data Structures Polymorphic Software with DSLR Scott Hand October 28 th, 2011 Outline 1 Digging for Data Structures Motivations Introduction Laika Details
Application-Level Debugging and Profiling: Gaps in the Tool Ecosystem. Dr Rosemary Francis, Ellexus
Application-Level Debugging and Profiling: Gaps in the Tool Ecosystem Dr Rosemary Francis, Ellexus For years instruction-level debuggers and profilers have improved in leaps and bounds. Similarly, system-level
Software Development for Embedded GNU Radio Applications
Software Development for Embedded GNU Radio Applications Philip Balister [email protected] Open SDR May 28, 2015 1 Embedded SW Development 2 OpenEmbedded 3 Develop Software 4 Creating a Finished Product
Common clock framework: how to use it
Embedded Linux Conference 2013 Common clock framework: how to use it Gregory CLEMENT Free Electrons [email protected] Free Electrons. Kernel, drivers and embedded Linux development, consulting,
An Introduction to Assembly Programming with the ARM 32-bit Processor Family
An Introduction to Assembly Programming with the ARM 32-bit Processor Family G. Agosta Politecnico di Milano December 3, 2011 Contents 1 Introduction 1 1.1 Prerequisites............................. 2
RAMCloud and the Low- Latency Datacenter. John Ousterhout Stanford University
RAMCloud and the Low- Latency Datacenter John Ousterhout Stanford University Most important driver for innovation in computer systems: Rise of the datacenter Phase 1: large scale Phase 2: low latency Introduction
esrever gnireenigne tfosorcim seiranib
esrever gnireenigne tfosorcim seiranib Alexander Sotirov [email protected] CanSecWest / core06 Reverse Engineering Microsoft Binaries Alexander Sotirov [email protected] CanSecWest / core06 Overview
How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)
TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions
Winning the Battle against Automated Testing. Elena Laskavaia March 2016
Winning the Battle against Automated Testing Elena Laskavaia March 2016 Quality Foundation of Quality People Process Tools Development vs Testing Developers don t test Testers don t develop Testers don
