180 likes | 430 Views
COSC 4349 and 5349 Computer Architecture Fundamentals of Computer Design (Part 1) Dr. Lappoon R. Tang Overview Brief history of development of computing power – 70’s to now Evolution of machines – size, computing power, and cost Computer architecture ISA Organization Hardware Readings
E N D
COSC 4349 and 5349Computer Architecture Fundamentals of Computer Design (Part 1) Dr. Lappoon R. Tang
Overview • Brief history of development of computing power – 70’s to now • Evolution of machines – size, computing power, and cost • Computer architecture • ISA • Organization • Hardware
Readings • Section 1.1 to Section 1.3 • Skim over Section 1.2
So … What’s computer architecture about? • It is NOT about (although related to): • Programming in an assembly language • How the CPU works • It is about the following design issues: • How can one design the instruction set of a CPU so that it can support massive amounts of parallelism? • What are principles involved in designing an effective memory hierarchy (e.g. how effective is it in returning data that the CPU wants)? • How to design storage systems (e.g. hard disks) with good I/O performance?
Three Phases of Improvement in Processor Performance • Phase 2: Architectural improvement • along with circuit technology improvement • Instruction level parallelism (RISC • architecture) • Optimization of cache performance • Phase 3: Decline in • rate of improvement • Marginal return in • Phase 2 improvements • ILP TLP Phase 1: Micro-processor technology improvement
Lessons learned from history of processor development • Lesson 1: Improvement in circuit design and circuit technology is important but not enough for dramatic improvement in itself • Lesson 2: Architectural design plays a very big role, perhaps the real role, in determining processor performance • Improvement in architectural design (along with circuit technology) brought about seven fold in performance upgrade than relying on improvement in circuit design alone • Analogy: Making a bicycle vs. turning a bicycle into a car
Classes of computers: Brief history and lessons learned • 1960’s: large mainframe • Very large machine in a room with multiple operators overseeing their support • 1970’s: Mini-computers • Smaller than mainframe but still pretty big in size, used initially for scientific computing • 1980’s: Desktop PC or Laptop • Need we say more? • 1990’s: Very personal computing device • Example: PDA’s, very powerful cell phone … • 2020’s: Very small computing device driven by nanotechnology? • Lessons: Generally speaking, computing devices tend to become smaller in sizes, and yet offer more computing power. • Interesting fact: Laptops we have today are actually many times more powerful than a million dollar supercomputer back in the 60’s or 70’s …
Computer Architecture: An acceptable definition • The conceptual design and fundamental operational structure of a computer system -- blueprint and functional description of requirements and design implementations for the various parts of a computer with a focus on the functionality of the CPU. • Computer architecture addresses three areas of focus: • Instruction set architecture: Every design details and specification regarding the set of instructions possessed by a particular family of CPU’s • Organization: Higher level aspects of computer design like organizational design of CPU (e.g. pipeline structure, cache size …) • Hardware: Low level implementation details (e.g. detailed logic design, packaging technology)
Instruction set architecture (ISA): Different aspects of concern • Classes of ISA: What are different types of instruction sets? • Memory addressing: Byte addressing, alignment … • Addressing modes: What are different ways of accessing and storing an operand? • Types and sizes of operands: What type of data is allowed? Variety on operand sizes: 8-bit, 16-bit, …? • Operations: What types of instructions do we have in the ISA? • Control flow instructions: Branching instructions, anyone? • Encoding an ISA: fixed length instructions, variable length instructions?
ISA: Different classes • Primarily two types – though all ISA’s are “general-purpose register” architecture • 1) Register-memory ISAs • Instructions can contain memory operands • Example: the 80x86 family • 2) Load-store ISAs • Memory can only be accessed via load and store instructions • Example: MIPS • Note: All recent ISAs are load-store ISA • Question: Given that time on accessing memory >= time on executing several instructions, suggest reasons why we care about whether an ISA is type 1) or 2)?
ISA: Memory addressing • All desktop and server computers are byte addressable – each byte in the memory has a unique address • Issue: Aligned access or not? • An access to address A for an object of s byte is aligned if A mod s = 0 • Q: If an object is 16 bit and we want aligned access, the beginning address has to be divisible by what? • Note: memory accesses are usually faster if operands are aligned
ISA: Addressing modes • Addressing mode is a way of specifying an address or a location of an operand • When designing an ISA, one needs to formulate all addressing modes supported by the instruction set: • Example: MIPS • Register: which register contain the operand? • Immediate: a constant value • Displacement: an offset added to a register to form a memory address • Example: 80x86 • Has all the addressing modes of MIPS plus variations of the displacement mode
ISA: Types and sizes of operands • What different data types do we have in the operands? • Character • Integer • Floating point numbers • What are different sizes of operands? • 8 bit (ASCII character) • 16 bit (Half word integer) • 32 bit (integer or word size data, single precision floating point number) • 64 bit (double precision floating point number) • 80 bit (extended double precision)
ISA: Operations • Main concern: does the set of instruction facilitate pipelining? • General classes of instructions (representative of RISC architecture): • Data transfer • Arithmetic and logical • Control (i.e. branching) • Floating point • 80x86: Has all of the RISC classes of instructions and a lot more … which may not necessarily be a good thing … • Note: A RISC instruction set is generally better for pipelining
ISA: Control flow instructions • Every ISA should have the following set of control flow instructions at a minimum: • Conditional branches • Unconditional jumps • Procedure calls • Return from procedure calls
ISA: Encoding an ISA • Instruction length: Fixed or variable? • Fixed length • Pro: simplifies instruction decoding • Con: a compiled program is bigger in size • Example: MIPS • Variable length • Pro: a compiled program is smaller • Con: complicates instruction decoding? • Example: 80x86
Computer Architecture: Organization • “High level” aspects of a computer’s design • Memory system • Design of the CPU (like how the control unit, ALU, and so on are implemented) • Two computers with the same instruction set can have very different organizations • Example: AMD Opteron 64 and Intel Pentium 4 have the same instruction set but they differ in pipeline and cache organizations
Computer Architecture: Hardware • Concerns detailed logic design at the circuit level and packaging technology • Two computers can have same ISA and even nearly identical organizations but different hardware implementation • Example: P4 and Mobile P4 are basically the same except for clock rates and memory systems