0% found this document useful (0 votes)
56 views25 pages

Chapter 2

This document discusses the relationship between programs, programming languages, and computers. It describes the key components of a computer including data, operations, sequence control, data access, storage management, and operating environment. It then explains how these components are implemented in hardware, firmware, and software. Finally, it discusses concepts like the fetch-execute cycle, virtual machines, binding, and binding times.

Uploaded by

Tigabu Yaya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
56 views25 pages

Chapter 2

This document discusses the relationship between programs, programming languages, and computers. It describes the key components of a computer including data, operations, sequence control, data access, storage management, and operating environment. It then explains how these components are implemented in hardware, firmware, and software. Finally, it discusses concepts like the fetch-execute cycle, virtual machines, binding, and binding times.

Uploaded by

Tigabu Yaya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 25

Chapter 2: Impact of

Machine Architectures

What is the Relationship


Between Programs,
Programming Languages,
and Computers
The Operation of a Computer

Computer:
An integrated set of algorithms and
data structures capable of storing
and executing programs.
Components
• Data - types of elementary data items
and data structures to be manipulated

• Primitive Operations - operations to


manipulate data

• Sequence Control - mechanisms for


controlling the sequence of operations
Components
• Data Access - mechanisms to supply
data to the operations

• Storage Management - mechanisms


for memory allocation

• Operating Environment - I/O


mechanisms (i.e. communication)
Implementation of the
components

• Hardware
• Firmware
• Software
Hardware
CPU (Central processing Unit)
I/O devices -
Control Unit keyboard,
mouse, disk
Arithmetic Logical Unit
drives, etc
Inboard memory
registers
Outboard
cache memory storage -
disks, CDs
main memory
Hardware-level operations
• Fetch-execute cycle:
• Processor fetches an instruction from
memory.
• Processor executes the fetched instruction

• Instruction cycle- processing that is


required for a single instruction
Fetch-execute cycle
• Program counter- contains the address of
the next instruction to be executed
• The fetched instruction is loaded into
Instruction Register
• Program counter is incremented after
fetching
• Processor interprets the bits stored in the
IR and performs the required action
Firmware
A set of machine-language
instructions implemented by
programs, called microprograms,
stored in

programmable read-only memory


in the computer (PROM).
Firmware
Example: The language in
problem #4, p.42 consists of very
low-level instructions.

It would be implemented in hardware


(hardwired). The instruction a = a + b
could be implemented in firmware.
Firmware Advantages
flexibility - by replacing the PROM
component we can increase the set of
machine instructions. e.g. we can implement
vector multiplication as a machine operation.

less cost of the hardware - the simpler the


instructions, the easier to hardwire them.
Software

Translators and virtual architectures


High-level language -------------------  machine
language

• Translation (Compilation)
• Interpretation
Translation
Input: high-level language program
Output: machine language code
Types of translation (high to low-level):
Preprocessor
Compiler
Assembler
Loader (usually part of the operating system)
Advantages: efficient executables
Interpretation

The program is not translated to


machine language code.
Instead, it is executed by another
program.
Example:
Prolog interpreter written in C++
Interpretation
Advantages of interpretation:
- easy to be implemented
- easy to debug
- portability
- flexibility - easy to modify the interpreter

Disadvantages: slow execution


Virtual machines

Program:
data + operations on these data
Computer:
implementation of data structures +
implementation of operations
Hardware, Firmware, and Software
computer
Hardware computer: elementary data
items, very simple operations
Firmware computer: elementary data
items, machine language instructions (we
may have specialized processors e.g.
vector multiplication)

Software computer : Each programming


environment defines a specific software
computer.
Hierarchy of virtual machines
Basic Hierarchy:
Software
Firmware
Hardware

Software sub-hierarchy - depends on how a


given programming environment is
implemented
Example
Java Applets
Java virtual machine - used to implement the
Java applets
C virtual machine - used to implement Java
Operating system - used to implement C
Firmware - used to implement machine
language
Hardware - used to implement firmware
microprograms
Binding and Binding Times

Binding - fixing a feature to have a


specific value among a set of
possible values.

E.G. - your program may be named in


different ways, when you choose a particular
name, then you have done a binding.
Binding occurs at

• language definition
• language implementation
• translation
• execution
Binding

At language definition - available data


types and language structures,
e.g in C++ the assignment statement is
=, while in Pascal it is :=

At language implementation - concerns


representation of numbers and arithmetic
operations
Binding
At translation -
Chosen by the programmer - variable
types and assignments
Chosen by the compiler - relative
locations of variables and arrays
Chosen by the loader - absolute
locations
Binding
At execution -
Memory contents
On entry to a subprogram (copying
arguments to parameter locations)
At arbitrary points (when executing
assignment statements)
Recursive programs
Dynamic libraries
Importance of binding times

If done at translation time - efficiency is


gained
If done at execution time - flexibility is
gained.

Example: Consider X = X+10


Discuss what happens at each stage listed above.

You might also like