Arquivos de Tags: Hardware - Páginas 2

CISC vs RISC

Sem duvidas este é um dos temas mais interessantes quando tratamos de processadores. A arquitetura de processador descreve o processador que foi usado em um computador. Grande parte dos computadores vêm com identificação e literatura descrevendo o processador que contém dentro de si, arquitetura CISC e RISC.

  • A CISC (em inglês: Complex Instruction Set Computing, Computador com um Conjunto Complexo de Instruções), usada em processadores Intel e AMD; suporta mais instruções no entanto, com isso, mais lenta fica a execução delas.
  • A 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); suporta menos instruções, e com isso executa com mais rapidez o conjunto de instruções que são combinadas.

Um processador CISC (Complex Instruction Set Computer), é capaz de executar várias centenas de instruções complexas, sendo extremamente versátil. Exemplos de processadores CISC são os 386 e os 486. No começo da década de 80, a tendência era construir chips com conjuntos de instruções cada vez mais complexos, mas alguns fabricantes resolveram seguir o caminho oposto, criando o padrão RISC (Reduced Instruction Set Computer ).

Ao contrário dos complexos CISC, os processadores RISC são capazes de executar apenas algumas poucas instruções simples. Justamente por isso, os chips baseados nesta arquitetura são mais simples e muito mais baratos. Outra vantagem dos processadores RISC, é que por terem um menor número de circuitos internos, podem trabalhar com clocks mais altos. Um processador RISC é capaz de executar instruções muito mais rapidamente.

Assim, em conjunto com um software adequado, estes processadores são capazes de desempenhar todas as funções de um processador CISC, compensando as suas limitações com uma velocidade maior de operação. Atualmente, vemos processadores híbridos, que são essencialmente

Processadores CISC, porém que possuem internamente núcleos RISC. Assim, a parte CISC do processador pode cuidar das instruções mais complexas, enquanto que o núcleo RISC pode cuidar das mais simples, nas quais é mais rápido. Parece que o futuro nos reserva uma fusão destas duas tecnologias. Um bom exemplo de processador híbrido é o Pentium Pro.

Arquitetura CISC

CISC (Complex Instruction Set Computer, ou, em uma tradução literal, “Computador com um Conjunto Complexo de Instruções”): é um processador capaz de executar centenas de instruções complexas diferentes sendo, assim, extremamente versátil. Exemplos de processadores CISC são os 386 e os 486 da Intel.

Processador 486

Um modelo CISC

Os processadores baseados na computação de conjunto de instruções complexas contêm uma micro programação, ou seja, um conjunto de códigos de instruções que são gravados no processador, permitindo-lhe receber as instruções dos programas e executá-las, utilizando as instruções contidas na sua micro programação. Seria como quebrar estas instruções, já em baixo nível, em diversas instruções mais próximas do hardware (as instruções contidas no microcódigo do processador). Como característica marcante esta arquitetura contém um conjunto grande de instruções, a maioria deles em um elevado grau de complexidade.

Examinando do ponto de vista um pouco mais prático, a vantagem da arquitetura CISC é que já temos muitas das instruções guardadas no próprio processador, o que facilita o trabalho dos programadores de linguagem de máquina; disponibilizando, assim, praticamente todas as instruções que serão usadas em seus programas. Os processadores CISC têm a vantagem de reduzir o tamanho do código executável por já possuírem muito do código comum em vários programas, em forma de uma única instrução.

Esta arquitetura processa e trata grandes e complexas instruções, nomeadamente operações de multiplicação e divisão mas também executa e/ou descodifica grandes quantidades de operações, parecendo possuir outro processador pelo facto da maioria dos algoritmos já se encontrarem no processador sendo o seu tempo de restabelecimento praticamente nulo.

A CISC é implementada e guardada em micro-código no processador, sendo difícil modificar a lógica de tratamento de instruções. Esta arquitetura suporta operações do tipo “a=a+b” descrita por “add a,b”, ou seja podem simplesmente utilizar dois operandos para uma única instrução, sendo um deles fonte e destino (acumulador) e permite um ou mais operadores em memória para a realização das instruções. Com isto se comprova a necessidade de abranger um elevado leque de modelos de endereçamento, com acesso direto à memória e com apontadores para as variáveis em memória, armazenados eles próprios (ponteiros) em células de memória.

A complexidade que envolve estes modelos compromete o produto a nível de comercialização e desenvolvimento, limitando ou diminuindo o aumento a frequência de relógio não só pelo tempo de acesso às memórias como devido ao reduzido número de registos.

Porém, do ponto de vista da performance, os CISC’s têm algumas desvantagens em relação aos RISC’s, entre elas a impossibilidade de se alterar alguma instrução composta para se melhorar a performance. O código equivalente às instruções compostas do CISC pode ser escrito nos RISC’s da forma desejada, usando um conjunto de instruções simples, da maneira que mais se adequar. Sendo assim, existe uma disputa entre tamanho do código X desempenho.

A existência de um grande número de registros nas arquiteturas RISC, aliado à evolução da tecnologia dos compiladores dos últimos anos (em especial, na geração de código), vem permitindo representar a maioria das variáveis escalares diretamente em registro, não havendo necessidade de recorrer com tanta frequência à memória. Esta organização não foi contudo economicamente viável nas gerações anteriores de microprocessadores, com destaque para a família da Motorola (M680x0) e, ainda mais antiga, a família da Intel (ix86). Estes processadores dispunham de um menor nº de registros e, consequentemente, uma diferente organização que suportasse eficientemente diversos mecanismos de acesso à memória.

Processador Motorola DragonBal

No caso da família M680x0, o programador tinha disponível dois bancos de 8 registros genéricos de 32 bits: um para dados (D) e outro para apontadores para a memória (A), suportando este último banco um variado leque de modos de endereçamento à memória. Apenas um dos registros (A7) é usado implicitamente em certas operações de manuseamento da stack.

A família Intel é mais complexa por não ter variadamente registros de uso genérico. A arquitetura de base dispõe efetivamente de 4 registros para conter operandos aritméticos (A, B, C e D), mais 4 para trabalhar com apontadores para a memória (BP, SP, DI e SI) e outros 4 para lidar com uma memória segmentada (CS, DS, SS e ES; a única maneira de uma arquitetura de 16 bits poder aceder a mais de 64K células de memória). Cada um destes registros não pode ser considerado de uso genérico, pois quase todos eles são usados implicitamente (isto é, sem o programador explicitar o seu uso) em várias instruções (por exemplo, os registros A e D funcionam de acumuladores em operações de multiplicação e divisão, enquanto o registro C é usado implicitamente como variável de contagem em instruções de controle de ciclos). A situação complica-se ainda mais com a variação da dimensão dos registros na mesma família (de registros de 16 bits no i286 para registros de 32 bits no i386), pois o formato de instrução foi concebido para distinguir apenas operandos de 8 e de 16 bits, e um Bit bastava; para garantir compatibilidade ao longo de toda a arquitetura, os novos processadores têm de distinguir operandos de 8, 16 e 32 bits, usando o mesmo formato de instrução.

