8086
Processadores
8086
• Registos de 16 bits
• Barramento de dados de 16 bits
• Bus de endereços de 20 bits
– 16 linhas partilhadas de dados. – Capacidade para endereçar
220=1MiB de memória
• Ciclo de barramento de 4
períodos de clock.
Registos 8086
Arquitectura 8086
Endereçamento 8086
• Endereçamento imediato MOV AL, #13 MOV AH, #0xD MOV DL, 0Ah + 3 ADD AL, #3ChMOV AL, George * 2 - 1
MOV AX, #304Ch • Endereçamento directo. MOV DX, [1234h] MOV CL, [1220h] MOV AL, DS:[8088h] MOV AL, [1234h] MOV [1002h], AL • Endereçamento indirecto. MOV AL, [BX] MOV BL, 12h[BX] MOV BL, 1000h[BP] ADD DX, [BX + 8] MOV [BP + SI], DL INC BYTE [0x100 + CS:DI]
MOV BX, #100h MOV SI, #20h
MOV AL, [BX + SI + 3]
Segmentação
• Em todos os acessos à memória do x86 está
implícito o conceito de segmento.
Registos de Segmento
• Code Segment (CS) – implícito em todas as buscas
(fetch) de instruções.
• Stack Segment (SS) – implícito nas operações com a
stack (push, pop, etc.) e no endereçamento indirecto
com BP e com o Stack Pointer (SP)
• Data Segment (DS) – implícito nas restantes
operações de acesso a dados na memória principal.
• Extra Segment (ES) – pode ser seleccionado
(explicitamente) para acesso a dados na memória
principal.
Code Segment
16-bit Segnment Base Address 0000
16-bit Offset Address
20-bit Physical Address CS
IP
Segmentos
Exemplo 8086
.model small .stack
.data
message db "Hello world, I'm learning Assembly !!!", "$" .code
main proc
mov ax, seg message mov ds, ax mov ah, 09 lea dx, message int 21h mov ax, 4c00h int 21h main endp end main
Exemplo 8086
mov ax, 2812h mov ds, ax mov ax, 3600h mov ss, ax mov dx, 2244h mov ax, [dx] ; [ 2812h*10h + 2244h ] ; [ 2A364h ] mov ax, [ss:dx] ; [ 3600h*10h + 2244h ] ; [ 38244h ] 148086 / 8088
MAXIMUM MODE MINIMUM MODE 1 40 20 21 8088 GND A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND Vcc A15 A16,S3 A17,S4 A18,S5 A19,S6 MN,/MX /RD /RQ,/GT0 /LOCK /S2 /S1 /S0 QS0 QS1 /TEST READY RESET /RQ,/GT1 HOLD /WR IO/M DT/R /DEN ALE /INTA HLDA high /SS0 MAXIMUM MODE MINIMUM MODE 1 40 20 21 8086 GND AD14 AD13 AD12 AD11 AD10 AD9 AD8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND Vcc AD15 A16,S3 A17,S4 A18,S5 A19,S6 /BHE,S7 MN,/MX /RD /RQ,/GT0 /LOCK /S2 /S1 /S0 QS0 QS1 /TEST READY RESET /RQ,/GT1 HOLD /WR IO/M DT/R /DEN ALE /INTA HLDA8086
Nome Descrição Tipo
Vcc / GND Alimentação
AD0-AD15 Data / Address Bus Bidirecional / tristate
Durante o primeiro período de clock de um ciclo de barramento, contêm os 16 bits menos significativos do address bus. Durante os outros períodos corresponde ao data bus.
A16 / S3,
A17 / S4 Address / Identificador de Segmento Output / tristate
Durante o primeiro período de clock de um ciclo de barramento, contêm os bits 16 e 17 do endereço. Nos outros períodos contêm informação de status.
A18 / S5 Address / Interrupt enable status Output / tristate
Durante o primeiro período de clock de um ciclo de barramento, contém o bit 18 do endereço. Nos outros períodos contém o estado da flag Interrupt enable.
A19 / S6 Address / status Output / tristate
Durante o primeiro período de clock de um ciclo de barramento contém o bit 19 do endereço.
A17 / S4 A16 / S3 Segmento
0 0 Extra Segment
0 1 Stack Segment
1 0 Code Segment
1 1 Data Segment
8086
Nome Descrição Tipo
BHE / S7 High-order byte / status Output / tristate
Durante o primeiro período de clock de um ciclo de barramento, contém BHE. BHE é zero durante as sequências de leitura, de escrita e de interrrupt acknowledge em que devem ser lidos os 8 bits superiores do data bus.
RD Controlo de leitura Output / tristate
READY Wait state request Input
TEST Wait for test Input
Quando a instrução WAIT é executada, o processador pára até que a linha TEST seja activada.
INTR Pedido de interrupção Input
NMI Pedido de interrupção não mascarável Input
RESET Reset Input
CLK Clock Input
MN/MX Modo mínimo / Modo máximo Input
Modo mínimo
Nome Descrição Tipo
M / IO Acesso à memória ou I/O Output / tristate
WR Controlo de escrita Output / tristate
ALE Address Latch Enable Output
DT / R Data Transmite / Receive Output / tristate
DEN Data Enable Output / tristate
INTA Interrupt acknowledge Output / tristate
HOLD Hold request Input
HLDA Hold achnowledge Output
8086
MN / MX + Vcc
8086- módo mínimo
80 86 C P U F/C AEN1 AEN2 Clock generator +5V RES Wait-State Generator CLK READY RESET M/IO INTA RD WR PCLK MN/MX +5V STB OE 8282 Latch ALE AD0-AD15 A16-A19 BHE BHE D0 - D15 8286 DT/R DEN T OE 16 A0 - A19 Address Bus Control Bus8086 – Modo Máximo
8 0 8 6 C P U Clock generator Wait-State Generator CLK READY RESET MN/MX AD0-AD15 A16-A19 BHE STB OE 8282 Latch A0 - A19 Address Bus +5V RES S0 S1 S2 CLK S0 S1 S2 DATA 8286 Transceiver T OE ALE Gnd DEN DT/R MRDC MWTC IORC IOWC AIOWC AMWC INTA 8 2 8 8 B u s C o n tr o lle r 8086 MN / MX 4 1 c m2
\S2 \S1 \S0 Estado 0 0 0 Interrupt Acknoledge 0 0 1 I/O Read 0 1 0 I/O Write 0 1 1 Halt 1 0 0 Instruction fetch 1 0 1 Memory Read 1 1 0 Memory Write 1 1 1 Inactive QS0 QS1 Estado 0 0 No operation 0 1 Primeiro byte 1 0 Limpeza da fila 1 1 Bytes seguintesNome Descrição Tipo
S0,S1,S2 Machine cycle status Output/tristate
RQ/GTO, RQ/GT1
Local Bus priority control Bidirecional
QS0,QS1 Instruction queue status Output
LOCK Bus hold control Output/tristate 20
Bus controller
8288 Bus Controller DIR DEN# DT/R# 74HC245 EN# 74HC245 EN# DIR DIR CPU [D15:D8] CPU [D7:D0] Buffered [D15:D8] Buffered [D7:D0] T o M e m o ry a n d I/ O S ys te m s8288 Bus Controller also generates Direction and Enable signals for Bi-Directional Transeivers Supports Buffering the
System Data Bus
BHE
BHE# A0 Selection
0 0 Whole word (16-bits)
0 1 High byte to/from
endereço impar
1 0 Low byte to/from
endereço par 1 1 No selection Higher Address Bank (512K x 8) ODD Lower Address Bank (512K x 8) EVEN A1-A19 Address Bus Data Bus (D0 - D15) D8-D15 D0-D7 BHE A0 22
BHE
FFFFF FFFFD FFFFB FFFF9 00005 00003 00001 ODD Addresses (8086) FFFFE FFFFC FFFFA FFFF8 00004 00002 00000 EVEN Addresses (8086) A19..A1 A19..A1 D15:D8 D7:D0 FFFFF FFFFE FFFFD FFFFC 00002 00001 00000 Byte-Wide addressing (8088) BHE# A0/BLE#Endereços ímpares Endereços pares
Little Endian
• O Byte menos significativo de uma Word (16bits) é guardado no endereço de memória mais baixo. • O Byte mais significativo é guardado no
endereço seguinte. MOV AX, [...00110]
AX := 1C43h Little Endian !!
MOV BX, [...01101]
BX := 710Eh Acesso não alinhado!!
requer 2 ciclos de acesso à memória.
Exemplo: Intel 8x86 7Fh 88h 43h 1Ch A5h 0Eh 71h D3h 5Bh 94h A0h ...00100 ...00101 ...00110 ...00111 ...01100 ...01101 ...01110 ...01111 ...10000 ...10010 ...10011 24
Big Endian
• O Byte mais significativo de uma Word (16bits) é guardado no endereço de memória mais baixo. • O Byte menos significativo é guardado no
endereço seguinte.
MOVE D2, [...00110]
D2 := 431Ch Big Endian !!
MOVE D3, [...01101]
D3 := 0E71h Acesso não alinhado!!
requer 2 ciclos de acesso à memória.
Exemplo: Motorola 68k 7Fh 88h 43h 1Ch A5h 0Eh 71h D3h 5Bh 94h A0h ...00100 ...00101 ...00110 ...00111 ...01100 ...01101 ...01110 ...01111 ...10000 ...10010 ...10011
Clock Generator
268086 Interrupt
8086 8 INTR INTA Clear + Pedido de interrupção D Q FF D D A T A B u s OE IVB8086 Interrupt Vector
Mem 8086 32 bit 000h 004h 008h 00Ch 010h 014h 080h 3FFh INTR Int Ve ctor B yte(IV B) [IV*4] INTA Mem Rd(IVB* 4) Mem Rd(IVB *4+2) Call [iv*4+2]:[iv*4] t [IV*4+ 2] CS IP Div by 0 Single Step INT de 1 Byte Overflow Reserved Reserved Reserved NMI 28Controlador de Interrupções
D Q Clr D Q Clr D Q Clr D Q Clr D Q Clr D Q Clr D Q Clr D Q Clr 5 8086 INTR INTA Pedido de interrupção DATA Bus D Q Clr Desc 3/8 Encod 8/3 FF D OE + >1 E IVBPIC 8259
PRIORITY RESOLVER IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 INTERRUPT REQUEST REG (IRR)INTERRUPT MASK REG (IMR) CONTROL LOGIC INTERNAL BUS INT DATA BUS BUFFER CASCADE BUFFER COMPARATOR CAS 0 CAS 1 CAS 2 READ/ WRITE LOGIC SP/EN WR RD INTA IN -SERVICE REG (ISR) CS 30
Cascata 8259
CS 82C59A SLAVE A CAS 0 CAS 1 CAS 2 INT A0 D7 - D0 INT A SP/EN 7 6 5 4 3 2 1 0 GND 7 6 5 4 3 2 1 0 CS 82C59A SLAVE B CAS 0 CAS 1 CAS 2 INT A0 D7 - D0 INT A SP/EN 7 6 5 4 3 2 1 0 GND 7 6 5 4 3 2 1 0 CS MASTER 82C59A CAS 0 CAS 1 CAS 2 INT A0 D7 - D0 INTA SP/EN 7 6 5 4 3 2 1 0 VCC 7 6 5 4 3 2 1 0 INT REQ DATA BUS (8) CONTROL BUS ADDRESS BUS (16) INTERRUPT REQUESTSPC - PIC
IRQ USUAL FUNCTION/DEVICE0 System Timer
1 Keyboard
2 2nd IRQ controller
3 COM2:
4 COM1:
5 Free (used by LPT2: or sound card)
6 Floppy disk
7 LPT1:
8 Real Time Clock (RTC)
9 Free (may be labeled/appear as IRQ 2)
10 Free (often used by sound cards)
11 Free
12 PS/2 mouse
13 Math coprocessor on CPU (used)
14 Primary IDE
15 Secondary IDE
DMA
• Direct Memory Access
• Implementa transferências de dados:
– De dispositivos para memória
– Da memória para dispositivos
– Sem ocupar o CPU
DMA
periférico memória Controlador DMA CPU 1 4 2 5 3 HOLDA HOLD DREQ# DACK# HRQ HLDA TransferênciasEscrita (Write transfers)
transfere dados de um dispositivo de I/O para a memória. activa MEMW e IOR simultaneamente.
Leitura (Read transfers)
transfere dados da memória para um dispositivo de I/O. activa MEMR e IOW simultaneamente.
Memory-to-Memory
Transfere palavra da memória para registo Temp (via canal 0). Escreve Temp para memória, (via canal 1).
36
Processo de DMA
Time
I/O Device DMAC Memory Processor
DMA Request
Hold Request
Hold Acknowledge DMA Acknowledge
Data Transfer
Hold Request End
Hold Ack End Cycle Stealing Time Interval Data Transfer 37
Controlador de DMA
3638
DMA Fetch and Deposit
Processor
Control Bus (M/IO#, W/R#, and D/C# Signals)
Address Bus Memory I/O Device Data Bus Tri-state Control DMAC Interface Hold Req
Hold Ack DMAC
DMA Req DMA Ack Tri-state Control Tri-state Control Tri-state Control Tri-state Control Tri-state Control P I C Int TC (Transfer Complete) DMA Fetch-and-Deposit Data Transfer Mem
DMA Fetch and Deposit
40
DMA Fly-by
Processor
Control Bus (M/IO#, W/R#, and D/C# Signals)
Address Bus Memory I/O Device Data Bus Tri-state Control DMAC Interface Hold Req
Hold Ack DMAC
DMA Req DMA Ack Tri-state Control Tri-state Control Tri-state Control Tri-state Control Tri-state Control P I C Int TC (Transfer Complete)
DMA “Fly-by” Data Transfer
DMAC activa IORD e MEMWR em simultâneo ! Mais eficiente !
Mem
DMA Fly-by
DMA – Configuração 1
• Single Bus, Detached DMA controller
• Cada transferência usa 2 ciclos de barramento
– I/O para DMA + DMA para memory
CPU DMAController I/ODevice I/ODevice Main Memory
DMA Configuração 2
• Single Bus, Integrated DMA controller
• Cada transferência usa um ciclo de barramento
– DMA para memória ou I/O directo para memória (fly-by)
CPU DMAController Main Memory
I/O Device DMA Controller I/O Device DMA Controller I/O Device I/O Device 42
DMA Configuração 3
• Barramento de I/O independente
• Cada transferência usa:
– um ciclo de barramento de I/O
• I/0 para DMA
– um ciclo de barramento de memória
• DMA para memória
CPU DMA Controller I/O Device I/O Device Main Memory I/O Device I/O Device
8237
A4 - A7 EOP RESET CS READY CLK AEN ADSTB MEMR MEMW IOR IOW TIMING AND CONTROL DREQ0 -HLDA HRQ DACK0 -PRIORITY ENCODER AND ROTATING PRIORITY LOGIC DACK3 4 DREQ3 4 COMMAND (8) MASK (4) REQUEST (4) MODE (4 x 6) STATUS (8) TEMPORARY (8) INTERNAL DATA BUS DECREMENTORCOUNT REG (16) TEMP WORD
INC/DECREMENTOR
REG (16)
TEMP ADDRESS BUFFER IO 16-BIT BUS READ BUFFER ADDRESS BASE (16) WORD BASE COUNT (16)
READ WRITE BUFFER
ADDRESS CURRENT (16) WORD CURRENT COUNT (16) 16-BIT BUS BUFFER WRITE BUFFER READ A 8 A 1 5 BUFFER OUTPUT CONTROL COMMAND D0 - D1 A0 - A3 BUFFER IO D B 0 D B 7 44
8086 - 8237
Cascata 8237
80C86/88 MICRO-PROCESSOR HRQ HLDA DREQ DACK DREQ DACK 1ST LEVEL 82C37A HRQ HLDA 82C37A HRQ HLDA 82C37A ADDITIONAL DEVICES 2ND LEVEL INITIAL DEVICE 46Família x86
Data de Introdução Clock Data
Bus Número de Transistores Memória Endereçavel Memória Virtual Descrição 4004 15/11/71 108 KHz 4 bits 2 300 (10 microns) 640 Bytes First microcomputer chip Arithmetic manipulation
8008 1/4/72 108 KHz 8 bits 3 500 16 KBytes Data/character manipulation 8080 1/4/74 2 MHz 8 bits 6 000 (6 microns) 64 KBytes 10X the performance of the 8008 8086 8/6/78 5 MHz 8 MHz 10 MHz 16 bits 29 000 (3 microns) 1 MiB 10X the performance of the 8080 8088 1/6/79 5 MHz 8 MHz 8 bits 29 000 (3 microns) 1 MiB Identical to 8086
except for its 8-bit external bus
80186 1982 6 MHz 16 bits 1 MiB
80188 1982 6 MHz 8 bits 1 MiB
Identical to 80186 except for its 8-bit
external bus 80286 1/2/82 8 MHz 10 MHz 12 MHz 16 bits 134 000
(1.5 microns) 16 MiB 1 GiB
3-6X the performance of the 8086
Família x86 (IA32)
Introduction Date Clock Bus Width Number of Transistors Addressable Memory VirtualMemory Brief Description
Intel386DX 17/10/85 16 - 33 MHz 32 bits 275 000
(1 micron) 4 GiB 64 TiB
First X86 chip to handle 32 bit data sets
Intel386SX 16/6/88 16 MHz
20 MHz 16 bits
275 000
(1 micron) 16 MiB 64 TiB
16-bit address bus enabled low-cost 32 bit
Processing Intel486DX 10/4/89 25 MHz 33 MHz 50 MHz 32 bits 1 200 000 (1 micron, .8 micron with 50 MHz)
4 GiB 64 TiB Level 1 cache on chip
FPU on chip Intel486SX 22/4/91 16 - 33 MHz 32 bits 1 185 000 (.8 micron) 4 GiB 64 TiB identical in design to Intel486 DX but without math coprocessor
Pentium 22/3/93 60-166MHz 32 bits 3.1 million
(.8 micron) 4 GiB 64 TiB superscaler architecture, 5X the performance of the 33 MHz Intel486 DX Pentium Pro 27/3/95 150MHz 180MHz 200MHz 32 bits 5.5 million
(.32 micron) 4 GiB 64 TiB
dynamic execution architecture drives highperforming
processor
8086 / 8088
U? 8086MIN MN 33 READY 22 CLK 19 RESET 21 INTR 18 HLDA 30 HOLD 31 NMI 17 TEST 23 AD0 16 AD1 15 AD2 14 AD3 13 AD4 12 AD5 11 AD6 10 AD7 9 AD8 8 AD9 7 AD10 6 AD11 5 AD12 4 AD13 3 AD14 2 AD15 39 A16/S3 38 A17/S4 37 A18/S5 36 A19/S6 35 BHE/S7 34 DEN 26 DT/R 27 M/IO 28 RD 32 WR 29 ALE 25 INTA 24 U? 8088MIN MN 33 READY 22 CLK 19 RESET 21 INTR 18 HLDA 30 HOLD 31 NMI 17 TEST 23 AD0 16 AD1 15 AD2 14 AD3 13 AD4 12 AD5 11 AD6 10 AD7 9 A8 8 A9 7 A10 6 A11 5 A12 4 A13 3 A14 2 A15 39 A16/S3 38 A17/S4 37 A18/S5 36 A19/S6 35 SSO 34 DEN 26 DT/R 27 IO/M 28 RD 32 WR 29 ALE 25 INTA 24 5180186/80188
• Evolution of 8086/8088 80186/80188
• Increased instruction set
• On-chip system components (Clock generator,
DMA, Interrupt, Timers…)
• Unsuccessful in PCs
• Popular in embedded systems…
• Also known as iAPX186
Intel 80186/8
- Controlador de barramento integrado - Controlador de Interrupções integrado - Controlador de DMA integrado