Download A = B + 4

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
ITEC 352
Lecture 11
ISA - CPU
Review
• Questions?
• HW 2 due on Friday
• ISA
– Machine language
– Buses
– Memory
ISA (2)
Outline
• P1 is posted
• CPU
ISA (2)
Architectur
e
• Contains: Data Section and Control Unit
Data Section: Registers and ALU (they do the processing)
Control Unit: controls the processing.`
ISA (2)
CPU
• Registers
– One type of memory.
• Each register can usually store a word (there are some that store a
byte).
– They are few in number (usually range from 16 onwards to
something higher).
– Hence, they require fewer bits to represent their addresses.
• E.g., if we had 16 registers, we would only need 4 bits to address
them (contrast this with 32 bit memory).
– Hence, it is very fast memory.
• ALU: Arithmetic and Logic Unit: This implements a
variety of binary and unary operations. Examples: ADD,
MULTIPLY, AND, NOT, OR etc…
ISA (2)
ISA
definition
•
Every control unit is pre-programmed with a set of basic
instructions.
–
E.g.,
•
•
•
•
–
http://siyobik.info/main/reference
–
ARM processors (used in DROID and other mobile devices)
instruction set:
–
http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001m/QRC0001_UAL.pdf
SUN SPARC instruction set (32 bit) (version 7)
http://www.cs.utexas.edu/users/novak/sparcv7.pdf
These basic instructions are called Instruction sets and the
architecture supporting the instruction set is refereed as
Instruction Set Architecture (ISA).
–
E.g., SUN SPARC Version 7 32 bit ISA
•
•
IA-32 (Intel 32 bit processor) instruction set:
ARM 11 ISA
NEXT: A second in the life of a program (from program to a process).
ISA (2)
Program to Process:
The process of compilation, linking and loading (overview)
A second (or
much less) in
the life of a
high-level
program
Program in
high level language
(e.g., C/C++/Java/ADA)
Libraries
(e.g., stdlib)
COMPILATION
Assembly code (Java is a
little different)
Assembly code
ASSEMBLY
Waiting (and happy)
to be executed
ISA (2)
Machine Code
Machine Code
LINKING
Combined machine
code
Compiler/OS
COMPILER
Program in
high level language
(e.g., C/C++/Java/ADA)
Libraries
(e.g., stdlib)
COMPILATION
Assembly code (Java is a
little different)
Assembly code
ASSEMBLY
Waiting (and happy)
to be executed
By the CPU
Operating System
ISA (2)
Machine Code
Machine Code
LINKING
Combined machine
code
Portability
• Java programs are compiled into “Java
bytecode”
– Java bytecode is analogous to an ISA.
• Depending on the specific CPU (Intel or
ARM etc.),
– Java’s bytecode is mapped to specific ISA.
ISA (2)
Program to
Process
A specific ISA can only execute the
instructions it supports.
•
E.g., to execute a Java program:
–
ISA (2)
It has to be finally translated into the specific
ISA.
Compilatio
n
• Consider the following harmless statement in a
high level language:
A=B+4
To compile this program in a high level language (say
Java), it must first reduce the statement to various
symbols in the language.
Symbols in the example statement:
Identifiers
Operators (delimiters)
A=B+4
This phase in compilation is called Lexical Analysis.
ISA (2)
constant
Lexical
Analysis (2)
• How does compiler store information about the symbols in a
statement ?
• Answer: Symbol table.
• Symbol table contains several records. Each record in the table
usually has the following information:
– Name of the symbol if it is an identifier (Stored as a String) or a key
word like “constant” if the symbol happens to be a contant value.
• E.., A, B
– Type of the identifier or constant. E.g., (integer , …)
• This value cannot be filled up during the lexical analysis. We will see
how this value is derived later.
– Scope of the identifier (if the identifier is a variable – what is its
scope). Remember scope from a previous slide.
ISA (2)
Lexical
Analysis (3)
• Example
– For the statement:
A=B+4
The compiler builds the symbol table:
Name
Type
Scope
Name: A
UNKNOWN
UNKNOWN
Name: B
UNKNOWN
UNKNOWN
CONST:4
UNKNOWN
UNKNOWN
ISA (2)
Static
Analysis
• Lexical analysis is done in parallel with syntactic
analysis. Here, the compiler checks to see if the
syntax of the statement is correct.
– For instance, in Java, the statement A = B + 4 is
incorrect, because at the end of the statement Java
expects a “semicolon”.
– We will not go into details of how it check the
syntax. Lets just assume it does.
• As part of these analysis, a brief step is the
building of a syntax tree.
ISA (2)
Syntax
tree
• A syntax tree captures the syntax of a statement. The
nodes of the tree are operators (or delimiters). The
leaves are the symbols.
=
+
Symbol table entry of B
Symbol table entry of 4
Symbol table entry of A
ISA (2)
Semantic
Analysis
• After determining the syntax is correct, the compiler does a semantic
analysis.
– Usually, in many programming languages this requires that the compiler
make a second pass across the program.
– THIS ALLOWS A PROGRAM TO USE VARIABLES OR FUNCTIONS
DEFINED LATER. This is called FORWARD REFERENCING
• In this phase, the compiler determines and check the types of
variables and functions. E.g.,
In A = B + 4, it determines the type of A and B (perhaps int A and int B) and
then checks to see if the statement is correct when A and B are ints).
E.g., if B is a String, the above statement will be incorrect – a
compilation error is thrown here.
– Also in this phase the compiler adds the remaining entries of the
symbol table
ISA (2)
Semantic
Analysis (2)
• After the type checking phase during
semantic analysis
Name
ISA (2)
Type
Scope
Name: A
int
scope of A
Name: B
int
scope of B
CONST :4
int
Code
Generation
• In this phase, the compiler generates the
assembly code.
– Usually, the compiler first converts the program (the
syntax tree) into an intermediate form of pseudo code
that closely parallels assembly.
– It then maps the pseudo code into assembly.
– This is because, assembly is specific to an
architecture – hence this step is not portable across
different machines. Converting to pseudo code
however is portable.
• Hence, compiler writers can simply port their compilers to
different OSes by changing this one last step.
ISA (2)
Code
generation
• The statement A = B + 4 is now generated into
specific ISA:
ld [B], %r1
add %r1, 4, %r2
st %r2, %r0, [A]
ISA (2)
Compilation: end of our discussion
• So far we looked at the process of compilation.
– For more information, you should take a course on
Compilers/Translators (offered sometimes in Spring by Dr. Okie)
(or) read a very popular textbook in Compilers called the
“Dragon Book”
ISA (2)
Summary
• Compiler:
– Programs are compiled into machine code
• Operating system:
– executes a program (program in execution is called a process).
– Execution starts when a user passes the program as an
argument to a “method/function call” called exec implemented
by the OS.
• Next how does the control unit interact with the OS?
– How does it execute the machine code that the OS wants it
to execute?
ISA (2)
Next.
• Once machine code is generated, linked
and loaded, it is executed by the CPU.
• Next: The all important: Fetch – execute
cycle.
– Defines how instructions are executed.
– Every commercial architecture out there (from
Intel to ARM) follows this cycle.
ISA (2)