Arquitetura RISC

Um PowerPC da IBM.

Reduced Instruction Set Computer ou Computador com um Conjunto Reduzido de Instruções (RISC), é uma linha de arquitetura de computadores que favorece um conjunto simples e pequeno de instruções que levam aproximadamente a mesma quantidade de tempo para serem executadas. A maioria dos microprocessadores modernos são RISCs, por exemplo DEC Alpha, SPARC, MIPS, e PowerPC. O tipo de microprocessador mais largamente usado em desktops, o x86, é mais CISC do que RISC, embora chips mais novos traduzam instruções x86 baseadas em arquitetura CISC em formas baseadas em arquitetura RISC mais simples, utilizando prioridade de execução.

Os processadores baseados na computação de conjunto de instruções reduzido não tem micro-programação, as instruções são executadas diretamente pelo hardware. Como característica, esta arquitetura, além de não ter microcódigo, tem o conjunto de instruções reduzido, bem como baixo nível de complexidade.

A ideia foi inspirada pela descoberta de que muitas das características incluídas na arquitetura tradicional de processadores para ganho de desempenho foram ignoradas pelos programas que foram executados neles. Mas o desempenho do processador em relação à memória que ele acessava era crescente. Isto resultou num número de técnicas para otimização do processo dentro do processador, enquanto ao mesmo tempo tentando reduzir o número total de acessos à memória.

Esta arquitetura suporta operações do tipo “a=b+c” descrita por “add a,b,c”, ou seja, podem especificar três operandos para uma única instrução, mas exclusivamente se estes forem registos, originando em situação contrária (operadores em memória) um atraso provocado pela introdução de ações extra no processador que se reflete no funcionamento encadeado (piplining).

Para garantir rapidez e eficiência do sistema, pretende-se que os operadores sejam acedidos á velocidade de funcionamento do processador, logo se justifica a utilização dos registos, e para que a representação de todas as variáveis para processamento sejam apresentadas como registos, tem que se garantir um número elevado destes, assegurando-se atualmente a maioria das variáveis escalares pela utilização de 32 registos genéricos que caracterizam a maioria da tecnologia dos compiladores atuais.

Processador ultraSPARC IV.

Na representação de variáveis estruturadas, a sua atribuição não se apresenta de forma tão linear, a título de exemplo, um inteiro nesta arquitetura ocupa 32 bits, os reais 32 ou 64 bits (consoante a precisão) e cada célula de memória contem apenas 8 bits, logo cada variável ocupa várias células, portanto uma operação básica entre duas variáveis estruturadas implicava várias operações entre registos (efetuadas parcialmente, e implicavam elevado número de operações e registos), para isso utilizam um indicador (.align x) para alinhar a informação apenas em localizações de memória que começam por endereço par para 16 bits (x=1) ou então múltiplos de 4 para 32 bits (x=2).

O comprimento das instruções em arquiteturas RISC tiveram que ser fixados devido a adoção de tecnologias como o piplining e a maior facilidade e simplicidade e consequente redução do tempo de execução, estando o dimensionamento determinado por 32 bits para permitir especificar os três operandos.

Características comuns à maior parte dos processadores RISC:

  • número de instruções limitado;
  • codificação de instruções em uma palavra de tamanho fixo;
  • execução sem micro-código;
  • altas taxas de execução (próximas a 1 instrução/ciclo)
  • uso intenso de pipelines;
  • poucos modos de endereçamento;
  • operações envolvendo a memória principal restritas a transferências (LOAD, STORE);
  • operações lógicas e aritméticas entre registradores, tipicamente com instruções de três endereços.

Instruções complexas: apenas incluir quando o benefício no desempenho compensar a degradação de velocidade;

Uso de transistores: área de VLSI pode ser utilizada para novas instruções ou para aumentar número de registradores, incluir memória cache no chip do processador, adicionar unidades de execução;

Uso de microcódigo: deve ser evitado, pois o overhead associado ao tempo de acesso a microinstruções na memória de controle passou a ser considerável a partir do momento em que a tecnologia da memória principal passou de núcleos de ferrite para dispositivos semicondutores;

Papel do compilador: deve substituir eficientemente as operações complexas eliminadas do hardware. Para atingir este objetivo, otimização é fundamental; projeto de compiladores realizado juntamente com o projeto dos processadores.

Processador CELL usado no playstation 3.

Olha o processador do playstation 3, sim ele e um RISC.

RISC é também a arquitetura adotada para os processadores dos videogames modernos, que proporcionam um hardware extremamente dedicado somente à execução do jogo, tornando-o muito mais rápido em relação a micro computadores com mais recursos, embora com processador x86.

RISC versus CISC

Todos os processadores dispõem de instruções de salto “de ida e volta”, normalmente designados de instruções de chamada de sub-rotinas: nestas, para além de se alterar o conteúdo do registro PC como qualquer instrução de salto, primeiro guarda-se o endereço de instrução que segue a instrução de salto ( e que se encontra no PC); nas arquiteturas CISC este valor é normalmente guardado na stack; nas arquiteturas RISC esse valor é normalmente guardado num registro.

Conjunto de instruções de um processador RISC: o conjunto de instruções que cada processador suporta é bastante variado. Contudo é possível identificar e caracterizar grupos de instruções que se encontram presentes em qualquer arquitetura.

Para transferência de informação: integram este grupo as instruções que transferem informação entre registros e a memória (load/store), entre registros (simulado no Assembler do MIPS, e implementando com uma soma com o registro 0), diretamente entre posições de memória (suportado por exemplo, no M680x0, mas não disponível em qualquer arquitetura RISC), ou entre registros e a stack, com incremento/decremento automático do sp (disponível em qualquer arquitetura CISC, mas incomum em arquiteturas RISC);

Operações aritméticas, lógicas, …: soma, subtração e multiplicação com inteiros e fp, e operações lógicas AND, OR, NOT, ShiftLeft/Right são as mais comuns; alguns processadores suportam ainda a divisão, quer diretamente por hardware, quer por microprogramação.

Acesso a operandos em memória em CISC e RISC:Uma das consequências do fato das arquiteturas CISC disporem de um menor número de registros é a alocação das variáveis escalares, em regra, a posições de memória, enquanto que nas arquiteturas RISC, a regra era a alocação a registros. Atendendo ao modelo de programação estruturada tão em voga nos anos 70, ao fato da maioria das variáveis escalares serem locais a um dado procedimento, e à necessidade do modelo de programação ter de suportar o aninhamento e recursividade de procedimentos, as arquiteturas CISC necessitavam de um leque rico de modos de endereçamento à memória, para reduzir o gap semântico entre uma HLL e a linguagem máquina.

Resume-se aqui, as principais diferenças entre as arquiteturas CISC e RISC, nas facilidades de acesso a operandos que se encontram em memória:

CISC: grande riqueza na especificação de modos de endereçamento; exemplo do i86: modo absoluto; por registro indireto –(R), – (SP), (SP)+; por registro base –(Rb)+desloc8,16,32, (Rb)+(R), (Rb)+desloc8,16,32; com acessos indiretos à memória, isto é, com apontadores para as variáveis sem memória armazenados em células de memória.

