1
play

1 x86 Clones: Advanced Micro Devices Intels 64-Bit History (AMD) - PDF document

Today: Machine Programming I: Basics History of Intel processors and architectures C, assembly, machine code Machine-Level Programming I: Basics Assembly Basics: Registers, operands, move Arithmetic & logical operations CSci


  1. Today: Machine Programming I: Basics  History of Intel processors and architectures  C, assembly, machine code Machine-Level Programming I: Basics  Assembly Basics: Registers, operands, move  Arithmetic & logical operations CSci 2021: Machine Architecture and Organization September 24th-28th, 2018 Your instructor: Stephen McCamant Based on slides originally by: Randy Bryant, Dave O’Hallaron 1 2 Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Intel x86 Processors Intel x86 Evolution: Milestones  Dominate laptop/desktop/server market Name Date Transistors MHz  8086 1978 29K 5-10  Evolutionary design  First 16-bit Intel processor. Basis for IBM PC & DOS  Backwards compatible up until 8086, introduced in 1978  1MB address space  Added more features as time goes on  386 1985 275K 16-33  First 32 bit Intel processor , referred to as IA32  Added “flat addressing”, capable of running Unix  Complex instruction set computer (CISC)  Many different instructions with many different formats  Pentium 4E 2004 125M 2800-3800  First 64-bit Intel x86 processor, referred to as x86-64  But, only a subset encountered with Linux programs  Matches performance of more modern Reduced Instruction Set  Core 2 2006 291M 1060-3500 Computers (RISC)  First multi-core Intel processor  In terms of speed. Less so for low power consumption.  Core i7 2008 731M 1700-3900  Four cores 3 4 Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Intel x86 Processors, cont. 2015 State of the Art  Core i7 Broadwell 2015  Machine Evolution  386 1985 0.3M  Pentium 1993 3.1M  Desktop Model  Pentium/MMX 1997 4.5M  4 cores  PentiumPro 1995 6.5M  Integrated graphics  Pentium III 1999 8.2M  3.3-3.8 GHz  Pentium 4 2001 42M  65W  Core 2 Duo 2006 291M  Core i7 2008 731M  Server Model  Added Features  8 cores  Instructions to support multimedia operations  Integrated I/O  Instructions to enable more efficient conditional operations  2-2.6 GHz  Transition from 32 bits to 64 bits  45W  More cores 5 6 Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition 1

  2. x86 Clones: Advanced Micro Devices Intel’s 64-Bit History (AMD)  2001: Intel Attempts Radical Shift from IA32 to IA64  Historically  Totally different architecture (Itanium)  AMD has followed just behind Intel  Executes IA32 code only as legacy  A little bit slower, a lot cheaper  Performance disappointing  Then  2003: AMD Steps in with Evolutionary Solution  Recruited top circuit designers from Digital Equipment Corp. and  x86- 64 (now called “AMD64”) other downward trending companies  Intel Felt Obligated to Focus on IA64  Built Opteron: tough competitor to Pentium 4  Developed x86-64, their own extension to 64 bits  Hard to admit mistake or that AMD is better  2004: Intel Announces EM64T extension to IA32  Recent Years  Extended Memory 64-bit Technology (now called “Intel 64”)  Intel got its act together  Almost identical to x86-64!  Leads the world in semiconductor technology  AMD has fallen behind  All but lowest-end x86 processors support x86-64  But, lots of code still runs in 32-bit mode  Spun off its semiconductor factories 7 8 Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Our Coverage Today: Machine Programming I: Basics  IA32  History of Intel processors and architectures  The traditional x86  C, assembly, machine code  For 2021: RIP, Summer 2015  Assembly Basics: Registers, operands, move  Arithmetic & logical operations  x86-64  The standard  cselabs> gcc hello.c  cselabs> gcc – m64 hello.c  Presentation  Book covers x86-64  Web aside on IA32  We will only cover x86-64 9 10 Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Assembly/Machine Code View Definitions CPU Memory Addresses  Architecture: (also ISA: instruction set architecture) The Registers parts of a processor design that one needs to understand Code Data PC Data or write assembly/machine code. Condition Stack Instructions  Examples: instruction set specification, registers. Codes  Microarchitecture: Implementation of the architecture.  Examples: cache sizes and core frequency. Programmer-Visible State  PC: Program counter  Memory  Code Forms:  Machine Code: The byte-level programs that a processor executes  Address of next instruction  Byte addressable array  On x86-64, called “RIP”  Code and user data  Assembly Code: A text representation of machine code  Register file  Stack to support procedures  Heavily used program data  Condition codes  Example ISAs:  Store status information about most recent  Intel: x86, IA32, Itanium, x86-64 arithmetic or logical operation  ARM: Used in almost all smartphones  Used for conditional branching 11 12 Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition 2

  3. Turning C into Object Code Compiling Into Assembly  Code in files p1.c p2.c C Code (sum.c) Generated x86-64 Assembly  Compile with command: gcc – Og p1.c p2.c -o p long plus(long x, long y); sumstore: pushq %rbx  Use basic optimizations ( -Og ) [New since GCC 4.8] movq %rdx, %rbx void sumstore(long x, long y,  Put resulting binary in file p long *dest) call plus { movq %rax, (%rbx) text C program ( p1.c p2.c ) popq %rbx long t = plus(x, y); *dest = t; ret Compiler ( gcc – Og -S ) } Asm program ( p1.s p2.s ) text Obtain (on Ubuntu 14.04 machine) with command Assembler ( gcc or as ) gcc – Og – S sum.c Produces file sum.s binary Object program ( p1.o p2.o ) Static libraries ( .a ) Note : You may get different results on different machines Linker ( gcc or ld ) (older Linux, Mac OS X, …) due to different versions of gcc binary Executable program ( p ) and different compiler settings. 13 14 Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Assembly Characteristics: Data Types Assembly Characteristics: Operations  “Integer” data of 1, 2 , 4, or 8 bytes  Perform arithmetic function on register or memory data  Data values  Addresses (untyped pointers)  Transfer data between memory and register  Load data from memory into register  Floating point data of 4, 8, or 10 bytes  Store register data into memory  Code: Byte sequences encoding series of instructions  Transfer control  Unconditional jumps to/from procedures  Conditional branches  No aggregate types such as arrays or structures  Just contiguously allocated bytes in memory 15 16 Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Object Code Machine Instruction Example  C Code Code for sumstore *dest = t;  Assembler  Store value t where designated by 0x0400595:  Translates .s into .o dest 0x53  Binary encoding of each instruction 0x48  Assembly 0x89  Nearly-complete image of executable code movq %rax, (%rbx)  Move 8-byte value to memory 0xd3  Missing linkages between code in different  Quad words in Intel parlance 0xe8 files 0xf2  Operands: 0xff  Linker t : Register %rax 0xff  Resolves references between files dest : Register %rbx 0xff • Total of 14 bytes  Combines with static run-time libraries 0x48 *dest : Memory M[ %rbx] • Each instruction 0x89  E.g., code for malloc , printf  Object Code 1, 3, or 5 bytes 0x03  Some libraries are dynamically linked 0x40059e: 48 89 03 0x5b  3-byte instruction • Starts at address 0xc3 0x0400595  Linking occurs when program begins  Stored at address 0x40059e execution 17 18 Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition 3

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend