Você está na página 1de 11

1.

Introdução

Ao longo do tempo, a indústria da computação teve um avanço tecnológico


assombroso, motivado sobretudo pela busca de computadores cada vez mais rápidos
e potentes, algo que teve seu início com o advento dos computadores eletrônicos na
década de 40 e que alguns anos depois acompanhou aquilo que acabou sendo
considerados por muitos como uma previsão muito assertiva, para não dizer profecia,
daquilo que enunciou Gordon Moore em 1965, e que ficou conhecida como a famosa
Lei de Moore.

“Se o setor de transportes, por exemplo, tivesse tido o mesmo desenvolvimento da


indústria da computação, hoje nós poderíamos viajar de Nova York a Londres em
aproximadamente um segundo por apenas alguns centavos” (PETTERSON,
HANNESSY, 2017).

Toda essa evolução acabou culminando na terceira revolução, chamada revolução


informacional e que trouxe consigo uma mudança em nível global em diversas áreas
como economia, ciência, telecomunicação, etc. Nesse sentido, o computador foi
responsável por romper fronteiras permitindo expandir nossos horizontes e tornando
possível aquilo que até pouco tempo atrás era considerado ficção, como por exemplo,
os carros autoguiados, realidade aumentada, busca por planetas habitáveis, só para
citar alguns exemplos.

Diante de tudo isso fica evidente que o computador é algo de suma importância e seu
estudo dentro da disciplina de Arquitetura de computadores é essencial para aqueles
que estão interessados em entender o seu funcionamento e até mais ainda, a como
projetá-lo.

Porém, antes de prosseguirmos é preciso ter primeiro em mente qual o objetivo da


disciplina de arquitetura de computadores. Segundo consta em nosso plano de
ensino, o objetivo da disciplina de arquitetura de computadores é:

“Entender a organização e arquitetura básicas de um computador, em especial a


estrutura interna de uma CPU, a ligação com a memória e funcionamento do
barramento”.

Mas além disso, é necessário sabermos também o porquê de estudarmos arquitetura


de computadores. Dentre os vários motivos apresentados em nosso livro texto, talvez
uma das motivações mais interessantes seja a que foi apresentada no relatório final
datado de 15 de dezembro de 2001 da Força Tarefa Conjunta sobre Currículos de
Computação da IEEE - ACM (Joint Task Force on Computing Curricula IEEE
Computer Society Association for Computing Machinery), segue o texto:

“The computer lies at the heart of computing. Without it most of the computing
disciplines today would be a branch of theoretical mathematics. To be a professional
in any field of computing today, one should not regard the computer as just a black box
that executes programs by magic. All students of computing should acquire some
understanding and appreciation of a computer system’s functional components, their
characteristics, their performance, and their interactions. There are practical
implications as well. Students need to understand computer architecture in order to
structure a program so that it runs more efficiently on a real machine. In selecting a
system to use, they should to able to understand the tradeoff among various
components, such as CPU clock speed vs. memory size. ”

“O computador está no âmago da computação. Sem ele, a maior parte das disciplinas
de computação hoje seria um ramo da matemática teórica. Para ser um profissional
em qualquer campo da computação hoje, não se deve considerar o computador como
apenas uma caixa preta que executa programas como que por mágica. Todos os
alunos de computação deverão adquirir algum conhecimento e apreciação dos
componentes funcionais de um sistema de computação, suas características, seu
desempenho e suas interações. Também existem implicações práticas. Os alunos
precisam entender arquitetura de computador a fim de estruturar um programa de
modo que ele seja executado de forma mais eficiente em uma máquina real.
Selecionando um sistema para usar, eles deverão ser capazes de entender a decisão
entre diversos componentes, como velocidade de clock da CPU versus tamanho de
memória. ”

Ou seja, por ser o nosso objeto de estudo, o computador precisa ser entendido por
nós engenheiros ou cientistas da computação, não apenas de modo superficial, mas
indo fundo nas suas entranhas de modo compreender o funcionamento dos
componentes que o compõe, como se dá suas interconexões e etc... Tudo isso, para
que tenhamos uma base de como se projetar sistemas computacionais ou até mesmo
de poder decidir qual tipo de computador é mais adequado ou eficiente para
determinado uso ou aplicação. Além disso, a obtenção de conhecimentos de
arquitetura de computadores nos possibilita que o desenvolvimento de softwares mais
eficientes.

À primeira vista dar uma definição ou apresentar como os componentes de um