RISC: apenas em operações load/store e apenas 1 ou 2 modos; exemplo do MIPS: apenas (R)+desloc16.

Operações lógicas e aritméticas em CISC e RISC: Duas grandes diferenças se fazem notar entre estes 2 modelos: na localização dos operandos neste tipo de operações, e o nº de operandos que é possível especificar em cada instrução.

CISC: 1 ou mais operandos em memória (máx 1 no i86 e M68K); nem sempre se especificam 3 operandos (máx 2 no i86 eM68K).

RISC: operandos sempre em registros; 3 operandos especificados (1 dest, 2 fontes).

Gráfico exibindo a diferença entre a velocidade de processamento das instruções.

Como pode ser visto no gráfico acima, a quantidade de etapas pela qual a instrução nos processadores de arquitetura CISC e maior que as RISC, causando o efeito de demora para as instruções serem processadas.

Com o aparecimento de linguagens como FORTRAN, Algol, Simula, Pascal e C em 1950-1970 ajudou ao desenvolvimento de metodologias estruturas de programas, a construções lingüísticas de mais alto nível, e a maior quantidade de pessoas a escreverem programas, exigiam suporte eficiente e adequado, para poupar o trabalho de geração de código, pelos compiladores daquelas linguagens. Esta pressão viria a influenciar decisivamente a maioria dos processadores, ao ponto, de exemplo ilustrativo, chegar a haver um CPU que suportava diretamente o tipo de dados ‘lista ligada’, oferecendo instruções máquina para ‘inserir’ e ‘remover’ elementos de uma lista em memória. Instruções de grande complexidade e um grande número de instruções, são os dois principais aspectos que caracterizam um modelo CISC (Complex Instruction Set Computer). Os processadores atuais incorporados no computador pessoal (PC – Personal Computer) seguem esta filosofia.

Arquitetura Híbrida

Apesar de por questões de Marketing, muitos fabricantes ainda venderem seus chips, como sendo “Processadores RISC”, não existe praticamente nenhum processador atualmente que siga estritamente uma das duas filosofias. Tanto processadores da família x86, como o Pentium II, Pentium III e AMD Athlon, quanto processadores supostamente RISC, como o MIPS R10000 e o HP PA-8000, ou mesmo o G4, utilizado nos Macintoshs misturam características das duas arquiteturas, por simples questão de performance. Por que ficar de um lado ou de outro, se é possível juntar o melhor dos dois mundos? A última coisa que os fabricantes de processadores são é teimosos, sempre que aparece uma solução melhor, a antiga e abandonada.

Intel Pentium 3

Um exemplo de processador hibrido.

Examinando de um ponto de vista um pouco mais prático, a vantagem de uma arquitetura CISC é que já temos muitas das instruções guardadas no próprio processador, o que facilita o trabalho dos programadores, que já dispõe de praticamente todas as instruções que serão usadas em seus programas. No caso de um chip estritamente RISC, o programador já teria um pouco mais de trabalho, pois como disporia apenas de instruções simples, teria sempre que combinar várias instruções sempre que precisasse executar alguma tarefa mais complexa. Seria mais ou menos como se você tivesse duas pessoas, uma utilizando uma calculadora comum, e outra utilizando uma calculadora cientifica. Enquanto estivessem sendo resolvidos apenas cálculos simples, de soma, subtração, etc. quem estivesse com a calculadora simples poderia até se sair melhor, mas ao executar cálculos mais complicados, a pessoa com a calculadora científica disporia de mais recursos.

A ideia de construção de um processador híbrido é bastante interessante, pois faz com que finalmente PCs possam ter um desempenho realmente astronômica. A Intel, porém, errou feio em um detalhe importante do projeto do Pentium Pro: o seu decodificador CISC foi desenvolvido basicamente para trabalhar com código de 32 bits – ou seja, com sistemas operacionais como o Windows NT, OS/2 e Netware. (Nota: o Windows 95 é um sistema operacional híbrido; apesar da Microsoft declarar que se trata de um “sistema operacional de 32 bits”, isto não é totalmente verdade. Grande parte do seu código ainda é de 16 bits de modo a tornar-se compatível com aplicativos escritos para o Windows 3.x).

Isto quer dizer que, se tivermos um Pentium-200 e um Pentium Pro-200, um Windows 3.11 será mais rápido no Pentium e não no Pentium Pro, por mais incrível que possa parecer.

Conclusão: Não vale a pena adquirir um micro baseado no Pentium Pro se você for utilizar MS-DOS, Windows 3.x ou Windows 95. Processadores de outros fabricantes – em especial o 6×86 da Cyrix e o 5K86 da AMD – também possuem arquitetura híbrida CISC/RISC, com a vantagem de possuírem um decodificador otimizado para código tanto de 32 bits quanto de 16 bits. Nos chips atuais, que são na verdade misturas das duas arquiteturas, juntamos as duas coisas. Internamente, o processador processa apenas instruções simples. Estas instruções internas, variam de processador para processador, são como uma luva, que se adapta ao projeto do chip.

As instruções internas de um K6 são diferentes das de um Pentium por exemplo. Sobre estas instruções internas, temos um circuito decodificador, que converte as instruções complexas utilizadas pelos programas em várias instruções simples que podem ser entendidas pelo processador. Estas instruções complexas sim, são iguais em todos os processadores usados em micros PC. é isso que permite que um Athlon e um Pentium III sejam compatíveis entre sí.

O conjunto básico de instruções usadas em micros PC é chamado de conjunto x86. Este conjunto é composto por um total de 187 instruções, que são as utilizadas por todos os programas. Além deste conjunto principal, alguns processadores trazem também instruções alternativas, que permitem aos programas executar algumas tarefas mais rapidamente do que seria possível usando as instruções x86 padrão. Alguns exemplos de conjuntos alternativos de instruções são o MMX (usado apartir do Pentium MMX), o 3D-NOW! (usado pelos processadores da AMD, a partir do K6-2), e o SSE (suportado pelo Pentium III).

Referencias:
https://secure.wikimedia.org/wikipedia/pt/wiki/Processadores
http://br.geocities.com/thiago_ferauche/aulas/arquitetura/CISCxRISC.doc
http://alumni.ipt.pt/~brunobt/CISC_versus_RISC.htm#tabela
http://www.clubedohardware.com.br/printpage/857

Leitura complementar:

http://www.4shared.com/file/226765303/e5326018/Cisc_e_Risc.html
http://www.4shared.com/file/226765412/8e61774a/Plataformas_CISC_e_RISC.html
http://www.guiadohardware.net/artigos/risc-cisc/

[]‘s

USB 3.0 está chegando…

A chegada do USB 3.0 se aproxima, e o Centro de Tecnologia OpenSource da Intel já está trabalhando no suporte Linux para suas especificações. O padrão USB 3.0 comporta velocidades de conexão de 5Gbps (5120 Mbps, ou seja, 640 MB/s), e vem também com outras novidades.

