Translate
quarta-feira, 12 de março de 2014
Assembler
Assembly ou linguagem de montagem é uma notação legível por humanos para o código de máquina que uma arquitetura de computador específica usa, utilizada para programar dispositivos computacionais, como microprocessadores e microcontroladores. A linguagem de máquina, que é um mero padrão de bits, torna-se legível pela substituição dos valores em bruto por símbolos chamados mnemónicos1 2 .
Por exemplo, enquanto um computador sabe o que a instrução-máquina IA-21 (10110000 01100001) faz, para os programadores é mais fácil recordar a representação equivalente em instruções mnemónicas MOV AL, 61h. Tal instrução ordena que o valor hexadecimal 61 (97, em decimal) seja movido para o registrador 'AL'.
A conversão da linguagem de montagem para o código de máquina é feita pelo montador ou assembler, que é basicamente um tradutor de comandos, sendo mais simples que um compilador.
o contrário do que acontece nas linguagens de alto nível, existe (até certo ponto) uma correspondência de 1 para 1 entre a linguagem de montagem simples e a linguagem de máquina. Por isso a tradução do código de montagem em código de máquina não é chamada compilação, mas montagem. Consegue-se transformar a linguagem de montagem em linguagem de máquina recorrendo a um montador (também chamado assembler, originado do termo assemblé em francês)[carece de fontes], e a transformação inversa faz-se recorrendo a um desmontador (também chamado disassembler).
Cada arquitetura de computador tem a sua própria linguagem de máquina e, portanto, a sua própria linguagem de montagem. Essas linguagens de montagem diferem no número e tipo de operações que suportam. Também têm diferentes tamanhos e números de registradores, e diferentes representações dos tipos de dados armazenados. Enquanto todos os computadores de utilização genérica são capazes de desempenhar essencialmente as mesmas funções, o modo como o fazem é diferente.
Além disso, podem existir conjuntos múltiplos de mnemónicas, ou sintaxes de linguagem de montagem, para um único conjunto de instruções. Nestes casos, o conjunto mais popular é aquele que é utilizado pelo fabricante na sua documentação.
No mercado de PCs, dominado por processadores Intel e AMD, atualmente existem duas arquiteturas. Primeiro a IA32 (genericamente chamada de i386, x86 ou x86-32), criada pela Intel em 1985 e primeiramente utilizada pelo processadores i386 e segundo a IA32-EM64T (ou IA32-AMD64 ) criada em 2002 pela AMD (Mas também utilizada pela Intel hoje). O IA32 utiliza o grupo de instruções chamado x86, e o IA32-EM64T utiliza o grupo chamado x86-64. As duas arquiteturas usam números diferentes de registradores gerais e tamanho. Enquanto os registradores do x86 são 32 bits os da x86-64 são 64 bits.[carece de fontes]
Os registradores de uso geral da arquitetura x86 são:
%EAX - registrador acumulador
%EBX - registrador base
%ECX - registrador contador
%EDX - registrador de dados
%ESI - registrador de índice da fonte dos dados
%EDI - registrador de índice do destino dos dados
%EBP - registrador ponteiro para a moldura de chamada de função
%ESP - registrador ponteiro para a pilha de execução
Os registradores de uso geral da arquitetura x86-64 são:
%RAX - registrador valor de retorno
%RBX - registrador base
%RCX - registrador contador
%RDX - registrador de dados
%RSI - registrador de índice da fonte dos dados
%RDI - registrador de índice do destino dos dados
%RBP - registrador ponteiro para a moldura de chamada de função
%RSP - registrador ponteiro para a pilha de execução
%R8 - registrador de dados
%R9 - registrador de dados
%R10 - registrador ponteiro para a moldura de chamada de função
%R11 - registrador de linking
%R12 - registrador de base
%R13 - registrador de base
%R14 - registrador de base
%R15 - registrador de base
Esses nomes derivam da forma como eram utilizados nas arquiteturas anteriores a IA32 (8086, 80286…), em que cada registrador desempenhava um papel específico. Na arquitetura i386, todos eles são de uso geral, embora eles continuem a poder ser utilizados em seus papéis tradicionais.
A arquitetura IA32 ainda apresenta os registradores de segmento CS, DS, ES, SS, FS e GS, um contador de programa EIP, um registro de sinalizadores EFLAGS, 8 registradores de vírgula flutuante e seus sinalizadores associados. Existem também registradores utilizados pelo sistema operacional para controle da execução em modo protegido, bem como outros registradores de uso específico (depuração, controle de desempenho, etc.).
Instruções aritméticas
Adição: ADD, ADC, INC, XADD, AAA e DAA;
Subtracção: SUB, SBB, DEC, AAS e DAS;
Multiplicação: MUL, IMUL e AAM;
Divisão: DIV, IDIV e AAD.
Montador
O montador ou assembler (não confundir com assembly) é um programa que cria o código objeto traduzindo as instruções da linguagem de montagem (assembly) para código de máquina. Além dos comandos básicos, que são traduzidos diretamente para a linguagem de máquina, alguns montadores também aceitam diretivas, que são comandos específicos para o montador. Por exemplo, é possível definir constantes na memória utilizando diretivas.3
O montador possui tabelas, onde armazena informações importantes sobre o programa que está sendo montado. Tabelas de rótulos, de constantes e de comandos são as mais comuns.3 :p.18
Exemplos de código de montagem
Arquitetura Intel
Código em assembly que usa a sintaxe intel.
Decimal Endereço OPcode Operandos
2089872304 7C90EBB0 sub esp, 2D0h
2089872310 7C90EBB6 mov dword ptr [ebp+FFFFFDDCh], eax
2089872316 7C90EBBC mov dword ptr [ebp+FFFFFDD8h], ecx
2089872322 7C90EBC2 mov eax, dword ptr [ebp+8]
2089872325 7C90EBC5 mov ecx, dword ptr [ebp+4]
2089872328 7C90EBC8 mov dword ptr [eax+0Ch], ecx
2089872331 7C90EBCB lea eax, [ebp+FFFFFD2Ch]
2089872337 7C90EBD1 mov dword ptr [eax+000000B8h], ecx
2089872343 7C90EBD7 mov dword ptr [eax+000000A4h], ebx
2089872349 7C90EBDD mov dword ptr [eax+000000A8h], edx
2089872355 7C90EBE3 mov dword ptr [eax+000000A0h], esi
2089872361 7C90EBE9 mov dword ptr [eax+0000009Ch], edi
2089872367 7C90EBEF lea ecx, [ebp+0Ch]
2089872370 7C90EBF2 mov dword ptr [eax+000000C4h], ecx
2089872376 7C90EBF8 mov ecx, dword ptr [ebp]
2089872379 7C90EBFB mov dword ptr [eax+000000B4h], ecx
2089872385 7C90EC01 mov ecx, dword ptr [ebp-4]
2089872388 7C90EC04 mov dword ptr [eax+000000C0h], ecx
2089872394 7C90EC0A mov word ptr [eax+000000BCh], cs
2089872400 7C90EC10 mov word ptr [eax+00000098h], ds
2089872406 7C90EC16 mov word ptr [eax+00000094h], es
2089872412 7C90EC1C mov word ptr [eax+00000090h], fs
2089872418 7C90EC22 mov word ptr [eax+0000008Ch], gs
2089872424 7C90EC28 mov word ptr [eax+000000C8h], ss
2089872430 7C90EC2E mov dword ptr [eax], 10007h
2089872436 7C90EC34 push 1
2089872438 7C90EC36 push eax
2089872439 7C90EC37 push dword ptr [ebp+8]
2089872442 7C90EC3A call 7C90E252
2089872447 7C90EC3F sub esp, 20h
2089872450 7C90EC42 mov dword ptr [esp], eax
2089872453 7C90EC45 mov dword ptr [esp+4], 1
2089872461 7C90EC4D mov dword ptr [esp+10h], 0
2089872469 7C90EC55 mov eax, dword ptr [ebp+8]
2089872472 7C90EC58 mov dword ptr [esp+8], eax
2089872476 7C90EC5C mov eax, esp
2089872478 7C90EC5E push eax
2089872479 7C90EC5F call 7C90EBAC
Microprocessador Texas Instruments TMS320C2x
LOOP:
LARP AR1
LRLK AR1, apontador
ADRK TAMANHO_CONSTANTE
ADRK fimcon_rx
LAC *
BZ NAOPASSARAM10MS
ZAC
SACL *
LARP AR1
LRLK AR1,apontador+CONSTANTE_A
ADRK controle
LAC *
BZ LOOP ;Não decorrido tempo: fica no loop
NAOPASSARAM10MS:
SACL *
LARP AR1
B LOOP
Microprocessador Texas Instruments TMS320C5x
LOOP:
mvmm ar1, ar3 ;move conteúdo de ar1 para ar3
rpt #10 ;repete
mvdd *ar3+, *ar5+ ;move word endereçada por ar1 para pos. end. por ar6
;Instruçoes com acumulador:
STM #1000h, AR1 ;carrega ar1 com a constante 1000h
LD #0, A ;zera o acumulador
STL A, *AR1 ;armazena no acumulador mínimo
LD #1, A ;carrega o acumulador com a constante mínima "1"
STL A, *AR1 ;armazena o acumulador mínimo no endereço de ar1
LD #65535, A ;carrega acumulador com a constante "65535"
STL A, 10 ;armazena o acumulador mínimo no endereço 10
STH A, 10 ;armazena o acumulador máximo no endereço 10
STL A, *AR1 ;armazena o acumulador mínimo no endereço de ar1
STH A, *AR1 ;armazena o acumulador máximo no endereço de ar1
;Instruções com registradores auxiliares:
STM #1, AR1 ;carrega ar1 com a constante "1"
STM #2, AR0 ;carrega ar0 com a constante "2"
MAR *AR1+0 ;adiciona o conteúdo de ar0 to ar appointed by arp (1)
MVDK 256, *(AR2) ;carrega ar2 with content of address 256
MAR *AR1+ ;incrementa ar apontado por arp (1)
MVKD *(AR2), 256 ;aloja conteúdo de ar2 no endereço 256
MAR *AR1- ;decrementa ar appointed by arp (1)
;Instruções de teste de bit:
BITF *AR1, #128 ;TESTA BIT D7
BC ptr, NTC ;vai para ptr se bit for igual a 0
MAR *AR1+ ;incrementa ar apontado por arp (1)
ptr:
MAR *+AR4(-128) ;sbrk 80h
;Instruções de uso de ponteiros:
mvdm *(VETORAL), ar1 ;move conteúdo da memória apontada para o ar (transforma arn em ponteiro)
mvmd ar1, *(VETORAL) ;mvmd restaura ponteiro(VETORAL) de acordo com arn
b LOOP
O microprocessador, popularmente chamado de processador, é um circuito integrado que realiza as funções de cálculo e tomada de decisão de um computador. Todos os computadores e equipamentos eletrônicos baseiam-se nele para executar suas funções, podemos dizer que o processador é o cérebro do computador por realizar todas estas funções, é tornar o computador inteligente.
Um microprocessador incorpora as funções de uma unidade central de computador (CPU) em um único circuito integrado, ou no máximo alguns circuitos integrados. É um dispositivo multifuncional programável que aceita dados digitais como entrada, processa de acordo com as instruções armazenadas em sua memória, e fornece resultados como saída. Microprocessadores operam com números e símbolos representados no sistema binário.
Arquitetura interna de um microprocessador dedicado para processamento de imagens de ressonância magnética, a fotografia foi aumentada 600 vezes, sob luz ultravioleta para se enxergar os detalhes
Vista inferior de um Athlon XP 1800+ núcleo Palomino, um microprocessador moderno.
O microprocessador moderno é um circuito integrado formado por uma camada chamada de mesa epitaxial de silício, trabalhada de modo a formar um cristal de extrema pureza, laminada até uma espessura mínima com grande precisão, depois cuidadosamente mascarada por um processo fotográfico e dopada pela exposição a altas temperaturas em fornos que contêm misturas gasosas de impurezas. Este processo é repetido tantas vezes quanto necessário à formação da microarquitetura do componente.
Responsável pela execução das instruções num sistema, o microprocessador, escolhido entre os disponíveis no mercado, determina, em certa medida a capacidade de processamento do computador e também o conjunto primário de instruções que ele compreende. O sistema operativo é construído sobre este conjunto.
O próprio microprocessador subdivide-se em várias unidades, trabalhando em altas freqüências. A ULA(Unidade Lógica Aritmética), unidade responsável pelos cálculos aritméticos e lógicos e os registradores são parte integrante do microprocessador na família x86, por exemplo.
Embora seja a essência do computador, o microprocessador diferente do microcontrolador, está longe de ser um computador completo. Para que possa interagir com o utilizador precisa de: memória, dispositivos de entrada/saída, um clock, controladores e conversores de sinais, entre outros. Cada um desses circuitos de apoio interage de modo peculiar com os programas e, dessa forma, ajuda a moldar o funcionamento do computador.
História
Intel 8008, um dos primeiros microprocessadores comerciais.
O primeiro microprocessador comercial foi inventado pela Intel em 1971 para atender uma empresa japonesa que precisava de um circuito integrado especial para as suas atividades.1 A Intel projectou o 4004, que era um circuito integrado programável que trabalhava com registradores de 4 bits, 46 instruções, clock de 740Khz e possuía cerca de 2300 transistores. Percebendo a utilidade desse invento a Intel prosseguiu com o desenvolvimento de novos microprocessadores: 8008 (o primeiro de 8 bits) e a seguir o 8080 e o microprocessador 8085. O 8080 foi um grande sucesso e tornou-se a base para os primeiros microcomputadores pessoais na década de 1970 graças ao sistema operacional CP/M. Da Intel saíram alguns funcionários que fundaram a Zilog, que viria a lançar o microprocessador Z80, com instruções compatíveis com o 8080 (embora muito mais poderoso que este) e também de grande sucesso. A Motorola possuía o 68000 e a MOS Technology o 6502. A Motorola ganhou destaque quando implantou o MC68000P12, de 12 MHz com arquitetura de 32 bits (embora seu Barramento fosse de 24 bits e seu Barramento de endereços de 16 bits), no Neo-Geo, um poderoso Arcade da SNK que posteriormente ganharia a versão AES (console casero) e CD (versão CD), todos eles com o mesmo hardware inicial. Todos os microprocessadores de 8 bits foram usados em muitos computadores pessoais (Sinclair, Apple Inc., TRS, Commodore, etc).
Em 1981 a IBM decidiu lançar-se no mercado de computadores pessoais e no seu IBM-PC utilizou um dos primeiros microprocessadores de 16 bits, o 8088 (derivado do seu irmão 8086 lançado em 1978) que viria a ser o avô dos computadores atuais. A Apple nos seus computadores Macintosh utilizava os processadores da Motorola, a família 68000 (de 32 bits). Outros fabricantes também tinham os seus microprocessadores de 16 bits, a Zilog tinha o Z8000, a Texas Instruments o TMS9900, a National Semiconductor tinha o 16032,mas nenhum fabricante teve tanto sucesso como a Intel, que sucessivamente foi lançando melhoramentos na sua linha 80X86, tendo surgido assim (por ordem cronológica) o 8086, 8088, 80186, 80188, 80286, 80386, 80486, Pentium, Pentium Pro, Pentium MMX, Pentium II, Pentium III, Pentium IV, Pentium M, Pentium D, Pentium Dual Core, Core 2 Duo, Core 2 Quad, Core i3, Core i5 e Core i7. Para o IBM-AT foi utilizado o 80286, depois um grande salto com o 80386 que podia trabalhar com memória virtual e multitarefa, o 80486 com coprocessador matemático embutido e finalmente a linha Pentium, com pipeline de processamento.
Como grande concorrente da Intel, a AMD aparece inicialmente como fabricante de microprocessadores da linha x86 alternativa mas a partir de um certo momento deixou de correr atrás da Intel e partiu para o desenvolvimento de sua própria linha de microprocessadores: K6, Athlon, Duron, Turion, Sempron, Phenom. Paralelamente à disputa entre Intel e AMD, a IBM possuía a linha PowerPC utilizada principalmente pelos microcomputadores da Apple.
A evolução tecnológica envolvida é surpreendentemente grande, de microprocessadores que trabalhavam com clock de dezenas de kHz e que podiam processar alguns milhares de instruções por segundo, atingiu-se clocks na casa dos 7 GHz e poder de processamento de dezenas de bilhões de instruções por segundo. A complexidade também cresceu: de alguns milhares de transístores para centenas de milhões de transístores numa mesma pastilha.
O CPU tem como função principal unificar todo o sistema, controlar as funções realizadas por cada unidade funcional, e é também responsável pela execução de todos os programas do sistema, que deverão estar armazenados na memória principal.
Componentes
O processador é composto por alguns componentes, cada um tendo uma função específica no processamento dos programas.
Unidade lógica e aritmética
Ver artigo principal: Unidade lógica e aritmética
A Unidade lógica e aritmética (ULA) é a responsável por executar efetivamente as instruções dos programas, como instruções lógicas, matemáticas, desvio, etc.
Unidade de controle
Ver artigo principal: Unidade de controle
A Unidade de controle (UC) é responsável pela tarefa de controle das ações a serem realizadas pelo computador, comandando todos os outros componentes.
Registradores
Ver artigo principal: Registrador (informática)
Os registradores são pequenas memórias velozes que armazenam comandos ou valores que são utilizados no controle e processamento de cada instrução. Os registradores mais importantes são:
Contador de Programa (PC) – Sinaliza para a próxima instrução a ser executada;
Registrador de Instrução (IR) – Registra a execução da instrução;
Unidade de Gerenciamento de Memória
Ver artigo principal: Unidade de Gerenciamento de Memória
A MMU (em inglês: Memory Management Unit) é um dispositivo de hardware que transforma endereços virtuais em endereços físicos e administra a memória principal do computador.
Unidade de ponto flutuante
Nos processadores atuais são implementadas unidades de cálculo de números reais. Tais unidades são mais complexas que ULAs e trabalham com operandos maiores, com tamanhos típicos variando entre 64 e 128 bits.
Frequência de operação
O relógio do sistema (Clock) é um circuito oscilador a cristal (efeito piezoelétrico) que tem a função de sincronizar e ditar a medida de tempo de transferência de dados no computador. Esta freqüência é medida em ciclos por segundo, ou Hertz. A capacidade de processamento do processador não está relacionada exclusivamente à frequência do relógio, mas também a outros fatores como: largura dos barramentos, quantidade de memória cache, arquitetura do processador, tecnologia de co-processamento, tecnologia de previsão de saltos (branch prediction), tecnologia de pipeline, conjunto de instruções, etc.
O aumento da frequência de operação nominal do processador é denominado overclocking.
Arquitetura
Existem duas principais arquiteturas usadas em processadores:
A arquitetura de Von Neumann. Esta arquitetura caracteriza-se por apresentar um barramento externo compartilhado entre dados e endereços. Embora apresente baixo custo, esta arquitetura apresenta desempenho limitado pelo gargalo do barramento.
A arquitetura de Harvard. Nesta arquitetura existem dois barramentos externos independentes (e normalmente também memórias independentes) para dados e endereços. Isto reduz de forma sensível o gargalo de barramento, que é uma das principais barreiras de desempenho, em detrimento do encarecimento do sistema como um todo.
Modelos de computação
Existem dois modelos de computação usados em processadores:
CISC (em inglês: Complex Instruction Set Computing, Computador com um Conjunto Complexo de Instruções), usada em processadores Intel e AMD; possui um grande conjunto de instruções (tipicamente centenas) que são armazenadas em uma pequena memória não-volátil interna ao processador. Cada posição desta memória contém as microinstruções, ou seja, os passos a serem realizados para a execução de cada instrução. Quanto mais complexa a instrução, mais microinstruções ela possuirá e mais tempo levará para ser executada. Ao conjunto de todas as microinstruções contidas no processador denominamos microcódigo. Esta técnica de computação baseada em microcódigo é denominada microprogramação.
RISC (em inglês: Reduced Instruction Set Computing, Computador com um Conjunto Reduzido de Instruções) usada em processadores PowerPC (da Apple, Motorola e IBM) e SPARC (SUN); possui um conjunto pequeno de instruções (tipicamente algumas dezenas) implementadas diretamente em hardware. Nesta técnica não é necessário realizar a leitura em uma memória e, por isso, a execução das instruções é muito rápida (normalmente um ciclo de clock por instrução). Por outro lado, as instruções são muito simples e para a realização de certas tarefas são necessárias mais instruções que no modelo RISC.
Exemplos de microprocessadores
Uma microcontroladora, um exemplo de microprocessador.
Uma GPU.
Microprocessadores — São utilizados nos computadores pessoais, onde são chamadas de Unidade Central de Processamento (CPU), workstations e mainframes. Podem ser programados para executar as mais variadas tarefas.
Processadores Digitais de Sinal (DSP do inglês Digital Signal Processor) — são microprocessadores especializados em processamento digital de sinal usados para processar sinais de áudio, vídeo, etc., quer em tempo real quer em off-line. Estão presentes, por exemplo, em aparelhos de CD, DVD e televisores digitais. Em geral, realizam sempre uma mesma tarefas simples.
Microcontroladores — Processadores relativamente flexíveis, de relativo baixo custo, que podem ser utilizados em projetos de pequeno tamanho. Podem trazer facilidades como conversores A/D embutidos, ou um conjunto de instruções próprias para comunicação digital através de algum protocolo específico.
GPU — (ou Unidade de Processamento Gráfico), é um microprocessador especializado em processar gráficos. São utilizadas em placas de vídeo para fazer computação gráfica.
Propósito geral e dedicado
Durante o processo de desenvolvimento do design de um processador, uma das características que se leva em conta é o uso que ele se destina. Processadores gráficos e controladoras por exemplo não tem o mesmo fim que um processador central. Processadores de propósito geral podem executar qualquer tipo de software, embora sua execução seja mais lenta que o mesmo sendo executado em um processador especializado. Processadores dedicados são fabricados para executarem tarefas específicas, como criptografia, processamento vetorial e gráfico, sendo nesse caso bem mais rápidos do que processadores de propósito geral em tarefas equivalentes. No caso do processamento gráfico, existem as GPUs, que são microprocessadores geralmente com memória dedicada e especialmente desenvolvidos para cálculos gráficos. Nem sempre os processadores seguem definidamente esses dois modelos, sendo o motivo disso que muitos processadores modernos incorporam processadores especializados (co-processador), para cálculos de criptografia, processamento de vetores, etc.
Processadores multinucleares
Ver artigo principal: multinúcleo
Até poucos anos atrás usou-se microprocessadores para atividades domésticas ou de negócios com simples núcleo. Atualmente estão sendo utilizados microprocessadores de múltiplos núcleos para melhorar a capacidade de processamento. Espera-se que no futuro os Sistemas Operacionais domésticos sejam compilados para trabalhar com processadores de múltiplos núcleos corretamente, realizando assim inúmeras tarefas ao mesmo tempo (como já acontece com os supercomputadores).
Sistemas multiprocessados
Ver artigo principal: Multiprocessamento
Em muitos sistemas o uso de um só processador é insuficiente. A solução nesses casos é usar dois ou mais processadores em multi processamento, aumentando assim a quantidade de processadores disponíveis ao sistema operacional. Sistemas multiprocessados podem ser de basicamente dois tipos:
Multiprocessamento simétrico (SMP): os processadores compartilham a mesma memória, embora possam ter caches separadas. O sistema operacional deve estar preparado para trabalhar com coerência de caches e, principalmente, evitar condições de corrida na memória principal.
Acesso não uniforme à memória (NUMA): a cada processador é associado um banco de memória. Nesse caso, o sistema operacional trata cada banco separadamente, pois cada banco tem um custo de acesso diferente, dependendo de qual o processador a que está associado e onde está sendo executado o processo que tenta acessar a memória.
Capacidade de processamento
A capacidade de processamento de um microprocessador é de certa forma difícil de medir, uma vez que esse desempenho pode se referir a quantidade máxima teória de instruções que podem ser executadas por segundo, que tipos de instruções são essas, em Flops (instruções de ponto flutuante), podendo essa ser de precisão simples, dupla, quádrupla, dependendo do contexto, e em MIPS (milhões de instruções por segundo), sendo essas operações com números inteiros. Somente a capacidade máxima teórica de um microprocessador não define seu desempenho, somente dá uma noção da sua capacidade, uma vez que sua arquitetura, barramento com a memória entre outros também influenciam no seu desempenho final, sendo assim, sua capacidade de processamento é medida comparando a velocidade de execução de aplicativos reais, podendo assim, testar seu desempenho em atividades comuns.
História
Intel 8008, um dos primeiros microprocessadores comerciais.
O primeiro microprocessador comercial foi inventado pela Intel em 1971 para atender uma empresa japonesa que precisava de um circuito integrado especial para as suas atividades.1 A Intel projectou o 4004, que era um circuito integrado programável que trabalhava com registradores de 4 bits, 46 instruções, clock de 740Khz e possuía cerca de 2300 transistores. Percebendo a utilidade desse invento a Intel prosseguiu com o desenvolvimento de novos microprocessadores: 8008 (o primeiro de 8 bits) e a seguir o 8080 e o microprocessador 8085. O 8080 foi um grande sucesso e tornou-se a base para os primeiros microcomputadores pessoais na década de 1970 graças ao sistema operacional CP/M. Da Intel saíram alguns funcionários que fundaram a Zilog, que viria a lançar o microprocessador Z80, com instruções compatíveis com o 8080 (embora muito mais poderoso que este) e também de grande sucesso. A Motorola possuía o 68000 e a MOS Technology o 6502. A Motorola ganhou destaque quando implantou o MC68000P12, de 12 MHz com arquitetura de 32 bits (embora seu Barramento fosse de 24 bits e seu Barramento de endereços de 16 bits), no Neo-Geo, um poderoso Arcade da SNK que posteriormente ganharia a versão AES (console casero) e CD (versão CD), todos eles com o mesmo hardware inicial. Todos os microprocessadores de 8 bits foram usados em muitos computadores pessoais (Sinclair, Apple Inc., TRS, Commodore, etc).
Em 1981 a IBM decidiu lançar-se no mercado de computadores pessoais e no seu IBM-PC utilizou um dos primeiros microprocessadores de 16 bits, o 8088 (derivado do seu irmão 8086 lançado em 1978) que viria a ser o avô dos computadores atuais. A Apple nos seus computadores Macintosh utilizava os processadores da Motorola, a família 68000 (de 32 bits). Outros fabricantes também tinham os seus microprocessadores de 16 bits, a Zilog tinha o Z8000, a Texas Instruments o TMS9900, a National Semiconductor tinha o 16032,mas nenhum fabricante teve tanto sucesso como a Intel, que sucessivamente foi lançando melhoramentos na sua linha 80X86, tendo surgido assim (por ordem cronológica) o 8086, 8088, 80186, 80188, 80286, 80386, 80486, Pentium, Pentium Pro, Pentium MMX, Pentium II, Pentium III, Pentium IV, Pentium M, Pentium D, Pentium Dual Core, Core 2 Duo, Core 2 Quad, Core i3, Core i5 e Core i7. Para o IBM-AT foi utilizado o 80286, depois um grande salto com o 80386 que podia trabalhar com memória virtual e multitarefa, o 80486 com coprocessador matemático embutido e finalmente a linha Pentium, com pipeline de processamento.
Como grande concorrente da Intel, a AMD aparece inicialmente como fabricante de microprocessadores da linha x86 alternativa mas a partir de um certo momento deixou de correr atrás da Intel e partiu para o desenvolvimento de sua própria linha de microprocessadores: K6, Athlon, Duron, Turion, Sempron, Phenom. Paralelamente à disputa entre Intel e AMD, a IBM possuía a linha PowerPC utilizada principalmente pelos microcomputadores da Apple.
A evolução tecnológica envolvida é surpreendentemente grande, de microprocessadores que trabalhavam com clock de dezenas de kHz e que podiam processar alguns milhares de instruções por segundo, atingiu-se clocks na casa dos 7 GHz e poder de processamento de dezenas de bilhões de instruções por segundo. A complexidade também cresceu: de alguns milhares de transístores para centenas de milhões de transístores numa mesma pastilha.
O CPU tem como função principal unificar todo o sistema, controlar as funções realizadas por cada unidade funcional, e é também responsável pela execução de todos os programas do sistema, que deverão estar armazenados na memória principal.
Componentes
O processador é composto por alguns componentes, cada um tendo uma função específica no processamento dos programas.
Unidade lógica e aritmética
Ver artigo principal: Unidade lógica e aritmética
A Unidade lógica e aritmética (ULA) é a responsável por executar efetivamente as instruções dos programas, como instruções lógicas, matemáticas, desvio, etc.
Unidade de controle
Ver artigo principal: Unidade de controle
A Unidade de controle (UC) é responsável pela tarefa de controle das ações a serem realizadas pelo computador, comandando todos os outros componentes.
Registradores
Ver artigo principal: Registrador (informática)
Os registradores são pequenas memórias velozes que armazenam comandos ou valores que são utilizados no controle e processamento de cada instrução. Os registradores mais importantes são:
Contador de Programa (PC) – Sinaliza para a próxima instrução a ser executada;
Registrador de Instrução (IR) – Registra a execução da instrução;
Unidade de Gerenciamento de Memória
Ver artigo principal: Unidade de Gerenciamento de Memória
A MMU (em inglês: Memory Management Unit) é um dispositivo de hardware que transforma endereços virtuais em endereços físicos e administra a memória principal do computador.
Unidade de ponto flutuante
Nos processadores atuais são implementadas unidades de cálculo de números reais. Tais unidades são mais complexas que ULAs e trabalham com operandos maiores, com tamanhos típicos variando entre 64 e 128 bits.
Frequência de operação
O relógio do sistema (Clock) é um circuito oscilador a cristal (efeito piezoelétrico) que tem a função de sincronizar e ditar a medida de tempo de transferência de dados no computador. Esta freqüência é medida em ciclos por segundo, ou Hertz. A capacidade de processamento do processador não está relacionada exclusivamente à frequência do relógio, mas também a outros fatores como: largura dos barramentos, quantidade de memória cache, arquitetura do processador, tecnologia de co-processamento, tecnologia de previsão de saltos (branch prediction), tecnologia de pipeline, conjunto de instruções, etc.
O aumento da frequência de operação nominal do processador é denominado overclocking.
Arquitetura
Existem duas principais arquiteturas usadas em processadores:
A arquitetura de Von Neumann. Esta arquitetura caracteriza-se por apresentar um barramento externo compartilhado entre dados e endereços. Embora apresente baixo custo, esta arquitetura apresenta desempenho limitado pelo gargalo do barramento.
A arquitetura de Harvard. Nesta arquitetura existem dois barramentos externos independentes (e normalmente também memórias independentes) para dados e endereços. Isto reduz de forma sensível o gargalo de barramento, que é uma das principais barreiras de desempenho, em detrimento do encarecimento do sistema como um todo.
Modelos de computação
Existem dois modelos de computação usados em processadores:
CISC (em inglês: Complex Instruction Set Computing, Computador com um Conjunto Complexo de Instruções), usada em processadores Intel e AMD; possui um grande conjunto de instruções (tipicamente centenas) que são armazenadas em uma pequena memória não-volátil interna ao processador. Cada posição desta memória contém as microinstruções, ou seja, os passos a serem realizados para a execução de cada instrução. Quanto mais complexa a instrução, mais microinstruções ela possuirá e mais tempo levará para ser executada. Ao conjunto de todas as microinstruções contidas no processador denominamos microcódigo. Esta técnica de computação baseada em microcódigo é denominada microprogramação.
RISC (em inglês: Reduced Instruction Set Computing, Computador com um Conjunto Reduzido de Instruções) usada em processadores PowerPC (da Apple, Motorola e IBM) e SPARC (SUN); possui um conjunto pequeno de instruções (tipicamente algumas dezenas) implementadas diretamente em hardware. Nesta técnica não é necessário realizar a leitura em uma memória e, por isso, a execução das instruções é muito rápida (normalmente um ciclo de clock por instrução). Por outro lado, as instruções são muito simples e para a realização de certas tarefas são necessárias mais instruções que no modelo RISC.
Exemplos de microprocessadores
Uma microcontroladora, um exemplo de microprocessador.
Uma GPU.
Microprocessadores — São utilizados nos computadores pessoais, onde são chamadas de Unidade Central de Processamento (CPU), workstations e mainframes. Podem ser programados para executar as mais variadas tarefas.
Processadores Digitais de Sinal (DSP do inglês Digital Signal Processor) — são microprocessadores especializados em processamento digital de sinal usados para processar sinais de áudio, vídeo, etc., quer em tempo real quer em off-line. Estão presentes, por exemplo, em aparelhos de CD, DVD e televisores digitais. Em geral, realizam sempre uma mesma tarefas simples.
Microcontroladores — Processadores relativamente flexíveis, de relativo baixo custo, que podem ser utilizados em projetos de pequeno tamanho. Podem trazer facilidades como conversores A/D embutidos, ou um conjunto de instruções próprias para comunicação digital através de algum protocolo específico.
GPU — (ou Unidade de Processamento Gráfico), é um microprocessador especializado em processar gráficos. São utilizadas em placas de vídeo para fazer computação gráfica.
Propósito geral e dedicado
Durante o processo de desenvolvimento do design de um processador, uma das características que se leva em conta é o uso que ele se destina. Processadores gráficos e controladoras por exemplo não tem o mesmo fim que um processador central. Processadores de propósito geral podem executar qualquer tipo de software, embora sua execução seja mais lenta que o mesmo sendo executado em um processador especializado. Processadores dedicados são fabricados para executarem tarefas específicas, como criptografia, processamento vetorial e gráfico, sendo nesse caso bem mais rápidos do que processadores de propósito geral em tarefas equivalentes. No caso do processamento gráfico, existem as GPUs, que são microprocessadores geralmente com memória dedicada e especialmente desenvolvidos para cálculos gráficos. Nem sempre os processadores seguem definidamente esses dois modelos, sendo o motivo disso que muitos processadores modernos incorporam processadores especializados (co-processador), para cálculos de criptografia, processamento de vetores, etc.
Processadores multinucleares
Ver artigo principal: multinúcleo
Até poucos anos atrás usou-se microprocessadores para atividades domésticas ou de negócios com simples núcleo. Atualmente estão sendo utilizados microprocessadores de múltiplos núcleos para melhorar a capacidade de processamento. Espera-se que no futuro os Sistemas Operacionais domésticos sejam compilados para trabalhar com processadores de múltiplos núcleos corretamente, realizando assim inúmeras tarefas ao mesmo tempo (como já acontece com os supercomputadores).
Sistemas multiprocessados
Ver artigo principal: Multiprocessamento
Em muitos sistemas o uso de um só processador é insuficiente. A solução nesses casos é usar dois ou mais processadores em multi processamento, aumentando assim a quantidade de processadores disponíveis ao sistema operacional. Sistemas multiprocessados podem ser de basicamente dois tipos:
Multiprocessamento simétrico (SMP): os processadores compartilham a mesma memória, embora possam ter caches separadas. O sistema operacional deve estar preparado para trabalhar com coerência de caches e, principalmente, evitar condições de corrida na memória principal.
Acesso não uniforme à memória (NUMA): a cada processador é associado um banco de memória. Nesse caso, o sistema operacional trata cada banco separadamente, pois cada banco tem um custo de acesso diferente, dependendo de qual o processador a que está associado e onde está sendo executado o processo que tenta acessar a memória.
Capacidade de processamento
A capacidade de processamento de um microprocessador é de certa forma difícil de medir, uma vez que esse desempenho pode se referir a quantidade máxima teória de instruções que podem ser executadas por segundo, que tipos de instruções são essas, em Flops (instruções de ponto flutuante), podendo essa ser de precisão simples, dupla, quádrupla, dependendo do contexto, e em MIPS (milhões de instruções por segundo), sendo essas operações com números inteiros. Somente a capacidade máxima teórica de um microprocessador não define seu desempenho, somente dá uma noção da sua capacidade, uma vez que sua arquitetura, barramento com a memória entre outros também influenciam no seu desempenho final, sendo assim, sua capacidade de processamento é medida comparando a velocidade de execução de aplicativos reais, podendo assim, testar seu desempenho em atividades comuns.
História
Intel 8008, um dos primeiros microprocessadores comerciais.
O primeiro microprocessador comercial foi inventado pela Intel em 1971 para atender uma empresa japonesa que precisava de um circuito integrado especial para as suas atividades.1 A Intel projectou o 4004, que era um circuito integrado programável que trabalhava com registradores de 4 bits, 46 instruções, clock de 740Khz e possuía cerca de 2300 transistores. Percebendo a utilidade desse invento a Intel prosseguiu com o desenvolvimento de novos microprocessadores: 8008 (o primeiro de 8 bits) e a seguir o 8080 e o microprocessador 8085. O 8080 foi um grande sucesso e tornou-se a base para os primeiros microcomputadores pessoais na década de 1970 graças ao sistema operacional CP/M. Da Intel saíram alguns funcionários que fundaram a Zilog, que viria a lançar o microprocessador Z80, com instruções compatíveis com o 8080 (embora muito mais poderoso que este) e também de grande sucesso. A Motorola possuía o 68000 e a MOS Technology o 6502. A Motorola ganhou destaque quando implantou o MC68000P12, de 12 MHz com arquitetura de 32 bits (embora seu Barramento fosse de 24 bits e seu Barramento de endereços de 16 bits), no Neo-Geo, um poderoso Arcade da SNK que posteriormente ganharia a versão AES (console casero) e CD (versão CD), todos eles com o mesmo hardware inicial. Todos os microprocessadores de 8 bits foram usados em muitos computadores pessoais (Sinclair, Apple Inc., TRS, Commodore, etc).
Em 1981 a IBM decidiu lançar-se no mercado de computadores pessoais e no seu IBM-PC utilizou um dos primeiros microprocessadores de 16 bits, o 8088 (derivado do seu irmão 8086 lançado em 1978) que viria a ser o avô dos computadores atuais. A Apple nos seus computadores Macintosh utilizava os processadores da Motorola, a família 68000 (de 32 bits). Outros fabricantes também tinham os seus microprocessadores de 16 bits, a Zilog tinha o Z8000, a Texas Instruments o TMS9900, a National Semiconductor tinha o 16032,mas nenhum fabricante teve tanto sucesso como a Intel, que sucessivamente foi lançando melhoramentos na sua linha 80X86, tendo surgido assim (por ordem cronológica) o 8086, 8088, 80186, 80188, 80286, 80386, 80486, Pentium, Pentium Pro, Pentium MMX, Pentium II, Pentium III, Pentium IV, Pentium M, Pentium D, Pentium Dual Core, Core 2 Duo, Core 2 Quad, Core i3, Core i5 e Core i7. Para o IBM-AT foi utilizado o 80286, depois um grande salto com o 80386 que podia trabalhar com memória virtual e multitarefa, o 80486 com coprocessador matemático embutido e finalmente a linha Pentium, com pipeline de processamento.
Como grande concorrente da Intel, a AMD aparece inicialmente como fabricante de microprocessadores da linha x86 alternativa mas a partir de um certo momento deixou de correr atrás da Intel e partiu para o desenvolvimento de sua própria linha de microprocessadores: K6, Athlon, Duron, Turion, Sempron, Phenom. Paralelamente à disputa entre Intel e AMD, a IBM possuía a linha PowerPC utilizada principalmente pelos microcomputadores da Apple.
A evolução tecnológica envolvida é surpreendentemente grande, de microprocessadores que trabalhavam com clock de dezenas de kHz e que podiam processar alguns milhares de instruções por segundo, atingiu-se clocks na casa dos 7 GHz e poder de processamento de dezenas de bilhões de instruções por segundo. A complexidade também cresceu: de alguns milhares de transístores para centenas de milhões de transístores numa mesma pastilha.
O CPU tem como função principal unificar todo o sistema, controlar as funções realizadas por cada unidade funcional, e é também responsável pela execução de todos os programas do sistema, que deverão estar armazenados na memória principal.
Componentes
O processador é composto por alguns componentes, cada um tendo uma função específica no processamento dos programas.
Unidade lógica e aritmética
Ver artigo principal: Unidade lógica e aritmética
A Unidade lógica e aritmética (ULA) é a responsável por executar efetivamente as instruções dos programas, como instruções lógicas, matemáticas, desvio, etc.
Unidade de controle
Ver artigo principal: Unidade de controle
A Unidade de controle (UC) é responsável pela tarefa de controle das ações a serem realizadas pelo computador, comandando todos os outros componentes.
Registradores
Ver artigo principal: Registrador (informática)
Os registradores são pequenas memórias velozes que armazenam comandos ou valores que são utilizados no controle e processamento de cada instrução. Os registradores mais importantes são:
Contador de Programa (PC) – Sinaliza para a próxima instrução a ser executada;
Registrador de Instrução (IR) – Registra a execução da instrução;
Unidade de Gerenciamento de Memória
Ver artigo principal: Unidade de Gerenciamento de Memória
A MMU (em inglês: Memory Management Unit) é um dispositivo de hardware que transforma endereços virtuais em endereços físicos e administra a memória principal do computador.
Unidade de ponto flutuante
Nos processadores atuais são implementadas unidades de cálculo de números reais. Tais unidades são mais complexas que ULAs e trabalham com operandos maiores, com tamanhos típicos variando entre 64 e 128 bits.
Frequência de operação
O relógio do sistema (Clock) é um circuito oscilador a cristal (efeito piezoelétrico) que tem a função de sincronizar e ditar a medida de tempo de transferência de dados no computador. Esta freqüência é medida em ciclos por segundo, ou Hertz. A capacidade de processamento do processador não está relacionada exclusivamente à frequência do relógio, mas também a outros fatores como: largura dos barramentos, quantidade de memória cache, arquitetura do processador, tecnologia de co-processamento, tecnologia de previsão de saltos (branch prediction), tecnologia de pipeline, conjunto de instruções, etc.
O aumento da frequência de operação nominal do processador é denominado overclocking.
Arquitetura
Existem duas principais arquiteturas usadas em processadores:
A arquitetura de Von Neumann. Esta arquitetura caracteriza-se por apresentar um barramento externo compartilhado entre dados e endereços. Embora apresente baixo custo, esta arquitetura apresenta desempenho limitado pelo gargalo do barramento.
A arquitetura de Harvard. Nesta arquitetura existem dois barramentos externos independentes (e normalmente também memórias independentes) para dados e endereços. Isto reduz de forma sensível o gargalo de barramento, que é uma das principais barreiras de desempenho, em detrimento do encarecimento do sistema como um todo.
Modelos de computação
Existem dois modelos de computação usados em processadores:
CISC (em inglês: Complex Instruction Set Computing, Computador com um Conjunto Complexo de Instruções), usada em processadores Intel e AMD; possui um grande conjunto de instruções (tipicamente centenas) que são armazenadas em uma pequena memória não-volátil interna ao processador. Cada posição desta memória contém as microinstruções, ou seja, os passos a serem realizados para a execução de cada instrução. Quanto mais complexa a instrução, mais microinstruções ela possuirá e mais tempo levará para ser executada. Ao conjunto de todas as microinstruções contidas no processador denominamos microcódigo. Esta técnica de computação baseada em microcódigo é denominada microprogramação.
RISC (em inglês: Reduced Instruction Set Computing, Computador com um Conjunto Reduzido de Instruções) usada em processadores PowerPC (da Apple, Motorola e IBM) e SPARC (SUN); possui um conjunto pequeno de instruções (tipicamente algumas dezenas) implementadas diretamente em hardware. Nesta técnica não é necessário realizar a leitura em uma memória e, por isso, a execução das instruções é muito rápida (normalmente um ciclo de clock por instrução). Por outro lado, as instruções são muito simples e para a realização de certas tarefas são necessárias mais instruções que no modelo RISC.
Exemplos de microprocessadores
Uma microcontroladora, um exemplo de microprocessador.
Uma GPU.
Microprocessadores — São utilizados nos computadores pessoais, onde são chamadas de Unidade Central de Processamento (CPU), workstations e mainframes. Podem ser programados para executar as mais variadas tarefas.
Processadores Digitais de Sinal (DSP do inglês Digital Signal Processor) — são microprocessadores especializados em processamento digital de sinal usados para processar sinais de áudio, vídeo, etc., quer em tempo real quer em off-line. Estão presentes, por exemplo, em aparelhos de CD, DVD e televisores digitais. Em geral, realizam sempre uma mesma tarefas simples.
Microcontroladores — Processadores relativamente flexíveis, de relativo baixo custo, que podem ser utilizados em projetos de pequeno tamanho. Podem trazer facilidades como conversores A/D embutidos, ou um conjunto de instruções próprias para comunicação digital através de algum protocolo específico.
GPU — (ou Unidade de Processamento Gráfico), é um microprocessador especializado em processar gráficos. São utilizadas em placas de vídeo para fazer computação gráfica.
Propósito geral e dedicado
Durante o processo de desenvolvimento do design de um processador, uma das características que se leva em conta é o uso que ele se destina. Processadores gráficos e controladoras por exemplo não tem o mesmo fim que um processador central. Processadores de propósito geral podem executar qualquer tipo de software, embora sua execução seja mais lenta que o mesmo sendo executado em um processador especializado. Processadores dedicados são fabricados para executarem tarefas específicas, como criptografia, processamento vetorial e gráfico, sendo nesse caso bem mais rápidos do que processadores de propósito geral em tarefas equivalentes. No caso do processamento gráfico, existem as GPUs, que são microprocessadores geralmente com memória dedicada e especialmente desenvolvidos para cálculos gráficos. Nem sempre os processadores seguem definidamente esses dois modelos, sendo o motivo disso que muitos processadores modernos incorporam processadores especializados (co-processador), para cálculos de criptografia, processamento de vetores, etc.
Processadores multinucleares
Ver artigo principal: multinúcleo
Até poucos anos atrás usou-se microprocessadores para atividades domésticas ou de negócios com simples núcleo. Atualmente estão sendo utilizados microprocessadores de múltiplos núcleos para melhorar a capacidade de processamento. Espera-se que no futuro os Sistemas Operacionais domésticos sejam compilados para trabalhar com processadores de múltiplos núcleos corretamente, realizando assim inúmeras tarefas ao mesmo tempo (como já acontece com os supercomputadores).
Sistemas multiprocessados
Ver artigo principal: Multiprocessamento
Em muitos sistemas o uso de um só processador é insuficiente. A solução nesses casos é usar dois ou mais processadores em multi processamento, aumentando assim a quantidade de processadores disponíveis ao sistema operacional. Sistemas multiprocessados podem ser de basicamente dois tipos:
Multiprocessamento simétrico (SMP): os processadores compartilham a mesma memória, embora possam ter caches separadas. O sistema operacional deve estar preparado para trabalhar com coerência de caches e, principalmente, evitar condições de corrida na memória principal.
Acesso não uniforme à memória (NUMA): a cada processador é associado um banco de memória. Nesse caso, o sistema operacional trata cada banco separadamente, pois cada banco tem um custo de acesso diferente, dependendo de qual o processador a que está associado e onde está sendo executado o processo que tenta acessar a memória.
Capacidade de processamento
A capacidade de processamento de um microprocessador é de certa forma difícil de medir, uma vez que esse desempenho pode se referir a quantidade máxima teória de instruções que podem ser executadas por segundo, que tipos de instruções são essas, em Flops (instruções de ponto flutuante), podendo essa ser de precisão simples, dupla, quádrupla, dependendo do contexto, e em MIPS (milhões de instruções por segundo), sendo essas operações com números inteiros. Somente a capacidade máxima teórica de um microprocessador não define seu desempenho, somente dá uma noção da sua capacidade, uma vez que sua arquitetura, barramento com a memória entre outros também influenciam no seu desempenho final, sendo assim, sua capacidade de processamento é medida comparando a velocidade de execução de aplicativos reais, podendo assim, testar seu desempenho em atividades comuns.
História
Intel 8008, um dos primeiros microprocessadores comerciais.
O primeiro microprocessador comercial foi inventado pela Intel em 1971 para atender uma empresa japonesa que precisava de um circuito integrado especial para as suas atividades.1 A Intel projectou o 4004, que era um circuito integrado programável que trabalhava com registradores de 4 bits, 46 instruções, clock de 740Khz e possuía cerca de 2300 transistores. Percebendo a utilidade desse invento a Intel prosseguiu com o desenvolvimento de novos microprocessadores: 8008 (o primeiro de 8 bits) e a seguir o 8080 e o microprocessador 8085. O 8080 foi um grande sucesso e tornou-se a base para os primeiros microcomputadores pessoais na década de 1970 graças ao sistema operacional CP/M. Da Intel saíram alguns funcionários que fundaram a Zilog, que viria a lançar o microprocessador Z80, com instruções compatíveis com o 8080 (embora muito mais poderoso que este) e também de grande sucesso. A Motorola possuía o 68000 e a MOS Technology o 6502. A Motorola ganhou destaque quando implantou o MC68000P12, de 12 MHz com arquitetura de 32 bits (embora seu Barramento fosse de 24 bits e seu Barramento de endereços de 16 bits), no Neo-Geo, um poderoso Arcade da SNK que posteriormente ganharia a versão AES (console casero) e CD (versão CD), todos eles com o mesmo hardware inicial. Todos os microprocessadores de 8 bits foram usados em muitos computadores pessoais (Sinclair, Apple Inc., TRS, Commodore, etc).
Em 1981 a IBM decidiu lançar-se no mercado de computadores pessoais e no seu IBM-PC utilizou um dos primeiros microprocessadores de 16 bits, o 8088 (derivado do seu irmão 8086 lançado em 1978) que viria a ser o avô dos computadores atuais. A Apple nos seus computadores Macintosh utilizava os processadores da Motorola, a família 68000 (de 32 bits). Outros fabricantes também tinham os seus microprocessadores de 16 bits, a Zilog tinha o Z8000, a Texas Instruments o TMS9900, a National Semiconductor tinha o 16032,mas nenhum fabricante teve tanto sucesso como a Intel, que sucessivamente foi lançando melhoramentos na sua linha 80X86, tendo surgido assim (por ordem cronológica) o 8086, 8088, 80186, 80188, 80286, 80386, 80486, Pentium, Pentium Pro, Pentium MMX, Pentium II, Pentium III, Pentium IV, Pentium M, Pentium D, Pentium Dual Core, Core 2 Duo, Core 2 Quad, Core i3, Core i5 e Core i7. Para o IBM-AT foi utilizado o 80286, depois um grande salto com o 80386 que podia trabalhar com memória virtual e multitarefa, o 80486 com coprocessador matemático embutido e finalmente a linha Pentium, com pipeline de processamento.
Como grande concorrente da Intel, a AMD aparece inicialmente como fabricante de microprocessadores da linha x86 alternativa mas a partir de um certo momento deixou de correr atrás da Intel e partiu para o desenvolvimento de sua própria linha de microprocessadores: K6, Athlon, Duron, Turion, Sempron, Phenom. Paralelamente à disputa entre Intel e AMD, a IBM possuía a linha PowerPC utilizada principalmente pelos microcomputadores da Apple.
A evolução tecnológica envolvida é surpreendentemente grande, de microprocessadores que trabalhavam com clock de dezenas de kHz e que podiam processar alguns milhares de instruções por segundo, atingiu-se clocks na casa dos 7 GHz e poder de processamento de dezenas de bilhões de instruções por segundo. A complexidade também cresceu: de alguns milhares de transístores para centenas de milhões de transístores numa mesma pastilha.
O CPU tem como função principal unificar todo o sistema, controlar as funções realizadas por cada unidade funcional, e é também responsável pela execução de todos os programas do sistema, que deverão estar armazenados na memória principal.
Componentes
O processador é composto por alguns componentes, cada um tendo uma função específica no processamento dos programas.
Unidade lógica e aritmética
Ver artigo principal: Unidade lógica e aritmética
A Unidade lógica e aritmética (ULA) é a responsável por executar efetivamente as instruções dos programas, como instruções lógicas, matemáticas, desvio, etc.
Unidade de controle
Ver artigo principal: Unidade de controle
A Unidade de controle (UC) é responsável pela tarefa de controle das ações a serem realizadas pelo computador, comandando todos os outros componentes.
Registradores
Ver artigo principal: Registrador (informática)
Os registradores são pequenas memórias velozes que armazenam comandos ou valores que são utilizados no controle e processamento de cada instrução. Os registradores mais importantes são:
Contador de Programa (PC) – Sinaliza para a próxima instrução a ser executada;
Registrador de Instrução (IR) – Registra a execução da instrução;
Unidade de Gerenciamento de Memória
Ver artigo principal: Unidade de Gerenciamento de Memória
A MMU (em inglês: Memory Management Unit) é um dispositivo de hardware que transforma endereços virtuais em endereços físicos e administra a memória principal do computador.
Unidade de ponto flutuante
Nos processadores atuais são implementadas unidades de cálculo de números reais. Tais unidades são mais complexas que ULAs e trabalham com operandos maiores, com tamanhos típicos variando entre 64 e 128 bits.
Frequência de operação
O relógio do sistema (Clock) é um circuito oscilador a cristal (efeito piezoelétrico) que tem a função de sincronizar e ditar a medida de tempo de transferência de dados no computador. Esta freqüência é medida em ciclos por segundo, ou Hertz. A capacidade de processamento do processador não está relacionada exclusivamente à frequência do relógio, mas também a outros fatores como: largura dos barramentos, quantidade de memória cache, arquitetura do processador, tecnologia de co-processamento, tecnologia de previsão de saltos (branch prediction), tecnologia de pipeline, conjunto de instruções, etc.
O aumento da frequência de operação nominal do processador é denominado overclocking.
Arquitetura
Existem duas principais arquiteturas usadas em processadores:
A arquitetura de Von Neumann. Esta arquitetura caracteriza-se por apresentar um barramento externo compartilhado entre dados e endereços. Embora apresente baixo custo, esta arquitetura apresenta desempenho limitado pelo gargalo do barramento.
A arquitetura de Harvard. Nesta arquitetura existem dois barramentos externos independentes (e normalmente também memórias independentes) para dados e endereços. Isto reduz de forma sensível o gargalo de barramento, que é uma das principais barreiras de desempenho, em detrimento do encarecimento do sistema como um todo.
Modelos de computação
Existem dois modelos de computação usados em processadores:
CISC (em inglês: Complex Instruction Set Computing, Computador com um Conjunto Complexo de Instruções), usada em processadores Intel e AMD; possui um grande conjunto de instruções (tipicamente centenas) que são armazenadas em uma pequena memória não-volátil interna ao processador. Cada posição desta memória contém as microinstruções, ou seja, os passos a serem realizados para a execução de cada instrução. Quanto mais complexa a instrução, mais microinstruções ela possuirá e mais tempo levará para ser executada. Ao conjunto de todas as microinstruções contidas no processador denominamos microcódigo. Esta técnica de computação baseada em microcódigo é denominada microprogramação.
RISC (em inglês: Reduced Instruction Set Computing, Computador com um Conjunto Reduzido de Instruções) usada em processadores PowerPC (da Apple, Motorola e IBM) e SPARC (SUN); possui um conjunto pequeno de instruções (tipicamente algumas dezenas) implementadas diretamente em hardware. Nesta técnica não é necessário realizar a leitura em uma memória e, por isso, a execução das instruções é muito rápida (normalmente um ciclo de clock por instrução). Por outro lado, as instruções são muito simples e para a realização de certas tarefas são necessárias mais instruções que no modelo RISC.
Exemplos de microprocessadores
Uma microcontroladora, um exemplo de microprocessador.
Uma GPU.
Microprocessadores — São utilizados nos computadores pessoais, onde são chamadas de Unidade Central de Processamento (CPU), workstations e mainframes. Podem ser programados para executar as mais variadas tarefas.
Processadores Digitais de Sinal (DSP do inglês Digital Signal Processor) — são microprocessadores especializados em processamento digital de sinal usados para processar sinais de áudio, vídeo, etc., quer em tempo real quer em off-line. Estão presentes, por exemplo, em aparelhos de CD, DVD e televisores digitais. Em geral, realizam sempre uma mesma tarefas simples.
Microcontroladores — Processadores relativamente flexíveis, de relativo baixo custo, que podem ser utilizados em projetos de pequeno tamanho. Podem trazer facilidades como conversores A/D embutidos, ou um conjunto de instruções próprias para comunicação digital através de algum protocolo específico.
GPU — (ou Unidade de Processamento Gráfico), é um microprocessador especializado em processar gráficos. São utilizadas em placas de vídeo para fazer computação gráfica.
Propósito geral e dedicado
Durante o processo de desenvolvimento do design de um processador, uma das características que se leva em conta é o uso que ele se destina. Processadores gráficos e controladoras por exemplo não tem o mesmo fim que um processador central. Processadores de propósito geral podem executar qualquer tipo de software, embora sua execução seja mais lenta que o mesmo sendo executado em um processador especializado. Processadores dedicados são fabricados para executarem tarefas específicas, como criptografia, processamento vetorial e gráfico, sendo nesse caso bem mais rápidos do que processadores de propósito geral em tarefas equivalentes. No caso do processamento gráfico, existem as GPUs, que são microprocessadores geralmente com memória dedicada e especialmente desenvolvidos para cálculos gráficos. Nem sempre os processadores seguem definidamente esses dois modelos, sendo o motivo disso que muitos processadores modernos incorporam processadores especializados (co-processador), para cálculos de criptografia, processamento de vetores, etc.
Processadores multinucleares
Ver artigo principal: multinúcleo
Até poucos anos atrás usou-se microprocessadores para atividades domésticas ou de negócios com simples núcleo. Atualmente estão sendo utilizados microprocessadores de múltiplos núcleos para melhorar a capacidade de processamento. Espera-se que no futuro os Sistemas Operacionais domésticos sejam compilados para trabalhar com processadores de múltiplos núcleos corretamente, realizando assim inúmeras tarefas ao mesmo tempo (como já acontece com os supercomputadores).
Sistemas multiprocessados
Ver artigo principal: Multiprocessamento
Em muitos sistemas o uso de um só processador é insuficiente. A solução nesses casos é usar dois ou mais processadores em multi processamento, aumentando assim a quantidade de processadores disponíveis ao sistema operacional. Sistemas multiprocessados podem ser de basicamente dois tipos:
Multiprocessamento simétrico (SMP): os processadores compartilham a mesma memória, embora possam ter caches separadas. O sistema operacional deve estar preparado para trabalhar com coerência de caches e, principalmente, evitar condições de corrida na memória principal.
Acesso não uniforme à memória (NUMA): a cada processador é associado um banco de memória. Nesse caso, o sistema operacional trata cada banco separadamente, pois cada banco tem um custo de acesso diferente, dependendo de qual o processador a que está associado e onde está sendo executado o processo que tenta acessar a memória.
Capacidade de processamento
A capacidade de processamento de um microprocessador é de certa forma difícil de medir, uma vez que esse desempenho pode se referir a quantidade máxima teória de instruções que podem ser executadas por segundo, que tipos de instruções são essas, em Flops (instruções de ponto flutuante), podendo essa ser de precisão simples, dupla, quádrupla, dependendo do contexto, e em MIPS (milhões de instruções por segundo), sendo essas operações com números inteiros. Somente a capacidade máxima teórica de um microprocessador não define seu desempenho, somente dá uma noção da sua capacidade, uma vez que sua arquitetura, barramento com a memória entre outros também influenciam no seu desempenho final, sendo assim, sua capacidade de processamento é medida comparando a velocidade de execução de aplicativos reais, podendo assim, testar seu desempenho em atividades comuns.
História
Intel 8008, um dos primeiros microprocessadores comerciais.
O primeiro microprocessador comercial foi inventado pela Intel em 1971 para atender uma empresa japonesa que precisava de um circuito integrado especial para as suas atividades.1 A Intel projectou o 4004, que era um circuito integrado programável que trabalhava com registradores de 4 bits, 46 instruções, clock de 740Khz e possuía cerca de 2300 transistores. Percebendo a utilidade desse invento a Intel prosseguiu com o desenvolvimento de novos microprocessadores: 8008 (o primeiro de 8 bits) e a seguir o 8080 e o microprocessador 8085. O 8080 foi um grande sucesso e tornou-se a base para os primeiros microcomputadores pessoais na década de 1970 graças ao sistema operacional CP/M. Da Intel saíram alguns funcionários que fundaram a Zilog, que viria a lançar o microprocessador Z80, com instruções compatíveis com o 8080 (embora muito mais poderoso que este) e também de grande sucesso. A Motorola possuía o 68000 e a MOS Technology o 6502. A Motorola ganhou destaque quando implantou o MC68000P12, de 12 MHz com arquitetura de 32 bits (embora seu Barramento fosse de 24 bits e seu Barramento de endereços de 16 bits), no Neo-Geo, um poderoso Arcade da SNK que posteriormente ganharia a versão AES (console casero) e CD (versão CD), todos eles com o mesmo hardware inicial. Todos os microprocessadores de 8 bits foram usados em muitos computadores pessoais (Sinclair, Apple Inc., TRS, Commodore, etc).
Em 1981 a IBM decidiu lançar-se no mercado de computadores pessoais e no seu IBM-PC utilizou um dos primeiros microprocessadores de 16 bits, o 8088 (derivado do seu irmão 8086 lançado em 1978) que viria a ser o avô dos computadores atuais. A Apple nos seus computadores Macintosh utilizava os processadores da Motorola, a família 68000 (de 32 bits). Outros fabricantes também tinham os seus microprocessadores de 16 bits, a Zilog tinha o Z8000, a Texas Instruments o TMS9900, a National Semiconductor tinha o 16032,mas nenhum fabricante teve tanto sucesso como a Intel, que sucessivamente foi lançando melhoramentos na sua linha 80X86, tendo surgido assim (por ordem cronológica) o 8086, 8088, 80186, 80188, 80286, 80386, 80486, Pentium, Pentium Pro, Pentium MMX, Pentium II, Pentium III, Pentium IV, Pentium M, Pentium D, Pentium Dual Core, Core 2 Duo, Core 2 Quad, Core i3, Core i5 e Core i7. Para o IBM-AT foi utilizado o 80286, depois um grande salto com o 80386 que podia trabalhar com memória virtual e multitarefa, o 80486 com coprocessador matemático embutido e finalmente a linha Pentium, com pipeline de processamento.
Como grande concorrente da Intel, a AMD aparece inicialmente como fabricante de microprocessadores da linha x86 alternativa mas a partir de um certo momento deixou de correr atrás da Intel e partiu para o desenvolvimento de sua própria linha de microprocessadores: K6, Athlon, Duron, Turion, Sempron, Phenom. Paralelamente à disputa entre Intel e AMD, a IBM possuía a linha PowerPC utilizada principalmente pelos microcomputadores da Apple.
A evolução tecnológica envolvida é surpreendentemente grande, de microprocessadores que trabalhavam com clock de dezenas de kHz e que podiam processar alguns milhares de instruções por segundo, atingiu-se clocks na casa dos 7 GHz e poder de processamento de dezenas de bilhões de instruções por segundo. A complexidade também cresceu: de alguns milhares de transístores para centenas de milhões de transístores numa mesma pastilha.
O CPU tem como função principal unificar todo o sistema, controlar as funções realizadas por cada unidade funcional, e é também responsável pela execução de todos os programas do sistema, que deverão estar armazenados na memória principal.
Componentes
O processador é composto por alguns componentes, cada um tendo uma função específica no processamento dos programas.
Unidade lógica e aritmética
Ver artigo principal: Unidade lógica e aritmética
A Unidade lógica e aritmética (ULA) é a responsável por executar efetivamente as instruções dos programas, como instruções lógicas, matemáticas, desvio, etc.
Unidade de controle
Ver artigo principal: Unidade de controle
A Unidade de controle (UC) é responsável pela tarefa de controle das ações a serem realizadas pelo computador, comandando todos os outros componentes.
Registradores
Ver artigo principal: Registrador (informática)
Os registradores são pequenas memórias velozes que armazenam comandos ou valores que são utilizados no controle e processamento de cada instrução. Os registradores mais importantes são:
Contador de Programa (PC) – Sinaliza para a próxima instrução a ser executada;
Registrador de Instrução (IR) – Registra a execução da instrução;
Unidade de Gerenciamento de Memória
Ver artigo principal: Unidade de Gerenciamento de Memória
A MMU (em inglês: Memory Management Unit) é um dispositivo de hardware que transforma endereços virtuais em endereços físicos e administra a memória principal do computador.
Unidade de ponto flutuante
Nos processadores atuais são implementadas unidades de cálculo de números reais. Tais unidades são mais complexas que ULAs e trabalham com operandos maiores, com tamanhos típicos variando entre 64 e 128 bits.
Frequência de operação
O relógio do sistema (Clock) é um circuito oscilador a cristal (efeito piezoelétrico) que tem a função de sincronizar e ditar a medida de tempo de transferência de dados no computador. Esta freqüência é medida em ciclos por segundo, ou Hertz. A capacidade de processamento do processador não está relacionada exclusivamente à frequência do relógio, mas também a outros fatores como: largura dos barramentos, quantidade de memória cache, arquitetura do processador, tecnologia de co-processamento, tecnologia de previsão de saltos (branch prediction), tecnologia de pipeline, conjunto de instruções, etc.
O aumento da frequência de operação nominal do processador é denominado overclocking.
Arquitetura
Existem duas principais arquiteturas usadas em processadores:
A arquitetura de Von Neumann. Esta arquitetura caracteriza-se por apresentar um barramento externo compartilhado entre dados e endereços. Embora apresente baixo custo, esta arquitetura apresenta desempenho limitado pelo gargalo do barramento.
A arquitetura de Harvard. Nesta arquitetura existem dois barramentos externos independentes (e normalmente também memórias independentes) para dados e endereços. Isto reduz de forma sensível o gargalo de barramento, que é uma das principais barreiras de desempenho, em detrimento do encarecimento do sistema como um todo.
Modelos de computação
Existem dois modelos de computação usados em processadores:
CISC (em inglês: Complex Instruction Set Computing, Computador com um Conjunto Complexo de Instruções), usada em processadores Intel e AMD; possui um grande conjunto de instruções (tipicamente centenas) que são armazenadas em uma pequena memória não-volátil interna ao processador. Cada posição desta memória contém as microinstruções, ou seja, os passos a serem realizados para a execução de cada instrução. Quanto mais complexa a instrução, mais microinstruções ela possuirá e mais tempo levará para ser executada. Ao conjunto de todas as microinstruções contidas no processador denominamos microcódigo. Esta técnica de computação baseada em microcódigo é denominada microprogramação.
RISC (em inglês: Reduced Instruction Set Computing, Computador com um Conjunto Reduzido de Instruções) usada em processadores PowerPC (da Apple, Motorola e IBM) e SPARC (SUN); possui um conjunto pequeno de instruções (tipicamente algumas dezenas) implementadas diretamente em hardware. Nesta técnica não é necessário realizar a leitura em uma memória e, por isso, a execução das instruções é muito rápida (normalmente um ciclo de clock por instrução). Por outro lado, as instruções são muito simples e para a realização de certas tarefas são necessárias mais instruções que no modelo RISC.
Exemplos de microprocessadores
Uma microcontroladora, um exemplo de microprocessador.
Uma GPU.
Microprocessadores — São utilizados nos computadores pessoais, onde são chamadas de Unidade Central de Processamento (CPU), workstations e mainframes. Podem ser programados para executar as mais variadas tarefas.
Processadores Digitais de Sinal (DSP do inglês Digital Signal Processor) — são microprocessadores especializados em processamento digital de sinal usados para processar sinais de áudio, vídeo, etc., quer em tempo real quer em off-line. Estão presentes, por exemplo, em aparelhos de CD, DVD e televisores digitais. Em geral, realizam sempre uma mesma tarefas simples.
Microcontroladores — Processadores relativamente flexíveis, de relativo baixo custo, que podem ser utilizados em projetos de pequeno tamanho. Podem trazer facilidades como conversores A/D embutidos, ou um conjunto de instruções próprias para comunicação digital através de algum protocolo específico.
GPU — (ou Unidade de Processamento Gráfico), é um microprocessador especializado em processar gráficos. São utilizadas em placas de vídeo para fazer computação gráfica.
Propósito geral e dedicado
Durante o processo de desenvolvimento do design de um processador, uma das características que se leva em conta é o uso que ele se destina. Processadores gráficos e controladoras por exemplo não tem o mesmo fim que um processador central. Processadores de propósito geral podem executar qualquer tipo de software, embora sua execução seja mais lenta que o mesmo sendo executado em um processador especializado. Processadores dedicados são fabricados para executarem tarefas específicas, como criptografia, processamento vetorial e gráfico, sendo nesse caso bem mais rápidos do que processadores de propósito geral em tarefas equivalentes. No caso do processamento gráfico, existem as GPUs, que são microprocessadores geralmente com memória dedicada e especialmente desenvolvidos para cálculos gráficos. Nem sempre os processadores seguem definidamente esses dois modelos, sendo o motivo disso que muitos processadores modernos incorporam processadores especializados (co-processador), para cálculos de criptografia, processamento de vetores, etc.
Processadores multinucleares
Ver artigo principal: multinúcleo
Até poucos anos atrás usou-se microprocessadores para atividades domésticas ou de negócios com simples núcleo. Atualmente estão sendo utilizados microprocessadores de múltiplos núcleos para melhorar a capacidade de processamento. Espera-se que no futuro os Sistemas Operacionais domésticos sejam compilados para trabalhar com processadores de múltiplos núcleos corretamente, realizando assim inúmeras tarefas ao mesmo tempo (como já acontece com os supercomputadores).
Sistemas multiprocessados
Ver artigo principal: Multiprocessamento
Em muitos sistemas o uso de um só processador é insuficiente. A solução nesses casos é usar dois ou mais processadores em multi processamento, aumentando assim a quantidade de processadores disponíveis ao sistema operacional. Sistemas multiprocessados podem ser de basicamente dois tipos:
Multiprocessamento simétrico (SMP): os processadores compartilham a mesma memória, embora possam ter caches separadas. O sistema operacional deve estar preparado para trabalhar com coerência de caches e, principalmente, evitar condições de corrida na memória principal.
Acesso não uniforme à memória (NUMA): a cada processador é associado um banco de memória. Nesse caso, o sistema operacional trata cada banco separadamente, pois cada banco tem um custo de acesso diferente, dependendo de qual o processador a que está associado e onde está sendo executado o processo que tenta acessar a memória.
Capacidade de processamento
A capacidade de processamento de um microprocessador é de certa forma difícil de medir, uma vez que esse desempenho pode se referir a quantidade máxima teória de instruções que podem ser executadas por segundo, que tipos de instruções são essas, em Flops (instruções de ponto flutuante), podendo essa ser de precisão simples, dupla, quádrupla, dependendo do contexto, e em MIPS (milhões de instruções por segundo), sendo essas operações com números inteiros. Somente a capacidade máxima teórica de um microprocessador não define seu desempenho, somente dá uma noção da sua capacidade, uma vez que sua arquitetura, barramento com a memória entre outros também influenciam no seu desempenho final, sendo assim, sua capacidade de processamento é medida comparando a velocidade de execução de aplicativos reais, podendo assim, testar seu desempenho em atividades comuns.
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário