1 / 20

Computer Architecture Lecture Notes Spring 2005 Dr. Michael P. Frank

Computer Architecture Lecture Notes Spring 2005 Dr. Michael P. Frank. Competency Area 1: Computer System Components. Why Study Computer Architecture? . According to William Stallings text, the IEEE/ACM Computer Curricula 2001 Joint Task Force reported the following:

kyne
Download Presentation

Computer Architecture Lecture Notes Spring 2005 Dr. Michael P. Frank

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. Computer Architecture Lecture Notes Spring 2005Dr. Michael P. Frank Competency Area 1: Computer System Components

  2. Why Study Computer Architecture? • According to William Stallings text, the IEEE/ACM Computer Curricula 2001 Joint Task Force reported the following: The computer lies at the heart of computing. Without it most of the computing disciplines today would be a branch of theoretical mathematics. To be a professional in any field of computing today, one should not regard the computer as a just a black box that executes programs by magic. All students of computing should acquire some understanding and appreciation of a computer system’s functional components, their characteristics, their performance, and their interactions. Students need to understand computer architecture in order to structure a program so that it runs more efficiently on a real machine. In selecting a system to use, they should be able to understand the tradeoffs among various components, such as CPU clock speed versus memory size.

  3. Computer System Components • In most generalizations of computers, there are essentially five classic components that are designed: • Input Systems (e.g. keyboard, mouse) • Output Systems (e.g. Monitor display, printer) • Memory (contains stored programs and memory) • Control (component that controls memory, I/O, datapath) • Datapath (component that performs arithmetic operations)

  4. Computer System Components • Some Terminology & General Definitions: Because of the binary nature of computers, we typically use powers of 2 to represent large and small numbers. However, normal usage requires powers of 10 expressions. For example, we often use powers of 2 for describing memory capacities and powers of 10 for clock frequencies.

  5. Computer System Components • A byte refers to 8 bits. A nibble is half a byte or 4 bits. • A word is a group of bits that is processed simultaneously. Typical words sizes are 8, 16, and 32. • Bits in a word can be numbered from left to right (little endian) or from right to left (big endian). • The leftmost bit is called the Most Significant Bit (MSB). • The rightmost bit is called the Least Significant Bit (LSB). • Other terms – UNITS: seconds (s), bits (b), bytes (B), words (w). For example, Gb/s; ns; MB; Mb • Reciprocal seconds are called Hertz (Hz), so a clock period of 100ns corresponds to a clock rate of 10 MHz.

  6. Computer System Components • Bits are used to represent both instructions and data. • Initially only binary numbers are used to design and program computers, however this became tedious. Hence, the development of assembly languageand high-level programming languages. • The notion of low-level and high-level programming is a common approach to hardware and software system design. • A system that consists of hierarchical layers with each lower layer hiding the details from the layer above it is known as abstraction.

  7. Computer System Components • Levels or layers of Abstraction can be though of as the highest “user” level to the lowest level (transistor level). • Separability is the key to effective computer abstraction. For example, if you run Microsoft Word or some other word processing program, you don’t need to know anything about the inner-workings of its programming. • Exploiting separability supports the development of upwardly-compatible machines (allows a user to upgrade to a faster, more capable machine without rewriting the software the runs on the less capable machine)

  8. User Level – Applications Programs Highest Level High-level Languages Assembly Language/Machine Code Mircoprogrammed/Hardwired Control Functional Units (memory, ALU, etc.) Logic Gates Transistors and Wires Lowest Level Computer System Components

  9. Computer System Components • To understand and appreciate computer systems, we must study the computer from several different aspects: • USER Perspective • User Level and Applications; High-level Languages • Machine Language Programmer’s Perspective • Assembly Language/Machine Coding • Computer Architect’s Perspective • Hardwired Control and Functional Units; Performance • Computer Logic Designer’s Perspective • Logic Gates, Transistors and Wires

  10. Computer System Components • Let’s continue our discussion of the computer from a USER’S PERSEPECTIVE: The user is the person who is using the computer to perform useful work. • The user is not concerned about the internal structure of the machine. Only that it is capable of performing applications such word processing, spreadsheets, programming, etc. • The user is interested in the operating system and the application software. • This perspective is only aware of: • Computer Speed (how fast will the computer run my programs) • Storage Capacity (how much data can I store in computer) • Behavior of peripheral devices (can I send data to a printer, etc.)

  11. Computer System Components • Consider the MACHINE LANGUAGE PROGRAMMER’S PERSEPECTIVE: The machine language programmer is concerned with the behavior and performance of the computer system when it is programmed at the lowest level (machine language). • To fully understand this perspective, we must define some terms: • Machine Language: The collection of all the fundamental instructions that the machine can execute, expressed as a pattern of 1’s and 0’s. • Assembly Language: The alphanumeric equivalent of the machine language. Alphanumeric mnemonics are used as an aid to the programmer, instead of 1’s and 0’s. • Assembler: A computer program that converts assembly language to machine language.

  12. Computer System Components • Let’s examine some assembly language instructions: • The first instruction adds the contents of 32-bit register $s2 to the contents of register $s3 and places the sum in register $t0. A register is a storage unit capable of holding a collection of bits. Registers $s2, $s3, and $t0 are known as operands. • The corresponding machine language is shown. The first field is known as the operational code (a.k.a opcode). The opcode specifies the particular operation to be performed. • We will learn more about assembly language programming and coding later when we discuss instruction set architectures. • Assembly languages and machine codes are specific to the architecture that is being used.

  13. Computer System Components • The collection of all the operations in a machine’s language is its instruction set. • A programmer is concerned with the machine and assembly language instruction set, as well as the machine resources that can be managed with those instructions. • The collection of instructions and resources is known as the Instruction Set Architecture (ISA) of a computer, which includes: • Instruction Set • Machine’s memory • All programmer-accessible registers in the CPU

  14. Computer System Components • The “tools of the trade” for the machine language programmer’s perspective are the following: • ASSEMBLER – translates assembly language statements to their binary equivalent. • LINKER – links separately assembled modules into a single module suitable for loading and execution. Essentially, translating high-level languages (e.g. C++, FORTRAN) into programs capable of execution. • DEBUGGER – Low-level programs that perform error-checking of assembly language programs allowing programmer to perform step-by-step troubleshooting techniques. • DEVELOPMENT SYSTEMS – collection of hardware and software tools that is used to support system development.

  15. Computer System Components • Consider the COMPUTER ARCHITECT’S PERSEPECTIVE: The computer architect is concerned with the design and performance of the computer system as a whole. • The architect’s job is to design a system that will provide optimum performance in the context of its users. This is essentially known as the “constrained optimization problem”. • The constraints may include: • Cost • System Size • Memory Capacity • Thermal or mechanical durability • Availability of components • Immunity static charge • Time to completion

  16. Computer System Components • From given constraints, performance specifications are defined such as processing speed, memory size, networkability, graphics resolution, etc. • Architects use performance measurement tools to determine whether systems meet to specs identified. Usually these include benchmarks, simulations, etc. These are the “tools of the trade” for architect’s. • Key Concepts: • The architect is responsible for the overall system design and performance. • Performance must be measured against quantifiable specifications. • The architect is likely to become involved in low-level details of of the computer design. • The architect often uses formal description languages (e.g. RTL) to convey details of the design to other parts of the design team. • The architect strives for harmony and balance in system design.

  17. Computer System Components • Consider the COMPUTER LOGIC DESIGNER’S PERSEPECTIVE: The computer logic designer is concerned about the machine at the logic gate level. Usually the computer architect takes the role of the logic designer because their functions overlap. • The logic designer deals with the implementation domain, which is a collection of hardware devices that make up a machine. • The logic gate implementation domain may be • VLSI on silicon • Transistor-transistor logic (TTL) chips • Emitter-coupled logic (ECL) • Programmable logic arrays (PLAs) • Optical switches, etc.

  18. Computer System Components • The implementation domain is important because of the translation of the abstract level of logic gates to the concrete or practical domain. • How can we most efficiently implement the logic gate design needed for the system using the hardware available? • For example, if a designer is implementing a system using VLSI on silicon, the number and size of the processor’s registers may be affected by the amount of silicon is available on the chip. • Tools of the trade for the designer include CAD tools and IC design tools.

  19. Computer System Components • Our primary concern in this class includes • Assembly language programming • System design and performance • We’ll discuss some aspects of the logic designer’s perspective such as gate–level implementation of arithmetic operations. • Other aspects of logic designer’s view is covered in courses like FPLDs, IC Design (Mixed and Digital), DSP for FPGAs, etc. • The user’s perspective is covered in courses like C programming and MATLAB design. • Next time we’ll look different computer architectures from an historical perspective…

  20. Class Exercise Answer the following questions based on the information presented in today’s lecture: • How many bytes are contained in a 32-bit word? • The Tolstoy novel War and Peace has 696 pages. A CD-ROM can store approximately 600 MB of information. One character can be stored in one byte. Can the contents of the book be stored on a single CD-ROM? Show your calculations. (Assume each page contains 50 lines and there are approximately 100 characters per line.)

More Related