computador funcionam e estão interligados, pode parecer um pouco difícil devido a
gama variada dos tipos de computadores que podemos encontrar no mercado devido
ao seu:

 Tamanho;
 Custo;
 Aplicação;

Isso sem falar na rápida e imparável evolução tecnológica que é característica do


próprio campo da computação, principalmente no que diz respeito a tecnologia
envolvida na construção de seus componentes físicos como também no uso de
conceitos mais engenhosos relacionados a organização paralela dos seus
componentes.

Apesar de tudo isso, conceitos basilares sempre estarão presentes. Bem a grosso
modo, o que podemos afirmar com base na pequena série de vídeos produzida pela
instituição sem fins lucrativos intitulada Corde.org chamada How Computers Work é
que basicamente, desde os primeiros computadores que possuíam alavancas
mecânica e engrenagens, passando pelos computadores do século XX – período no
qual passou-se a utilizar os primeiros componentes elétricos em sua construção –
chegando aos dias atuais em que os computadores cabem na palma da nossa mão,
essencialmente quatro coisas não mudaram, e são elas responsáveis por fazer um
computador, um computador:

1. Sua capacidade de receber dados (Input);


2. Armazená-los (Storage);
3. Processá-los (Processing);
4. Exibir o resultado (Output);

Obviamente esses são conceitos bem superficiais e sendo assim, a disciplina de


arquitetura de computadores vem no intuito de possibilitar uma análise muito mais
profunda de tudo isso, nos levando a se debruçar sobre cada um desses aspectos e
ir destrinchando cada um de seus respectivos níveis até chegar em sua parte mais
elementar, não nos limitando assim, a parte rasa desse oceano tecnológico que
cercam os computadores.

1.1 Organização e arquitetura

A distinção básica entre arquitetura e organização de computador pode ser dada da


seguinte forma:

 Arquitetura de computador refere-se aos componentes de um sistema


computacional que influenciam de modo direto na execução de um programa e
que portanto, são visíveis ao programador;
 Organização de computador diz respeito as unidades operacionais e suas
interconexões, sendo assim, invisíveis ao programador.

Tanto a arquitetura quanto a organização de computadores podem influenciar ou não


diretamente um no outro na hora de se conceber um computador. É possível por
exemplo manter uma família de computadores de mesma arquitetura e ir mudando
apenas sua organização, sem que isso impacte o software. Um caso interessante
sobre isso é o da família de computadores da Apple conhecida com Power PC, que
devido a sua baixa ineficiência energética relacionada a sua arquitetura foi
descontinuada, para dar lugar a arquitetura x86 dos processadores da Intel. A
consequência disso, foi que os programas tiveram de ser reescritos todos para a nova
arquitetura. Além disso, é interessante notar também que computadores da
arquitetura x86 não suportam por exemplo a instalação de um sistema operacional de
64bits, como é o caso por exemplo do Windows 7 64bits.
Figura 1. Falha na instalação do Sistema Operacional Windows 7 64bits em um PC de Arquitetura x86

Um outro exemplo interessante dessa relação seria também o caso da instalação de


drivers, que devem obedecer ao tipo do SO e consequentemente da arquitetura do
computador.

1.2 Estrutura e função

A melhor forma de compreender a organização interna e o funcionamento de um o


computador é analisando cada nível hierárquico que o compõe, se preocupando
apenas com o nível hierárquico atual, e em seguida, ir avançando para os níveis mais
internos. É necessário ter em mente que cada nível possui seus componentes de tal
forma que estes estão interconectados entre si, e além disso, cada nível possui uma
estrutura: forma como os componentes estão conectados entre si; e uma função: que
seria a operação individualizada de cada componente.

Função: Todo computador dever ser capaz – funcionalmente falando – de realizar


quatro coisas:

 Processar dados;
 Armazenar dados: mesmo que o processamento sobre esses dados se dê de
forma dinâmica;
 Movimentar dados: receber ou enviar dados, um processo que denominamos
de E/S, quando os dados são obtidos através de um dispositivo (periférico)
conectado diretamente ao computador e movimentação dos dados, quando
eles percorrem distâncias maiores com por exemplo numa transmissão de
dados sem fio entre um computador e um roteador;
 Controle: uma função destinada a gerenciar as três funções anteriores;

Estrutura: internamente, o computador possui basicamente quatro componentes


estruturais:

 UCP: também conhecida como CPU (Central Processing Unit)


 Memória principal
 E/S: responsável por prover a comunicação entre o computador e o ambiente
externo para envio e recebimento de dados;
 Interconexão do sistema: canais de comunicação direta entre a CPU, memória
