Component-Based Programming with Streams Philip Garcia University of Wisconsin - Madison Johannes Helander Microsoft Research.

Slides:



Advertisements
Similar presentations
.NET Technology. Introduction Overview of.NET What.NET means for Developers, Users and Businesses Two.NET Research Projects:.NET Generics AsmL.
Advertisements

Threads, SMP, and Microkernels
Autonomic Systems Justin Moles, Winter 2006 Enabling autonomic behavior in systems software with hot swapping Paper by: J. Appavoo, et al. Presentation.
MCTS GUIDE TO MICROSOFT WINDOWS 7 Chapter 10 Performance Tuning.
Computer Systems/Operating Systems - Class 8
Component Based Invisible Computing IEEE Real-Time Embedded System Workshop London, December 3, 2001 Johannes Helander Microsoft Research Alessandro Forin,
Distributed Processing, Client/Server, and Clusters
Mahapatra-Texas A&M-Fall'001 cosynthesis Introduction to cosynthesis Rabi Mahapatra CPSC498.
Chapter 13 Embedded Systems
1 Chapter 4 Threads Threads: Resource ownership and execution.
A. Frank - P. Weisberg Operating Systems Introduction to Tasks/Threads.
Chapter 2: The Visual Studio.NET Development Environment Visual Basic.NET Programming: From Problem Analysis to Program Design.
MCITP Guide to Microsoft Windows Server 2008 Server Administration (Exam #70-646) Chapter 14 Server and Network Monitoring.
Types of software. Sonam Dema..
Stack Management Each process/thread has two stacks  Kernel stack  User stack Stack pointer changes when exiting/entering the kernel Q: Why is this necessary?
Hands-On Microsoft Windows Server 2008 Chapter 1 Introduction to Windows Server 2008.
Chapter Introduction to Computers and Programming 1.
COMPUTER SOFTWARE Section 2 “System Software: Computer System Management ” CHAPTER 4 Lecture-6/ T. Nouf Almujally 1.
Lesley Bross, August 29, 2010 ArcGIS 10 add-in glossary.
MCTS Guide to Microsoft Windows 7
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 12 Slide 1 Distributed Systems Architectures.
UPC/SHMEM PAT High-level Design v.1.1 Hung-Hsun Su UPC Group, HCS lab 6/21/2005.
An Introduction to Software Architecture
Segmentation & O/S Input/Output Chapter 4 & 5 Tuesday, April 3, 2007.
CHAPTER FOUR COMPUTER SOFTWARE.
Tutorial 121 Creating a New Web Forms Page You will find that creating Web Forms is similar to creating traditional Windows applications in Visual Basic.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
The Chameleon Development Environment The Chameleon™ Development Environment Application delivery using Microsoft Excel®
Active Server Pages  In this chapter, you will learn:  How browsers and servers interacted on the Internet when the Internet first became popular 
Conrad Benham Java Opcode and Runtime Data Analysis By: Conrad Benham Supervisor: Professor Arthur Sale.
Frontiers in Massive Data Analysis Chapter 3.  Difficult to include data from multiple sources  Each organization develops a unique way of representing.
McGraw-Hill/Irwin Copyright © 2013 by The McGraw-Hill Companies, Inc. All rights reserved. Chapter 4 Computer Software.
The course. Description Computer systems programming using the C language – And possibly a little C++ Translation of C into assembly language Introduction.
Gedae, Inc. Gedae: Auto Coding to a Virtual Machine Authors: William I. Lundgren, Kerry B. Barnes, James W. Steed HPEC 2004.
 Programming - the process of creating computer programs.
Chapter 4 Review Chad Hagstrom CS 310 Spring 2008.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
Object-Oriented Application Development Using VB.NET 1 Chapter 2 The Visual Studio.NET Development Environment.
Getting ready. Why C? Design Features – Efficiency (C programs tend to be compact and to run quickly.) – Portability (C programs written on one system.
Software Systems Division (TEC-SW) ASSERT process & toolchain Maxime Perrotin, ESA.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Introduction to Programming 1 1 2Introduction to Java.
Chapter 1: Introduction to Computers and Programming.
Visual Programming Borland Delphi. Developing Applications Borland Delphi is an object-oriented, visual programming environment to develop 32-bit applications.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
Chapter 2: The Visual Studio.NET Development Environment Visual Basic.NET Programming: From Problem Analysis to Program Design.
Introduction To Software Development Environment.
Distributed Systems Architectures Chapter 12. Objectives  To explain the advantages and disadvantages of different distributed systems architectures.
SQL Database Management
INTRO. To I.T Razan N. AlShihabi
Chapter 4: Threads Modified by Dr. Neerja Mhaskar for CS 3SH3.
Chapter 2: The Visual Studio .NET Development Environment
Muen Policy & Toolchain
Reactive Android Development
CSCI-235 Micro-Computer Applications
MCTS Guide to Microsoft Windows 7
Microprocessor and Assembly Language
Parallel Programming By J. H. Wang May 2, 2017.
Threads Cannot Be Implemented As a Library
Chapter 4 Computer Software.
Threads, SMP, and Microkernels
Chapter 15, Exploring the Digital Domain
Programming Languages
Chapter 1 Introduction.
Threads Chapter 4.
Code Analysis, Repository and Modelling for e-Neuroscience
An Introduction to Software Architecture
(Computer fundamental Lab)
Code Analysis, Repository and Modelling for e-Neuroscience
Presentation transcript:

Component-Based Programming with Streams Philip Garcia University of Wisconsin - Madison Johannes Helander Microsoft Research

Component Based Programming Program viewed as a collection of autonomous components Each component performs a single task Components can be combined in various ways to execute different applications Each component can execute simultaneously *

Component-based design Overall system design described in XML – Describe individual components – Describe Components interconnection – Describe application as interconnection of components Components – Written in “traditional” languages (C/C++) – Interface with buffer streams – Stream elements accessed using buffer “windows” – System automatically handles concurrency when window is advanced, or changes in size

Example Windows

Data Windows Virtualize accesses into data buffers that exist between components Dynamically handles concurrency between components Allows array-like access into shared buffers – However, accesses must occur within the defined window – Window can expand, shrink, or advance – Windows can not move backward

Example Component

Test Benchmark JPEG Encoding Components needed to convert a bitmap into a JPEG

Application’s XML Description Source 0 Conv 1 contd….

Description continued Conv 0 DCT 1 DCT 0 Quant 1 VQuant 0 Wdrain 0 SestupJPEG

JPEG Profile Obtained profiling data in Linux using gprof – Baseline ran under windows using MS VS compiler – Windows execution time (256MB input): 7.33s – Linux execution time (256MB input): 4.05s RoutineExecution Percentage Color Conversion30% Huffman Encoding26% Quantization26% Forward DCT13%

“Speedup” over baseline

Poor Scaling MMLite Development environment was not designed for windows – Embedded systems development – Windows support was an afterthought added for debugging – Heavy-weight communication primitives Compiler Optimizations ? – Need to obtain a good windows profiling tool – Find performance bottlenecks

Multiprocessor Scaling

Thoughts on Application Porting Using pre-built buffer streams greatly simplified development Resulting code was much simpler than the original baseline Additional options can be added by swapping out components (rather than setting flags)

Questions

Specifying Components Each component implements a standard interface. – Initialization – Execution XML file describes system – Lists all components used – Describes communication between components – Specifies Initialization routine *

Example Source 0 Encode 0 2 Encode 1 Drain 0 SetupEP

How do we define components? Each component written in traditional language – Allows reuse of existing routines and algorithms – Programmers are familiar with environment – Currently only support components written in C – Plan to add support for Hardware-based components

System Execution System compiles XML description into C – Initializes each component – Initializes buffer streams/windows – Can run each component as separate thread – Statically or dynamically schedules threads Eventual goal is to allow components to be software or hardware