Introduction to Computer Architecture Concepts



Similar documents
Management Challenge. Managing Hardware Assets. Central Processing Unit. What is a Computer System?

Chapter 6. Inside the System Unit. What You Will Learn... Computers Are Your Future. What You Will Learn... Describing Hardware Performance

The Central Processing Unit:

Logical Operations. Control Unit. Contents. Arithmetic Operations. Objectives. The Central Processing Unit: Arithmetic / Logic Unit.

CHAPTER 2: HARDWARE BASICS: INSIDE THE BOX

Chapter 3: Computer Hardware Components: CPU, Memory, and I/O

what operations can it perform? how does it perform them? on what kind of data? where are instructions and data stored?

Chapter 2 Logic Gates and Introduction to Computer Architecture

Chapter 2 Basic Structure of Computers. Jin-Fu Li Department of Electrical Engineering National Central University Jungli, Taiwan

MICROPROCESSOR AND MICROCOMPUTER BASICS

Computer System: User s View. Computer System Components: High Level View. Input. Output. Computer. Computer System: Motherboard Level

Hardware: Input, Processing, and Output Devices. A PC in Every Home. Assembling a Computer System

Computer Performance. Topic 3. Contents. Prerequisite knowledge Before studying this topic you should be able to:

Computers. Hardware. The Central Processing Unit (CPU) CMPT 125: Lecture 1: Understanding the Computer

A+ Guide to Managing and Maintaining Your PC, 7e. Chapter 1 Introducing Hardware

Advanced Computer Architecture-CS501. Computer Systems Design and Architecture 2.1, 2.2, 3.2

Main Memory & Backing Store. Main memory backing storage devices

Machine Architecture and Number Systems. Major Computer Components. Schematic Diagram of a Computer. The CPU. The Bus. Main Memory.

MULTIPLE CHOICE FREE RESPONSE QUESTIONS

Basic Concepts of Information Technology (IT)

lesson 1 An Overview of the Computer System

Chapter 01: Introduction. Lesson 02 Evolution of Computers Part 2 First generation Computers

TYPES OF COMPUTERS AND THEIR PARTS MULTIPLE CHOICE QUESTIONS

CHAPTER 7: The CPU and Memory

CSCI 4717 Computer Architecture. Function. Data Storage. Data Processing. Data movement to a peripheral. Data Movement

Block diagram of typical laptop/desktop

LSN 2 Computer Processors

Primary Memory. Input Units CPU (Central Processing Unit)

Chapter 1 Computer System Overview

CHAPTER 4 MARIE: An Introduction to a Simple Computer

Chapter 8 Memory Units

ELE 356 Computer Engineering II. Section 1 Foundations Class 6 Architecture

Computer Basics: Chapters 1 & 2

Central Processing Unit (CPU)

CSCA0102 IT & Business Applications. Foundation in Business Information Technology School of Engineering & Computing Sciences FTMS College Global

Central Processing Unit

Computer Architecture Lecture 2: Instruction Set Principles (Appendix A) Chih Wei Liu 劉 志 尉 National Chiao Tung University

COMPUTER SCIENCE AND ENGINEERING - Microprocessor Systems - Mitchell Aaron Thornton

(Refer Slide Time: 00:01:16 min)

Definition of Computers. INTRODUCTION to COMPUTERS. Historical Development ENIAC

What's in a computer?

CHAPTER 6: Computer System Organisation 1. The Computer System's Primary Functions

Microprocessor & Assembly Language

Let s put together a Manual Processor

CSCA0201 FUNDAMENTALS OF COMPUTING. Chapter 1 History of Computers

Writing Assignment #2 due Today (5:00pm) - Post on your CSC101 webpage - Ask if you have questions! Lab #2 Today. Quiz #1 Tomorrow (Lectures 1-7)

Computer Systems Structure Main Memory Organization

Parts of a Computer. Preparation. Objectives. Standards. Materials Micron Technology Foundation, Inc. All Rights Reserved

İSTANBUL AYDIN UNIVERSITY

1 PERSONAL COMPUTERS

Chapter 2: Computer-System Structures. Computer System Operation Storage Structure Storage Hierarchy Hardware Protection General System Architecture

Chapter 1. The largest computers, used mainly for research, are called a. microcomputers. b. maxicomputers. c. supercomputers. d. mainframe computers.

CISC, RISC, and DSP Microprocessors

COMPUTER HARDWARE. Input- Output and Communication Memory Systems

UNIT 2 CLASSIFICATION OF PARALLEL COMPUTERS

Technical Product Specifications Dell Dimension 2400 Created by: Scott Puckett

Multiple Choice Questions(Computer)

To convert an arbitrary power of 2 into its English equivalent, remember the rules of exponential arithmetic:

MICROPROCESSOR BCA IV Sem MULTIPLE CHOICE QUESTIONS

Chap-02, Hardware and Software. Hardware Model

a storage location directly on the CPU, used for temporary storage of small amounts of data during processing.

CS101 Lecture 26: Low Level Programming. John Magee 30 July 2013 Some material copyright Jones and Bartlett. Overview/Questions

Introduction to RISC Processor. ni logic Pvt. Ltd., Pune

Microprocessor or Microcontroller?

Module 2. Embedded Processors and Memory. Version 2 EE IIT, Kharagpur 1

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Computer Architecture TDTS10

Introducción. Diseño de sistemas digitales.1

Overview of MIS Professor Merrill Warkentin

Computer Components Study Guide. The Case or System Box

ADVANCED PROCESSOR ARCHITECTURES AND MEMORY ORGANISATION Lesson-17: Memory organisation, and types of memory

MICROPROCESSOR. Exclusive for IACE Students iacehyd.blogspot.in Ph: /422 Page 1

Computer Hardware HARDWARE. Computer Hardware. Mainboard (Motherboard) Instructor Özgür ZEYDAN

An Introduction to Computer Science and Computer Organization Comp 150 Fall 2008

Computer Organization. and Instruction Execution. August 22

1.1 Electronic Computers Then and Now

Introduction To Computers: Hardware and Software

STUDY GUIDE CHAPTER 1

Traditional IBM Mainframe Operating Principles

on an system with an infinite number of processors. Calculate the speedup of

Module 1 Introduction to Information and Communication Technologies

Obj: Sec 1.0, to describe the relationship between hardware and software HW: Read p.2 9. Do Now: Name 3 parts of the computer.

Introduction to Cloud Computing

DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING Question Bank Subject Name: EC Microprocessor & Microcontroller Year/Sem : II/IV

Computer Systems Structure Input/Output

Chapter 4 IT Infrastructure: Hardware and Software

Week One Lecture Note 1.0 INTRODUCTION TO COMPUTER 1.1 WHAT IS COMPUTER?

Computer Systems Design and Architecture by V. Heuring and H. Jordan

Record Storage and Primary File Organization

Copyright 2012 Pearson Education, Inc. Chapter 1 INTRODUCTION TO COMPUTING AND ENGINEERING PROBLEM SOLVING

Introduction to Information System Layers and Hardware. Introduction to Information System Components Chapter 1 Part 1 of 4 CA M S Mehta, FCA

CPU Organisation and Operation

Week 1 out-of-class notes, discussions and sample problems

Unit A451: Computer systems and programming. Section 2: Computing Hardware 1/5: Central Processing Unit

COMPUTER BASICS. Seema Sirpal Delhi University Computer Centre

Chapter 4 System Unit Components. Discovering Computers Your Interactive Guide to the Digital World

Instruction Set Architecture. or How to talk to computers if you aren t in Star Trek

Communicating with devices

Programming Logic controllers

CPU Organization and Assembly Language

Transcription:

to Computer Architecture Concepts 1. We will start at the very beginning, first with the fundamental concepts behind the modern digital computer, and then some details of their implementation. Many people, unfamiliar with how a computer functions, attribute to it a certain amount of intelligence, even anthropomorphizing it until it seems to have a mind of its own. This can lead to behavior in people towards computers similar to their behavior toward other people, including competition, fear of being shown to be ignorant, and other kinds of emotional distress that they would never exhibit towards any other appliance such as a television set or microwave oven. The overall set of behaviors is sometimes classified as computer phobia, which also includes very human emotions such as fear that the computer is too complicated to be used safely, without inadvertently breaking it. To combat such phobia, as well as to level set our thinking as to what a computer is really capable of, we should consider the following: a computer, the physical device itself, is nothing more than a collection of metal, silicon and plastic. Much of this hardware is in the form of electronic circuits, which respond to various input voltages ( signals ) and produce corresponding voltages at the outputs of the circuits. It has no innate intelligence. This hardware will simply sit there idle, unless it is told what to do: It needs to be given instructions. A single instruction is presented, in the form of a set of electrical signals, at the inputs to the circuits, whereupon the computer s circuits will react, producing some output. The process of producing a result from a single instruction is called executing the instruction. The collection of circuits which retrieve instructions and execute them is known as the Central Processing Unit, or CPU. To do really useful work, of course, takes more than a single instruction, so the computer is generally presented with a number of instructions, one after the other in sequence. Such a sequence of instructions is called a program. For the instructions to do useful work, it is frequently necessary for there to be available some data which the instructions will process in some way, whether it be to perform numerical calculations or perform some other manipulation of the data. This data is also presented to the computer s circuits in the form of electrical signals, and the outputs of the circuits are frequently used as new data created from the old, original, data. Clearly, the program must be resident somewhere while it is running, and so they are stored in a memory or storage unit attached to the Central Processing Unit (CPU). Finally, some mechanism must be provided to identify where in memory the instructions are located, which instruction is the next to be executed, and to actually retrieve ( fetch ) the instruction from the memory and bring it into the CPU for execution. Clocking NTC 8/22/04 1

To maintain control over the sequence of operations the computer does to execute the instructions requires that each operation be allocated a certain amount of time. To accomplish this, the hardware is provided with a clock, actually an oscillator of some specified frequency. As a rule, the computer is designed to do some useful unit of work during each cycle of the oscillator. An oscillator is characterized by the number of cycles it produces each second. The unit of measurement is Hertz: 1Hz = 1 cycle per second (cps). In today s computers, the speed of the internal oscillator is measured in billions of cycles per second, or gigahertz (GHz). For instance, current Pentium processors run between 1 MHZ and 2 GHz (Gigahertz = billions of cycles per second). The frequency of the oscillator is inversely proportional to the cycle time of the clock. That is, Frequency = 1/Cycle Time and Cycle Time = 1/Frequency A 100MHz clock, for example, produces a cycle time of 1/(100 x 10 6 ) =.001 x 10-6 seconds = 1 x 10-9 seconds = 1 nanosecond Typically, at these small cycle times, it takes several cycles to complete the execution of a single instruction. This measurement, cycles per instruction (CPI), is a common way of comparing the relative performance of two computer systems of differing design and implementation. Another measure of performance, used primarly in the mainframe environment, is MIPS which stands for Millions of Instructions per Second. Note, however, that both of these measurements of performance are open to interpretation since on differently designed machines there are different sets of instructions, it takes a different number of instructions to do the same task, and it takes different amounts of time to execute the same kind of instruction (an ADD, say). Note that there are many ways to measure the performance of a computer system, depending on the purposes for which it is optimally designed. In addition to CPI and MIPS, we may optimize a computer system for Thruput (the number of jobs completed per unit time), response time (how fast an interactive user sees results after pressing a key) or CPU utilization (what percentage of CPU clock cycles are busy doing useful work and how many are idle), among others. NTC 8/22/04 2

Review Questions 1. How many cycles are meant by the terms kilohertz (KHz), megahertz(mhz) and gigahertz (GHz)? 2. What is the cycle time of a machine using a 50 MHz clock? 3. What is the clock speed of a machine with a 4 nanosecond cycle time? 4. What are the differences between the performance measurements: CPI, MIPS, Thruput, Response Time, CPU Utilization? 5. Which of the performance measurements would you be most interested in under each of the following conditions? a. You own a Computer System and lease time on it to other users; they are charged by ow much CPU time they use. b. Your computer system is connected to a large number of remote terminals at which users and programmers sit to do their work. c. You own a computer system and run jobs on it for other users; you get paid on a per job basis. d. You run a particular computer program, such as a payroll program, every week. It is important that the program completes in a timely fashion so that you can cut salary checks the next day. Bits and Bytes Now let s consider the character of the electronic circuits which comprise the CPU (as well as most of the rest of any computer system.) A modern computer is referred to as digital for the simple reason that all the electronic components are designed to respond to, and produce, signals that have only a small finite number of values - two, in fact. At the fundamental component level the computer is built out of transistors which are used as switches. As with a normal light switch, a computer s transistors have just two states (physically, they are conducting current or they are not conducting current). These states may have logical interpretations, depending on the program which is running such as True and False, Yes and No, On and Off, etc., but we generally symbolize the two states of any switch with the symbols 0'and 1'( zero and one ). Within the CPU the values 0 and 1 are remembered in storage devices called registers. The smallest register can remember only a single 0 or 1, and is called a bit (the word bit is short for binary digit, which is what 0 and 1 are.) If we want to be able to remember more than one bit (two things) we can join several bits together to create larger registers. Note the following A single bit can remember just two (2) states, 0 and 1; If we add another bit, then it also can have two states, and for each of its NTC 8/22/04 3

