Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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: 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. 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) 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. 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. 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 language and 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. 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) Computer System Components Highest Level User Level – Applications Programs High-level Languages Assembly Language/Machine Code Mircoprogrammed/Hardwired Control Functional Units (memory, ALU, etc.) Logic Gates Lowest Level Transistors and Wires 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 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.) 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. Computer System Components • Let’s examine some assembly language instructions: MIPS Assembly Language Machine Language ADD $t0, $s2, $s3 000000 10010 10011 01000 00000 100000 LW $s1, 100($s2) 100011 10010 10001 00000 00001 100100 • 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. 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 Computer System Components • The “tools of the trade” for the machine language programmer’s perspective are the following: 1. ASSEMBLER – translates assembly language statements to their binary equivalent. 2. 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. 3. DEBUGGER – Low-level programs that perform error-checking of assembly language programs allowing programmer to perform step-by-step troubleshooting techniques. 4. DEVELOPMENT SYSTEMS – collection of hardware and software tools that is used to support system development. 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 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. 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. 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. 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… Class Exercise Answer the following questions based on the information presented in today’s lecture: 1. How many bytes are contained in a 32-bit word? 2. 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 CDROM? Show your calculations. (Assume each page contains 50 lines and there are approximately 100 characters per line.)