Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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)