principal e E/S. Nessa estrutura em específico, é interessante citarmos aqui os
famigerados IRQ (Interrputed Resquest), canais utilizados por hadware para
“chamar a atenção” do processador. Em alguns computadores antigos era
possível ver na inicialização, a BIOS exibindo alguns códigos de IRQ, como no
que pode ser visto na imagem abaixo:

Figura 2. Tela de inicialização de um computador, na qual a BIOS exibe códigos de IRQ

A CPU é um componente muito complexo e sua estrutura interna merece uma atenção
especial, mesmo porque, a própria unidade de controle está dentro dele, e por isso, o
mesmo está encarregado pelo controle de todo o computador. Abaixo temos os
seguintes componentes:

 Unidade de controle;
 ULA;
 Registradores;
 Interconexão da CPU;

2. Evolução e desempenho do computador

Ao longo do tempo, o computador vem se tornando uma máquina cada vez mais
rápida e poderosa. Graças aos avanços tecnológicos adquiridos na fabricação dos
processadores que permitiram a miniaturização em escala manométrica de seus
componentes, além da aplicação de técnicas de organização de sua estrutura interna
e de técnicas cada vez mais eficientes de controle e gerenciamento de seus recursos,
foi possível atingir a incrível velocidade de processamento de dados na casa de
bilhões de dados por segundo (GHz).

Contudo, ao passo que os processadores ficavam cada vez mais rápidos, um


descompasso muito grande surgiu no lado das memórias. Enquanto processadores
operavam na casa dos GHz, a velocidade de acesso a memória principal está na casa
dos Mega hertz. Isso sem falar na memória secundária, infinitamente mais lentas do
que as memórias principais.

Assim, de uns anos para cá, muito se dedicou no processo de desenvolvimento de


memórias, numa tentativa de balancear essa diferença absurda entre velocidade de
processamento e acesso (leitura e gravação) dos dados na memória. O resultado
disso, foi a criação de memórias com chips muito mais rápidos, como foi o caso
recente da criação do padram DDR4, no qual a frequência de operação varia dos
2.133 Mhz até 4.266 Mhz e que, detalhe, é muito mais eficiente do que seu padrão
anterior DDR3, consumindo 1,2V em comparação com os 1,5V da anterior.

Ainda nesse campo, de jogo desigual entre processador e memória, estão as


memórias secundárias. Os dispositivos de armazenamento em massa, os HDs, talvez
sejam os dispositivos mais lentos que fazem parte do computador. Por serem ainda o
único componente mecânicos que compõe o computador, o HD possui um limite físico
muito grande não só em velocidade (leitura e gravação), mas também em tamanho
físico. Felizmente isso vem mudando. Hoje em dia a unidade de estado sólido, o
famoso SSD (Solid State Drive) são muito mais rápidos do que um HD convencional,
chegando a taxas de leitura e escrita de 290 MB/s, 130 MB/s, respectivamente. Esse
ganho de velocidade é muito grande, entretanto, o seu “calcanhar de Aquiles” está,
na capacidade de armazenamento e custo, algo que os HDs possuem como trunfo.

2.1 Um breve histórico dos computadores

Primeira geração: válvulas

Assim como muitas invenções como o GPS, radar, micro-ondas, internet, o


computador também foi concebido para propósitos militares. Construído inicialmente
com o intuito de realizar cálculos balísticos na segunda guerra, o ENIAC (Eletronic
Numerical Integrator And Computer) foi considerado o primeiro computador eletrônico
de uso geral do mundo. tendo como base em sua construção as válvulas.

Talvez uma das características mais importantes do ENIAC, tenha sido o fato de ele
ter sido um computador decimal e não binário como os que temos hoje. Além disso,
sua programação era totalmente manual e terminou de ser construído um ano depois
após o fim da guerra, sendo utilizado posteriormente nos cálculos de viabilização da
construção da bomba de hidrogênio.

Já o primeiro computador de programa armazenado, o IAS, é atribuído ao matemático


húngaro de origem judaica, mas naturalizado estadunidense John Von Neumann, que
no ano de 1945, propôs em seu artigo um computador com essa característica,
chamado por ele de EDVAC (Eletronic Discrete Variable Computer).

Estruturalmente, o IAS possuía:

 Memória principal: para armazenamento de dados e instruções;


 ULA: capaz de operar sobre dados em binário;
 Unidade de Controle: responsável por interpretar as instruções na memória,
fazendo assim com que os programas fossem executados;
 Equipamento de entrada e saída (E/S): operado pela Unidade de Controle;

O interessante a se observar, é que o IAS, é um computador, que diferente do ENIAC,


