300 likes | 497 Views
Department of Computer and Information Science, School of Science, IUPUI. CSCI 230. Computer Architecture. Dale Roberts, Lecturer Computer Science, IUPUI E-mail: droberts@cs.iupui.edu. What is a Computer?. Computer Device capable of performing computations and making logical decisions
E N D
Department of Computer and Information Science,School of Science, IUPUI CSCI 230 Computer Architecture Dale Roberts, Lecturer Computer Science, IUPUI E-mail: droberts@cs.iupui.edu
What is a Computer? • Computer • Device capable of performing computations and making logical decisions • Computers process data under the control of sets of instructions called computer programs • Personal computers: economical enough for individual • Distributed computing: computing distributed over networks • Client/server computing: sharing of information across computer networks between file servers and clients (personal computers) Dale Roberts
User Application Software High-level Language Assembly Language Firmware Machine Code OS Hardware What is a Computer? (cont.) • Computer Hardware • Various devices comprising a computer: • Keyboard, screen, mouse, disks, memory, CD-ROM, and processing units • Hardware Trends: every year or two the following approximately double (Moore’s Law): • Amount of memory in which to execute programs • Amount of secondary storage (such as disk storage) • Used to hold programs and data over the longer term • Processor speeds • The speeds at which computers execute their programs
User Application Software High-level Language Assembly Language Firmware Machine Code OS Hardware What is a Computer? (cont.) • Computer Software • Computer Programs that run on a computer, including • Operation System (OS) • Application Software • Computer Language
Moore's Law • Defined by Dr. Gordon Moore during the sixties. • Predicts an exponential increase in component density over time, with a doubling time of 18 months. • Applicable to microprocessors, DRAMs , DSPs and other microelectronics. • Monotonic increase in density observed since the 1960s.
Moore's Law and Performance • The performance of computers is determined by architecture and clock speed. • Clock speed doubles over a 3 year period due to the scaling laws on chip. • Processors using identical or similar architectures gain performance directly as a function of Moore's Law. • Improvements in internal architecture can yield better gains than predicted by Moore's Law.
What is a Computer? (cont.) • Internet • The Internet enables • Quick and easy communication via e-mail • International networking of computers • Packet switching • The transfer of digital data via small packets • Allows multiple users to send and receive data simultaneously • No centralized control • If one part of the Internet fails, other parts can still operate • Bandwidth • Information carrying capacity of communications lines • Ex: Internet T2 at IUPUI • World Wide Web • Locate and view multimedia-based documents on almost any subject • Makes information instantly and conveniently accessible worldwide • Possible for individuals and small businesses to get worldwide exposure • Changing the way business is done
CPU Control Circuit (ex: PC: Program Counter) Memory I/O ALU Computer Organization A Typical Von-Neumann Architecture Example: • Input unit • Output unit • Memory unit • Arithmetic and logic unit (ALU) • Central processing unit (CPU) • Secondary storage unit
Computer Organization (cont.) Six logical units in every computer: • Input unit • Obtains information from input devices (keyboard, mouse) • Output unit • Outputs information (to screen, to printer, to control other devices) • Memory unit • Rapid access, low capacity, stores input information • ROM (Read Only Memory): CMOS, EPROM … • RAM (Random Access Memory): SRAM, DRAM, SIMM, DIMM …
Computer Organization (cont.) Six logical units in every computer (cont): • Arithmetic and logic unit (ALU) – part of CPU • Performs arithmetic calculations (addition, subtraction...) and logic decisions • Control unit (CU) - part of CPU • Supervises and coordinates the other sections of the computer • Secondary storage unit • Cheap, long-term, high-capacity storage • Stores inactive programs
Computer Organization (cont.) • Central Processing Unit (CPU), • “brain” of a computer, consisting of • Arithmetic and logic unit(ALU): performs arithmetic calculations (addition, subtraction...) and logic decisions (>, <, =, ...) • Control Unit (CU): decodes each machine instruction and sends signal to other components for carrying out the instruction. • An integrated circuit (IC) that is a full central processing unit is called a microprocessor (p); a CPU’s current instruction and data values are stored temporally inside the CPU in special high-speed memory location called registers. • CPU speed: ? MHz (M: Mega = 106, Hz=1/sec);
Computer Organization (cont.) • Memory • A large collection of circuits, each capable of storing bit • Cells (words): manageable units; typical size is 8 bits (1 byte), some machines are 16 bits (2 bytes) and some are 32 bits or 64 bits • Byte (8 bits), KB (kilobyte, 103 210 bytes), MB (Megabyte, 106 220 bytes), GB (Gigabyte, 109 230 bytes). Note: k ≠ K because 1000 ≠ 1024.
Most Significant Bit (MSB) Least Significant Bit (LSB) High-order end 0 0 0 0 0 1 0 1 Low-order end Computer Organization (cont.) • Computer memory is comparable to a collection of numbered mailboxes. To identify individual cells in a machine’s main memory, each cell is assigned a unique name, called its address • The organization of byte-size memory cell H e l l o , ASCII ... ... Data 01001000 01100101 01101100 01101100 01101111 00101110 Address 0000 0101 0000 0110 0000 0111 0000 1000 0001 0001 0001 0010 Address Bus Data Bus
Command-line Interface Graphical User Interface (GUI) UNIX MacOS MS_DOS Windows VMS X Windows (linux and solaris) Operation System (OS) • Responsibilities: • Communicating with the computer user • Managing allocation of memory, of processor time, and of other resources for various tasks • I/O handling: BIOS vs DOS services (Interrupts) • Read/Write data from secondary storage • Evolution of Operating Systems • Batch processing: do only one job or task at a time • Operating systems: manage transitions between jobs and Increase throughput (amount of work computers process) • Multiprogramming: Computer resources are shared by many jobs or tasks • Timesharing: Technique used to implement multiprogramming where the computer runs a small portion of one user’s job then moves on to service the next user
Application Software • Developed to assist a computer user in accomplishing special tasks • ex: word processing applications: MS-word or Word-perfect • ex: Spreadsheet applications: Lotus1-2-3, Excel • ex: Database: Oracle, MS-Access • Software Development Life Cycle (SDLC) • Problem: specify the problem requirements • Analysis: analyze the problem • Design: design the algorithm to solve the problem • Implementation: Implement the algorithm • Testing: test and verify the completed program • Maintenance: maintain and update the program
Programming Languages • Machine languages (machine dependent) • Native tongue of a particular kind of computer. Each instruction is a binary string. The code is used to indicate the operations to be performed and the memory cells to be addressed. This form is easiest form of computers to understand, but is most difficult for a person to understand. • Strings of numbers giving machine specific instructions • Example: +1300042774 +1400593419 +1200274027
Programming Languages (cont.) • Assembly languages (machine dependent) • English-like abbreviations representing elementary computer operations (translated via assemblers) • Again specific to only one type of computer. Uses descriptive names for operations and data, e.g. , “LOAD value”, “ADD delta”, “STORE value”. Assemblers will translate these to machine languages. Intermediate level. Somewhat descriptive, but basically following the machine instructions. • Example: LOAD BASEPAY ADD OVERPAY STORE GROSSPAY
a 10 Before b 7 a 17 After b 7 Programming Languages (cont.) • High-level languages (machine independent) • Codes similar to everyday English • High-level languages: Write program instructions called statement that resemble a limited version of English. e.g., the statement “value = value + delta”. Portable, meaning it can be used on different types of computers without modifications. Compilers translate them to machine languages. Examples are FORTRAN, PASCAL, COBOL, C, C++, BASIC etc. • Use mathematical notations (translated via compilers) Example: grossPay = basePay + overTimePay Example: Statement: a= a + b
Application Area Origin of Name Language FORTRAN Scientific programming Formula Translation COBOL Business data Processing Common Business-Oriented Language Lisp Artificial Intelligence (AI) List Processing C System Programming Predecessor B Prolog AI Logic Programming Ada Real-time distributed systems Ada Augusta Byron & Charles Babbage Smalltalk GUI, OOP Objects “talk” via message C++ Supports object & OOP C (++ is the increment operator) JAVA SupportsWeb programming Originally named “Oak” Programming Languages (cont.) • Structured programming • Disciplined approach to writing programs • Clear, easy to test and debug and easy to modify • Multitasking • Specifying that many activities run in parallel (still timesliced)
Semantic Gap • A “semantic gap” exists between the amount of information conveyed in assembly language v high level languages. Consider the following C single statement: x = x + 3; • This single statement may require many assembly language statements (operations): Load memory location 24 into accumulator Add a constant 3 to the accumulator Store accumulator in memory location 24 • The number of executable statement expands greatly during the translation process from a high level language into assembly language.
C Programming Language • C • High-level general-purpose language developed in 1972 at AT&T Bell Lab. By Dennis Ritchie from two previous programming BCPL and B • Originally developed to write the UNIX operating system • Hardware independent (portable) • By late 1970's C had evolved to "Traditional C" • Today, virtually all new operating systems are written in C or C++. • The current standard in C is ANSI C. • C++ is a more advanced version of C, incorporating among other things, the object-oriented constructs • Standardization • Many slight variations of C existed, and were incompatible • Committee formed to create a "unambiguous, machine-independent" definition • Standard created in 1989, updated in 1999 • C has become a popular language industry due its power and flexibility
The C Standard Library • C programs consist of pieces/modules called functions • A programmer can create his own functions • Advantage: the programmer knows exactly how it works • Disadvantage: time consuming • Programmers will often use the C library functions • Use these as building blocks • Avoid re-inventing the wheel • If a pre-made function exists, generally best to use it rather than write your own • Library functions carefully written, efficient, and portable
The C Standard Library (cont.) • The Key Software Trend: Objects in C++ and JAVA • Reusable software components that model items in the real world • Meaningful software units: ex: Date objects, time objects, audio objects, video objects, file objects, record objects…any noun can be represented as an object • More understandable, better organized, and easier to maintain than procedural programming • Favor modularity
The C Standard Library #include <stdio.h> main() { int i; for (i = 0; i ++; i < 10) { printf ("Hello World!\n"); } }
Phases of C Programs: 1. Program is created in the editor and stored on disk Editor Disk 2. Preprocessor program processes the code Preprocessor Disk 3. Compiler creates object code and stores it on disk. Compiler Disk Linker Disk 4. Linker links the object code with the libraries Primary Memory Loader 5. Loader puts program in memory. Disk Primary Memory CPU 6. CPU takes each instruction and executes it, possibly storing new data values as the program executes A Typical C Program Development Environment 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute
A Typical C Program Development Environment (cont.) Enter the program code and save as a source (*.c) file using Word Processor (editor) Revised source file Source (.c) file on disk (Format: text) Correct syntax errors Compiler attempts to translate the program into machine code Failure List of errors Success New object (*.obj) files (Format: binary) The linker links the new object file with other object files Other object (*.obj) files Input data Executable (*.exe, *.out) file (Format: binary) Welcome to CSCI230 The loader places the executable file into memory Executable program in memory Results • Procedure to Prepare a C Program for Execution
Constructs in C Language • Type Declarations: ex: int, float,… • I/O: ex: printf(), scanf() • Arithmetic and LogicalOperations: ex: +,-,*,/,%,>,<,==,… • Arrays, Pointers, Structures, Unions, … • Functions • Arguments & return values • Recursion • Control Mechanisms: ex: if, else, while, for,… • Characters & Strings: ex: strcat(), strcpy(), … • File Processing: ex:fopen(), fclose(), … • Pre-processor: ex: #define … • Misc. • bit operations, ...
Acknowledgements • Moore’s Law: Kopp, Carlo. Monash University. Melbourne, Australia. 2000.