Comparação de Conjuntos de Instruções Intel Pentium / Motorola PowerPC • Ana Paula Martins [email protected] • Susana Cristina Dias Ribeiro [email protected] Tópicos 1. 2. 3. 4. 5. 6. Introdução Introdução ao Intel – Pentium II Introdução ao PowerPC – MPC750 Pentium II versus MPC750 Conclusão Bibliografia 1. Introdução • Estudo do número de instruções, tipo de instruções, modos de endereçamento e número de ciclos de relógio • Intel Pentium II : CISC • Motorola PowerPC MPC750: RISC 2. Introdução ao Intel Pentium II Características: • Poucos registos em muitas situações só o acumulador e alguns registos general-purpose • Instruções complexas • Tamanho variável de instruções, onde a instrução é seguida pela informação necessária • Vários modos de acesso à memória (modos de endereçamento) Instruções do Pentium II • Operandos das instruções mnemónica arg1, arg2, arg3 • Números binários e hexadecimais • Endereços segmentados Instruções do Pentium II Tipos de dados • Tipos fundamentais de dados: – Palavras, palavras duplas e palavras quadruplas • Alinhamento de palavras, palavras duplas e palavras quadruplas – não necessitam de serem ordenados na memória • Outros tipos de dados – numéricos: valores inteiros, inteiros sem sinal, inteiros BCD – apontadores: apontadores de 32 bits e apontadores de 48 bits – campos de bits: sequência contígua de segmentos de bits (máximo de 32 bits) – strings de dados Instruções do Pentium II Tipos de Dados • Dados com vírgula flutuante – reconhecem conjuntos de reais, inteiros e dados decimais inteiros Instruções Pentium II • Endereçamento dos operandos: – Colocado em: • • • • Na própria instrução No registo Numa posição da memória Numa porta de entrada/saída – Especificados implícita e explicitamente na instrução • Operandos imediatos – Operandos que estão codificados na própria instrução – Valor máximo é sempre menor que o valor máximo de uma palavra inteira sem sinal Instruções Pentium II Registos • General-purpose registers – 32 bits: EAX, EBX, ECX, EDX, EBP, ESI, EDI, ESP – 16 bits: AX, BX, CX, DX, SI, DI, SP, BP – 8 bits: AH, BH, CH, DH, AL, BL, CL, DL Instruções Pentium II Registos • Registos de segmentos: CS, DS, SS, ES, FS, GS Instruções Pentium II Registos • Registos EFLAGS – Registo de 32 bits – Contém um grupo de: • flags de estado • flags de controlo • flags de sistema Instruções Pentium II • Instruções lógicas: and Al,imm8 • Instruções de comparação: cmp AX,imm16 • Instruções de chamadas de procedimento: – Guarda o procedimento que liga a informação contida na pilha ao procedimento especificado no operando de destino call rel16 Instruções Pentium II • Instruções de • Instruções de controlo carregamento: e transferência: lea jmp • Instruções de • Instruções aritméticas transferência de dados: binárias: mov add Instruções Pentium II • Instruções de bit e de byte: btr • Instruções de armazenamento: fst • Instruções de manipulação da pilha: pop • Instruções de conversão: – Instruções de conversão simples – Instruções de deslocamento e de conversão Instruções Pentium II • Instruções aritméticas decimais: – Transforma o resultado de uma operação aritmética binária num decimal • Instruções de rotação e deslocamento: – Reorganizam os bits dentro do operando rcr 3. Introdução ao PowerPC MPC750 • Desenvolvido por: Apple – IBM – Motorola • Baseado em: arquitectura Power (IBM) - projectada para workstations cientificas - optimizada para operações matemáticas inteiras e de vírgula flutuante - incorpora branch processor Características do PowerPC • Baixo custo de fabrico quando comparado com o do Power • Arquitectura RISC de elevada performance • Arquitectura load/store (registo-registo) • Conjunto simples de instruções • Modo de endereçamento simples • Grande conjunto de registos Conjunto de registos do PowerPC Níveis da arquitectura PowerPC • UISA – user instruction architecture • VEA – virtual environment architecture • OEA – operating environment architecture Registos UISA • GPRs – generalpurpose registers: • Registos de origem ou de destino para todas as instruções de inteiros • Conjunto de 32 GPRs: GPR0-GPR31 • Registo de 32/64 bits para implementações de 32/64 bits Registos UISA • FPRs – floating-point registers • Registos de emissão e recepção para todas as instruções de vírgula flutuante • Conjunto de 32 FPRs: FPR0-FPR31 • Registo de 64 bits Registos UISA • CR – condition register • Mostram o resultado de certas operações aritméticas e fornecem um mecanismo de teste e propagação • Registo de 32 bits, dividido em 8 campos de 4 bits: CR0-CR7 Registos UISA • FPSCR – floatingpoint status and control register • Contem todas as interrupções signal bit, summary bits, enable bits e bits de controle necessários à concordância com a norma IEEE754 • Registo de 32 bits Registos UISA • XER – XER register • Indica as condições de overflow e carry para as operações de inteiros, e o número de bytes que são transferidos pelas instruções indexadas de carregamento/armazenamento • Registo de 32 bits Registos UISA • LR – linker register • Registo de 32/64 bits para implementações de 32/64 bits • CTR –counter register • Registo de 32/64 bits para implementações de 32/64 bits Registos VEA • Registos UISA • TB – time base (for reading) • Registo de 64 bits, dividido em duas estruturas de 32 bits, TBU e TBL Registos OEA • Abrange todos os registos que existem na arquitectura PowerPC Conjunto de Registos do PowerPC Conjuntos de Instruções do PowerPC • Instruções Inteiras – – – – aritméticas de comparação lógicas de rotação e deslocamento add rD,rA,rB • Instruções de vírgula flutuante – aritméticas – multiplicação/adição – arredondamento e conversão – comparação – de estado e controlo fsel frD,frA,frC,frB Conjunto de Instruções do PowerPC • Instruções carregamento/armazenamento – carregamento e armazenamento de inteiros – carregamento e armazenamento múltiplos – carregamento e armazenamento de armazenamento de vírgulas flutuantes – Primitivas usadas para a construção atómica de operações de memória lbz rD,d(rA) Conjunto de Instruções do PowerPC • Instruções de propagação e de controle de fluxo – instruções branching e trap – instruções lógicas da condição de registo b target_addr • Instruções de controle do processador – move de / para SPR – move de / para MSR (machine state register) – sincronismo – carregamento/armazenamento mfspr rD,SPR Conjunto de Instruções do PowerPC • Instruções de controle de memória – de gestão da cache a nível do supervisor – da cache a nível de utilizador – de manipulação do registo de segmentos – de gestão do buffer mtsr SR,rS Conjunto de Instruções do PowerPC • Instruções inteiras • Instruções de vírgula flutuante • Instruções de carregamento e de armazenamento (load/store) • Instruções de propagação e de controle de fluxo • Instruções de controle de processador • Instruções de controle de memória Unidades de execução do MPC750 • FPU - floating-point unit • BPU - branch processing unit • SRU - system register unit • LSU - load / store unit • IU - integer unit • IU1 – executa todas as instruções inteiras • IU2 – executa todas as instruções inteiras com a excepção das instruções de multiplicação e divisão Registos e instruções adicionais ao MPC750 • Registos – instruction address breakpoint register (IABR) – hardware implementationdependent register 0 (HID0) - hardware implementationdependent register 1 (HID1) – performance monitor registers (MMCR0, UMMCR0, MMCR1, UMMCR1, PMC1-PMC4, UPMC1-UPMC4, SIA, USIA, SDA, USDA) Registos e instruções adicionais ao MPC750 • Instruções – external control in word indexed, (eciwx) – external control out word indexed, (ecowx) – floating select, (fsel) – floating reciprocal estimate singleprecision, (fres) – floating reciprocal square root estimate, (frsqrte) – store floating-point as integer word, (stfiwx) O Pipeline e o MPC750 Etapas do pipeline: • Captura (fetch) • Descodificação / Despacho (decode/dispach) • Execução (execute) • Conclusão (complete) Fluxo de Instruções 4. Pentium II versus MPC750 Uma situação quotidiana ... • Pentium II (CISC) 1. Deixa o restaurante e desce a rua 2. Vira à direita, e em seguida à esquerda 3. Sobe a rua, e entra no último edifício • MPC750 (RISC) 1. 2. 3. 4. 5. 6. Deixa o restaurante Desce a rua Vira à direita Vira à esquerda Sobe a rua Entra no último edifício Um exemplo real – a adição Pentium II add 6,r1 MPC750 add r3,r2,r1 Lê-se o conteúdo de r1, realiza-se a adição, coloca-se o resultado em r1. Se outra instrução requerer o valor original de r1, o valor deste registo deverá ter sido guardado antes de realizar a operação de adição, e então carregado na memória. r1 e r2 são adicionados e o seu resultado é colocado em r3. Como r1 e r2 não são alterados, facilmente podem ser reutilizados. 5. Conclusão Pentium II MPC750 Qualquer instrução pode referenciar a memória (register-memory) Só carregamentos e armazenamentos podem referenciar a memória (load-store) Muitas instruções e muitos modos de endereçamento Poucas instruções e poucos modos de endereçamento 5. Conclusão (cont.) Instruções complexas que Instruções simples que fazem uso de vários fazem uso de um só ciclo ciclos de relógio de relógio Instruções interpretadas por microprogramas Instruções executadas por hardware Sem uso (ou muito pouco) do pipeline Grande uso do pipeline 5. Conclusão (cont.) Pequeno conjunto de registos Grande conjunto de registos A complexidade apresenta-se no microprograma A complexidade apresenta-se no compilador Poucas instruções para a concretização de um objectivo Muitas instruções para a concretização de um objectivo 6. Bibliografia • [1] David A. Patterson and John L. Hennessy, Computer Organization & Design – The hardware/software interfece – 2nd edition, Morgan Kaufmann • [2] Intel, Intel Architecture Software Developer’s Manual – Volume 1: Basic Architecture, Intel 1999 • [3] Intel, Intel Architecture Software Developer’s Manual – Volume 2:Instruction Set Reference, Intel 1999 • [4] Motorola, PowerPC Microprocessor Family: The Programming Environments for 32-Bit Microprocessors, Motorola 1997 • [5] Motorola, MPC750 – RISC Microprocessor User’s manual, Motorola 1997 • [6] Página da Motorola: http://www.motorola.com • [7] Página da Intel: http://www.intel.com