Download presentation
Presentation is loading. Please wait.
Published byRonald Crawford Modified over 9 years ago
1
ITEC 352 Lecture 11 ISA - CPU
2
ISA (2) Review Questions? HW 2 due on Friday ISA –Machine language –Buses –Memory
3
ISA (2) Outline P1 is posted CPU
4
ISA (2) Architectur e Contains: Data Section and Control Unit Data Section: Registers and ALU (they do the processing) Control Unit: controls the processing.`
5
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…
6
ISA (2) ISA definition Every control unit is pre-programmed with a set of basic instructions. –E.g., IA-32 (Intel 32 bit processor) instruction set: –http://siyobik.info/main/referencehttp://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.pdfhttp://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 ARM 11 ISA NEXT: A second in the life of a program (from program to a process).
7
ISA (2) Program to Process: The process of compilation, linking and loading (overview) Program in high level language (e.g., C/C++/Java/ADA) Libraries (e.g., stdlib) Assembly code (Java is a little different) Assembly code Combined machine code Machine Code Waiting (and happy) to be executed COMPILATION ASSEMBLY LINKING LOADING A second (or much less) in the life of a high-level program
8
ISA (2) Compiler/OS Program in high level language (e.g., C/C++/Java/ADA) Libraries (e.g., stdlib) Assembly code (Java is a little different) Assembly code Combined machine code Machine Code Waiting (and happy) to be executed By the CPU COMPILATION ASSEMBLY LINKING LOADING Operating System COMPILER
9
ISA (2) 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.
10
ISA (2) Program to Process A specific ISA can only execute the instructions it supports. E.g., to execute a Java program: –It has to be finally translated into the specific ISA.
11
ISA (2) 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: A = B + 4 Identifiers Operators (delimiters) constant This phase in compilation is called Lexical Analysis.
12
ISA (2) 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.
13
ISA (2) Lexical Analysis (3) Example –For the statement: A = B + 4 The compiler builds the symbol table: Name: A UNKNOWNUNKNOWN Name: B UNKNOWNUNKNOWN CONST:4 UNKNOWNUNKNOWN Name TypeScope
14
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.
15
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 BSymbol table entry of 4 Symbol table entry of A
16
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
17
ISA (2) Semantic Analysis (2) After the type checking phase during semantic analysis Name: A int scope of A Name: B int scope of B CONST :4 int Name TypeScope
18
ISA (2) 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.
19
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]
20
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”
21
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?
22
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.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.