Nosso grande amigo USB (Universal Serial Bus), é um padrão que foi desenvolvido em 1994 por um consórcio de empresas (dentre elas Intel, Agere, NEC, Apple, Microsoft e Hewlett-Packard), com o objetivo de possibilitar a conexão de periféricos aos computadores de forma Plug and Play, com reconhecimento imediato e sem a necessidade de desligar o computador. É notório o quanto o padrão se tornou absolutamente indispensável a qualquer pessoa que utilize um computador, já que atualmente utilizamos ele para ligar quase todos os tipos de periféricos em nossas máquinas… mouses, teclados, pendrives, HDs externos e portáteis, câmeras digitais, reprodutores de mídia, impressoras, scanners, controladores para jogos… enfim… a absoluta maioria dos periféricos externos presentes no mercado atualmente utilizam o padrão USB.

Ler mais »

Processadores Origens e Funcionamento

Processadores Origens e Funcionamento

Imagem ilustrativa de um processador.O processador é o cérebro do micro, encarregado de processar a maior parte das informações. Ele é também o componente onde são usadas as tecnologias de fabricação mais recentes. Existem no mundo(atualmente) apenas quatro grandes empresas com tecnologia para fabricar processadores competitivos para micros PC: a Intel (que domina mais de 60% do mercado), a AMD (que disputa diretamente com a Intel), a VIA (que fabrica os chips Via C3 e C7, embora em pequenas quantidades) e a IBM, que esporadicamente fabrica processadores para outras empresas, como a Transmeta.

A definição técnica para processadores é a seguinte :“É um circuito integrado de controle das funções de cálculos e tomadas de decisões de um computador, por isso é considerado o cérebro do mesmo. Ele faz parte de um importante elemento do computador, a Unidade Central de Processamento (em inglês CPU: Central Processing Unit). Hoje todos os circuitos e chips dispostos em diversas placas que compunham a Unidade Central de Processamento estão integrados no microprocessador.”

As origens

A historia dos processadores se mistura com a própria historia dos computadores. A ideia de se utilizar equipamentos para ajudar a “processar” não é nova. Os primeiros indícios de uso de instrumentos para auxílio na realização de operações matemáticas são do ábaco, em 500 A.C., pelos babilônicos. Este instrumento toma a forma que conhecemos hoje, na China em 1300.

O tempo passa e as primeiras evoluções significativas começam a surgir. Primeiro, em 1614, Scotsman John Napier “descobre” o logaritmo. Ele mesmo constrói uma máquina capaz de multiplicar, dividir e calcular raízes quadrada e cúbica de números. Depois, Wilhelm Schickard, em 1623, constrói o que é chamado de “Calculating Clock”, capaz de somar e subtrair números de até 6 dígitos, e que batia um sino quando havia overflow.

Em 1642, Blaise Pascal constrói uma máquina mecânica de somar que, apesar de ser mais limitada que o “Calculating Clock” de Schickard, fica muito mais conhecida. Ele consegue vender algo como uma dúzia delas em várias versões, calculando números de até 8 dígitos.

Em 1822, Charles Babbage teoriza seu primeiro computador mecânico, a sua máquina de diferença, que resolveria polinômios. Ele também teoriza sobre a máquina analítica, um dispositivo de propósito matemático geral. Na época, estas máquinas eram muito complicadas para serem construídas, mas a teoria funcionava. Estas máquinas utilizariam cartões perfurados para o armazenamento dos dados. Tentativas de construção da máquina de diferença foram feitas em 1832, juntamente com Joseph Clement, mas apenas um protótipo é construído.

Um outro avanço importante vem em 1848, quando George Boole cria sua álgebra booleana. Uma álgebra que trabalha com valores binários, o que veio dar sustentação e base para a construção dos computadores binários, quase um século depois. Em 1890, os Estados Unidos estão com um problema: o processamento dos dados do censo de 1880, feito à mão, demorou 7 anos. Estimava-se que o de 1890 demorasse 10 ou mais anos para ser processado. Então lançou-se uma competição para achar métodos melhores. Esta foi vencida por Herman Hollerith, que propunha a utilização de máquinas e cartões perfurados para guardar os dados. Resultado: o censo foi feito em 6 semanas. Isso impulsionou Hollerith a fundar, em 1896, a Tabulating Machine Company, que futuramente se tornaria a famosa IBM.

Lee De Forest, em 1906, inventa a válvula. Esta invenção é aquela que possibilita a futura construção de computadores digitas. O ENIAC, considerado um dos primeiros computadores, possuía 18.000 delas. Em 1911, a Tabulating Machine Company se funde a outras empresas, incluindo a Computing – Tabulating – Recording Company. Mais fusões acontecem e, em 1924, a International Business Company (IBM) é fundada, por Hermann Hollerith. Esta empresa será a responsável pelo lançamento do IBM PC, um sucesso de vendas, baseado em microprocessadores Intel.

Em 1928, outra companhia importante surge: a Galvin Manufacturing Corporation. Esta será a futura Motorola, hoje uma das grandes empresas em tecnologia de comunicação sem fio, e que produz processadores também. George Stibitz, no Bell Telephony Laboratories, constrói, em 1937, um somador binário de 1 bit utilizando relés. Apesar de ser considerando um dos primeiros computadores binários, era apenas uma demonstração.

A Hewlett-Packard (HP), hoje uma empresa importante, que adquiriu a Compaq recentemente, é fundada em uma garagem da Califórnia, em 1939. Neste ano também começa a segunda guerra mundial. Apesar de seu caráter, esse fato propicia o surgimento de várias novas tecnologias, que ajudam no desenvolvimento dos computadores, e processadores como um todo. O ENIAC, um dos primeiros computadores, é terminado de ser construído em 1946. Era enorme. Pesava cerca de 30 toneladas, e utilizava cerca de 18.000 válvulas em sua construção. Era capaz de realizar 100.000 cálculos por segundo, e foi utilizado principalmente para cálculo de trajetórias balísticas e testes de teorias relativas à bomba de hidrogênio.

Um dos mais importantes momentos para a história da computação, e para a dos processadores, aconteceu em 1947, no Bell Laboratories. Estudando maneiras de amplificar sinais elétricos, William B. Shockley, John Bardeen e Walter H. Brattain inventam o transistor. De tamanho e consumo de energia menores que a válvula, e com funcionamento imediato (a válvula precisava “esquentar” para funcionar), este invento possibilitaria a construção dos processadores como nós os conhecemos hoje.Podemos dividir a era moderna da computação em 4 gerações.

  • A primeira geração de chips (1945-1959) era lenta, enorme, usava válvulas, quilômetros de fios e os equipamentos esquentavam muito, muito mesmo.
  • A segunda geração (1959-1964) introduz os transistores e as placas de circuitos impressos. Isso diminuiu o tamanho dos equipamentos deixando-os mais rápidos.
  • Já a terceira geração (1964-1970) trouxe os circuitos integrados, que permitiram uma compactação muito grande dos elementos do computador e o processamento na ordem dos microssegundos.
  • A quarta geração (a partir de 1970) aperfeiçoou a tecnologia existente e iniciou uma miniaturização dos componentes. Afora, a velocidade de processamento de dados chegou aos nanosegundos. (bilionésima parte do segundo). É nessa quarta geração que a Intel começou a mostrar sua força com a criação do primeiro microprocessador: o Intel 4004. Começa assim a indústria dos computadores pessoais.