operava utilizando a base binária;

Segundo Neumann:
 O computador deveria possuir uma parte específica para realização de cálculos
aritméticos básicos como soma, subtração, multiplicação e divisão, chamada
de CA (Cetral Arithmetic);
 Deveria também, possuir uma Central de Controle (CC), responsável pelo
gerenciamento lógico do dispositivo;
 Deveria possuir uma quantidade de memória considerável para a realização de
cálculos matemáticos de grande complexidade (M);
 Além de tudo isso, o computador deveria ter a capacidade de manter contato
com os dispositivos de E/S através de um meio de gravação (R).
 A entrada de dados (I), deve acontecer sempre da memória (M) e em seguida
para C;
 A saída de dados (O) deve ocorrer de M para R e nunca diretamente para C;

Toda essa estrutura serviu de base para muito do que se veio depois na construção
dos computadores, até chagarmos aos dias atuais e por isso, eles são chamados de
máquinas de von Neumann.

A memória do IAS é formado por espaços de armazenamento chamado palavras


(words) compostas de 40 bits, onde se armazenam números e instruções:

 Números: o bit inicial representa o sinal, e os demais para representam os


algarismos;
 Instruções: são formados por 20 bits, sendo os 8 bits iniciais para representar
o código de operação da instrução (opcode) e os 12 restantes para o endereço
de uma palavra na memória.

Cada word, ou palavra pode conter até duas instruções.

Basicamente a Unidade de Controle busca as instruções na memória e executa uma


cada vez.

Internamente, a ULA possui vários registradores:

 Registrador de buffer de memória (MBR, memory buffer register);


 Registrador de endereço de memória (MAR, memory address register);
 Registrador de instrução (IR, instruction register);
 Registrador de buffer de instrução (IBR, instruction buffer register);
 Contador de programa (PC, program conter);
2.5 Avaliação de desempenho

O desempenho de um processador é um dos principais requisitos exigidos ao avalia-


lo. Contudo, essa característica é difícil de ser aferida pois, ao contrário do que se
pensa, sua velocidade não é parâmetro que irá definir isso, aliás, é a forma como ele
opera ao executar determinada operação, que vai fazer a real diferença. Ou seja, o
seu desempenho acaba ficando atrelado a como aquela aplicação que está sendo
executada, foi escrita. Em outras palavras, um programa bem escrito pode extrair o
maior desempenho de um processador, do que um programa mal escrito conseguiria,
isso sem falar na linguagem escolhida, no compilador utilizado. Por isso muitas vezes
ao nos depararmos com sites especializados que fazem reviews nos mostram que um
processador opera muito bem em um programa de CAD por exemplo, mas deixa a
desejar ao executar um programa de edição de vídeo.

Velocidade do clock e instruções por segundo

Todas as atividades executadas pelo processador, assim como outros dispositivos


que necessitam de uma base de tempo com razoável estabilidade, precisam ser
sincronizadas. Para isso, um material piezoeléctrico – especificamente um cristal de
quartzo – é utilizado, funcionando da seguinte forma: ao excitarmos com placas de
metal, formando assim um capacitor, e usarmos uma corrente de alta frequência,
formam-se ondas estacionárias de frequência de ressonância, muito bem
estabelecidas. Essas oscilações são então convertidas em um stream de pulsos
digitais de voltagem que são fornecidos assim ao processador e que por
consequência, acabam determinando sua frequência de operação. Esse sinal que é
fornecido ao processador, é o que chamamos de clock interno.

Dessa forma, um processador que opera por exemplo a 800 MHz, significa que ele é
capaz de receber 800 milhões de ciclos de clock por segundo, um outro que opera a
1 GHz, recebe 1 bilhão de ciclos de clock por segundo.

A partir desse ponto você pode acabar pensando: “ah, então o processador que que
tem o maior clock, é o mais rápido”. – Pèèènnn (onomatopeia) – ERRADO! Isso
porque, a depender do projeto do processador, pode ser que para ele executar uma
instrução, sejam necessários dois ciclos de clock, por exemplo. Com isso, a taxa de
clock recebida por um processador não é simplesmente arbitrária, ela depende
também de seu layout físico. Para se manter os níveis lógicos de tensão adequados
relacionadas aos bits de um determinado dado que precisa ser processado, pode ser
que seja necessário, um novo ciclo de clock, pois alguns sinais podem acabam
mudando mais rápidos do que outros, isso sem falar no tempo de estabilização
necessária para que as tensões atinjam seus valores corretos.

Você também pode gostar