Capítulo 2 - A Organização de Computadores Orlando Loques setembro 2006 Referências: principal: Capítulo 2, Structured Computer Organization, A.S. Tanenbaum, (c) 2006 Pearson Education Inc Computer Organization and Architecture, W. Stallings, Prentice Hall
Central Processing Unit The organization of a simple computer with one CPU and two I/O devices
Componentes Relevantes (i) UCP: Central Processing Unit Cerebro do computador Executa programas armazenados na memória Acessa as instruções, segundo uma sequência Control Unit Controla o acesso à memória Comanda a execução das instruçoes ALU: Arithmetic Logic Unity Operações lógicas e aritméticas Registros Memória rápida: resultados temporários e informações de controle
CPU Organization Linhas de controle The data path of a typical Von Neumann machine
Bus Organization
Componentes Relevantes (ii) Program Counter (PC): aponta a próxima instrução a ser buscada Instruction Register (IR): armazena a instrução sendo executada Data path (via de dados) Instructions Categories register-memory register-register memory-memory deve ser evitada
Componentes Relevantes (2) Barras ou Vias: Barra de endereços Barra de dados Barra de controle: ler, escrever, DMA, interrupção Memory Addres Register (MAR): contém o endereço da posição de memória Memory Buffer Register (MBR): armazena o dado envolvido na transferência Tipos de memória Random Access Memory (RAM): estática e dinâmica Read Only Memory Outros: Flash
Bus Interconnection Scheme
Instruction Execution Steps Fetch next instruction from memory into Instr. Register Change Program Counter to point to next instruction Determine type of instruction just fetched If instructions uses word in memory, determine where Fetch word, if needed, into CPU register Execute the instruction Go to step 1 to begin executing following instruction
Interpreter (1) An interpreter for a simple computer (written in Java)....
Interpreter (2) An interpreter for a simple computer (written in Java).
Instruction Cycle - State Diagram
Computador Simples: Formatos 0 3 4 15 opcode Address formato de instrução 0 1 15 S Magnitude formato de inteiro opcode 0001 0010 0101 Instrução LAC : Load AC from memory STA : Store AC to memory ADA : Add to AC from memory Exemplo em hexadecimal: 1941 : adiciona o conteúdo de 941 ao AC
Execução de programa opcode 0001 0010 0101 Instrução LAC : Load AC from memory STA : Store AC to memory ADA : Add to AC from memory
Tipos de Ciclos de Execução Processor-memory data transfer between CPU and main memory Processor I/O Data transfer between CPU and I/O module Data processing Some arithmetic or logical operation on data Control Alteration of sequence of operations e.g. jump Combination of above
Observações sobre máquinas interpretadas Permitem corrigir ou otimizar a implementação de instruções Permitem adicionar novas instruções Facilitam a estruturação do projeto de computadores completos Facilitam a obtenção de compatibilidade entre máquinas de diferentes gerações (backward compatibility) Foram suplantadas pela evolução da tecnologia: Velocidade das memórias RAM ficaram compatíveis com as ROMS Tecnologia RISC Duelo CISC X RISC RISC precisa de 5 instruções para executar uma instrução CISC Instruções RISC são 10X mais rápidas Backward compatibility, investimentos Máquinas híbridas resolveram o confronto Conclusões projetistas devem acompanhar as evoluções tecnológicas Tanembaum gosta de máquinas interpretadas
Design Principles for Modern Computers All common instructions directly executed by hardware sem interpretação mais rapidez instruções CISC podem ser quebradas Maximize rate at which instructions are issued paralelismo mais desempenho troca (cuidadosa) de ordem Instructions should be easy to decode formato regular, tamanho fixo, poucos campos Only loads and stores should reference memory manter operandos em registros, acesso à memória é lento e o delay é imprevísivel (compartilhamento de barras) Provide plenty of registers manter os dados nos registros (+ rápidos) até que não sejam mais requeridos
Paralelismo Níveis Nível de processador SIMD: computadores vetoriais, computer arrays MIMD: multiprocessador, sistemas distribuídos eg: Intel Dual-Core Nível de Instrução Duas etapas: busca e execução Técnicas básicas: Pipelining: reduzir o tempo de busca (fetch) que domina o tempo de execução das instruções Processamento Superscalar: suportar diversas unidades de execução
Pipelining (i) A five-stage pipeline The state of each stage as a function of time - nine clock cycles Consistência no uso de recursos tem que ser garantida!
Pipelining Analogia (ii) Fabrica de Bolos, com duas unidades separadas: fabricação e expedição Cinco trabalhadores em linha, em frente a uma esteira Ciclo de 10 segs Trab_1: Coloca uma caixa vazia na esteira transportadora Trab_2: Coloca um bolo na caixa Trab_3: Fecha a caixa Trab_4: Coloca um rotulo na caixa Trab_5: Retira a caixa e coloca numa embalagem maior para envio ao supermercado - O processamento completo leva 5*10 seg - Contudo, a cada 10 seg uma caixa fica pronta
Pipelining (iii) Ciclo de relógio: 2 nseg Uma instrução, gasta 5 ciclos : 10 nseg Velocidade sem pipeline: 100 MIPS Velocidade usando pipeline: 500 MIPS A cada ciclo de relógio (2 nseg) uma instrução é completada Trade-off entre latência (tempo de processamento de uma instrução) e bandwidth do processador (capacidade da CPU em MIPS) E se acontecer um desvio na sequência? Instruções tem que ser abandonadas! Usar branch prediction techniques (+ data flow analysis speculative execution) Consistência no uso de recursos também tem que ser garantida! Eg, conflito no acesso a registros
Arquiteturas Superscalares (i) Dual five-stage pipelines with a common instruction fetch unit Conflitos sobre o uso de recursos (eg: registros) e interdependência dos resultados têm que ser evitados: compilação ou durante a execução (com hardware extra)
Arquiteturas Superscalares (ii) Pipelines são comuns em arquiteturas RISC - uniformidade Pentium (híbrido): usa dois pipelines ligeiramente diferentes U: pode executar todo tipo de instrução V: somente instruções aritméticas simples Em princípio, as instruções têm que ser executadas em ordem Regras (complexas) permitem identificar se duas instruções podiam ser executadas em paralelo. Se não, a do pipeline U tinha preferência; a do V tinha que esperar Compiladores especiais para o Pentium produzem código otimizado A ordem das instruções pode ser alterada: eg, usam grupos de registros diferentes Programas executam 2* mais rápido que no 486, que usa só um pipeline O ganho é atribuido inteiramente ao segundo pipeline e ao compilador
Arquiteturas Superscalares (iii) Pode-se usar 4 pipelines, pesando o hardware nunca três! A alternativa é usar multiplas unidades funcionais Eg: Pentium 2 cinco unidades; CDC 6600-10 unidades (há 30 anos atrás) A arquitetura se baseia na hipótese de que o estágio S3 pode produzir instruções mais rapidamente que as unidades do nível S4 podem executá-las Caso contrário, não haveria paralelismo em S4 Ou seja, o processamento em S4 pode gastar mais que um ciclo de relógio, eg instruções que acessam a memória ou executam operações de ponto-flutuante, permitindo ganhos de desempenho Notar que unidades em S4 podem ser replicadas, eg, ALU
Arquiteturas Superscalares (iv) A superscalar processor with five functional units
Processor-Level Parallelism (1) SIMD An array of processors - ILLIAC IV Os processadores não são independentes
Processor-Level Parallelism (2) (a) a single-bus multiprocessor (Intel Dual Core) (b) a multicomputer with local memories +++ sistemas distribuídos (redes e DSM)
Multiprocessamento Simétrico... Processor Processor Processor Cache Cache Cache Main Memory I/O Subsystem I/O 1 I/O... I/O n