Desde esse tempo os processadores impulsionaram o desenvolvimento dos PCs, trazendo nessa onda os outros componentes, como HDs, placa de vídeo, memória e ampliando a necessidade de novos sistemas operacionais e aplicações. Quando chegamos a 1985, os processadores entram na era dos 32 bits com o Intel 80386. A partir desse ponto a evolução foi cada vez mais rápida. Lembrando a Lei de Moore (nome baseado no fundador da Intel, Gordon Moore), que diz que o número de transistores de um microprocessador é duplicado a cada 18 meses, a capacidade de processamento e a velocidade dos processadores começam a disparar.

O ano de 1989 marca o lançamento do Intel 80486 e, nesse mesmo ano, a fase da informatização das empresas entra em expansão. Com o Windows 3.1, em 1991, insere-se uma nova maneira de trabalho com os computadores pessoais. Nas empresas, as estações de trabalho passaram a fazer muitas operações que antes eram de responsabilidade dos grandes servidores. Os novos editores de texto e planilhas eletrônicas e a evolução dos recursos multimídia trouxeram novos horizontes para as aplicações, exigindo mais processamento e memória dos equipamentos. O Intel 80486 era o processador da máquina-padrão para essa época.
Impulsionada pelas novas aplicações e recursos, a Intel lança em 1993 o Pentium, com incríveis 60 MHz.

O Pentium ganhou cada vez mais velocidade e capacidade de processamento, e nos próximos anos a Lei de Moore funcionou como nunca. Em 1995 chegou o Pentium Pro e em 1997 o Pentium MMX. O ano de 1998 marca a chegada do Pentium II seguido em 1999 do Pentium III até que em 2001 chega o Pentium 4. Com o Pentium 4 as aplicações começam a ser escritas com instruções específicas para tirar muito mais proveito do novo processador. Em paralelo, a fabricante de chips AMD avançava com seus processadores K5, de 1996, K7, de 1997, e Athlon, que conseguiu fazer frente ao Pentium e à hegemonia da Intel no mercado.

Em 2002 o aumento da força e o aquecimento resultante da aceleração dos processadores revelaram-se limitadores de performance dos equipamentos, levando-se em conta apenas o aumento de frequências. Surge assim uma nova maneira de pensar em processamento, com o processador de núcleo duplo, que chega ao mercado em 2006. Os chips de núcleo duplo, como a linha Core Duo da Intel e X2 da AMD, contam com dois núcleos ativos de processamento ao invés de um só, como acontece em chips convencionais, o que proporciona uma performance maior quando se utiliza vários programas simultaneamente. Isso acontece porque os núcleos dividem as funções de controle e podem trabalhar com freqüências mais baixas, otimizando principalmente o acesso à memória do computador. Já os chips de quatro núcleos aumentam ainda mais a produtividade, já que os processos de seu computador podem ser coordenados simultaneamente com a mesma performance.

O funcionamento dos processadores

Central Processing Unit – Unidade Central de Processamento, as instruções (processos) que ele executa consistem em operações matemáticas e lógicas, além de operações de busca, leitura e gravação de dados. Um conjunto organizado de instruções, forma um programa. Todas essas operações são executadas na linguagem de máquina os processadores trabalham apenas com linguagem de máquina (lógica booleana). E realizam as seguintes tarefas: – Busca e execução de instruções existentes na memória. Os programas e os dados que ficam gravados no disco (disco rígido ou disquetes), são transferidos para a memória. Uma vez estando na memória, o processador pode executar os programas e processar os dados; – Controle de todos os chips do computador.

O processador é composto basicamente de quatro partes:

  • Unidade lógica e aritmética (ULA) ou em inglês Arithmetic Logic Unit (ALU) é a unidade central do processador (Central Processing Unit, ou simplesmente CPU), que realmente executa as operações aritméticas e lógicas referenciadas pelos opcodes. É, na verdade, uma “grande calculadora eletrônica” do tipo desenvolvido durante a II Guerra Mundial, e sua tecnologia já estava disponível quando os primeiros computadores modernos foram construídos.
  • Unidade de controle, responsável por gerar todos os sinais que controlam as operações no exterior do CPU, e ainda por dar todas as instruções para o correto funcionamento interno do CPU; a apoiá-la/o terá a colaboração de uma outra estrutura/actor (o decodificador de instruções).
  • Registradores são outro elemento,uma memória veloz que armazena comandos ou valores que serão importantes para o processamento de cada instrução. Os registros mais importantes são: – Contador de Programa (PC) – Sinaliza para a próxima instrução; – Registro de Instrução (IR) – Registra a instrução da execução; Os outros realizam o armazenamento de resultados intermediários.
  • Memory Management Unit (MMU)é um dispositivo de hardware que transforma endereços virtuais em endereços físicos e administra a memória principal do computador.

Componentes

Unidade lógica e aritmética

A Unidade lógica e aritmética (ULA) ou em inglês Arithmetic Logic Unit (ALU) é a unidade central do processador (Central Processing Unit, ou simplesmente CPU), que realmente executa as operações aritméticas e lógicas referenciadas pelos opcodes. É, na verdade, uma “grande calculadora eletrônica” do tipo desenvolvido durante a II Guerra Mundial, e sua tecnologia já estava disponível quando os primeiros computadores modernos foram construídos.

O matemático John von Neumann propôs o conceito de ULA em 1945, quando escreveu um relatório sobre os fundamentos para um novo computador chamado EDVAC. A tecnologia utilizada foi inicialmente relés, herança da telefonia, e posteriormente válvulas, herança da radiofonia. Com o aparecimento dos transistores, e depois dos circuitos integrados, os circuitos da unidade aritmética e lógica passaram a ser implementados com a tecnologia de semi-condutores.

A ULA executa as principais operações lógicas e aritméticas do computador. Ela soma, subtrai, divide, determina se um número é positivo ou negativo ou se é zero. Além de executar funções aritméticas, uma ULA deve ser capaz de determinar se uma quantidade é menor ou maior que outra e quando quantidades são iguais. A ULA pode executar funções lógicas com letras e com números. Resumindo: A ULA executa operações aritméticas comuns. Também toma decisões lógicas, resolvendo sintaxes lógicas em uma programação.

Unidade de Controle

A Unidade de controle é responsável por gerar todos os sinais que controlam as operações no exterior do CPU, e ainda por dar todas as instruções para o correto funcionamento interno do CPU; a apoiá-la/o terá a colaboração de uma outra estrutura/ator (o decodificador de instruções). A unidade de controle executa três ações básicas intrínsecas e pré-programadas pelo próprio fabricante do processador, são elas: busca (fetch), decodificação e execução.

Assim sendo, todo processador, ao iniciar sua operação, realiza uma operação cíclica, tendo como base essas três ações. Dependendo do tipo de microprocessador, a unidade de controle pode se ser fixa ou programável. A unidade fixa é aquela unidade que já vem com todo o conjunto de instrução programado em uma PLA que é construída pelo fabricante,dentro da UC. Por exemplo: os microprocessadores 8080/8085/Z80/6800/6502 possuem unidade de controle fixa. Um exemplo de unidade de controle programável pode ser visto nos processadores conhecidos como Bit Slices, essa arquitetura, além de permitir a construção das partes do computador usando módulos básicos Bit slices, permite ao projetista de hardware programar seu próprio conjunto de instruções.

Inicialmente, a UC de controle fornece o endereço de memória de onde deve retirar um byte ou mais, conhecido como chunk, esse chunk pode conter um código de operação-opcode, ou um operando também conhecido como dado. Lembre-se, na primeira posição de memória deve sempre ser gravado um opcode, pois só o opcode pode informar para a UC qual ação deve ser tomada depois.

Além de controlar a posição de memória que contém a instrução corrente que o computador está executando a UC, ao decodificar o opcode, informa à ULA qual operação a executar: soma ou subtração nos processadores de 8 bits. Nos processadores de 16 bits podem ser efetuadas as instruções de soma, subtração, divisão e multiplicação.

Em adição a essas operações que chamamos de aritméticas, a partir da decodificação do opcode, a UC tem a capacidade de realizar operações que denominamos operações lógicas, onde se incluem: E, Ou, Xor, comparação, deslocamento de bits para a direita e para a esquerda. Essas operações são basicamente as mesmas para grande maioria de microprocessadores que existem no mercado. Contudo, cada fabricante atribui a cada uma delas um mnemônico diferente, registra-os em um manual de instruções específico daquele processador, e o denomina conjunto de instruções.

Uma característica muito importante de nota é que a arquitetura de um processador pode ser orientada de dois tipos: por registrador ou para a memória. Se for orientada para registradores como no caso da arquitetura Intel, a ULA, após executar qualquer operação lógica ou aritmética, sempre vai armazenar o resultado no acumulador.

No caso de ser orientado para registradores, como é o caso dos microprocessadores da Motorola, nem sempre o resultado é armazenado no acumulador, podendo esse ser armazenado em qualquer posição de memória. Terminada a primeira instrução, a unidade de controle auto incrementa um contador, chamado de contador de programa e vai para a próxima instrução (tipicamente localizada na próxima posição da memória (endereço de memória), a menos que a instrução seja uma instrução de desvio informando o computador que a próxima instrução está em outra posição).

Registradores

O Registrador de uma unidade central de processamento é um tipo de memória de pequena capacidade porém muito rápida, contida no CPU, utilizada no armazenamento temporário durante o processamento. Os registradores estão no topo da hierarquia de memória, sendo assim são o meio mais rápido e caro de se armazenar um dado.

São utilizados na execução de programas de computadores, disponibilizando um local para armazenar dados. Na maioria dos computadores modernos, quando da execução das instruções de um programa, os dados são movidos da memória principal para os registradores, então as instruções que utilizam estes dados são executadas pelo processador, e finalmente, os dados são movidos de volta para a memória principal. As ações operativas do processador são realizadas nas suas unidades funcionais: na unidade aritmética e lógica – ULA (Aritmetic and Logic Unit), na unidade de ponto flutuante – UFP (Float Point Unit – FPU) ou talvez em uma unidade de processamento vetorial. No entanto, antes que a instrução seja interpretada e as unidades da CPU sejam acionadas, o processador necessita buscar a instrução de onde ela estiver armazenada (memória cache ou principal) e armazená-la em seu próprio interior, em um dispositivo de memória denominado registrador de instrução.

Em seguida a este armazenamento da instrução, o processador deverá, na maioria das vezes, buscar dados da memória (cache, principal ou mesmo de unidades de disco em fita) para serem manipulados na ULA. Esses dados também precisam ser armazenados em algum local da CPU até serem efetivamente utilizados. Os resultados de um processamento (de uma soma, subtração, operação lógica, etc.) também precisam, às vezes, ser guardados temporariamente na CPU, ou para serem novamente manipulados na ULA por uma outra instrução, ou para serem transferidos para uma memória externa à CPU. Esses dados são armazenados na CPU em pequenas unidades de memória, denominadas registradores.
Um registrador é, portanto, o elemento superior da pirâmide de memória , por possuir a maior velocidade de transferência dentro do sistema (menor tempo de acesso), menor capacidade de armazenamento e maior custo. Analisando os diversos parâmetros que caracterizam as memórias, descritos no item anterior, temos:

  • Tempo de acesso/ciclo de memória – por serem construídos com a mesma tecnologia da CPU, estes dispositivos possuem o menor tempo de acesso/ciclo de memória do sistema (neste caso, não é aplicável distinguir-se tempo de acesso e ciclo de memória, por serem sempre iguais), algo em torno de l0 a 20 nanossegundos, dependendo de tratar-se de CPU de um supercomputador ou de um microprocessador mais lento.
  • Capacidade – os registradores são fabricados com capacidade de armazenar um único dado, uma única instrução ou até mesmo um único endereço. Desta forma, a quantidade de bits de cada um é de uns poucos bits (de 8 a 64), dependendo do tipo de processador e, dentro deste, da aplicação dada ao registrador em si. Registradores de dados têm, em geral, o tamanho definido pelo fabricante para a palavra do processador, tamanho diferente dos registradores usados exclusivamente para armazenar endereços (quando há registradores com esta função específica no processador). Por exemplo, o processador Intel 80486, cuja palavra é de 32 bits, tem registradores também de 32 bits, inclusive registradores de endereços (os números que indicam os endereços de célula de memória principal do processador têm 32 bits); o processador Motorola 68000 tem registradores de dados de 32 bits (palavra de 32 bits) e registrador de endereços de 24 bits, enquanto os processadores da família IBM 43xx possuem registradores de dados de 32 bits e endereços de 24 bits.
  • Volatilidade – registradores são memórias de semicondutores e, portanto, necessitam de energia elétrica para funcionarem. Assim, registradores são memórias voláteis. Para a CPU funcionar sem interrupção, mesmo quando eventualmente a energia elétrica para o computador é interrompida, é necessário que o sistema de computação seja ligado a um dispositivo de alimentação elétrica denominado “no-break”, o qual é constituído de bateria ou gerador de corrente, conversor AC/DC.
  • Tecnologia – conforme mencionado no tópico anterior, os registradores são memórias de semicondutores, sendo fabricados com tecnologia igual à dos demais circuitos da CPU, visto que eles se encontram inseridos em seu interior. No entanto, há diversos modelos de tecnologia de fabricação de semicondutores, uns com tempo de acesso maior que outros, custos e capacidade de armazenamento, no mesmo espaço físico, diferentes. Tecnologias bipolar e MOS (“metal oxide semicondutor”) são comuns na fabricação de registradores, sendo descritas na disciplina “Circuitos Lógicos”.
  • Temporariedade – os registradores são memórias auxiliares internas à CPU e, portanto, tendem a guardar informação (dados ou instruções) o mais temporariamente possível. Acumuladores ou registradores de dados armazenam os dados apenas o tempo necessário para sua utilização na ULA.
  • Custo – devido à tecnologia mais avançada de sua fabricação, os registradores encontram-se no topo da pirâmide em termos de custos, sendo os dispositivos de maior custo entre os diversos tipos de memória.

