Chapter 2: Intel IA-32 Processor based Microcomputers
High-level view of IA-32 Microprocessor Computers Information(instruction, data, address..) is sent from one component to another along the system bus(address bus, Data bus.) Microprocessor(CPU) Execution unit: responsible for information execution and contains Arithmetic and logic unit(alu), Control unit(cu), Registers Bus interface unit: responsible for sending and receiving information on the system bus. Registers: memory unit, holds instructions, address, and temporary data. Memory Main memory: Read only memory(rom), Random access memory(ram) Secondary memory: Hard disk, Floppy disk.
Basic Microcomputer Architecture clock synchronizes microprocessor(cpu) operations control unit (CU) coordinates sequence of execution steps ALU performs arithmetic and bitwise processing data bus registers Central Processor Unit (CPU) Memory Storage Unit I/O Device #1 I/O Device #2 ALU CU clock control bus address bus
Microprocessor(CPU) Architecture EAX EBX ECX EDX ESP EBP ESI EDI CS DS SS ES FS GS EIP Temporary Register Bus Control Unit To external bus ALU Flags Register(EFLAGS) Queue
Modes of Operations Protected mode Program can be executed only in a protected segment Real-address(8086) mode Program can access system memory and H/W devices System management mode power management, system security, diagnostics Virtual-8086 mode hybrid of Protected mode In protected mode, a virtual 8086 mode program can be executed without affecting other programs.
Addressable Memory Protected mode 4 GB 32-bit address bus(2 32 =4GB) Real-address and Virtual-8086 modes 1 MB space 20-bit address bus(2 20 =1M)
Registers Named storage locations inside the CPU, optimized for speed. Stores data, addresses, instructions, system status, and temporary arithmetic results 1. General purpose registers accumulator, mostly used in arithmetic (ex) mul BX base register, for addressing, (ex) mov AX,[EBX] counter register, default counter (ex) loop data register, no special properties
Registers 2. Segment registers segment physical segment : 1M main memory 16 64K-segments logical segment : A program has 3 logical segments: code, data, stack segments. CS : code segment register A machine code of a program is loaded into the code segment. CS has the starting address of the code segment. In order to fetch a code(instruction), system needs address of the instruction. DS : data segment register DS has the starting address of the data segment of a program. SS : stack segment register SS has the address of the stack segment of a program. ES,FS,GS: Extra segment registers Generally used when a logical segment is bigger than a physical segment.
Registers 3. Index registers Destination register Source register EDI and ESI can be used for general purpose registers. 4. Pointer registers Base pointer: has relative address from SS Stack pointer: points the top of the stack Instruction pointer: -has the relative address from the beginning of a code segment. -has the address of the instruction that will be executed next. -System automatically changes EIP.
Registers 5. Flags register Flags register: has the information of system status, arithmetic results,.. And each flag is a single binary bit. (ex) arithmetic result: 0, -, or +, carry, over flow, interrupt enabled.. Some flags: flags are set to 1 as follows Sign flag: result is negative Carry flag: carry or borrower from MSB Overflow flag: arithmetic result is out of range Zero flag: result is zero Auxiliary Carry flag: carry from bit 3 to bit 4 Parity flag: sum of 1 bits is an even number
EFLAGS
Accessing Parts of Registers 8-bit name, 16-bit name, or 32-bit name EAX, EBX, ECX, and EDX 8 AH 8 AL 8 bits + 8 bits AX 16 bits EAX 32 bits
Some registers have only a 16-bit name for their lower half: 32-bit ESI EDI EBP ESP EIP EFLAGS 16-bit SI DI BP SP IP FLAGS
32-bit general purpose registers: EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP 16-bit general purpose registers: AX, BX, CX, DX, SI, DI For indirect addressing, all 8 general purpose registers can be used in protected mode and only BX, BP, SI, DI registers can be used in real mode. Ex) mov eax, [ecx] mov bx, [si]
Intel Microprocessor History Early Intel Microprocessors Intel 8080 64K addressable RAM 8-bit registers 8-inch floppy disks! Intel 8086/8088 IBM-PC Used 8088 1 MB addressable RAM 16-bit registers 16-bit data bus (8-bit for 8088) 20-bit address bus(2 20 =1M) separate floating-point unit (8087)
The IBM-PC Intel 80286 16 MB addressable RAM 16-bit data bus 24-bit address bit(2 24 =16M) Real and protected modes several times faster than 8086 80287 floating point unit
Intel IA-32 Family Intel386 4 GB memory, 32-bit registers, 16-bit data bus, 24-bit address bus, paging (virtual memory) Intel486 instruction pipelining 32-bit data bus, 32-bit address bus Floating-point unit built into 80486 chips Frequently used instructions(mov) are designed to be executed in 1 clock cycle(80386 needs 4 clock cycles)
Intel586 32 or 64-bit data bus, 32-bit address bus Improved 80486 machine 2 instructions(arithmetic operations) can be executed in 1 clock cycle --> integer operations can be processed in parallel. has much faster floating-point device Pentium Pro advanced optimization techniques in microcode Pentium II MMX (multimedia) instruction set Pentium III SIMD (streaming extensions) instructions Pentium 4...... In general, Higher versions of 80XXX family: Wider data and address buses Faster microprocessors(ex: 80586: 166MH) Fewer clock cycles for instruction execution
Intel microprocessor history 8086/8088-1978. 8.33Mhz 최초의 16 비트프로세서 ( 메모리 1MB, 리얼모드만 ) 1978 인텔이퍼스널컴퓨터 (PC) 를위해최초로개발한 16 비트마이크로프로세서입니다. 8086 의경우최대메모리를 1M 바이트까지처리할수있었고, 외부와내부적으로 16 비트로데이터를처리하였기때문에완전한 16 비트프로세서로할수있었고요. 8088 의경우 16 비트 CPU 이지만외부적으로자료를주고받는것은이전의제품과호환을위해 8 비트로만들었다. 따라서상대적으로저렴하게컴퓨터를꾸밀수있었다. 클럭은 8.33MHz 로작동한다. 바로오리지널 IBM PC 와 XT 모델에사용된프로세서이다.
Intel microprocessor history 80286-1982. 21Mhz 완벽한 16 비트프로세서 ( 메모리 16MB, 가상모드지원 ) 1982 년기존의 8086 기능을 100% 포함하고, 성능을개선시킨 80286 이발표되었습니다. 286 의특징은사용가능한메모리가 16 메가로늘어났고, 가상모드를지원하기시작하였습니다. 그리하여최대 1GB 까지의가상메모리를사용할수있게되어서멀티태스킹이가능하게되었죠. 최대클럭은 21MHz 로늘어나 8088 보다두배이상속도를낼수있었는데. 그러나당시사용하던 OS 는 MS-DOS 였고, DOS 는여전히 1MB 의메모리만사용할수있었기때문에멀티태스킹은불가능하였습니다.
Intel microprocessor history 80386-1985. 16Mhz, 25Mhz, 33Mhz 32 비트프로세서의시작 ( 메모리 4GB, 가상리얼모드지원 ) 1985 년인텔은 80286 의후속으로 80386 을발표하였습니다. 이칩은내 / 외부적으로 32 비트로동작하였고, 클록속도도빨라져서 16, 25, 33MHz 로동작하게되었고. 데이터를 32 비트로처리하기때문에 286 보다기본적으로두배의성능을가지고있었고, 거의 4 배의연산능력을갖고있었습니다. 또한 80386 의중요한기능은가상 x86 모드라는가상리얼모드를지원하게되었죠. 그래서두개의 DOS 를동시에실행할수있었고, 또한멀티태스킹도훨씬수월하게되었습니다. 또한 EMS 메모리도기본적으로사용할수있었습니다.
Intel microprocessor history - 80386SX 기본적으로인텔사에서는새로운프로세서를개발하면서그보다하위호환이가능하고저렴한보급판 CPU 를내놓았다. 그래서 80386SX 는 80386 보다뒤에개발된것으로내부적으로는 32 비트이지만, 외부적으로이전 286 과비슷한 16 비트로동작하는칩을내놓게된것이다. 이를 SX 라부르고기존 386 를 DX 로구분하여시장에내놓았다.
Intel microprocessor history 80486/ 호환칩 - 1989. 40Mhz, 50Mhz, 66Mhz, 100Mhz, 120Mhz 32 비트프로세서 ( 수치연산보조프로세서내장, 케시내장 ) 1989 년인텔은 80386 후속으로기존과같은 32 비트프로세서이지만, 여러가지중요한변화가있는프로세서를개발하였다. 연산능력에있어서기존의 386 에비해 4 배의성능의향상이있었는데, 그특징은다음과같다. 첫째로기존은별도로제공되었던수치보조프로세서를칩안에내장하게되었고, 둘째로 8KB 의레벨 1 캐시를내장하였고, 셋째로칩의작동을최적화시켰다는것이다. 클록속도도높였는데, 초창기의 25,33MHz 에서차차 40, 50, 66. 100, 120 까지작동하는것이나오게되었다.
Intel microprocessor history 반면역시상대적으로저렴한 486 CPU 를내놓았는데, 486SX 라한다. 이프로세서는기존의 486DX 에서수치연산프로세서를제거한저가형이었다. 또한 486 부터클럭더블링이라는것이나오게되었는데, 이것은프로세서의내부버스가외부버스의두배로동작하도록만드는기술을말한다. 즉외부적으로는기존마이크로전송속도와같지만, 내부적으로계산하는속도는배가되는것이다. 486DX2 는 50, 66MHz 두가지모델이먼저나왔는데, 주변장치와는 25, 33MHz 로자료를주고받지만, 내부적으로 50, 66MHz 로자료를처리하게되어처리속도가훨씬빨라지게되었고, 기존의메인보드를바꾸지않아도업그레이드를쉽게할수있게되었다. 클록트리플이라하여 486DX4 100, 120MHz 까지나오게되었다.
Intel microprocessor history 그러나인텔사에서는더이상 486 의클록을높이는것으로, CPU 의개발하는것을그만두고새로운구조의 CPU 의개발을하게되었고, 그밖에인텔의 CPU 와비슷하지만성능의향상에중점을주고프로세서를개발하는업체가나타나기시작했다. AMD, 사이릭스등이그것인데인텔의 486 과비교해서기능상으로는완전히동일하며, 클록속도를높여서인텔제품보다빠르고가격도저렴하게공급되었다.
Intel microprocessor history 펜티엄 1993 년 75Mhz~200Mhz 펜티엄 (Pentium) 은현재까지도많은 PC 에사용되고있는 CPU 로, 75MHz 200MHz 라는높은동작클록을갖추었고, L1 L2 캐시의확장을통해상당한속도향상을가져왔다. 당시서버용으로사용되던 RISC CPU 와맞먹을정도의속도를가진 FPU 가내장되었으며, 한클록동안에한개이상의명령어처리를할수있는슈퍼스케일러와파이프라이닝, 동적분기예측, 향상된부동소수점연산등을통해기존의 486 과차별화된성능을보여주었다. 플러그 & 플레이를지원하는시스템관리기능과내부캐시를이용한명령어처리도눈에띄는점이다.
Intel microprocessor history 펜티엄프로 1995 년 150Mhz, 166Mhz, 180Mhz, 200Mhz 펜티엄프로는서버와워크스테이션용으로개발된, 32 비트연산을위해최적화된칩셋으로, NT 나유닉스등의운영체제에서최적의성능을발휘하는제품이다. 4 개까지의 CPU 를이용한멀티프로세서시스템을구축할수있으며, 펜티엄에비해더욱향상된 RISC 기술이사용되었다. 펜티엄과달리기존의소켓 7 이아닌소켓 8 을사용했으며, 프로세서의속도를향상시키기위해자체에 L2 캐시를내장했다. 클록속도는 150, 166, 180, 200MHz 로 550 만개의트랜지스터가집적되었다. 그러나당시대부분의 16 비트응용프로그램의호환성문제로그리각광받지는못했다.
Intel microprocessor history 펜티엄 MMX 1997 년 166Mhz, 200Mhz, 233Mhz 펜티엄에 57 개의새로운명령어를비롯해데이터타입, 64 비트레지스터등새로운기술을갖춘 CPU 이다. 추가된명령어들은멀티미디어프로그램을처리하기위한것이었으며, MMX 기술은다른호환칩제조사들이모두적용하는등또다른표준으로자리잡았다. L1 캐시의크기가 16KB 에서 2 배늘어난 32KB 로변경되었으며, 이는 CPU 의처리속도가 20% 이상향상되는효과를나타냈다. 속도는 166, 200, 233MHz 가있다. 또한코어에사용되는전압 (2.8V) 과 I/O 에사용되는전압 (3.3V) 을달리하는이중전압 (Dual Voltage) 기술로열제너레이터없이도발열량을줄일수있었다. 펜티엄 MMX 는데스크톱용으로 200MHz 까지출시되었으며, 노트북용으로는 300MHz 까지개발되었다.
Intel microprocessor history 펜티엄 Ⅱ 1997 년 233Mhz ~ 333Mhz, 350 Mhz ~ 450Mhz 펜티엄 Ⅱ 는기존의 CPU 와는달리핀이없으며, S.E.C.(Single Edge Contact) 라는카트리지형태를띠었다. 아울러, 소켓 7 을사용하지않고 ' 슬롯 1' 이라는방식으로메인보드에장착되었다. MMX 기술, 512KB 의외부 L2 캐시 (33MHz 또는 50MHz 의하프스피드로동작 ), 캐시버스와시스템버스를분리하는 D.I.B.(Dual Independent Bus) 구조로병목현상을최소화시켜속도를개선했다. 펜티엄 Ⅱ 는초기클라매스에서데슈츠로코어가변경되었는데, 클라매스는 66MHz 의 FSB 에 233 333MHz 의동작클록을가졌으며, 데슈츠는 100MHz 의 FSB 에 350 450MHz 의동작클록을가졌다.
Intel microprocessor history 셀러론 1998 년 266Mhz, 300Mhz,,300A~500Mhz 셀러론 (Celeron) 은펜티엄 Ⅱ 에서 512KB 의 L2 캐시를제거해제조단가를낮춘보급형 CPU 다. 초기에는펜티엄 Ⅱ 와동일하게슬롯 1 방식으로장착되었으나, 현재는제조비를줄이기위해 PPGA 로제작되어소켓 370 을사용하고있다. L1 캐시의경우 16KB 의명령캐시와 16KB 의데이터캐시가들어있으며, 코어는펜티엄 Ⅱ 에사용된데슈츠이다. 하지만셀러론은데슈츠의 100MHz 가아닌 66MHz 의외부클록을사용하고있어펜티엄 Ⅱ Ⅲ 의성능에는미치지못한다.
Intel microprocessor history 셀러론은 L2 캐시가전혀없는코빙턴 (Covington) 과현재의멘도시노 (Mendocino) 로나뉜다. 코빙턴은 266, 300MHz 를끝으로단종되었으며, 여기에 128KB 의온다이 (On-Die) L2 캐시를추가한제품이멘도시노이다. 멘도시노는 300A 500MHz 까지시중에출시되었으며, L2 캐시가 66MHz( 코어속도와동일한풀스피드 ) 로다이안에내장되어있어작은용량에도불구하고성능향상이높다.
Intel microprocessor history 펜티엄 IV? ~ 3Ghz [ 프레스캇포함 ] 펜티엄 4 CPU ' 하이퍼스레딩 ' 기술로무장하고클럭스피드 3GHz 대돌파 무어의법칙이언제까지지켜질런지는모르지만, 인텔의펜티엄 4 가드디어 3GHz 대를돌파하였다. 3GHz 라는속도는초당 30 억번의계산을한다는의미인데, 정말가공할속도라아니할수없다. 여기서인텔 CPU 의역사를잠깐되돌아보면, 1970 년대초에불과 108KHz 로동작하는 CPU 4004 를처음으로출시한이래대략 30 년만에약 3 만배의속도를가지게되었으니이얼마나놀라운기술의진보인가!
Intel microprocessor history 더구나이번에출시되는 CPU 는싱글 CPU 를듀얼 CPU 처럼쓸수있게하는 ' 하이퍼스레딩 ' 기술까지적용되어그간클록스피드향상만의집착에서한단계더나아간느낌을가지게한다. PC 로문서작성이나인터넷정도만하는사람들이야 CPU 의클록스피드가크게올라갔다거나, 하이퍼스레딩기술같은것에별관심이없을수도있겠지만, 컴퓨터로특별한작업을하는사람들특히그래픽스관련일을하는사람들에겐정말반가운소식이아닐수없는것이다.
Intel microprocessor history 3D 그래픽스나동영상편집등은그작업과정도지루하지만, 렌더링과정의지루함때문에도좀더빠른속도의컴퓨터를원하게마련인데, 때문에멀티테스킹등의효율을높이고좀더안정적이며신속한작업환경을위해매우고가의듀얼 CPU 컴퓨터를쓸수밖에없었으나, 이제싱글 CPU 로도그러한목적을달성할수있게되었으니기대가크지않을수있겠는가그말이다. 과연 CPU 클록스피드의한계는어디까지일까? 분명히기술적인한계가있기는있을탠데그끝을짐작하기란결코쉽지가않다. 아무튼수년내로는무어의법칙에따른 CPU 의스피드행진이멈출것같지는않으며, 대략 10 년후쯤이면 CPU 의속도가수십 GHz 대에이르러, 어떤기술적한계보다도더이상의스피드업필요성이사라질지도모를일이다.
Intel microprocessor history 구분 CPU 제작연도 트랜지스터개수 1세대 8086 &8088 1978~81 29,000 2세대 80286 1984 134,000 3세대 80386DX &80386SX 1987~88 275,000 4 세대 80486SX,80486DX,80486DX2,80486DX4 1990~92 1,200,000 5 세대 Pentium(P5,P54C)Cyrix 6x86AMD K5IDT WinChip C6 1993~95199619961 997 3,100,000 " "3,500,000 진보된 5 세대 Pentium MMXIBM/Cyrix 6x86MXIDT WinChip2 3D 199719971998 4,500,0006,000,000 6,000,000 6 세대 Pentium ProAMD K6Pentium IIAMD K6-2 1995199719971998 5,500,0008,800,000 7,500,0009,300,000 진보된 6 세대 Pentium IIIAMD K6-3 19991999?? 7 세대 AMD K7 Athlon 1999/2000 22,000,000
IA-32 Memory Management Real-Address mode 1 MB memory(20-bit address bus) User programs can access any area of memory Single tasking Supported by MS-DOS operating system
Segmented Memory Segmented memory addressing: absolute (linear) address is a combination of a 16-bit segment value added to a 16-bit offset 00000 10000 F0000 20000 E0000 7000:0000 8000:FFFF 30000 D0000 40000 C0000 50000 B0000 60000 A0000 70000 90000 80000 90000 70000 A0000 60000 B0000 50000 C0000 40000 D0000 30000 E0000 20000 7000:FFFF 8000:0000 0250 Aaa 0250 7000:0250 7000:0250 8000:0250 one segment F0000 10000 FFFFF 00000 seg ofs
Calculating Absolute Addresses Given a segment address, multiply it by 16 (add a hexadecimal zero), and add it to the offset Example: convert 08F1:0100 to a absolute address Adjusted Segment value: 0 8 F 1 0 Add the offset: 0 1 0 0 absolute address: 0 9 0 1 0 Intel Segmentation Scheme ** What absolute address corresponds to the segment/offset address 028F:0030? 028F0 + 0030 = 02920
System Area TPA Memory MAP 00000 00400 Interrupt Vector Table BIOS data area TPA (640K) DOS data area IO.SYS MSDOS System Area(384K) Drivers Command.com Programs which controls IO devices Extended Memory (15M or 4095M or 4Giga..) A0000 B0000 C0000 Free TPA MSDOS Graphic data Text data Video BIOS ROM User program, application programs Video RAM Controls video display TPA: Transient Program Area E0000 F0000 FFFFF 00000~FFFFF: 1 Mega Hard disk controller Free area Basic program BIOS(System ROM) User program, application programs For recent PC, free area BIOS for IO devices except video
Protected Mode 4 GB memory(32-bit address bus) (00000000 to FFFFFFFFh) Each program assigned a memory partition which is protected from other programs Designed for multitasking Supported by Linux & MS-Windows