Fundamentos da Informática Aula 05 - A unidade central de processamento: O que acontece dentro do computador REVISÃO Professor: Danilo Giacobo A unidade central de processamento (CPU) é um complexo conjunto de circuitos eletrônicos que executa instruções de programa; ela consiste em uma unidade de controle e uma unidade lógica e aritmética. A unidade central de processamento interage estreitamente com o armazenamento primário ou memória. A memória oferece armazenamento temporário de dados enquanto o computador executa um programa. O armazenamento secundário mantém os dados permanentes ou semipermanentes. A unidade de controle da CPU coordena a execução das instruções de programa comunicando-se com a unidade lógica e aritmética e a memória - os componentes do sistema que de fato executam o programa. A unidade lógica e aritmética (ULA) contém circuitos que executam as operações lógicas e aritméticas. A unidade pode realizar quatro operações aritméticas: adição, subtração, multiplicação e divisão. Essas operações lógicas geralmente envolvem comparações que verificam três condições: a condição de igualdade, a condição menor que e a condição maior que. O computador pode verificar mais de uma condição simultaneamente, de forma que consegue distinguir três outras condições: menor que ou igual a, maior que ou igual a e menor que ou maior que (não igual a). Os símbolos denominados operadores relacionais (=, >, <) definem a comparação a ser executada. Os registradores são áreas de uso geral, de alta velocidade, para armazenamento temporário de dados. Memória é a parte do computador que mantém dados e instruções temporariamente antes e depois de serem processados pela ULA. A memória também é conhecida por armazenamento primário, memória primária, armazenamento principal, armazenamento interno e memória principal. Os fabricantes frequentemente usam o termo RAM (random-access memory), que significa memória de acesso aleatório. A CPU segue quatro etapas principais quando executa uma instrução: (1) capta (obtém) a instrução da memória, (2) decodifica a instrução e determina a localização dos dados necessários na memória, (3) transfere os dados da memória para os registradores da ULA e (4) orienta a ULA a armazenar o resultado da operação na memória ou em um registrador. As duas primeiras etapas são chamadas de I-time (tempo de instrução), ao passo que as duas últimas são chamadas de E-time (tempo de execução). Um ciclo de máquina é a combinação de I-time e E-time. O clock de sistema interna da unidade central de processamento produz pulsos a uma taxa fixa para sincronizar as operações do computador. Cada CPU tem um conjunto próprio de comandos, chamado de conjunto de instruções, que ela pode compreender. A localização de cada instrução de cada dado na memória é identificada por um endereço. Os números de endereço permanecem os mesmos, mas o conteúdo das localizações se modificam. Um nome significativo atribuído a um endereço na memória é chamado de endereço simbólico. Visto que o computador só consegue reconhecer se a eletricidade está ligada ou desligada, os dados são representados por um sistema binário ligado/desligado, representado pelos dígitos 1 e 0. Cada 0 ou 1 do sistema binário é chamado de bit (binary digit). Um grupo de bits (geralmente, 8 bits) denomina-se byte, que geralmente representa um caractere de dados de texto, como uma letra, um dígito ou um caractere especial. A capacidade da memória antigamente era expressa em quilobytes (KB ou K). Um quilobyte equivale a 1.024 bytes. O megabyte (MB), cerca de um milhão de bytes, é usado atualmente para expressar o tamanho da memória. Um gigabyte (GB) equivale a aproximadamente um milhão de bytes. Um terabyte (TB) é aproximadamente um trilhão de bytes. Um petabyte (PB) é aproximadamente um quatrilhão de bytes. Uma palavra de computador é o número de bits que compõem uma unidade de dados, de acordo com o que é definido pelo projeto da CPU. Um esquema de codificação (ou código) atribui cada combinação possível de 1s ou 0s em um byte a um caractere específico. Dois esquemas de codificação comuns para representar caracteres em um byte de 8 bits são o ASCII (American Standard Code for Information Interchange), usado na maioria dos computadores pessoais, e o EBCDIC (Extended Binary Coded Decimal Interchange Code). Cada um deles pode representar 256 diferentes caracteres. O esquema de codificação Unicode usa dois bytes (16 bits) para representar um caractere e pode representar 65.536 diferentes caracteres. A unidade de sistema é o gabinete que contém a placa-mãe, a placa plana que se abriga no compartimento do computador, que contém os chips e circuitos que organizam as atividades do computador. A unidade de sistema também abriga vários dispositivos de armazenamento. Uma CPU, ou processador, em um chip é um microprocessador. Um microprocessador pode ser chamado de chip lógico quando é usado para controlar dispositivos especializados. Os microprocessadores contêm minúsculos transistores, comutadores eletrônicos que podem permitir ou não a passagem de corrente elétrica, representando o bit 1 ou 0, respectivamente. Quanto maior o número de funções combinadas em um microprocessador, mais rápido, mais barato e mais confiável é o computador. Os microprocessadores mais conhecidos são o Pentium 4 da Intel, usado em PCs compatíveis com IBM; o PowerPC, usado no Macintosh, da Apple; e o Alpha, usado em estações de trabalho e servidores topo de linha. A memória semicondutora, milhares de circuitos extremamente pequenos em um chip de silício, é volátil: ou seja, requer corrente elétrica contínua para manter seu conteúdo. Um chip é definido como monolítico porque os circuitos de um único chip constituem uma unidade de armazenamento inseparável. Um tipo importante de projeto de semicondutor é chamado de CMOS (complematary metal oxide semiconductor); ele é famoso por usar pouca eletricidade, o que torna especialmente útil para computadores que exigem pouco consumo de energia, como os computadores portáteis. A memória de acesso aleatório (random-access memory - RAM) mantém as instruções e os dados correspondentes a qualquer programa que você esteja usando no momento. A RAM se divide em dois tipos: RAM estática (SRAM), que é mais rápida, e RAM dinâmica (DRAM), que é mais lenta e menos cara. A SDRAM e a RDRAM são dois tipos mais rápidos e mais caros de DRAM. A RAM normalmente é montada em módulos de memória lineares de via simples (SIMMSs) e módulos de memória lineares de via dupla (DIMMs), que são placas que se encaixam na placa-mãe. A memória somente de leitura (read-only memory - ROM) contém programas e dados permanentemente gravados nesse tipo de memória, na fábrica; eles podem ser lidos e usados, mas não podem ser modificados pelo usuário. A ROM é não-volátil. As instruções contidas em alguns chips ROM podem ser alteradas usando-se queimadores de ROM; esses chips são conhecidos por chips PROM ou chips de memória somente de leitura programáveis. A memória flash é não-volátil e usada para armazenar programação e dados em dispositivos como telefones celulares e dados em câmeras e aparelhos de músicas digitais. A placa-mãe contém diversas linhas de barramento ou barramentos, que são conjuntos de percursos elétricos paralelos que transportam sinais elétricos. O barramento de sistema transfere dados entre a CPU e a memória. A largura de barramento e a velocidade afetam o desempenho do sistema. Alguns barramentos de expansão são conectados a slots de expansão na placa-mãe e podem receber placas de expansão (também chamadas de cartões de interface ou cartões adaptadores) que possibilitam conectar vários dispositivos periféricos ao computador. Outros barramentos de expansão dispõem de conectores externos, denominados portas. A porta serial possibilita a transmissão de dados um bit por vez, enquanto a porta paralela transmite um grupo de bits simultaneamente. Algumas portas e barramentos encontrados em um computador pessoal típico são o barramento Industry Standard Architecture (ISA), o barramento Peripheral Component Interconnect (PCI), a Accelerated Graphics Port (AGP), o Universal Serial Bus (USB), o barramento IEEE 1394 (FireWire) e o barramento PC Card. As velocidades de instrução dos computadores se situam em várias faixas, que variam de milissegundos, equivalente a um milésimo de segundo; a um microssegundo, ou seja, um milionésimo de segundo (para computadores mais antigos); a um nanossegundo, ou seja, um bilionésimo de segundo. Ainda está para ser alcançada a faixa de picossegundos – um trilionésimo de segundo. As velocidades de computador geralmente são expressas em gigahertz (GHz), ou seja, bilhões de ciclos por segundo. Outra medida de velocidade é a MIPS (one million instructions per second), que significa um milhão de instruções por segundo. Uma terceira medida é o megaflop (one million floating-point operations per second), que significa um milhão de operações em ponto flutuante por segundo. Cache é uma quantidade relativamente pequena de memória muito rápida que armazena dados e instruções usados frequentemente e, portanto, agiliza a velocidade de processamento. Cache interna ou de nível 1 (L1), o tipo mais rápido, refere-se à cache incorporada diretamente no projeto do processador. Os computadores mais antigos também dispunham de cache externa ou de nível 2 (L2) em chips separados. A cache L2 é incorporada aos atuais processadores, que podem ter um nível de cache adicional (L3) em um chip externo. Os microprocessadores RISC (Reduced Instruction Set Computing, computação com um conjunto reduzido de instruções) são rápidos porque usam somente um pequeno subconjunto de instruções. Os microprocessadores convencionais que usam a tecnologia CISC (Complex Instructions Set Computing, computação com um conjunto de instruções complexas) dispõem de muitas instruções que raramente são usadas. O processamento serial convencional usa um único processador e pode manipular uma instrução por vez. Pipelining significa que as ações de uma instrução – captar, decodificar, executar, armazenar – não precisam ser concluídas antes de uma instrução seguinte iniciar. O processamento paralelo usa vários processadores no mesmo computador, simultaneamente. Alguns processadores paralelos são capazes de operar em termos de teraflops, ou seja, trilhões de instruções em ponto flutuante por segundo.