Memory Management Unit

MMU (do inglês Memory Management Unit) é um dispositivo de hardware que transforma endereços virtuais em endereços físicos. Na MMU, o valor no registo de re-locação é adicionado a todo o endereço lógico gerado por um processo do utilizador na altura de ser enviado para a memória. O programa do utilizador manipula endereços lógicos; ele nunca vê endereços físicos reais. Normalmente o sistema atual de MMU divide o espaço de endereçamento virtual (endereços utilizados pelo processador) em páginas, cujo o tamanho é de 2n, tipicamente poucos kilobytes. A MMU normalmente traduz número de páginas virtuais para número de páginas físicas utilizando uma cache associada chamada Translation Lookaside Buffer (TLB). Quando o TLB falha uma tradução, um mecanismos mais lento envolvendo um hardware específico de dados estruturados ou um software auxiliar é usado.

Barramento

Para que o computador possa oferecer recursos e possibilidades diversas de uso ao usuário, é necessário a utilização de dispositivos adicionais, como placas de vídeo e de som, modem, disco rígido, teclado, etc. Estes componentes são conhecidos como Dispositivos de Entrada (teclado e mouse, por exemplo) e Saída (placa de vídeo e som, por exemplo). Em inglês, utiliza-se a sigla I/O, de Input/Output.

Para que o processador possa trabalhar com esses dispositivos, ele usa um barramento para se comunicar. Assim é possível que o processador envie informações (por exemplo, os dados para uma impressora, quando você pede para imprimir um arquivo) e receba (por exemplo, quando você digita algo no teclado). Esse barramento é conhecido como “barramento de dados” (ou data bus).

No entanto, quando o processador trabalha com a memória, ele faz uso de um “barramento de endereços” (também chamado de “clock externo”), pois através de um “endereço” é que o processador localizará os dados que precisa e que estão armazenados na memória do computador. É também por este barramento que o processador consegue determinar para qual dispositivo serão enviados os dados tratados. Seu valor é medido em Hz.

A grande maioria dos processadores, possui terminais ou pinos de contato (vulgarmente chamados de “perninhas”). Cada um destes pinos possui uma função e trabalha com 1 bit por vez. Assim, quando se diz que o barramento de dados trabalha a 16 bits, isso quer dizer que, pelo menos teoricamente, o processador destina 16 “perninhas” para esta função. A mesma regra vale para o barramento de endereços, ou seja, este também trabalha com uma certa quantidade de pinos, correspondentes à quantidade de bits.

Sinais de controle

Os processadores atuais possuem vários pinos (no mínimo, 400). Somente analisando friamente a arquitetura de cada tipo de processador existente (tarefa iminente a engenheiros eletrônicos) é possível saber qual a função de cada um. Os processadores, no entanto, possui algumas funções-padrão, ou seja, encontráveis em praticamente todos os processadores, independente do fabricante. Estas são conhecidas como “sinais de controle” (ou “sinais digitais”), também correspondem a pinos no chip do processador e algumas delas são citadas abaixo:

  • MIO: sinal para indicar se a operação em questão é de acesso a memória ou de E/S;
  • RW: sinal para indicar se a operação em questão é de leitura ou gravação;
  • INT: sinal para que dispositivos externos possam interromper o processador para que ele efetue uma operação que não pode esperar. Por exemplo, quando o HD interrompe o processador para avisar o término de uma operação de leitura. Como existe somente um sinal INT, o processador opera em conjunto com um mecanismo denominado “Controlador de Interrupções” (que trabalha com as conhecidas IRQs). Como vários dispositivos podem requisitar o processador num mesmo instante, através deste controlador é possível realizar todas as operações de forma organizada;
  • NMI: sinal de interrupção especial, usado em emergências, onde a interrupção enviada por este sinal deve ser atendida prontamente. O NMI geralmente é usado informar erros relacionados a dados na memória;
  • INT A: sinal usado para que o processador informe que aceitou uma interrupção e que está aguardando que o dispositivo que a gerou passe as instruções;
  • VCC: entrada de corrente elétrica que alimenta os circuitos internos do processador (pode haver vários VCC no processador);
  • GND: sinal usado para controle de energia (como se fosse um fio-terra). Também pode ser encontrados vários deste sinal no processador;
  • RESET: sinal ligado ao botão RESET do gabinete do computador. Ao ser ativado, o processador pára o que está fazendo e inicia as operações novamente, como se o usuário tivesse acabado de ligar a máquina;
  • CLOCK: este recebe um sinal digital usado internamente para sincronizar todo o funcionamento do processador.

Velocidade é clock

Clock é um circuito oscilador que tem a função de sincronizar e ditar a medida de velocidade de transferência de dados no computador, por exemplo, internamente ou externamente (barramento). Esta frequência é medida em ciclos por segundo, ou Hertz. A velocidade do processador está relacionada não exclusivamente ao clock, mas sim a instruções por ciclos deste clock. Qualquer alteração realizada de forma a fazer com que o processador trabalhe acima de sua capacidade normal de trabalho, para o qual foi projetado, é denominada Overclocking.

Como funciona o clock?

É um pequeno cristal de quartzo que fica na placa mãe, tem exatamente a mesma função: marcar o tempo. Para que o computador funcione, tudo tem que funcionar de maneira sincronizada, como uma orquestra. Cada vez que é gerado um pulso de clock, todos os dispositivos realizam uma operação, param e continuam o que estiverem fazendo no próximo ciclo. Como num cruzamento, onde os carros trafegam hora num sentido, hora no outro, orientados pelo farol.

O cristal vibra numa frequência de 4,77 MHz. Esta frequência é multiplicada pela placa mãe para gerar os 66 ou 100 MHz do barramento. Outros dispositivos podem dividir ou multiplicar a frequência da placa mãe: o barramento PCI por exemplo funciona a 33 MHz, caso a placa mãe esteja funcionando a 66 MHz, então a frequência será dividida por 2, ou seja, para cada 2 ciclos da placa mãe será gerado um ciclo do barramento PCI. Se a placa estiver funcionando a 100 MHz então a frequência será dividida por 3. O processador multiplica a frequência da placa mãe. Um Pentium II de 400 MHz por exemplo multiplica por 4 a frequência de 100 MHz da placa mãe, gerando 4 ciclos para cada ciclo da placa. Um 200 MMX multiplica por 3 a frequência de 66 MHz gerada pela placa mãe e assim por diante.

Clock interno e externo

Daqui que vem termos como processadores K6 II de 500 MHz, Pentium III de 800 MHz, Athlon XP de 2 GHz, etc. O clock é uma forma de indicar o número de instruções que podem ser executadas a cada segundo (ciclo). Sua medição é feita em Hz (sendo que KHz corresponde a mil ciclos, MHz corresponde a 1000 KHz e GHz corresponde a 1000 MHz). Assim, um processador Pentium II 800 MHz, indica que o mesmo pode realizar 800 milhões de ciclos por segundo. Algumas instruções podem precisar de vários ciclos para serem executadas, enquanto outras, uma ciclo só. A seguir, as diferenças entre clock interno e clock externo:

