Compilers: History and Context COMP 3002. 2 Outline Compilers and languages Compilers and architectures – parallelism – memory hierarchies Other uses.

Slides:



Advertisements
Similar presentations
Instruction Set Design
Advertisements

Instruction-Level Parallel Processors {Objective: executing two or more instructions in parallel} 4.1 Evolution and overview of ILP-processors 4.2 Dependencies.
Dr. Ken Hoganson, © August 2014 Programming in R COURSE NOTES 2 Hoganson Language Translation.
Lecture 01 - Introduction Eran Yahav 1. 2 Who? Eran Yahav Taub 734 Tel: Monday 13:30-14:30
CSE115: Introduction to Computer Science I Dr. Carl Alphonce 219 Bell Hall 1.
Chapter 1: An Overview of Computers and Programming Languages J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with Programming Logic & Design First Edition by Tony Gaddis.
Virtual Memory Operating Systems Lecture # 8. Multi-tasking OS OS Excel MS Word Outlook 0x0000 0x7000 0x4000 0x8000 0x9000.
Computer Concepts 5th Edition Parsons/Oja Page 546 CHAPTER 11 Software Engineering Section A PARSONS/OJA Computer Programming.
CIS105 Chapter 1 Theory Review. Page 2 Hardware and Software are the two major components o any computer system Hardware is the set of physical devices.
ELEC Fall 05 1 Very- Long Instruction Word (VLIW) Computer Architecture Fan Wang Department of Electrical and Computer Engineering Auburn.
Chapter 2: Impact of Machine Architectures What is the Relationship Between Programs, Programming Languages, and Computers.
SOFTWARE SYSTEMS SOFTWARE APPLICATIONS SOFTWARE PROGRAMMING LANGUAGES.
Course: Introduction to Computers
Principles of Programming Chapter 1: Introduction  In this chapter you will learn about:  Overview of Computer Component  Overview of Programming 
1 Chapter-01 Introduction to Computers and C++ Programming.
Part 1.  Intel x86/Pentium family  32-bit CISC processor  SUN SPARC and UltraSPARC  32- and 64-bit RISC processors  Java  C  C++  Java  Why Java?
Computer Architecture ECE 4801 Berk Sunar Erkay Savas.
Chapter 1. Introduction.
Levels of Architecture & Language CHAPTER 1 © copyright Bobby Hoggard / material may not be redistributed without permission.
Tranlators. Machine Language The lowest-level programming languageprogramming language Machine languages are the only languages understood by computers.languagescomputers.
COMP25212: Virtualization Learning Objectives: a)To describe aims of virtualization - in the context of similar aims in other software components b)To.
Part 1.  Intel x86/Pentium family  32-bit CISC processor  SUN SPARC and UltraSPARC  32- and 64-bit RISC processors  Java  C  C++  Java  Why Java?
The Central Processing Unit (CPU) and the Machine Cycle.
1 Computer Architecture Part II-B: CPU Instruction Set.
1 Text Reference: Warford. 2 Computer Architecture: The design of those aspects of a computer which are visible to the programmer. Architecture Organization.
1. 2 Preface In the time since the 1986 edition of this book, the world of compiler design has changed significantly 3.
CS 460/660 Compiler Construction. Class 01 2 Why Study Compilers? Compilers are important – –Responsible for many aspects of system performance Compilers.
FOUNDATION IN INFORMATION TECHNOLOGY (CS-T-101) TOPIC : INFORMATION SYSTEM – SOFTWARE.
12/13/ _01 1 Computer Organization EEC-213 Computer Organization Electrical and Computer Engineering.
CIS250 OPERATING SYSTEMS Chapter One Introduction.
EKT303/4 Superscalar vs Super-pipelined.
Compilers and Interpreters
Chapter 1 An Overview of Computers and Programming Languages.
The Big Picture. My Story  Wrote great programs  Didn’t understand how they worked.
The Universal Machine (UM) Implementing the UM Noah Mendelsohn Tufts University Web:
Presented by : A best website designer company. Chapter 1 Introduction Prof Chung. 1.
Lecture 38: Compiling for Modern Architectures 03 May 02
Chapter 1. Introduction.
CSC235 Computer Organization & Assembly Language
Java Programming: From the Ground Up
Why don’t programmers have to program in machine code?
Modeling Big Data Execution speed limited by: Model complexity
Ashima Wadhwa Assistant Professor(giBS)
CMIT100 Chapter 14 - Programming.
PRINCIPLES OF COMPILER DESIGN
Chapter 1 Introduction.
Introduction to Compiler Construction
Interpreted languages Jakub Yaghob
Programming Language Hierarchy, Phases of a Java Program
CSCI-235 Micro-Computer Applications
Microprocessor and Assembly Language
Chapter 1 Introduction.
Spatial Analysis With Big Data
课程名 编译原理 Compiling Techniques
Architecture Background
An example of multiplying two numbers A = A * B;
Teaching Computing to GCSE
Teaching Computing to GCSE
Computer Organization
High Level Programming Languages
Computer Structure S.Abinash 11/29/ _02.
Lesson Objectives Aims Key Words Compiler, interpreter, assembler
Course Outline for Computer Architecture
Chapter 6 Programming the basic computer
A Level Computer Science Topic 5: Computer Architecture and Assembly
Computer Architecture
Programming language translators
Presentation transcript:

Compilers: History and Context COMP 3002

2 Outline Compilers and languages Compilers and architectures – parallelism – memory hierarchies Other uses of compilers – Program translations – Software productivity tools

3 Programming Language Evolution New generations of programming languages have introduced new challenges – C, Fortran Register allocation, aggregate types – Simula, C++ Virtual method dispatch – Java and the JVM Bounds checking, type-safety Garbage collection Just-in-time compilation

4 Hardware Evolution New types of hardware have introduced new challenges – Parallelism Instruction level Multiprocessor – Memory hierarchies

5 Instruction-Level Parallelism Modern machines don't execute code sequentially – Processor analyzes code to look for instruction dependencies – Independent instructions are executed in parallel Compilers try to maximize the available parallelism mov x, R0 mov y, R1 inc R0 mul R1, 2 mul R0, R0 add R0, R1 inc R0 mul R0, R0 mov y, R1 mul R1, 2 add R0, R1 mov x, R0

6 Vector Parallelism Many machines now have vector instructions – Can load and operate on an entire vector for (i = 0; i < n; i++) { a[i] = b[i] + c[i]; } for (i = 0; i < n; i += 8) { a[i,..,i+7] = b[i,..,i+7] + c[i,..,i+7]; } for (i -= 8; i < n; i++) { a[i] = b[i] + c[i]; }

7 Multiprocessor Currently, many machines have multiple processors or cores – Compilers can try to to automatically parllelize code – We're still not quite there yet do in parallel { sum(a, b, c, n/2); sum(a+n/2, b+n/2, c+n/2, n-n/2); } sum(a, b, c, n) { for (i = 0; i < n; i++) { a[i] = b[i] + c[i]; }

8 Memory Hierarchies Current machines have a multi-level memory hierarchy – CPU cache – L1 cache – L2 cache – RAM – Swap space Managing this hierarchy is like register allocation

9 RISC Reduced instruction set computing Success of compilers led to processors having fewer instructions – that execute faster Complex instructions were to make assembly programming easier

10 Program Translations Compilers – Input language A -> Output language B Includes – binary translation > PowerPC – hardware synthesis RTL -> hardware design – database query interpreters SQL query -> query program – compiled simulation simulation spec. -> simulation program

11 Software Productivity Tools Syntax highlight Code (re)factoring Type checking Bounds checking Memory-management tools