MI 1 2 Intel Architecture v3
MI 1 2 Intel Architecture v3
INTERFACING
EE-243 | Spring 2017
Intel Architecture
{KI}
Chapter-2
Difference b/w Micro-Processor & Micro-Controller
https://image.slidesharecdn.com/ppt-140710020843-phpapp02/95/microcontroller-
vs-microprocessor-7-638.jpg?cb=1404958204
Intel Architecture
Timeline
1947: The transistor is invented at Bell Labs (& also Pakistan )
1965: Moore’s Law : Number of transistors on a semiconductor chip
doubles every year
1969-70: Intel launched SRAM <used for Caches> & DRAM <memory>
1971: 4 bit Intel 4004 World’s first digital processor
1972: 8 bit Intel 8008
1975: First PC (Altair 8080)
1978: 16 bit 8086 (Used in IBM PCs 1982) – The origin of INTEL’s x86 ISA
1982: 16 bit 80286
1985: 32 bit 80386 (Ability to run multiple programs) – (IA-32)
1986: 32 bit 80486 (Built in Math co-processor)
1993: P5 : 32 bit Pentium (Code/Data Caches, MMX)
1995: P6 : Pentium II’s & Pentium Pro (Out of Order Execution)
2000: NetBurst (Pentium 4)
2006: Intel Core (Launch of x86-64), Example: Intel Core 2 Duo etc
2008: Nehalm Archiature (Core, i3, i5, i7)
https://en.wikipedia.org/wiki/List_of_Intel_CPU_microarchitectures
Intel 8086
1 MB addressable RAM
Intel 80286
16 MB addressable RAM
Protected memory
several times faster than 8086
introduced IDE bus architecture
80287 floating point unit
Memory protection
a way to control memory usage on a computer, and
is core to virtually every modern operating system.
prevents a process running on an operating system
from accessing memory beyond that allocated to it.
Irvine, Kip R. Assembly
Language for Intel-Based
Computers 5/e, 2007.
Intel IA-32 Family
Intel386
4GB addressable RAM, 32-bit registers,
paging (virtual memory)
Intel486
instruction pipelining
Pentium
superscalar, (multiple execution
pipelines) 32-bit address bus, 64-bit
internal data path
Pentium Pro
advanced optimization techniques in microcode
Pentium II
MMX (multimedia) instruction set
Pentium III
SIMD (Internet streaming extensions) instructions
Pentium 4 and Xeon
Intel NetBurst micro-architecture, tuned for
multimedia
Protected mode
4 GB
32-bit address
registers
I/O I/O
Central Processor Unit Memory Storage
Device Device
(CPU) Unit
#1 #2
ALU CU clock
control bus
address bus
IA-32
IA-32 (short for "Intel Architecture, 32-bit", sometimes also called i386[1][2])[3] is the 32-
bit version of the x86 instruction set architecture (ISA), first implemented in the Intel
80386 microprocessors in 1985. IA-32 is the first incarnation of x86 that supports 32-bit
computing;[4] as a result, the "IA-32" term may be used as a metonym to refer to all x86 versions
that support 32-bit computing.[5][6]
The IA-32 instruction set was introduced in the Intel 80386 microprocessor in 1985 and, as of
2015, remains supported by contemporary PC microprocessors. Even though the instruction set
has remained intact, the successive generations of microprocessors that run it have become
much faster. Within various programming language directives, IA-32 is still sometimes referred to
as the "i386" architecture.
Intel is the inventor and the biggest supplier of IA-32 processors, and the second biggest supplier
is AMD. For a while, VIA, Transmeta and others also produced IA-32 processors, but since the
2000s all manufacturers moved to the 64-bit variant of x86, x86-64. <Wikipedia>
https://software.intel.com/en-us/articles/ia-32-intelr-64-ia-64-architecture-mean
General-Purpose Registers
EAX EBP
EBX ESP
ECX ESI
EDX EDI
EFLAGS CS ES
SS FS
EIP
DS GS
General-Purpose
EAX – accumulator, also used by mul & div
ECX – loop counter
ESP – stack pointer (never to be used for ordinary arithmetic or data transfer)
ESI, EDI – index registers (Source/Destination indexes; memory operations)
EBP – extended frame pointer (stack)
Segment
CS – code segment
DS – data segment
SS – stack segment
ES, FS, GS - additional segments
Irvine, Kip R. Assembly
19 Language for Intel-Based
Computers 5/e, 2007.
Book: The Intel Microprocessors [Barry B. Brey]
Some Specialized Register Uses (2 of 2)
Carry
unsigned arithmetic out of range
Overflow
signed arithmetic out of range
Sign
result is negative
Zero
result is zero
Auxiliary Carry
carry from bit 3 to bit 4
Parity
sum of 1 bits is an even number 22
Irvine, Kip R. Assembly
Language for Intel-Based
Computers 5/e, 2007.
Accessing Parts of Registers
Use 8-bit name, 16-bit name, or 32-bit name
Applies to EAX, EBX, ECX, and EDX
8 8
AH AL 8 bits + 8 bits
AX 16 bits
EAX 32 bits
Opcode Register
Solution
Segmented Memory Model
Memory organized in form of 64KB segments
Addressing
Segment : Offset Model
Segmented Memory
Segmented memory addressing: absolute (linear)
address is a combination of a 16-bit segment value
added to a 16-bit offset
F0000
E0000 8000:FFFF
D0000 one segment
C0000
B0000
A0000
90000
80000
70000
60000
8000:0250
50000
0250
40000
30000 8000:0000
20000
10000 Segment: 64K units
seg ofs
00000
Calculating Linear 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 linear address
Adjusted Segment value: 0 8 F 1 0
Add the offset: 0 1 0 0
Linear address: 0 9 0 1 0