Software Presentation

hungryhorsecabinSoftware and s/w Development

Dec 14, 2013 (3 years and 4 months ago)

59 views

Software approach

Ing
.
Radu

Hobincu

Professor: Dr. Gheorghe
Ș
tefan

University

Politehnica
” of Bucharest

2010


Software development


High Level Languages (HLL)


Compiler Generators
-

Target Compiler Technologies



Retargetable compilers


GNU Compiler Collection (GCC
)


Operating systems


Virtual machines


Modern architectures


Conclusions






Contents

Compiler

HLL

Assembler

ASM

Linker

OBJ

Machine

EXE


Compilers


Assemblers


Linkers

Software development

Execution mode

Programming paradigm


Procedural


Functional


Object
-
oriented


Compiled


Interpreted


Translated

High Level Languages (HLLs)

C

Java


Compiled and interpreted


Object
-
oriented


Garbage Collection


Restricted memory access


Code structuring enforced by
object
-
orientation


Compiled


Procedural


Manual memory deallocation


Direct memory access


Poor code structuring


C++ Object Oriented enhancement

High Level Languages (HLLs)

Data type
definitions

nML

Description

Behavioral
primitive
description

Chess
IDE


Provides developing
toolchain

for new
architectures


C compiler


Instruction and Cycle accurate
simulators


RTL generation


Uses
nML

language for machine
description


Lacks the ability to describe multi
-
threading structures and instruction
independent blocks


Still in
development


License required

Compiler Generators
-

Target Compiler
Technologies™

C
Compiler

Simulator

RTL
Generator

Machine
properties
definitions

RTL
instructions
description

GCC
Core


GCC is a highly performant generic
compiler


Has support for many HLLs including
C, Java, C++, Ada, Python and many
more


Retargetability



the ability to port the
compiler for new architectures


GCC is highly retargetable


Released under GPL


open source


Only provides compilation


Retargetable compilers


GNU
Compiler Collection (GCC)

HLL
Compiler


suite of software that has direct access
to the machine’s resources


its role is to manage
resources
and
provide them to the user level
applications


Provides resource virtualization


Components:


Kernel


Memory Management


Thread Scheduling


Interrupt handling


GUI


Security


Networking

Operating systems

Machine

Operating System

Applications

Users

John

World Of
Warcraft

Kernel

Memory

Core

GUI

Ethernet

Ventrilo

Antivirus

Security

USB ...


Provide another level of virtualization


Portability

-

a program written for a
virtual machine, will run on any
processor that can run that virtual
machine, regardless of its architecture;


Security



a program can access and
potentially damage only resources
provided by the virtual machine, so no
harm is done to the underlying host
processor
;


Low execution speed
due to the extra
interpretation layer

Virtual machines

Application

Operating
System

Hardware

Application

Virtual
Machine

Operating
System

Hardware

Execution improvement techniques


Just
-
in
-
time (JIT) compiling
-

allows the virtual machine to detect that
10
% most used code
and translate it to native
instructions (for
the host
machine) during the first pass, so it can be immediately ran on
subsequent
loops


Ahead
-
of
-
time (AOT) compiling
-

translates the whole code into native
code prior to its
execution

Virtual machines


Several different architectures on embedded market with incompatible
instruction sets


Complex, power consuming structures developed for the sake of
backward compatibility (power is becoming an issue)


Inefficient use of silicon area


On server market,
OpenSparc

has a notable design: low power, high
efficiency

Modern architectures


Very high diversity of high level languages, operating systems and
machine architectures make software development face a serious
problem:
portability


Problem is being addressed by companies offering automatic
compiler
generation software

and by developing
retargetable compilers


The solution we advance is changing the execution model of the
processor,
keeping the instruction set unchanged


By
removing all data and control dependencies
from an execution
pipeline, the total runtime of an application can be decreased by up to
80% reducing also power requirements and increasing overall efficiency

Conclusions

Thank you!