states the original bit can take on the original two states, so a total of four (2*2 = 2 2 ) states can be remembered: 00 01 10 11 Adding an third bit allows us to remember 2*2*2 =2 3 = 8 states: 000 100 001 101 010 110 011 111 In general, if a register has n bits, then it can have 2 n states; i.e. it can identify 2 n objects, if each object is assigned one of the combinations of 1's and 0's which the register can contain. A register containing 8 bits can have 2 8 = 256 different combinations of 1's and 0's. This is a convenient number since it is sufficient to be able to assign a different bit combination to each letter of the alphabet ( A, B, a, b...), the numerical characters ( 1', 2', 3',... 9', 0'), and all the punctuation marks (!,?,...). Eight bits in a group is called a byte and is the unit of storage measurement in any computer system. As we have seen, a byte is the amount of storage which can identify any one text character. (By the way, half a byte, four bits, is known as a nybble ). In the previous discussion on clock speeds and cycle times, we referred to kilohertz, megahertz, and gigahertz, which meant 10 3, 10 6, and 10 9 cycles per second, respectively. Similarly, we will frequently refer to kilobytes, megabytes and gigabytes. However, these will refer to 2 10 (-1024), 2 20 (=1024 2 ), and 2 30 (=1024 3 ), respectively; that is, they are based on powers of 2 instead of powers of 10. In all future discussions, any byte-measurements given in these English measurement terms will assume that the corresponding numbers are powers of 2. The following table of base 2 exponential to decimal/english equivalents should be memorized. NTC 8/22/04 4

Binary Decimal Binary Decimal Binary English 2 0 1 2 5 32 2 10 1024 = 1K 2 1 2 2 6 64 2 20 1M 2 2 4 2 7 128 2 30 1G 2 3 8 2 8 256 2 4 16 2 9 512 For example, if a computer system is designed to accommodate 256 Megabytes of memory, this can be converted to base 2 exponential as follows: 1. 256 = 2 8 2. A Megabyte = 2 20 3. 256 Megabytes = 2 8 x 2 20 = 2 28 This means that such a computer system would require an address register to be 28 bits in size. Similarly, if a computer architecture has instructions with an 11 bit Op Code field, then the total number of possible op codes is 2 11 = 2 1 x 2 10 = 2K (=2048) op codes. Review Questions 1. How many bit combinations are possible in a 4-bit register? 2. How many bits are needed to identify 64K objects? 3. Convert the following exponential numbers to English terms a. 2 8 b. 2 36 c. 2 11 d. 2 29 e. 2 0 4. Convert the following English terms to base 2 exponential a. 64M b. 32G c. 2 d. 8K Machine Instructions and Data NTC 8/22/04 5

We can now appreciate that at the CPU hardware level, instructions and data are just collections of bits. An instruction in this form is known as being in machine language ; this is appropriate since, for all practical purposes, only the machine (the computer) can understand it. In the CPU the instruction resides in a register, the size of which depends, as we will see, on the architecture of the CPU. That is it depends on how the design of the computer was specified. The instructions are in the CPU only at the point in time when they are being executed 1 ; otherwise they reside in memory, waiting to be fetched into the CPU. The collection of bits in an instruction are divided up into groups called fields, with each field containing a particular kind of information. In general these fields fall into three categories: Op code, operands, and modifier fields. The Op code is usually the first field of an instruction and identifies which operation (addition, subtraction, move, etc.) is to be performed. The second part contains one or more operands. Usually, these are actually pointers (usually called addresses) to the data which is to be used by the instruction 2. Some architectures may include additional modifier fields whose purpose is to modify in some way the basic operation of the op code. For instance, modifier bits may be used to specify the addressing mode of the instruction. Other architectures include this function in the op codes themselves, resulting in a much larger instruction set. Review Questions 1. What are the three most common kinds of fields which constitute an instruction? 2. Which kind of field would specify that a LOAD instruction (an instruction that moves data from memory into a local register) is to be performed? 3. Do all architectures specify a modifier field? 1 This is actually too simplistic. For performance reasons most modern computer systems prefetch multiple instructions into the CPU at once to reduce the number of memory accesses required. However, this is an organizational decision and is invisible to the architecture. 2 Note that not all architectures have instructions that require operands, and in those that do not all instructions have operands. NTC 8/22/04 6

Memory Programs whose instructions are in the process of being executed, along with the data being used, actually reside in the memory of the computer system. Memory is a large collection of bytes, each of which is identified by its address. Byte addresses are created by simply numbering the bytes, starting with zero. All of the bytes in memory are numbered sequentially, from 0 to n-1 (where n is the total number of bytes in memory). A computer system s performance is partially determined by how rapidly data and instructions can be retrieved from memory into the CPU (and also the speed with which results can be placed back in memory). Maximizing this speed means fetching as much information as possible on each access to storage, so rather than retrieving individual bytes, bytes are grouped into words. The word size is often a measure of the power of a CPU; current computers are generally referred to as 32-bit machines, which means that they fetch 32 bits, or four bytes, from memory on each access. Thus, the word size of such a machine is 32 bits (four bytes). While each byte has an address, we can also identify an address with each word; this word address is simply the address of the first byte in the word. We will find addresses associated with other groupings of memory bytes as well, including pages, lines, and segments, all of which have similarly defined addresses. Memory holding currently active programs and data is usually referred to as Random Access Memory (RAM for short) since any byte of data can be immediately accessed merely by specifying its address. This is in contrast to other technologies which may require that data be accessed by sequentially accessing every byte until the desired one is reached (think of data on magnetic tape, for instance.) RAM is implemented in a high-capacity semiconductor technology which, among other characteristics, is volatile This means that, unless power is constantly supplied to the memory, the data stored there will be erased. Non-volatile media, such as magnetic or optical media, therefore, is also needed in a computer system to provide a place for permanent storage of data and programs. In addition to user programs and data, memory is also used by the system to store system code and data, and tables and other information needed to keep instructions executing, handle errors and other exceptional conditions, and communicate with I/O devices. Memory in modern computer systems has become quite complex, and has evolved into a memory hierarchy. This memory hierarchy includes all memory in the system, from the fastest on-chip registers and caches (small high speed memory which hold subsets of large slower speed memory elements) to slow external secondary storage devices such as hard drives and tape archiving systems. As we will see, at each stage in the NTC 8/22/04 7

hierarchy, a tradeoff is made between speed of access to the data, and the quantity of data available at that stage (memory capacity). Most of these levels are added for performance considerations and, except for Main Storage, are not architected resources. Review Questions 1. What is address of the first byte in memory? 2. If a memory has 2048 bytes, what is the address of the last byte? 3. How many bits are in a word if the word contains 8 bytes? 4. How many 4-byte words are there in a 128MB memory? 5. Give an example of a non-volatile magnetic storage device. An optical storage device. 6. In a memory hierarchy, does access speed vary directly or indirectly with capacity? The CPU (Central Processing Unit) The CPU, as we have indicated, contains all that hardware which fetches (retrieves) instructions (and their operands) and executes them, storing (returning) the results to memory. The CPU is partitioned into several units, each with their own area of responsibility: The Storage Control Unit controls the fetching of instructions and data from memory, and the storing of data (results) back into memory. The Instruction Control Unit decodes an instruction and prepares the rest of the CPU for its execution. The Execution Unit actually performs the operation called for by the instruction Among the resources contained in the CPU are a number of registers used to hold instructions, data, status, intermediate results and other information needed to fetch and execute instructions. These can be categorized as follows: General Purpose Registers: These registers are made available to programmers; they can be addressed by programs and can be used by them to store data, operands, results, etc. Certain addressing and status registers which are also available to the program to be used for various control purposes. Control and Addressing registers which are invisible to programmers, and are used only by the CPU hardware for proper operation. NTC 8/22/04 8

Within the Execution Unit the device primarily responsible for actually performing logical and arithmetic operations is called the Arithmetic Logic Unit (ALU). Some systems will provide additional special purpose execution elements such as Multipliers and special purpose adders, primarily for the purpose of making the CPU as efficient as possible. All of the registers, controls, and other units such as the ALU are connected together by wires and buses (bundles of wires) called, collectively, the data flow. This is because data flows from one place to another (usually from one register to another) over the wires of the data flow. There are several philosophies used when deciding on the structure of a data flow. In high speed mainframe computers, it is usual to implement the various busses on a point-to-point basis. That is, wherever possible each unit which needs to pass information to another unit has a direct connection to that unit. With this implementation multiple transfers of data can be going on simultaneously over the individual busses. On the other hand, most personal (micro) computers are implemented using a common bus structure. In this implementation all data flows from one place to another over a common set of wires (the bus). Clearly, only one piece of data can be occupying this bus at any point in time. While this reduces the complexity of the data flow, it tends to slow things down. Review Questions 1. What kind of registers are available to programs? 2. What device is used to perform a subtraction? 3. Name an advantage of a point-to-point data flow vs a bus structure. Name a disadvantage. 4. Name the three kinds of units which usually constitute a CPU. 5. In which unit would you expect to find the Instruction Register? The GPRs? Input/Output (I/O) To have a complete computer system we need to provide a way for users to interact with the system, as well as a way for the CPU to communicate with the myriad of devices that are now available to use with a computer system, such as printers, scanners, speakers, etc. We can categorize these devices as Input, Output, Input/Output, and Storage devices (the latter are more accurately referred to as external storage devices, to distinguish them from RAM and internal CPU registers.) NTC 8/22/04 9

Input devices allow data, programs, and control information to be delivered to the computer. Examples of input devices include: keyboards mice and other pointing devices microphones scanners Output devices allow the CPU to pass the results of program execution to the user. Examples: CRT or LCD (monitor) Printers sound cards/speakers External Storage devices provide for long term storage and backup of data and programs. Hard Disk Drives (input and output) Floppy disk drives (input and output) CD-ROMs (input only) CD-Rs and CD-RWs (input and output) Tape drives (input and output) Devices which can be used for both input and output include modems network interface cards Review Questions 1. Identify the following devices as either Input, Output, Input&Output, or Storage. a. DVD d. Printer b. Mouse e. Tape drive c. Hard Drive f. Touch Screen 2. What is the relative speed of any I/O device vs the typical clock speed of a CPU? System Interconnections At the System Level, it is necessary to provide communication paths between all the major components: between memory and the CPU, between the CPU and I/O, and NTC 8/22/04 10

sometimes between the I/O and memory. The choices are largely the same as described above for data flows within the CPU. In a high performance system, and one which supports a very large amount of memory as well as external storage, the preferred system organization uses direct connections between components. The primary advantage of such an arrangement is that multiple transfers of data or communication can be going on simultaneously. The primary alternative to direct connection is a bus connection. In this organization all components which must talk to one another are connected to a common bus. The advantage is reduction of complexity and cost, but the disadvantage is that only one data transfer or communication can occur at a time. Multiprocessing Multiprocessing(MP) refers to computer systems which include more than one processor, or CPU. It can sometimes refer to systems that are really multiple complete systems with some form of communication between them 3. Multiprocessing systems can be grouped into two distinct classes based on how the individual processors share memory. 1. Tightly Coupled Multiprocessors. In a tightly coupled multiprocessing system, all the CPUs are directly connected to the same memory units. In other words, memory is shared directly among all the processors. 2. Loosely Coupled Multiprocessors In a loosely coupled multiprocessing system, each CPU is connected directly only to its own memory units. However, it has access to the memory units of the other CPUs in the system through some indirect path, such as over the I/O communication paths. Multiprocessing systems are also frequently categorized based on the amount of instructions and data they can deal with simultaneously. That is, do all the processors run the same program (Single Instruction stream) or are the each running their own program (Multiple Instruction streams)? Similarly, are the all working on the same set 3 It should not be confused with the term multitasking, which refers to the simultaneous running of several programs on a single computer system. NTC 8/22/04 11

of data (Single Data set) or does each work on their own individual set of data(multiple Data sets)? The possible combinations have been categorized as follows: 1. SISD: Single Instruction Single Data (Parallel Processors) All processors work on the same instruction, and process the same data. The system is frequently referred to as a Parallel Processor. Such multiprocessors are used for very large problems such as weather forecasting and oil exploration. Also for finding Pi to millions of places and searching for extraterrestrial life. 2. SIMD: Single Instruction Multiple Data (Vector) All processors work on the same instruction, but the instruction points to a large collection of data elements. One example is something called a vector processor or array processor. Suppose, for example we have two vectors of 10 elements each. A single instruction is used to specify that the vectors are to be added, element by element, to produce a 10 element result. But 10 processors are assigned to the task, each one assigned one pair of the input vector elements and producing one of the 10 sum elements. 3. MISD: Multiple Instruction Single Data (N/A) This organization really has no practical use, but, for completeness, refers to a hypothetical case where several different programs, or instruction streams are operating on the exact same data items. 4. MIMD: Multiple Instruction Multiple Data (Uniprocessors) This arrangement really amounts to a cluster of uniprocessors, each doing their own thing with their own instruction streams and their own data. Modern mainframes are frequently organized in this way. Distributed Processing Distributed Processing is somewhat distinct from multiprocessing in that rather than talk about instructions, we talk about entire programs. A single program might run, asynchronously or synchronously, on many machines to solve a single problem. In general the data is different for each machine, but it all constitutes a single large set of data which has also been distributed across the multiple computer systems. Distributed processing can be done on any set of machines and requires no unique architecture or organization. An example of distributed processing is the SETI@home project, in which individuals around the world allocate idle CPU time on their home computers to the NTC 8/22/04 12

process of analyzing data from radio telescopes in an effort to detect patterns which might indicate the presence of intelligent life elsewhere in the universe. Review Questions 1. If a computer system contains two processors and one storage element, would this be tightly coupled, loosely coupled, or neither? 2. Could two computers which are sharing resources over a network be considered tightly coupled, loosely coupled, or neither? 3. Identify the following computing environments as SISD, SIMD, or MIMD. a. A MP computer system with an architecture that includes instructions to multiply matrices. b. A MP system which analyzes seismic data in an effort to locate new oil fields. c. The system in question 1, where the two processors are running separate programs. d. The system in question 2, where the two processors are running instances of the same progam. Some Definitions All of the above describes the components and concepts, in very general terms, which go to make up a computer system. Specific computer systems are specified by the functions they are designed to perform and how they are implemented. A Computer Architecture describes the functional characteristics of a particular computer system. More specifically, it tells a programmer (specifically, an Assembly Language programmer) what resources are available to them in the writing of their programs. Specifically, these include 1. The Instruction Set - what instructions are available to build programs out of, how they are used, and how they behave (what kind of inputs and results are involved with each instruction.) 2. The maximum amount of Memory (RAM) allowable - This is sometimes indirectly specified by the maximum size of memory operand addresses allowed in an instruction. Note that the architecture will specify a maximum address size, and hence a maximum memory size, but not how much memory is actually installed (although there will be a minimum requirement.) NTC 8/22/04 13

3. The number of programmable General Purpose Registers (GPRs) - These are registers available to programmers for use as temporary operand and result storage, also used for partial results and the source and destination of Memory contents. In addition, there are usually a separate (smaller) set of Floating Point Registers dedicated to arithmetic operations on floating point numbers 4. Other miscellaneous control resources such as Program Status Words, Control Registers, etc. which the programmer may need to access (although usually cannot modify). Computer Organization refers to the specific way in which a given Computer Architecture is implemented. This is the physical structure of the computer system, including the choice of data flow, organization of memory and I/O, and how each component is implemented, usually with the goal of maximizing the performance of the system. Note that The organization is not unique; there are many ways to build hardware to perform the same functions. The organization generally incorporates additional complexity above the minimum required, for the purposes of improving performance and reliability. Many of the actual hardware components are invisible to both the architecture and the programmer. Review Questions Identify the following items as likely to be specified by the architecture, or by the choice of system organization: 1. Memory address size (in bits). 2. The number of physical main memory units. 3. The size of a memory cache. 4. The number of floating point registers 5. The contents of the program status word. 6. The form of the data flow. 7. The number of hard drives. 8. The pointing devices. 9. The functions of the ALU. 10. The size of a buffer for prefetched instructions NTC 8/22/04 14

History 2. History Brief History The following list enumerates the high points in the evolution of the modern computer system. In the early days, computer systems (not called that) were mechanical devices, built out of gears and pulleys, and programmed by physically setting switches and also, surprisingly, using punched cards (see item 2.) In the 1930's computing devices began to be built out of electrical components (see item 4), although the method of programming them remained the same. In the late thirties (see item 5) we reach the modern era of electronic computers in which the primary devices are constructed of active electronic components such as vacuum tubes and transistors. At this point it has been traditional to divide the evolution of computer hardware and architecture into generations, defined primarily by the technology out of which they are constructed. Summarizing these generations, we have Generation First Second Third Fourth Fifth Technology Vacuum tubes Transistors Integrated Circuits Large Scale Integrated Circuits Not here yet; see text The difference between the third and fourth generations is basically the level of integration (number of transistors per chip). The third generation had as few as half a dozen up to several hundred transistors per chip; the fourth has thousands, and now millions, of transistors per chip. The fifth generation has not arrived. The term Fifth Generation was for many years used to indicate a new level of architecture being developed in Japan. However, this development never came to fruition. Currently technology is still considered to be fourth generation, but with a very high degree of chip integration. By the way, this is a good point at which to mention Moore s Law. This law, empirically based, says that the level of chip integration doubles every 18 months. In terms of number of transistors per chip, this law has been found to be as true today as it was 40 years ago, when integrated circuits were first used in computer systems. Current theoretical developments in computer architecture revolve around the development of RISC systems. Up until the 1980's the trend was for each new NTC 8/22/04 15

History architecture to add new, more powerful, instructions. Since there was a significant amount of overhead in the retrieval of instructions from memory, the more work a single instruction could do the more efficient a computer system should be. This led to very complicated instruction sets and such architectures are called CISC (Complicated Instruction Set Computers). In the 1980s a new philosophy emerged which suggested that architectures would be more efficient with much fewer, simpler instructions. These instructions would execute in a very small number of cycles (the goal of all CPU designers is to achieve a performance of 1 cycle per instruction, or 1 CPI). Such an architecture is called a RISC (Reduced Instruction Set Computer) architecture. Many of today s high-performance workstations are RISC machines, while most microcomputers are evolving to a hybrid of CISC and RISC instruction sets. Brief listing of major computer developments 1. Pascal 1642 invented (not built) calculating machine 2. Jacquard 1801 invented a loom that used punched cards (programmable) 3. Babbage 1800s - Analytical engine - input cards, decimal (see page 21 of Englander) 4. Aiken 1937 Mark I - relays, decimal, electromechanical (gears as well as relays) 5. Atanasoff 1939 - ABC (Atanasoff-Berry Computer) - vacuum tubes, binary [First Generation] 6. Mauchly-Eckert 1946 ENIAC - vacuum tube, decimal, patch panels, tenposition switches. 18,000 tubes, 30 tons. Ran until 1955. 7. Von Neumann 1945 - memory to hold programs and data, binary EDVAC and IAS 8. Univac Mauchly-Eckert 1947 UNIVAC 9. IBM 7094 - transistors [Second Generation] 10. IBM S/360 - Integrated Circuits [Third Generation] - consistent architecture across multiple models. Allows customer to grow without reprogramming: upward compatible. 11. Minicomputers PDP-8 (DEC) 12. LSI [Fourth Generation] 13. Intel 1971 4004 8008 Special purpose 14. Intel 1974 8080 General purpose 15. MITS 1975 Altair 8... 16. Apple, Radio Shack 17. IBM PC 1981 Intel 8086/8088 4.77 MHZ no HD 64K/256K mem, 8-bits 18. XT 8088, HDD 19. AT 80286 16-data, 24-address bits, 8-10 MHz 20. 386, 486 32-bits, 25MHz NTC 8/22/04 16

History 21. RISC systems 1983 22. Pentiums NTC 8/22/04 17