Clock interno: o clock interno indica a frequência na qual o processador trabalha. Portanto, num Pentium 4 de 2,8 GHz, o “2,8 GHz” indica o clock interno. Este geralmente é obtido através de um multiplicador do clock externo. Por exemplo, se o clock externo for de 66 MHz, o multiplicador terá de ser de 3x para fazer com o que processador funcione a 200 MHz (66 x 3).

Clock externo: também conhecido como FSB (Front Side Bus), o clock externo, por sua vez, é o que indica a freqüência de trabalho do barramento (conhecido como barramento externo) de comunicação com a placa-mãe (na verdade, chipset, memória, etc). Por exemplo, o processador AMD Sempron 2200+ trabalha com clock externo de 333 MHz.

Nos processadores da linha Athlon 64, a AMD (fabricante) passou a adotar a tecnologia HyperTransport que, basicamente, usa dois barramentos para comunicação externa: um para acesso à memória e outro para acesso ao chipset. Na verdade, é este último que recebe o nome de HyperTransport. Até então, os processadores usavam apenas o barramento externo para os dois tipos de acesso. Com o HyperTransport, a AMD passou a indicar a velocidade de trabalho deste ao invés do clock externo. Um detalhe de extrema importância, é que esses ciclos de clock diferem de fabricante para fabricante. Por isso, um Pentium 4 de 2.4 GHz (2400 MHz), não é igual ao Athlon XP de 2.4 GHz. Este último, na verdade, trabalha a 2.0 GHz, mas sua velocidade é semelhante ao de um Pentium 4 de 2.4 GHz. Por isso, a AMD informa a velocidade que é semelhante ao do processador do fabricante concorrente.

Memória cache

Os processadores, evidentemente, sofreram grandes aperfeiçoamentos ao longo dos anos. No entanto, chegou-se a um ponto em que estes evoluíram de forma tão rápida que o acesso à memória do computador ficou comprometida, pois apesar de também ter sofrido boas mudanças, a memória é mais lenta para ser acessada, fazendo com que o processador não conseguisse trabalhar com toda sua velocidade, devido a sua dependência da velocidade de acesso aos dados da memória. Esse problema ficou notável a partir do ano de 1990, quando os processadores passaram a trabalhar acima de 25 MHz.

Uma solução para este problema seria usar memórias rápidas, como a SRAM, mas estas eram muito caras e inviabilizariam a compra de computadores. Além disso, tais memórias eram complexas e grandes, o que exigiria mais espaço interno no gabinete da máquina. Mesmo assim, a idéia não foi totalmente descartada, pois serviu de base para uma solução eficiente: a memória cache. A memória cache consiste numa pequena quantidade de memória SRAM, incluída no chip do processador. Quando este precisa ler dados na memória RAM, um circuito especial, chamado de controlador de Cache, transfere os dados mais requisitados da RAM para a memória cache. Assim, no próximo acesso do processador, este consultará a memória cache, que é bem mais rápida, permitindo o processamento de dados de maneira mais eficiente. Enquanto o processador lê os dados na cache, o controlador acessa mais informações na RAM, transferindo-as para a memória cache. De grosso modo, pode-se dizer que a cache fica entre o processador e a memória RAM.

Tipos de memória cache

Atualmente, existem 3 tipos de memória cache, que serão mostrados a seguir:

Cache L1 (Leve 1 – Nível 1 ou cache interno): trata-se de um tipo de cache em uso desde o processador 486. É chamado de cache interno porque se localiza dentro do processador. O cache L1 é tão importante para o processador, que este, mesmo tendo clock inferior, pode ser mais rápido que um processador de clock superior, mas sem cache. O tamanho deste cache pode ir de 16 KB (como o Pentium) a 512 KB (como o Pentium 4). Os processadores 486 tinham cache de 8 KB.

Cache L2 (Level 2 – Nível 2 ou cache externo): o cache L1 não era totalmente perfeito, pois tinha tamanho pequeno e apresentava alguns erros, que obrigavam o processador a buscar os dados na memória RAM. Um solução foi a implantação de uma memória cache fora do processador. Eis a cache L2, que para ser usada, necessita de um controlador, que geralmente é embutido no chipset da placa-mãe. É este chip que também determina o tamanho máximo do cache L2. O tamanhos mais comuns são os de 256 KB e 512 KB, mas é perfeitamente possível a existência de caches maiores. Um fato importante a ser citado, é que diversos processadores trazem o cache L2 embutido dentro de si, fazendo com que as terminologias Interno e Externo perderem o sentido.

Cache L3 (Level 3 – Nível 3): trata-se de um tipo incomum, usado pelo processador AMD K6-III. Este possui o cache L2 embutido em si, de forma que o cache L2 existente na placa-mãe pudesse ser usado como uma terceira cache. Daí o nome L3. Tal fato fez do K6-III um processador muito rápido em sua época.

Co-processador aritmético

Dois dos primeiros processadores existentes, o 8086 e 8088, poderiam trabalhar em conjunto com um processador especial, chamado 8087. A função deste processador era a de realizar cálculos matemáticos complexos. O processador, quando muito, passaria então a executar cálculos mais simples e a se preocupar com outras instruções. O 8087 é o que conhecemos hoje como “Co-processador aritmético” ou “Co-processador matemático”. Seu nome em inglês é FPU (Floating Point Unit – Unidade de de Ponto Flutuante).

Esse recurso, hoje em dia, é embutido no processador, e seu uso é considerado indispensável, pois ele é projetado para realizar os mais diversos tipos de cálculo. Só para dar uma noção da importância do co-processador, uma operação matemática, que no processador necessita de várias instruções para ser concluída, pode ser realizada em uma única instrução pelo co-processador.

Modos de Operação

Para que os processadores mantivessem a compatibilidade de operação entre eles foram desenvolvidos 2 modos de operação :

  • Modo Real – O processador se porta exatamente como um 8086, possuindo exatamente o mesmo conjunto de instruções e acessando apenas 1 MB de memória. (nenhum recurso extra é conseguido).
  • Modo Protegido – Onde o processador pode atingir o máximo de seu desempenho com um conj. de instruções mais complexo e uso de recursos extras como : Proteção de Memória e Multitarefa

Referencias:

http://paginas.terra.com.br/informatica/manutencaopcs/processadores/index.htm
http://www.htmlstaff.org/ver.php?id=10926
http://www.ic.unicamp.br/~gregorio/arqs/trabalhos/Relatorio-02.doc
http://www.das.ufsc.br/gia/computer/node14.html
http://www.di.ufpb.br/raimundo/Hierarquia/Registradores.html
http://www.infowester.com/processadores1.php
http://www.infowester.com/processadores2.php
Link para download do artigo em PDF.

Pagina 2 of 212
SEO Powered by Platinum SEO from Techblissonline