80386DX Architecture
Total Page:16
File Type:pdf, Size:1020Kb
Unit I 80386DX Architecture Session 1 History of 8086 microprocessor Microprocessor – Microprocessor is a single silicon chip used for performs the operations. It act as a brain of computer. History of 8086 microprocessor – A microprocessor is a sequential digital circuit which provides the flexibility to perform different tasks upon execution of corresponding instruction sequence. The world’s first microprocessor, the Intel 4004, was a 4-bit microprocessor. Intel 4004 1971: Intel launches the world's first microprocessor, the 4-bit 4004, designed by Federico Faggin. The Intel 4004 The 2,000-transistor chip is made for a Japanese calculator, but a farsighted Intel ad calls it "a micro-programmable computer on a chip." Year of introduction 1971 • 4-bit microprocessor • 4 KB main memory • 45 instructions • PMOS technology • It was first programmable device which was used in calculators Intel 8008 1972: Intel announces the 8-bit 8008 processor. Teenagers Bill Gates and Paul Allen try to develop a programming language for the chip, but it is not powerful enough. In 1972, Intel launched the 8008, the first 8-bit microprocessor. It implemented an instruction set designed by Data point corporation with programmable CRT terminals in mind, which also proved to be fairly general purpose. The device needed several additional ICs to produce a functional computer, in part due to it being packaged in a small 18-pin "memory package", which ruled out the use of a separate address bus (Intel was primarily a DRAM manufacturer at the time). Year of introduction 1972 • 8-bit version of 4004 • 16 KB main memory • 48 instructions • PMOS technology • Slow Intel 8080 1974: Intel introduces the 8-bit 8080 processor, with 4,500 transistors and 10 times the performance of its predecessor. 1975: The 8080 chip finds its first PC application in the Altair 8800, launching the PC revolution. Gates and Allen succeed in developing the Altair Basic language, which will later become Microsoft Basic, for the 8080. Two years later, Intel launched the 8080, employing the new 40-pin DIL packages originally developed for calculator ICs to enable a separate address bus. It had an extended instruction set that was source (not binary) compatible with the 8008 and also included some 16-bit instructions to make programming easier. The 8080 device, often described as "the first truly useful microprocessor”, was eventually replaced by the depletion-load based 8085 (1977) which sufficed with a single +5 V power supply instead of the three different operating voltages of earlier chips. Other well known 8-bit microprocessors that emerged during these years were Motorola 6800 (1974), General Instrument PIC16X (1975), MOS Technology 6502 (1975), Zilog Z80 (1976), and Motorola 6809 (1978). Year of introduction 1973 • 8-bit microprocessor • 64 KB main memory • z microseconds clock cycle time • 500,000 instructions/sec • ioX faster than 8008 • NMOS technology • Drawback was that it needed three power supplies. • Small computers (Microcomputers) were designed in mid 1970's using 8080 as CPU. Intel 8085 • Year of introduction 1975 • 8-bit microprocessor-upgraded version of 8o8o • 64 KB main memory • 1.3 microseconds clock cycle time • 246 instructions • Intel sold l00 million copies of this 8-bit microprocessor • uses only one +5v power supply. Intel 8086/8088 1978: Intel introduces the 16-bit 8086 microprocessor. It will become an industry standard. Year of introduction 1978 for 8o86 and 1979 for 8o88 • 16-bit microprocessors • Data bus width of 8o86 is 16 bit and 8 bit for 8o88 • 1 MB main memory • 400 nanoseconds clock cycle time • 6 byte instruction cache for 8o86 and 4 byte for 8o88 • Other improvements included more registers and additional instructions • In 1981 IBM decided to use 8o88 in its personal computer Features of 8086 Processor – Intel 8086 was launched in 1978. It was the first 16-bit microprocessor. This microprocessor had major improvement over the execution speed of 8085. It is available as 40-pin Dual-Inline-Package (DIP). It is available in three versions: o 8086 (5 MHz) o 8086-2 (8 MHz) o 8086-1 (10 MHz) It consists of 29,000 transistors. - A data width of 2 byte is attained by the de multiplexing of AD0 to AF15 pins. - The instruction queue is of 6 bytes. - From the memory the fetching of a program is performed only once there are 2 byte empty in queue. - The BIU of 8086 is not as same as in the 8088 but the EU is similar. Block Diagram of Intel 8086 The 8086 CPU is divided into two independent functional units: Bus Interface Unit (BIU) Execution Unit (EU) Fig. 1: Block Diagram of Intel 8086 Bus Interface Unit (BIU) The function of BIU is to: Fetch the instruction or data from memory. Write the data to memory. Write the data to the port. Read data from the port. Instruction Queue 1. To increase the execution speed, BIU fetches as many as six instruction bytes ahead to time from memory. 2. All six bytes are then held in first in first out 6 byte register called instruction queue. 3. Then all bytes have to be given to EU one by one. 4. This pre fetching operation of BIU may be in parallel with execution operation of EU, which improves the speed execution of the instruction. Execution Unit (EU) The functions of execution unit are: To tell BIU where to fetch the instructions or data from. To decode the instructions. To execute the instructions. The EU contains the control circuitry to perform various internal operations. A decoder in EU decodes the instruction fetched memory to generate different internal or external control signals required to perform the operation. EU has 16-bit ALU, which can perform arithmetic and logical operations on 8-bit as well as 16-bit. Conclusion The session is concluded with some questions 1. Explain the various evolution phases of different processor. 2. Demonstrate the architecture of 8086 processor. Session 2 Concept of segmentation in 8086 Concept of segmentation in 8086 Two types of memory organizations are commonly used. These are linear addressing and segmented addressing. In segmented addressing, the available memory space is divided into chunks called segments, such a memory is known as Segmented memory. MEMORY SEGMENTATION Paragraphs: The Memory Address Space (MAS) is divided into 65,536 (i.e., 10,000H ) paragraphs. Each paragraph is 16 (i.e., 10H) consecutive bytes. Thus each paragraph starts at a physical address whose rightmost hexadecimal digit is zero: FFFFFH 10H bytes Paragraph FFFFH FFFF0H FFFEFH 00030H 0002FH 10H bytes Paragraph 2H 00020H 0001FH 10H bytes Paragraph 1H 00010H 0000FH 10H bytes Paragraph 0H 00000H Physical Memory Segments: The address bus of the 8086/8088 is 20-bits. Hence the microprocessor uses 20-bit memory addresses; but its registers are 16 bits. The concept of memory segmentation is used to solve this problem of using 20-bit addresses in a 16-bit microprocessor. The 8086/8088 partitions its memory into 65,536 physical memory segments. A physical memory segment is a block of 216 (i.e., 64K or 10,000H) consecutive bytes starting at a paragraph boundary. The segments overlap but they all begin at different paragraph boundaries. All segments from the one starting at F0000h to the one starting at FFFF0h wrap around and end at lower memory addresses. Since each segment starts at a physical address whose leftmost hexadecimal digit is zero, this digit need not be stored, hence a 16-bit segment register can be used to store the remaining four digits of the 20-bit address. Within a segment, a memory location is specified by giving an offset. This is the number of bytes from the beginning of the segment. Since a segment is 10,000H bytes, the first byte in a segment has offset 0000h and the last byte has offset FFFFh (Note: Offsets are unsigned numbers). Thus a memory location may be specified by providing the 16-bit segment base address, and a 16-bit offset, written in the form segment:offset; this is known as a logical address for the memory location. For example, the logical address A4FB:4872h means offset 4872h within segment A4FBh, that is, the segment starting at physical address A4FB0h. To obtain the corresponding 20-bit physical (i.e., absolute) address, the 8086/8088 microprocessor first shifts the segment base address 4 bits to the left (this is equivalent to multiplying by 10H), and then adds the offset. Thus the physical address for A4FB:4872h is: A4FB0h + 4872h A9822h (20-bit physical address) Because segments may overlap, the segment:offset form of an address is not unique for a particular memory location as is the case for the physical address of that memory location. For example consider the following: Example: For the memory location whose physical address is 1256Ah, give the address in segment:offset form for segments 1256h and 1240h. Solution: Let X be the offset in segment 1256h and Y the offset in segment 1240h. We have: (a) 1256Ah = 12560h + X X = 000Ah hence 1256Ah = 1256:000Ah (1) (b) 1256Ah = 12400h + Y Y = 016Ah hence 1256Ah = 1240:016Ah (2) (1) & (2) 1256:000AH = 1240:016AH 000Ah 016Ah 1256h 1240h Example: A memory location has physical address 80FD2h. In what segment does it have offset BFD2h ? Solution: physical address = segment * 10h + offset segment * 10h = physical address - offset Hence: physical address = 80FD2h - offset = BFD2h 75000h Thus the segment is 7500h Program (or Logical) segments A logical segment is part of a program that is loaded into memory beginning on a paragraph boundary (thus the base address of a logical segment has a rightmost hexadecimal digit of zero).