3 rd Generation Processor 386 P3 (386) = 3 rd Generation Processor Introduced: 0/985 Full 32b processor (32b registers. 32b internal and external databus. 32b address bus) 275k transistors. CM. 32-pin PGA package. (Supply current Icc=400mA. Roughly the same as 8086!) Clock speeds: 6-33MHz P3 processors were far ahead of their time: It took 0 years before 32b operating systems became mainstream! First 386 PCs early 987 (COMPAQ) 80386 Features 32b general and offset registers 6B prefetch queue Memory management unit with segmentation unit and paging unit 32b address and data bus 4GB physical address space 64TB virtual address space i387 numerical coprocessor Implementation of real, protected and virtual 8086 modes 06/03/2005 5 06/03/2005 52 Intel 80386 80386 Register Set Instruction Pointer 3 6 5 0 EFLAG Register 3 6 5 E0 EIP IP EFLAG FLAG General-Purpose Registers 3 6 5 8 7 0 EAX AH AL CS Segment Registers 5 0 EBX BH BL SS ECX CH CL DS EDX DH DL ES ESI EDI EBP SI DI BP FS GS ESP SP 80386 Operating Modes Coprocessor: i387 Protected Mode for Multitasking support Processes can run in Virtual 8086 mode. Real Mode (native 8086 mode) Processor powers up in Real Mode System Management Mode Power management or system security Processor switches to separate address space, while saving the entire context of the currently running program or task The hardware implementation of floating point processing in the i387 means floating point operations run at much higher speed. The i386 can execute all mathematical expressions using software emulation of the i387. 06/03/2005 55 06/03/2005 56
Sistema 386DX Endereçamento 386 Índice MOV EAX, [EBX+ESI*4+46] Base Deslocamento XCHG BX, [EBP+EDI*2] Escala,2,4,8 Base Índice Escala Deslocamento EAX ECX EDX EBX ESP EBP ESI EDI EAX ECX EDX EBX EBP ESI EDI 2 4 8 0 deslocamento de 8 bits deslocamento de 32 bits Endereço Efectivo Exemplo de Endereçamento 386 typedef struct { float x; float y; } Ponto2D; Segmentação Ponto2D Hexagono[6]; float xi = Hexagono[i].y; Pode ser compilado para: mov eax, [ EBX+ ESI*8 + 4 ] i y sizeof(ponto2d) Hexagono... yi xi... x y0 x0 Segmentação Descritor de Segmento Endereço lógico 6 32 Segmentação Endereço linear Tabela de segmentos Registo de base de tabela de segmentos 2
Memória segmentada Registos Descritores Protecção LDT / GDT Requester Privilege Level Níveis de Privilégio Níveis de Privilégio CPL (Current Privilege Level) Privilégio do código em execução RPL (Request Privilege Level) Privilégio solicitado para acesso à memória. EPL (Efective Privilege Level ) = MAX(CPL,RPL) 3
Protecção de dados Protecção de dados Acesso permitido CPL EPL<=DPL > EPL EPL>DPL RPL Acesso negado Protecção de dados exemplo Protecção de dados exemplo 2 O programa do code segment A consegue aceder ao data segment E utilizando o selector de segmento E porque: EPL = MAX ( CPL=2, RPL=2 ) = 2 <= DPL = 2 O programa do code segment B consegue aceder ao data segment E utilizando o selector de segmento E2 porque: EPL = MAX ( CPL=, RPL= ) = <= DPL = 2 Protecção de dados exemplo 3 Protecção de dados exemplo 4 O programa do code segment C não consegue aceder ao data segment E utilizando o selector de segmento E3 porque: EPL = MAX ( CPL=3, RPL=3 ) = 3 > DPL = 2 O programa do code segment D não consegue aceder ao data segment E utilizando o selector de segmento E3 porque: EPL = MAX ( CPL=0, RPL=3 ) = 3 > DPL = 2 4
Conforming segment contém código que pode ser chamado a partir de diversos níveis de privilégio mas é executado com o nível de privilégio do chamador. Numa chamada a uma rotima num segmento conforming, o CPL não é alterado. Nestes casos, o CPL (do CS) pode ficar diferente do DPL. Protecção de código Call Gate Call Gate Task Gate/ TSS Segmentação / Paginação Task State Structure 5
Alocação de memória linear Alocação process 8 process 9 process 9 process 0 Alocação de memória linear 2 Algoritmos de Alocação First Fit A lista de blocos livres é percorrida sequencialmente desde o início. É selecionado o primeiro bloco de tamanho suficiente. Next Fit Guarda a posição da última alocação Pesquisa sequencialmente para a frente. 8K 2K First Fit 8K 2K Best Fit Seleciona o menor bloco livre suficiente Worst Fit Seleciona o maior bloco livre. Buddy Com partição binária do espaço de memória Last Allocated Block (4K) 22K 8K 8K 6K 22K 2K Best Fit Next Fit bloco alocado bloco livre 6K 2K 8K 6K 6K 2K Wost Fit 36K bloco a alocar ( 6K) 20K Buddy Alocation Memória Paginada A Paginação permite que blocos de memória linear sejam alocados em zonas não contínuas da memória física page# frame# A memória física é dividida em frames. A memória linear é dividida em páginas da mesma dimensão. A tabela de páginas identifica a frame de cada página. 6
Paginação Paginação Alocação de memória paginada Alocação de memória paginada 2 4 5 6 Paginação a 2 níveis Paginação a 2 níveis Physical memory 7
Paginação 386 Page Table Entry Endereço linear 0 0 2 Paginação Página P - Present P = P = 0 A página está presente e pode ser acedida A página não está presente. Os restantes 3 bits pode ser utilizadospara, por exemplo, indexar a página no disco. Tabela de páginas Memória física A -Accessed D -Dirty U / S - User / Supervisor R / W - Read Write Registo de base de directório de páginas Directório de tabelas de páginas Valid bit TLB 386 With each page table entry a valid invalid bit is associated ( in-memory, 0 not-in-memory) Initially valid invalid but is set to 0 on all entries. Example of a page table snapshot. Frame # valid-invalid bit 0 0 0 page table During address translation, if valid invalid bit in page table entry is 0 page fault. 8