Assembly Language for Intel-Based Computers, 5th Edition Kip Irvine Capítulo 2: Arquitetura de Processamento IA-32 Slides prepared by the author Revision date: June 4, 2006 (c) Pearson Education, 2006-2007. All rights reserved. You may modify and copy this slide show for your personal use, or for use in the classroom, as long as this copyright statement, the author's name, and the title are not changed. Resumo do Capítulo • • • • • Conceitos Gerais Arquitetura IA-32 Gerenciamento de memória IA-32 Componentes de um Microcomputador IA-32 Sistema de Entrada-Saída Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 2 Conceitos Gerais • • • • Projeto de Microcomputador Básico Ciclo de Execução de Instrução Leitura da Memória Como um programa é executado Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 3 Projeto de Microcomputador Básico • As operações de CPU são sincronizadas pelo clock • A unidade de controle (CU) coordena os passos da seqüência de execução • ALU realiza o processamento aritmético e lógico data bus registers Central Processor Unit (CPU) ALU CU Memory Storage Unit I/O Device #1 I/O Device #2 clock control bus address bus Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 4 Clock • Sincroniza todas as operações de CPU e barramento • O tempo de ciclo mede a duração de uma única operação • O clock é usado para disparar eventos one cycle 1 0 Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 5 Próxima seção • • • • • Conceitos Gerais Arquitetura IA-32 Gerenciamento de memória IA-32 Componentes de um Microcomputador IA-32 Sistema de Entrada-Saída Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 6 Ciclo de execução de instrução Fetch Decode Fetch operands Execute Store output I-1 memory op1 op2 program I-2 I-3 I-4 fetch read registers registers instruction register decode write I-1 write • • • • • PC flags ALU execute (output) Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 7 Pipeline Multi-estágio • O pipeline torna possível a execução de instruções em paralelo • A execução de uma instrução é dividida em estágios discretos Stages S1 1 S2 S5 I-1 4 I-1 5 I-1 6 7 8 I-1 I-2 I-2 9 I-2 10 I-2 11 I-2 12 Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. S6 I-1 3 Cycles S4 I-1 2 Exemplo de um processador nãopipeline. Muitos ciclos perdidos. S3 I-2 Web site Examples 8 Execução em pipeline • Uso eficiente dos ciclos, com alto throughput de instruções: Stages Cycles S1 1 I-1 2 I-2 3 4 5 6 S2 S3 S4 S5 S6 Para k estágios e n instruções, o número de ciclos requeridos é: I-1 I-2 I-1 I-2 k + (n – 1) I-1 I-2 I-1 I-2 7 Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. I-1 I-2 Web site Examples 9 Ciclos perdidos (pipeline) • Quando um dos estágios requer dois ou mais ciclos, novamente se perde ciclos. Stages Cycles S1 S2 S3 exe S4 1 I-1 2 I-2 I-1 3 I-3 I-2 I-1 I-3 I-2 I-1 I-3 I-1 4 5 S6 Para k estágios e n instruções, o número de ciclos requerido é: 6 I-2 7 I-2 8 I-3 9 I-3 10 S5 k + (2n – 1) I-1 I-1 I-2 I-2 I-3 11 Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. I-3 Web site Examples 10 Superescalar Um processador superescalar faz uso de múltiplos pipelines de execução. No exemplo, note que o estágio S4 tem pipelines u e v. Stages S4 Cycles S1 S2 S3 u v S5 S6 Para k estágios e n instruções, o número de ciclos requeridos é: 1 I-1 2 I-2 I-1 3 I-3 I-2 I-1 4 I-4 I-3 I-2 I-1 I-4 I-3 I-1 I-2 I-4 I-3 I-2 I-1 I-3 I-4 I-2 I-1 I-4 I-3 I-2 I-4 I-3 5 6 7 8 k+n 9 10 Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. I-4 Web site Examples 11 Leitura da Memória • Múltiplos ciclos são requeridos para a leitura de memória, pois a memória é muito mais lenta que a CPU. Os passos são: • Colocar o endereço no barramento de endereço • Acionar a linha Read (RD) para zero • CPU espera um ciclo pela resposta de memória • A linha Read (RD) vai para 1, indicando que o dado está presente no barramento de dados Cycle 1 Cycle 2 Cycle 3 Cycle 4 CLK Address ADDR RD Data DATA Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 12 Memória Cache • RAM estática de alta velocidade e alto custo, que pode estar dentro ou fora do chip de CPU. • Cache nível-1 : dentro da CPU • Cache nivel-2 : fora da CPU • Acerto (hit): quando o dado a ser lido se encontra no cache • Falta (miss): caso contrário. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 13 Como um programa é executado User sends program name to Operating system gets starting cluster from searches for program in Current directory returns to System path loads and starts Directory entry Program Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 14 Multitarefa • O Sistema Operacional (SO) pode rodar múltiplos programas ao mesmo tempo. • Multiplos threads de execução dentro de um mesmo programa. • O Scheduler atribui uma dada quantidade de tempo de CPU para cada programa em execução. • Comutação rápida de tarefas • ilusão de que todos os programas estão sendo executados simultaneamente • o processador deve suportar a comutação de tarefas. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 15 Arquitetura do processador IA-32 • • • • Modos de operação Ambiente básico de execução Unidade de ponto-flutuante História dos microprocessadores da Intel Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 16 Modos de Operação • Modo protegido (Windows, Linux) • Modo de endereçamento real (MS-DOS) • Modo de gerenciamento do sistema (gerencimento de potência, segurança do sistema, diagnóstico) • Modo Virtual-8086 • Híbrido de protegido • Cada programa tem seu próprio computador 8086 Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 17 Ambiente básico de execução • • • • • • Memória endereçável Registradores de propósito geral Registradores de índice e base Uso especializado de registradores Flags de Status Registradores de ponto-flutuante, MMX e XMM Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 18 Memória endereçável • Modo protegido • 4 GB • Endereçamento de 32-bits • Modos de endereçamento real e Virtual-8086 • Espaço de 1 MB • Endereçamento de 20-bits Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 19 Registradores de propósito geral Encontrados dentro da CPU. 32-bit General-Purpose Registers EAX EBP EBX ESP ECX ESI EDX EDI 16-bit Segment Registers EFLAGS EIP Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. CS ES SS FS DS GS Web site Examples 20 Accessando parte dos registradores • Usa nomes para 8-bits, 16-bits ou 32-bits • Aplicados para EAX, EBX, ECX e EDX 8 8 AH AL AX EAX Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. 8 bits + 8 bits 16 bits 32 bits Web site Examples 21 Registradores de índice e Base • Têm somente nome para 16-bits, além de 32-bits: Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 22 Uso especializado de registradores (1 de 2) • propósito geral • • • • • EAX – acumulador ECX – contador de laços ESP – ponteiro de pilha ESI, EDI – registradores de índice EBP – ponteiro de estrutura (pilha) • Segmentos • • • • CS – segmento de código DS – segmento de dados SS – segmento de pilha ES, FS, GS – segmentos adicionais Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 23 Uso especializado de registradores (2 de 2) • EIP – ponteiro de instrução • EFLAGS • Flags de status e controle • cada flag é um único bit Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 24 Flags de Status • Carry • Estouro em aritmética sem sinal • Overflow • Estouro em aritmética com sinal • Sign • Resultado negativo • Zero • Resultado é zero • Auxiliary Carry • carry do bit3 para o bit 4 • Parity • Soma de bits 1 é um número par Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 25 Registradores de ponto-flutuante, MMX, e XMM 80-bit Data Registers • Oito registradores de ponto-flutuante de 80-bits ST(0) • ST(0), ST(1), . . . , ST(7) ST(1) • em estrutura de pilha ST(2) • usados para aritmética de pontoflutuante ST(3) ST(4) • Oito registradores MMX de 64-bits ST(5) • Oito registradores XMM de 128-bits para operações SIMD(single-instruction-multiple-dada) ST(6) ST(7) Opcode Register Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 26 História dos microprocessadores Intel • • • • Intel 8086, 80286 Família de processadores IA-32 Família de processadores P6 CISC e RISC 80x86 – família de todos os microprocessadores a partir de 8086, incluindo os de 16 bits, 32 bits e 64 bits. IA-16 – arquitetura Intel de 16 bits (8086,8088, 80286) IA-32 – arquitetura Intel de 32 bits (80386, 80486, Pentium,…) IA-64 – arquitetura Intel de 64 bits (Itanium) Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 27 Lei de Moore Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 28 Primeiros microprocessadores Intel • Intel 8080 • RAM endereçável até 64K • Registradores de 8-bits • Sistema operacional CP/M • Arquitetura de barramento S-100 • Discos flexíveis de 8-polegadas! • Intel 8086/8088 • IBM-PC Usava 8088 • RAM endereçável até 1 MB • Registradores de 16-bits • Barramento de dados de 16-bits (8-bits para 8088) • Unidade de ponto-flutuante separada (8087) Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 29 GND 1 40 VCC A14 2 39 A15 A13 3 38 A16/S3 A12 4 37 A17/S4 A11 5 36 A18/S5 A10 6 35 A19/S6 A9 7 34 A8 8 33 9 32 AD7 AD6 10 . 31 8088 S2´ S1´ S0´ TIPO DE CICLO DE BARRAMENTO 0 0 0 Reconhecimento de interrupção 0 0 1 Leitura de porto de E/S 0 1 0 Escrita de porto de E/S 0 1 1 Halt 1 0 0 Acesso a código MN/MX´ RD´ RQ´/GT0´ AD5 11 30 RQ´/GT1´ AD4 12 29 LOCK´ AD3 13 28 AD2 14 27 S2´ S1´ AD1 15 26 S0´ AD0 16 25 QS0 1 0 1 Leitura de memória NMI 17 24 QS1 1 1 0 Escrita de memória INTR 18 23 TEST´ 1 1 1 Liberação de barramento CLK 19 22 READY GND 20 21 RESET Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 30 Arquitetura do 8086/8088 registradores de uso geral, AX,BX,CX,DX índices e SI,DI, ponteiros SP e BP BUS interno operando 1 IP registradores de segmento geração de endereços e controle do barramento ES CS DS SS BUS externo operando 2 ALU queue (4 by tes) FLAGS EU - Execution Unit Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. BIU - Bus Interf ace Unit Web site Examples 31 Cálculo do endereço físico do 8086/8088 15 0000 0 deslocamento endereço ef etiv o 0 15 segmento 0000 registrador de segmento + 19 0 endereço f ísico Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 32 16 bits Registradores do 8086/8088 AX AH AL Acumulador principal BX BH BL Aritmética, apontadores CX CH CL Loops DX DH DL Multiplicação e Divisão SI Apontador f onte para operações com cadeia de caracteres DI Apontador destino para operações com cadeia de caracteres BP SP CS DS Apontador de Base Apontador de Pilha Segmento de Código Segmento de Dados SS Segmento de Pilha ES Segmento Extra IP Contador de Programa FLAGS Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Palavra de Status Web site Examples 33 Endereçamento imediato • O operando é um dado contido na própria instrução opcode dado dado • Ex: mov cl, 10h - o dado especificado na instrução (constante) é carregado no registrador CL. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 34 Endereçamento de registrador O operando é contido num registrador opcode modo Ex: mov bx, ax - o conteúdo do registrador AX é carregado no registrador BX. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 35 Dado contido na memória • Endereçamento direto – o endereço efetivo de memória é o deslocamento opcode modo deslocamento end.ef etiv o Ex: mov al, (2000h) - o conteúdo de memória no endereço DS:2000h é transferido para o registrador AL. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 36 Dado contido na memória • Endereçamento indireto – o endereço efetivo é contido num registrador opcode modo BX, BP, SI, DI end.ef etiv o Ex: mov al, (bx) - o conteúdo de memória no endereço DS: BX é carregado no registrador AL. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 37 Dado contido na memória • Endereçamento por base – o endereço efetivo é a soma de um registrador e o deslocamento opcode modo deslocamento BX, BP + end.ef etiv o Ex: mov cl, (bx + 04) - o conteúdo de memória no endereço DS: BX + 04 é carregado no registrador CL. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 38 Dado contido na memória • Endereçamento indexado – o endereço efetivo é a soma de dois registradores, com ou sem deslocamento opcode modo deslocamento BX, BP + SI,DI + end.ef etiv o Ex: mov ah, (bx + si + 10h) - o conteúdo de memória dado pelo endereço DS: BX + SI + 10H é carregado no registrador AH. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 39 Dado contido na memória Endereçamento de string (cadeia) – os endereços de memória são implícitos, usando DS:SI para fonte e ES:DI para destino, para instruções de cadeia opcode Ex: movsb Significado: copia um byte do endereço dado por DS:SI para o endereço ES:DI. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 40 Endereçamento de instrução • Endereçamento relativo – o endereço é relativo ao contador de programa, e é usado para desvio opcode deslocamento Ex: jc 20h Significado: desvia de uma instrução no endereço 20H à frente, caso ocorra o vai-um (carry = 1). Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 41 Endereçamento de entrada/saída • Endereçamento de porto de entrada/saída(E/S) modo direto opcode endereço Ex1: in al, 20h - o byte de dados presente no porto 20H é carregado no registrador AL. Ex2: out 50h, ax - a palavra de 16 bits contida em AX é transferida para o porto 50H. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 42 Endereçamento de entrada/saída Endereçamento de porto de E/S, indireto, por registrador DX opcode DX endereço Ex1: in al, dx - o byte contido no porto cujo endereço é dado pelo conteúdo do registrador DX, é carregado no registrador AL. Ex2: out dx, al - o byte contido no registrador AL é carregado para o porto cujo endereço é dado pelo conteúdo do registrador DX. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 43 Exemplo de programa • Uma máquina tem 3 lâmpadas: 1) verde – acende quando a temperatura é abaixo de 30 graus 2) amarela – acende quando a temperatura está entre 30 e 40 graus 3) vermelha – acende quando a temperatura está acima de 40 graus endereço do sensor de temperatura: 0FF0H; endereço da saída para as lâmpadas: 0FF1H; código para acender as lâmpadas: verde = 05H amarela = 10H vermelha = 15H Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 44 Programa Rótulo (label) mnemônico mov in mov cmp jb cmp jbe mov out jmp amarela: mov out jmp verde : mov out retorna: ret operandos comentário dx, 0FF0h ;sensor al, dx dx,0FF1h ;lâmpadas al,1Eh ;30 graus verde al, 28h ;40 graus amarela al, 15h dx,al ;acende vermelha retorna al, 10h dx, al ;acende amarela retorna al, 05h ;acende verde dx,al Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 45 O IBM-AT • Intel 80286 • RAM endereçável até 16 MB • Memória protegida • Várias vezes mais rápido que 8086 • Introduziu o barramento IDE • Unidade de ponto-flutuante 80287 Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 46 Família Intel IA-32 • Intel386 • RAM endereçável até 4 GB, registradores de 32-bits, paginação (memória virtual) • Intel486 • Pipeline de instruções • Pentium • superescalar, barramento de endereço de 32bits, caminho de dados interno de 64-bits Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 47 32 bits IA32 Registradores 16 bits GPR0 EAX AX AH AL Acumulador principal GPR1 ECX CX CH CL Loops GPR2 EDX DX DH DL Multiplicação e Divisão GPR3 EBX BX BH BL Aritmética, apontadores GPR4 ESP SP EBP BP GPR6 ESI SI Apontador fonte para operações com cadeia de caracteres GPR7 EDI DI Apontador destino para operações com cadeia de caracteres GPR5 CS DS PC EIP EFLAGS Apontador de Pilha Apontador de Base Segmento de Código Segmento de Dados SS Segmento de Pilha ES Segmento Extra FS Segmento de Dados 2 GS Segmento de Dados 3 IP FLAGS Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Contador de Programa CÓDIGO DE CONDIÇÃO Web site Examples 48 Família Intel P6 • Pentium Pro • Técnicas avançadas de otimização em microcódigo • Pentium II • Conjunto de instruções MMX (multimídia) • Pentium III • Instruções SIMD (streaming extensions) • Pentium 4 e Xeon • Micro-arquitetura Intel NetBurst, sintonizadas para multimídia Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 49 Arquitetura Intel Net Burst • • • • • • • • Tecnologia Hyper Pipeline Barramento de sistema de 400MHz Cache de execução de rastreio mecanismo de execução rápida Cache de transferência rápida Execução dinâmica avançada Unidade melhorada de ponto-flutuante e multimídia Streaming SIMD Extensions 2 Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 50 modo protegido Modo Real 8086/8088 80286 386, 486, Pentium endereço lógico endereço lógico endereço lógico seg seg seg offset 16 16 offset 32 16 16 16 offset + 20 endereço fisico descritor de segmento descritor 32 de segmento 24 + + 32 24 20 endereço fisico 12 10 10 20 20 Cálculo de endereço Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. descritores de paginação 32 endereço fisico Web site Examples 51 CISC e RISC • CISC – complex instruction set • Conjunto grande de instruções • Operações de alto-nível • Requer interpretador de microcódigo • exemplos: família Intel 80x86 • RISC – reduced instruction set • Instruções atômicas, simples • Conjunto pequeno de instruções • Executadas diretamente pelo hardware • exemplos: • ARM (Advanced RISC Machines) • DEC Alpha (agora Compaq) Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 52 Próxima seção • • • • • Conceitos Gerais Arquitetura IA-32 Gerenciamento de memória IA-32 Componentes de um Microcomputador IA-32 Sistema de Entrada-Saída Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 53 Gerenciamento de memória IA-32 • • • • • Modo de endereçamento real Cálculo de endereçamento linear Modo protegido Modelo Multi-segmento Paginação Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 54 Modo de endereçamento real • Endereçamento máximo de RAM de 1 MB • Programas de aplicação podem acessar qualquer área de memória • Única tarefa • Suportado pelo sistema operacional MS-DOS Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 55 Memória Segmentada Endereçamento segmentado: endereço absoluto (linear) é uma combinação de um valor de segmento de 16-bits adicionado a um offset (deslocamento) de 16-bits . F0000 E0000 8000:FFFF D0000 C0000 B0000 A0000 one segment 90000 80000 70000 60000 8000:0250 50000 0250 40000 30000 8000:0000 20000 10000 seg 00000 Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. ofs Web site Examples 56 Cálculo do endereço linear • Dado um endereço de segmento, multiplicá-lo por 16 (adicionar um zero hexadecimal), e adicionar o offset • Exemplo: converter 08F1:0100 a um endereço linear Adjusted Segment value: 0 8 F 1 0 Add the offset: 0 1 0 0 Linear address: 0 9 0 1 0 Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 57 Sua vez . . . Que endereço linear corresponde o endereço segmento/offset 028F:0030? 028F0 + 0030 = 02920 Usar notação hexadecimal para endereçamento. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 58 Sua vez . . . Que endereço de segmento corresponde ao endereço linear 28F30h? Muitos diferentes endereços (segmento-offset ) podem produzir o endereço linear 28F30h. Por exemplo: 28F0:0030, 28F3:0000, 28B0:0430, . . . Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 59 Modo protegido (1 de 2) • RAM endereçável até 4 GB • (00000000 a FFFFFFFFh) • Cada programa é associado a uma partição de memória que é protegida de outros programas • Projetado para multitarefas • Suportado por Linux & MS-Windows Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 60 Modo protegido (2 de 2) • Tabelas de descrição de segmentos • Estrutura de programa • Áreas de código, dados e pilha • Descritores de segmentos CS, DS e SS • Tabela de descrição global (GDT) • Programas MASM usam o modelo de memória flat Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 61 Modelo de segmento Flat • Uma única tabela de descrição global (GDT). • Todos os segmentos são mapeados no espaço de 32-bits not used Segment descriptor, in the Global Descriptor Table FFFFFFFF (4GB) 00040000 limit access 00000000 00040 ---- physical RAM base address 00000000 Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 62 Modelo de multi-segmento • Cada programa tem uma tabela de descrição local (LDT) • Contem a descrição para cada segmento usado por um programa RAM Local Descriptor Table 26000 base limit 00026000 0010 00008000 000A 00003000 0002 access 8000 3000 Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 63 Paginação • Suportada diretamente pela CPU • Divide cada segmento em blocos de 4096-bytes chamados páginas • A soma de todos os programas pode ser maior que a memória física • Parte do programa em execução fica na memória, e parte no disco • Gerenciamento de memória virtual (VMM) – utilitário do SO que gerencia a carga e descarga de páginas • Falta de Página – emitida pela CPU quando uma página deve ser carregada do disco Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 64 Próxima seção • • • • • Conceitos Gerais Arquitetura IA-32 Gerenciamento de memória IA-32 Componentes de um Microcomputador IA-32 Sistema de Entrada-Saída Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 65 Componentes de um microcomputador IA-32 • • • • Placa-mãe Saída de Video Memória Portos de entrada-saída Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 66 Placa-mãe (motherboard) • • • • • • • Soquete de CPU Slots de memória cache externa Slots de memória principal Chips BIOS Chip de sintetização de som (opcional) Chip de controle de Vídeo (opcional) Conectores IDE, paralelo, serial, USB, vídeo, teclado, joystick, rede e mouse • Conectores de barramento PCI (expansão) Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 67 Intel D850MD Motherboard Video mouse, keyboard, parallel, serial, and USB connectors Audio chip PCI slots memory controller hub Pentium 4 socket AGP slot dynamic RAM Firmware hub I/O Controller Speaker Battery Power connector Diskette connector Source: Intel® Desktop Board D850MD/D850MV Technical Product Specification Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. IDE drive connectors Web site Examples 68 Estrutura de barramento de um Pentium 4 Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 69 Saída de Vídeo • Controlador de vídeo • Na placa-mãe ou em cartão de expansão • AGP (accelerated graphics port technology)* • Memória de Vídeo (VRAM) • Mostrador de Vídeo CRT • usa varredura de rastreio • Retraço horizontal • Retraço vertical • Monitores LCD • Usa a tecnologia de cristais líquidos * This link may change over time. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 70 Monitores de CRT • O CRT (Cathode Ray Tube) contem um canhão que pode emitir um feixe de elétrons contra uma tela fosforescente na parte frontal. A grade serve para repelir o feixe de elétrons, ao ser aplicada uma tensão negativa, e para acelerá-lo ao ser aplicada uma tensão positiva e fazer brilhar um ponto na tela, por um curto espaço de tempo. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 71 CRTs com deflexão eletrostática - Usa campo elétrico para a deflexão do feixe de elétrons. A varredura pode ser em qualquer direção. - Útil em aplicações que necessitam de velocidade no traçado gráfico, porém que não precise preencher toda a tela, como em osciloscópios, Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples aparelhos de eletrocardiograma e terminais gráficos vetoriais. 72 CRTs com deflexão magnética • Usado em TVs e na maioria dos monitores atualmente. • Usa o campo magnético para as deflexões horizontais e verticais. • Durante a varredura horizontal o feixe varre a tela da esquerda para a direita em aproximadamente 50 ms, traçando uma linha quase horizontal, seguida de uma varredura de retorno até a extremidade esquerda, para iniciar uma nova varredura. • Após completar todas as linhas horizontais de cima para baixo, o feixe de elétrons faz um retorno para o canto esquerdo superior da tela ( retorno vertical). • Um dispositivo com essa forma de produção de imagem linha por linha, é denominado de dispositivo de varredura por rastreamento (raster scan). Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 73 Varredura entrelaçada No modo entrelaçado, uma varredura completa é composta de campo par e campo ímpar. O campo par é composto de linhas pares e o campo ímpar, de linhas ímpares. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 74 Varredura não-entrelaçada No modo de varredura não-entrelaçada, as linhas são desenhadas seqüencialmente. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 75 LCD (Liquid Crystal Display) •• 128-bit Cristais3D líquidos são moléculas orgânicas viscosas que fluem como líquido, graphics que têm estrutura espacial como um cristal. performance powered by RAGE™ 128 PRO •• 3D Foram descobertos por um botânico austríaco (Rheinitzer) em 1888 e graphics performance aplicados pela primeira vez em visores (por exemplo, calculadoras e • Intelligent TV-Tuner relógios) na décadawith de 1960. Digital VCR •• TV-ON-DEMAND™ Quando todas as moléculas estão alinhadas na mesma direção, as propriedades ópticas do cristal dependem da direção e polarização da luz • Interactive incidente. Program Guide • Still image and MPEG-2 motion capture • video Usando um campo elétrico, o alinhamento molecular e, por conseguinte, as propriedades • Video editing ópticas podem ser mudadas. Em particular, fazendo passar luz através de um cristal líquido, a intensidade da luz que sai dele pode ser • Hardware DVD playback controlada porvideo meios elétricos. • Video output to TV or VCR • Essa propriedade pode ser explorada para construir visores de tela plana. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 76 • Uma tela de monitor de LCD consiste de duas placas de vidro paralelas entre as quais há um volume selado que contem um cristal líquido. • Uma luz atrás da placa traseira, natural ou artificial, ilumina a tela por trás. • Os eletrodos transparentes ligados a cada placa são usados para criar campos elétricos no cristal líquido. • Diferentes partes da tela recebem tensões elétricas diferentes para controlar a imagem apresentada. • Existem polaróides colados às partes frontal e traseira da tela pois a tecnologia exige luz polarizada. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 77 Notebook com tela de LCD Eletrodo frontal Polaróide frontal Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 78 • Um tipo de visor de LCD é o TN (Twisted Nematic). • A placa traseira contem minúsculos sulcos horizontais , e a placa frontal, minúsculos sulcos verticais. • Sem campo elétrico, as moléculas de LCD tendem a se alinhar com os sulcos. • Como os alinhamentos frontal e traseiro estão a 90 graus de diferença, a estrutura cristalina fica torcida. • Na parte de trás do visor há um polaróide horizontal que permite somente a passagem de luz polarizada horizontalmente. Na parte da frente do visor há um polaróide vertical que permite somente a passagem de luz polarizada verticalmente. • Se não existisse líquido entre as placas, a luz polarizada horizontalmente que passa pelo polaróide traseiro seria bloqueada pelo polaróide frontal produzindo uma tela escura. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 79 Polarização vertical e horizontal vertical horizontal Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 80 • Contudo, a estrutura cristalina torcida das moléculas do LCD guia a luz na passagem e gira a sua polarização fazendo com que ela saia na vertical. • Portanto, na ausência de um campo elétrico, a tela LCD é uniformemente brilhante. • Aplicando a tensão elétrica em partes selecionadas da placa, a estrutura torcida pode ser destruída, bloqueando a luz nessas posições. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 81 Efeitos de polaróides cruzados e a presença do cristal líquido Polaróide cruzado (não transmite luz) Efeito do cristal líquido Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 82 • Há dois esquemas que podem ser usados para se aplicar a tensão elétrica. • Em um monitor de matriz passiva, ambos os eletrodos contêm fios paralelos. Em um visor de 640x480, o eletrodo traseiro poderia ter 640 fios verticais e o frontal 480 fios horizontais. • Aplicando uma tensão elétrica a um dos fios verticais e então fazendo pulsar um dos horizontais, a tensão em uma posição de pixel selecionada pode ser mudada, fazendo com que o pixel escureça por um curto espaço de tempo. • Repetindo esse pulso para o próximo pixel e então para o seguinte, pode-se pintar uma linha escura de varredura, análogo a um CRT. • Normalmente a tela inteira é pintada 60 vezes por segundo. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 83 • Outro esquema de ampla utilização é o monitor de matriz ativa. • É mais caro, mas produz melhor imagem. • Em vez de ter apenas dois conjuntos de fios perpendiculares entre si, ele tem um minúsculo elemento comutador em cada posição de pixel em um dos eletrodos. • Desligando e ligando esses elementos pode-se criar um padrão de tensão elétrica arbitrário na tela, o que permite um padrão de bits também arbitrário. • Os elementos comutadores são chamados transistores de película fina (TFT – Thin film transistors) e os monitores de tela plana que os utilizam costumam ser chamados monitores TFT. • A maioria dos notebooks e monitores de LCD usam a tecnologia TFT. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 84 Monitores coloridos • Os monitores coloridos usam os mesmos princípios gerais dos monocromáticos, porém manipulando 3 cores: vermelha, verde e azul em cada posição de pixel. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 85 Memória • • • • • • ROM • Somente de leitura (read-only) EPROM • ROM programável e apagável (erasable programmable) RAM Dinâmica (DRAM) • Custo baixo, mas deve ser reavivada constantemente (refresh) RAM Estática (SRAM) • Custo alto; usada para memória cache; não necessita reavivamento RAM de Vídeo (VRAM) • Dois acessos (dual port); optimizada para reavivamento constante do vídeo CMOS RAM • complementary metal-oxide semiconductor Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 86 Portos de entrada-saída • USB (universal serial bus) • • • • Conexão a dispositivos de alta velocidade Até 12 megabits/segundo Hub USB conecta múltiplos dispositivos enumeração: para o computador distingüir os dispositivos • suporta conexão quente (hot connections) • Paralelo • • • • Cabo curto, alta velocidade Comum para impressoras bidirecional, transferência de dados em paralelo Chip controladora Intel 8255 Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 87 Portos de entrada-saída (cont) • Serial • • • • Porto serial RS-232 Um bit por vez Usa cabos longos e modens 16550 UART (universal asynchronous receiver transmitter) Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 88 Próxima seção • • • • • Conceitos Gerais Arquitetura IA-32 Gerenciamento de memória IA-32 Componentes de um Microcomputador IA-32 Sistema de Entrada-Saída Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 89 Níveis de entrada-saída • Nível 3: chama uma função da biblioteca (C++, Java) • fácil; abstraído do hardware; detalhes ocultos • Desempenho lento • Nível 2: Chama uma função do sistema operacional • Específico a um SO; independente do dispositivo • Desempenho médio • nível 1: Chama uma função do BIOS (basic input-output system) • Pode produzir diferentes resultados em diferentes sistemas • Requer conhecimento de hardware • Usualmente tem bom desempenho • nível 0: Comunica diretamente com o hardware • Pode não ser permitido por certos sistemas operacionais Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 90 Mostrando uma cadeia de caracteres Quando um programa HLL mostra uma cadeia de caracteres, ocorrem os seguintes passos: Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Application Program Level 3 OS Function Level 2 BIOS Function Level 1 Hardware Level 0 Web site Examples 91 Nível de programação ASM Os programas em ASM podem realizar entrada-saída em um dos seguintes níveis: ASM Program Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. OS Function Level 2 BIOS Function Level 1 Hardware Level 0 Web site Examples 92 Resumo • • • • • • • • • • Unidade central de processamento (CPU) Unidade lógica e aritmética (ALU) Ciclo de execução de instrução Multitarefa Unidade de ponto-flutuante (FPU) Conjunto de instruções complexas Modo real e modo protegido Componentes da placa-mãe Tipos de memória Entra/saída e níveis de acesso Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 93 42 69 6E 61 72 79 Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Web site Examples 94