1 / 16

Chapt.2 Machine Architecture

Chapt.2 Machine Architecture . Impact of languages Support – faster, more secure Primitive Operations e.g. nested subroutine calls Subroutines implemented with stack (ex: PL/1- recursion) IBM704 – index registers Security e.g., data and code kept separate O.S. kept separate Limitations

lavonn
Download Presentation

Chapt.2 Machine Architecture

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapt.2 Machine Architecture • Impact of languages • Support – faster, more secure • Primitive Operations • e.g. nested subroutine calls • Subroutines implemented with stack (ex: PL/1- recursion) • IBM704 – index registers • Security • e.g., data and code kept separate • O.S. kept separate • Limitations • Space • Time • Networks, multiprocessors, etc.

  2. Hardware or actual computer • Data / storage CELL • Main memory, cache and registers • Fixed-length words determines range of values of data • Limitation on range and precision of numbers • Strictly speaking, built-in types are determined by operations • Operations on data • Primitive operations manipulate data • Integer, character, bit string, (1-dimensional) arrays • Possibly floating-point, character string • Data operations are valid on all data cells

  3. Hardware • Sequence control (control operations) • Sequence (von Neumann architecture) • Program address register (PC) incremented automatically • Jump or branch • Branch conditionally • Multiprocessing as alternative control mechanism • Data access • Operation (move, load, etc.) • Operand – typically address of cell • RISC (fewer hardware ops) vs CISC

  4. Hardware • Effect of current access times • Register access – 5-10 nsec • Memory access – 50-70 nsec • I/O access – 10-15 msec. • Modular programs can make efficient use of cache and virtual memory (hits) • Cost of tasking • In-line modules • Multi-dimensional arrays

  5. Computer states • State transitions for representing virtual machine • State transition diagrams for proving correctness

  6. Role of firmware • Instructions in microprogram • Emulation to create virtual computer • FORTRAN hardware machine • Statements in hardware/firmware • Translator is interpreter • Cost in terms of flexibility, monetary, speed • Slower for running spreadsheet, for example

  7. Translators • Translators allow for the creation of virtual machines • A program language defines its own machine • May restrict data operations • e.g., pure LISP does not have use floating point operations • May restrict control operations • Typically does not allow use of primitive i/o operations • Adds its own data and control structures

  8. Translators • Interpreter – decodes and executes each hardware machine instruction or higher level statement (initially Basic, Snobol, LISP, Perl, Smalltalk, Java) • Does not create object code • Each statement (even in a loop) must be repeatedly translated • Assembler – specific to hardware; translates almost 1-1 to hardware machine instruction

  9. Translators • Virtual machine is portable, user friendly(?) • Compiler creates object code in assembler or hardware machine language • Quick and dirty • Optimizing • Cross compiler – translates to machine language of another machine (simulation) • Useful for designing code for small chips • Load or link editor - source code is typically relocatable and object code is a single executable program with external references resolved • Preprocessor or macroprocessor • Source and object code both in high level language • Initial pass for expanding macros, constants, C++, etc.

  10. Hierarchies of virtual machines • Hardware machine- gates, switches • Augmented by microcode • Operating System virtual machine • Denies some functions • Adds some capabilities • e.g., i/o, semaphores • C virtual computer • Hides/ adds capabilities • C library routines • Web virtual machine • Browser executing HTML, XML pages

  11. Binding Times • Binding of data: association with cell(s) • Binding of operation: association with hardware primitive operation(s) • Typically several intermediate steps • Flexibility versus efficiency/ reliability • Late binding provides greater flexibility, less efficiency, typically less reliability

  12. Binding Times • During program execution • Module entry- semi-dynamic • Arbitrary run times – dynamic • During compile/ translation time • Bindings chosen by the programmer • Ex: types and their operations • Array and record size • Bindings chosen by the translator • Ex: position of data on the stack • Bindings chosen by the loader, linker • Ex: storage location or displacement

  13. Binding Times • During language implementation for specific hardware • possibly number implementation • C’s int • Issue of portability • During language definition type • The ability to define more operations for a type • The ability to define new data types

  14. Binding Times: example • Statement X = X + 10 • Association of Type with X • Language definition determines possible range of types (int, short int, float, complex, user defined, etc.) • X’s type may be chosen statically (C), or dynamically (SNOBOL) • Association of Value with X • Language implementation may determine range and representation of value • X’s value is determined at arbitrary pts of execution • Association of + • Language definition determines what + can be (or sum, etc.) • Binding of + to hardware or software op • Compile time in FORTRAN, C • At arbitrary pts of execution in C++ – polymorphism

  15. Binding time: example • static int X = 10; • In C • X’s range of types, meaning of = are determined at language definition • X is assigned 10 only upon first execution • X retains value between calls

  16. Do we need to know about the hardware? • High speed, large memories shield us from many of the problems that earlier programmers had • Speed of translating and executing Java is small in relation to network transmission, user response time • Can careful language design shield us from hardware? – not entirely

More Related