Aula 01 Infraestrutura

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 24

FUNDAMENTOS DE

INFRAESTRUTURA DA
TECNOLOGIA DA
INFORMAÇÃO
AULA 1

Prof. Gian Carlo Brustolin

1
CONVERSA INICIAL

Este estudo nos propiciará um contato inicial com diversos temas


essenciais ao entendimento das facilidades que permitem a operação da
máquina computacional. Com ela objetivamos criar um alicerce elementar, bem
como um vocabulário básico que facilitará a construção do conhecimento, já
neste momento inicial, das disciplinas específicas de seu curso.
Abordaremos tópicos como a evolução dos equipamentos
computacionais, conheceremos seus principais componentes e entenderemos
como o hardware é projetado e opera. Faremos um breve estudo sobre os
sistemas operacionais que gerenciam tais hardwares. Finalmente, concluiremos
com noções de redes de computadores, roteamento e segurança de redes. Será,
como já percebemos, uma jornada nada monótona, ao final da qual teremos
formado um dicionário de termos técnicos ligados a computação que nos
permitirão percorrer com maior tranquilidade as próximas disciplinas.
Para iniciar, vamos conhecer a história da computação, para então
examinar rudimentos de sistemas embarcados e desempenho computacional.

TEMA 1 – CONCEITOS BÁSICOS

Um computador é uma máquina criada para automatizar o tratamento da


informação. Este tratamento, entretanto, não envolve apenas os equipamentos
eletrônicos, mas também a organização da informação e a criação de sistemas
que automatizem seu uso e transformação (Velloso, 2022, p. ix).
De qualquer forma, não há como negar o papel central ocupado tanto pelo
hardware (HW) computacional, como também pelos algoritmos e códigos
computacionais que tratam os dados a serem consumidos.

1.1 Principais funções do computador

Marçula e Pio (2009, p. 47) entendem as máquinas computacionais como


dispositivos que processam dados por meio de algoritmos. A Figura 1 ilustra o
entendimento dos autores.

2
Figura 1 – Ações da máquina computacional

Fonte: Marçula; Pio, 2009, p. 44.

Uma outra forma, um pouco mais sintética, de entender as funções


executadas pela máquina, é assumir uma divisão quaternária para elas, como a
seguir:

Figura 2 – Quatro funções centrais do computador

Crédito: Jorge R.P.

Nessa interpretação, uma máquina computacional, além de processar


(tratar ou transformar) os dados, responsabiliza-se por sua movimentação,
armazenamento e controle.
A movimentação ocorre sempre que um dado é transitado entre a
memória interna e as interfaces de saída, entre a interface de entrada e a
memória interna ou entre memórias.
O armazenamento dos dados pode ser temporário, nesse caso realizado
na memória principal da máquina, para consumo imediato do processador, ou
definitivo, nesse caso com uso da memória secundária.

3
A função de controle garante que as movimentações e o armazenamento
ocorram de forma precisa, disponibilizando os dados para o processamento,
quando necessário.
De forma a viabilizar a operação destas funcionalidades a máquina
computacional, deve contar com uma estrutura bastante própria.

1.2 Estrutura do computador

Marçula e Pio dividem a estrutura básica do computador segundo descrito


no diagrama a seguir:

Figura 3 – Blocos rudimentares de HW

Fonte: Marçula; Pio, 2009, p. 49.

De maneira análoga, Stallings (2017) propõe dividir a estrutura da


máquina em quatro esferas principais, a saber: memória, barramento, interfaces
de entrada/saída e CPU. O autor, entretanto, segue descendo em detalhamento,
dividindo a função da CPU em 4 outros sub-blocos funcionais conforme se
observa abaixo:

Fonte: Stallings, 2017.

4
O bloco Entrada/Saída é a interface com o exterior e pode ser
representada por conexões como USB, HDMI etc. A memória, normalmente,
está segregada fisicamente e pode ser alterada de forma relativamente
independente da CPU. O barramento é a conexão física entre os blocos
funcionais. O elemento central da arquitetura é o processamento que é,
fisicamente, composto por um chip formado por processador e registradores (ou
memórias internas). O processador, ou microprocessador pode ser
funcionalmente dividido em unidade de controle e unidade de lógica aritmética
(ULA). A primeira unidade é responsável pelo controle das movimentações de
dados na máquina, ao passo que a segunda (ULA) realiza operações aritméticas,
transformando os dados.
Arquiteturas recentes, dada a evolução da eletrônica de processamento,
impulsionam a capacidade computacional pela implementação de vários núcleos
(cores) de processamento, em um mesmo chip. De fato, cada núcleo é um
processador completo, conforme se vê na ilustração a seguir:

Figura 4 – CPU e Placa-mãe

Fonte: Stallings, 2017.

Na Figura 4 vemos uma placa-mãe contendo uma CPU de múltiplos cores.


A placa-mãe, em uma máquina computacional, é a eletrônica de maior porte a
qual todas as demais eletrônicas são conectadas.
Na Figura 5observamos uma placa-mãe de um Intel i7 que possui esta
característica de múltiplos núcleos.

5
Figura 5 – Motherboard Intel i7

Crédito: MMXeon/Shutterstock.

TEMA 2 – EVOLUÇÃO DO COMPUTADOR

Acabamos de conhecer, ao menos rudimentarmente, as máquinas


computacionais contemporâneas. Os computadores, entretanto, passaram por
uma evolução gradual, embora em um período temporal surpreendentemente
pequeno, vamos agora conhecer a história dessa máquina que alterou o destino
da humanidade.

2.1 Primeira Geração – Válvulas

Os primeiros esforços, bem-sucedidos, para automatizar o tratamento de


informações datam do final da segunda grande guerra. Eram máquinas
eletromecânicas com muitas partes móveis cuja operação dependia de
complexos procedimentos de entrada e interpretação de dados.
O primeiro computador desprovido de componentes mecânicos, móveis,
foi denominado ENIAC (Electronic Numeric Integrator and Computer). Esta
monstruosidade custou o equivalente a 16 milhões de dólares, pesando 30
toneladas e ocupando uma centena de metros quadrados. A enorme máquina,

6
entretanto, possuía capacidade de processamento alguns milhões de vezes
inferior ao smartphone que você possui hoje.
A eliminação dos componentes mecânicos que possibilitou a construção
do ENIAC foi possível graças a evolução de uma chave eletrônica rudimentar,
controlada por tensão, denominada válvula. As válvulas, embora
representassem um considerável avanço para a época, demandavam grandes
quantidades de energia e dissipavam calor infernal.

Figura 6 – ENIAC

Crédito: Everett Collection/Shutterstock.

As pesquisas em materiais sólidos permitiram a substituição das válvulas


por chaves de estado sólido denominadas transistores. Transistores consomem
dezenas de vezes menos energia que as antigas válvulas e têm dimensões
milimétricas.

7
2.2 Segunda Geração – Transistores

Computadores menores passaram a ser viáveis com a produção industrial


de transistores. Essas novas máquinas permitiram a implementação do conceito
de multiprogramação. Para facultar esse novo passo foi necessário o
desenvolvimento de uma aplicação de controle da ocupação da máquina
(Marçula; Pio, 2009, p. 38), denominada sistema operacional.

Figura 7 – Máquina de Segunda Geração

Crédito: Nasa-CC/PD.

Como se pode observar, embora o uso de transistores tenha permitido


certa redução de tamanho dos dispositivos, ainda estamos longe das máquinas
portáteis de uso generalizado, da atualidade.

2.3 Terceira Geração – Circuitos integrados

Computadores ainda menores passaram a ser viáveis com concentração


de vários transistores em um único substrato, sem a necessidade de encapsula-

8
los individualmente. O primeiro processador de um único chip foi produzido para
a IBM em 1964. Essa invenção a converteu no maior produtor de computadores
do mundo dominando mais de 70% do mercado.

Figura 8 – Primeiros computadores pessoais

Crédito: Zurel/Shutterstock.

2.4 Gerações posteriores

A partir do surgimento do primeiro circuito integrado comercial o processo


de integração assumiu uma curva ascendente de derivada elevada,
popularizando os computadores pessoais, ao mesmo tempo que crescia a
conectividade disponível, dando origem aos primórdios da internet, em 1983.

9
Em 1971, entra em produção o primeiro microprocessador Intel, o modelo
4004, que implementa a ideia de concentração das funcionalidades principais
em um único circuito integrado (ALU e controlador, inicialmente). Apenas em
1975, entretanto, a Intel lança o 8080, dentro do mesmo princípio, mas focado
nos computadores pessoais.
Segundo Marçula e Pio (2009, p. 39), essa evolução finalmente tornou
viável a existência de uma máquina, relativamente de baixo custo, capaz de
tratar informações em todas as formas percebidas pelos humanos, como textos,
animações, áudio e vídeo.

2.5 Evolução da arquitetura x86

Popularizado o 8080 e padronizada a arquitetura interna dos


computadores, a Intel, seguida por outros poucos fabricantes, iniciou-se a
produção de processadores em larga escala de forma independente dos
fabricantes de computadores, evoluindo o processador sempre que possível.
As primeiras evoluções estão focadas na ampliação dos barramentos
internos. Originalmente o 8080 tratava apenas dados de 8 bits, assim como seu
sucessor mais veloz o 8086, mas a próxima evolução gerou o 80286, capaz de
tratar 2x8 bits, seguido, em 1989, pelo 80486 que, adivinhe, possui barramentos
de 4x8 bits.
Em 1995 uma alteração interessante de arquitetura dá origem ao Pentium
Pro com barramento de 64bits e clock de 200MHz, quatro vezes mais veloz que
o 80486. Em 2006 a Intel lança o Core Duo, iniciando a tendência a integrar mais
de uma ULA em um único circuito integrado, duplicando, nesse caso, a
capacidade de processamento.
Desde o lançamento do Pentium observou-se que o acréscimo de uma
memória interna ao circuito integrado, intermediária (denominada cache),
permitia operações mais eficientes. As primeiras caches contavam com apenas
8kB de espaço, mas evoluíram, na arquitetura i9 atual, para mais de 16MB.

TEMA 3 – SISTEMAS EMBARCADOS

Acabamos de conhecer as máquinas computacionais utilizadas por


humanos ou em sistemas de alta complexidade, como servidores em
datacenters, por exemplo. A essas máquinas normalmente nos referimos como

10
computadores tradicionais. O cenário atual, entretanto, contempla um segundo
tipo de máquinas computacionais, estas bem mais simples que as que acabamos
de examinar, trata-se da computação embarcada.

3.1 Conceitos básicos de sistemas embarcados

Sistemas embarcados são eletrônicas, processadores ou mesmo


pequenas placas-mãe, fabricadas para que façam parte de um produto qualquer
ou utilizadas para aferir, manipular ou atuar no ambiente externo, diretamente
conectadas às redes de computadores, sem mediação humana.
Ao passo que na computação tradicional são produzidos milhões de
máquinas a cada ano, na eletrônica embarcada, os números atingem, com
facilidade, bilhões de unidades. Naturalmente, nesse caso, por se tratar de um
sistema de processamento embarcado em um produto, as restrições de projeto
são bem mais importantes, exigindo cuidados com consumo de energia,
otimização de espaço de memória, peso, dimensões e custo.
Um sistema embarcado, segundo Stallings (2017), pode ser descrito
aproximadamente pelo diagrama a seguir:

Figura 9 – Controladora para sistemas embarcados

Fonte: Stallings, 2017.

Observe que o diagrama da controladora de sistemas embarcados é


muito semelhante ao diagrama de blocos de um computador tradicional (para
uso humano). A grande diferença, além das otimizações antes citadas, refere-se
à importância de cada bloco.

11
Sistemas embarcados precisam de sistemas de atuação ou de percepção
resilientes, uma vez que estas serão suas funções primordiais. A interface
humana, por sua vez, em sistemas embarcados, tem baixa ou nenhuma
importância. Essas características, associadas as restrições de projeto já
citadas, implicam em controladoras com boa parte da eletrônica dedicada à
conversão analógico-digital e vice-versa. Esse fato reduz ainda mais o
orçamento para as demais funções da controladora, o que torna regra geral o
uso de processadores de baixo desempenho ou de arquiteturas há muito
obsoletas para uso humano, mas que bem se adaptam ao processamento
simplório dos sistemas embarcados.

3.2 Microprocessadores e microcontroladores

A computação embarcada, como agora já sabemos, deve respeitar as


restrições de consumo de energia, otimização de espaço de memória, peso,
dimensões e custo. Diante disso, a indústria desenvolveu circuitos integrados
que associam ao processador tradicional, as funções próprias da eletrônica
embarcada, estes circuitos são chamados de microcontroladores.
Na Figura 10 podemos ver uma arquitetura típica de um microcontrolador:

Figura 10 – Microcontrolador

Fonte: Stallings, 2017.

12
A concentração das funções em um único chip apresenta vantagens em
relação a resiliência do conjunto e às restrições de projeto, mas deveremos
aceitar perda de desempenho e ausência de flexibilidade da arquitetura como
elementos de compensação.

3.3 Arquitetura ARM – Sistemas de baixa/média complexidade

A empresa ARM (ARM Holdings) se tornou a principal fabricante de


microcontroladores para sistemas embarcados, criando o que denominou
arquitetura, ou família, ARM (Advanced RISC Machine). Nesse caso, os
membros da família não guardam propriamente uma relação de evolução entre
eles, como ocorreu na família 8080.
Dadas as características da computação embarcada processadores mais
lentos nem sempre são uma desvantagem, inexistindo neste caso a
obsolescência tecnológica.
À semelhança das placas mãe da computação tradicional, em eletrônica
embarcada, temos também vários fabricantes das chamadas placas inteligentes.
Uma das arquiteturas mais utilizadas, principalmente quando se agrega
processamento a um produto posteriormente é a Raspberry Pi. A seguir
observamos duas dessas placas, equipadas por microcontroladores de
desempenho bastante distinto. A Raspberry Pi ARM M0 é utilizada para missões
de controle com baixa exigência de processamento, ao passo que a Raspberry
Pi ARM M4 tem foco em aplicações com exigências médias de processamento
local.

Figura 11 – Placas de Microontroladores Raspberry

Crédito: Daniel Chetroni/Shutterstock; Nataliajakubcova/Shutterstock.

13
Como se observa, mesmo visualmente, nas imagens acima, a segunda
placa (M4) possui um HW mais sofisticado, principalmente no que se refere às
I/Os, contando com interfaces de rede, USB, áudio e Ethernet. Dessa forma,
torna-se mais “utilizável” pelo humano que seu irmão mais rústico, M0.
Quando tratamos de eletrônica embarcada ou mesmo de IoT (que pode
utilizar os mesmos HWs), há dois motivos para que se restrinja a capacidade de
processamento das placas. A primeira está ligada à baixa demanda de
processamento intrínseca da aplicação que utiliza o hardware. A segunda refere-
se à possibilidade de exportar o processamento mais denso para máquinas de
nuvem ou servidores de rede, associados à placa de controle (Monk, 2018).

3.4 Arquitetura ARM – Sistemas de alta complexidade

Observamos que as placas para sistemas embarcados podem crescer em


complexidade, conforme delas se exija maior desempenho, atingindo, em seu
limite, o hardware (e o custo) de um computador pessoal.
Neste ponto você deve estar se perguntando: qual é a vantagem destas
outras placas complexas e caras em relação às tradicionais? De fato, embora o
custo e capacidade se aproximem de uma placa-mãe de um computador
pessoal, o HW será desprovido dos periféricos e de empacotamentos
ergonômicos, tornando o custo final substancialmente diverso entre as duas
máquinas.
Há ainda uma segunda aplicação para os sistemas embarcados de alta
complexidade: trata-se da computação móvel, a exemplo dos smartphones.
Esses computadores móveis podem fazer parte da família antes descrita (ARM
A78, por exemplo), entretanto, utilizam processadores e periféricos específicos
para sua finalidade.

TEMA 4 – FUNCIONAMENTO BÁSICO DO CICLO DE INSTRUÇÃO

Quando descrevemos as máquinas computacionais desde sua origem até


a contemporaneidade, assumimos que seu HW evoluiu par e passo com o SW
que as controla. Na verdade, nem sempre o computador contou com instruções
de software que definem sua operação e, mesmo hoje, nem todos as possuem.
Vamos entender melhor o que acabamos de afirmar.

14
4.1 Hardwired

Comentamos que, com o início de produção dos transistores, no início da


segunda metade do século passado, viabilizou-se o embarque de inteligência
em equipamentos e objetos. As primeiras máquinas eletrônicas inteligentes, ou
seja, capazes de realizar com controlada independência, tarefas determinadas,
possuíam, exclusivamente, uma eletrônica de controle dedicada a estas tarefas.
Dito de outra forma, projetava-se uma eletrônica de controle específica para cada
tarefa ou equipamento. A este procedimento denomina-se projeto ou
programação hardwired.

4.2 Componentes básicos da CPU

Verificou-se, logo, que, na maioria dos casos, esses projetos dedicados


tinham custo maior que o desenvolvimento de uma eletrônica de controle
genérica que pudesse ser programada externamente para cada tarefa.
Essa segunda abordagem permite ganho de escala na produção do
hardware, tanto no que se refere ao cérebro da eletrônica (o processador) quanto
ao substrato de conexão (placa-mãe) além de facilitar o projeto da solução como
um todo. Para que essa ideia fosse viável, categorizaram-se as facilidades de
controle mais usadas em um conjunto de componentes lógicos básicos que
podem ser combinados de diversas maneiras para armazenar e processar
dados. Alguns exemplos desses componentes lógicos são os somadores,
registradores e contadores.

Figura 12 – Componentes de hardware padronizados

Crédito: Jorge R.P.

15
Quando desejamos, por exemplo, somar um dado com outro, devemos
armazená-los temporariamente em uma posição do registrador e, então,
utilizaremos o somador. O resultado será também armazenado no registrador
temporário para, em seguida, repousar definitivamente em posição de memória
externa.

4.4 Programação com instruções

Padronizar apenas o hardware, entretanto, de nada adiantaria. Foi


necessário criar um método padrão de acesso e escolha destes componentes,
agora disponíveis em um único circuito integrado, como ilustrado na Figura 13.

Figura 13 – Hardware padronizado

Crédito: Jorge R.P.

16
Dessa forma, foram criadas instruções, códigos binários que, quando
inseridos no HW, produzem, por efeito, a entrada em operação de determinados
componentes em detrimento de outros. Assim, uma instrução pode compelir o
hardware a ler uma entrada digital e multiplica-la por uma constante, devolvendo
o valor calculado para a saída, por exemplo.
Podemos então definir a instrução como um sinal de controle do hardware
gerado a partir de um código ou software. Para que o HW consulte as instruções,
memorizadas em local padronizado, as execute e busque o próximo sinal, será
necessário criar um ciclo de acesso às instruções.

4.5 Ciclo de Instrução

Com esta ótica, que acabamos de entender, a função básica de uma


máquina computacional pode ser definida como executar instruções,
sequenciadas em um código, software ou programa computacional. O
processamento de uma instrução é chamado de Ciclo de Instrução, que pode
ser dividido em dois ciclos menores, de busca e de execução, conforme
esquematizado no fluxo da figura abaixo.

Figura 14 – Ciclo de Instrução

Fonte: Stallings, 2017.

Observando a imagem, entendemos que o processador acessa a primeira


instrução, que estará memorizada em local (endereço) padronizado para aquele
hardware, a executa e verifica se esta é a última instrução do código. Em caso
negativo, o processador incrementa o endereço de busca e acessa a próxima
instrução, a executa...
Esse processo sequencial, entretanto, apresenta um inconveniente: se
desejarmos realizar uma tarefa assíncrona, prioritária em dado momento,

17
teremos que aguardar o término natural do programa. Para equacionar esta
deficiência imaginou-se acrescentar a possibilidade de interromper,
assincronamente, o processamento das instruções.

4.6 Ciclo de instrução com interrupção

Como dissemos, a execução de uma tarefa prioritária, imprevista,


necessita de uma facilidade de interrupção do ciclo de instruções. O diagrama
abaixo ilustra como esta possibilidade pode ser acrescida a ele.

Figura 15 – Ciclo de Instrução com Interrupção

Fonte: Stallings, 2017.

O acréscimo da possibilidade de interrupção torna o processamento mais


próximo das necessidades humanas. Os exemplos mais evidentes de
interrupção são o movimento do mouse ou a pressão de uma tecla especial, mas
existem interrupções geradas pela própria operação do sistema, a exemplo de
uma janela de entrada de dados ou mesmo uma busca de informações por outra
máquina computacional.
A interrupção de instruções pode ocorrer em cascata, ou seja, durante o
atendimento a uma interrupção, existe a possibilidade da máquina receber uma
nova interrupção. A solução encontrada para o tratamento de interrupções
simultâneas é a adoção de níveis, de forma a se criar uma priorização entre elas.

18
TEMA 5 – QUESTÕES DE DESEMPENHO

Como já compreendemos, embora a capacidade de processamento dos


HWs tenha crescido paulatinamente, os blocos funcionais básicos são os
mesmos desde sua sedimentação arquitetônica há mais de 60 anos.
Por esse motivo, sempre será necessário entender as métricas que
estabelecem padrões de desempenho, auxiliando-nos a perceber quão ótima é
a aplicação que desenvolvemos em relação a máquina que a utilizará.

5.1 Velocidade do processador

As instruções que controlam os processadores em pouco diferem entre


os vários microprocessadores, posto que, seus blocos funcionais básicos são
idênticos. Como as instruções são semelhantes e os ciclos de instrução
padronizados, para que se obtenha melhor desempenho resta aumentar a
velocidade com a qual os ciclos são executados. A velocidade básica de um
processador é dada por um cristal oscilador cuja frequência determina o clock
ou relógio interno do processador. Este relógio sincronizará os acessos às
instruções. Assim, quanto maior o clock mais rápido o processamento das
instruções.

Figura 16 – Clock do processador

Fonte: Stallings, 2017.

19
Atingido o limite de velocidade de clock, como já sabemos, o próximo
passo é a agregação de mais de um núcleo processador em um mesmo circuito
integrado. Esta agregação acrescenta desempenho enquanto se aguarda um
novo salto de clock.
Esse crescimento exponencial da capacidade de processamento,
praticamente dobrando a cada dois anos, fenômeno conhecido como lei de
Moore, aparentemente se aproxima, na atualidade, da estagnação. Segundo
Aquino (2022, p. 27), a demanda por energia e o controle da dissipação de calor
estabeleceram um limite físico para a Lei de Moore.
Por esse motivo, o desafio da obtenção de maior poder de processamento
se converte hoje na busca pelo melhor desempenho da máquina existente,
otimizando algoritmos, maximizando os resultados computacionais

5.2 Balanço de desempenho

A fixação de nossa busca de maior desempenho na velocidade do


processador, por vezes, nos faz esquecer que máquina computacional não é
constituída de um único bloco de processamento. De fato, como vimos
anteriormente, há outros blocos como I/Os, memórias etc.
O desempenho de processamento de uma máquina computacional
dependerá de todos os componentes envolvidos no atendimento às instruções
de programação de um dado código. Assim, se nosso software faz contínuo uso
do disco rígido, por exemplo, o desempenho final da máquina dependerá, além
da velocidade do processador, da capacidade de resposta deste periférico.
A imagem abaixo compara, em bits por segundo, a velocidade de acesso
aos dados de alguns dispositivos típicos de I/O.

20
Figura 17 – Taxa de dados típica de dispositivos de entrada e saída

Fonte: Stallings, 2017.

Como se pode observar, o uso de dispositivos periféricos impacta


significativamente o desempenho de processamento. Esse fato nos indica que o
controle minucioso dos acessos a periféricos deve ser um cuidado importante na
otimização de códigos computacionais.

5.3 Flops

Uma maneira diversa de se medir o desempenho de processamento, em


relação a velocidade do processador, é a medição do tempo necessário para
executar instruções complexas. Essa métrica toma por referência uma operação
aritmética de ponto flutuante, ou seja, que opera com números de múltiplos
dígitos, não inteiros. Essa é uma operação complexa porque depende de vários
ciclos de instrução para tratar as grandezas binárias não inteiras. Dessa forma,
podemos comparar desempenhos tomando o número de operações de ponto
flutuante por segundo ou, em inglês, floating point operations per second, Flops.
Computadores da atualidade são capazes de tratar aproximadamente
dois trilhões destas instruções por segundo. Uma máquina equipada com
processador Intel I9, por exemplo, tem capacidade máxima de 1.700 GFlops.

21
5.4 Lei de Amdahl

Esta lei refere-se ao ganho de desempenho não linear, auferido pelo


aumento de núcleos de processamento. É calculado pela razão entre o tempo
de processamento de um programa com uso de apenas um núcleo e o tempo de
processamento do mesmo programa com uso de N núcleos.
Sabemos que, ao aumentarmos a velocidade do processador, obtemos
ganho de desempenho graças a maior taxa de processamento de instruções.
Dito de outra forma, o aumento da frequência de clock pode aportar um
ganho linear de desempenho em um programa guardado o que comentamos
sobre acesso a periféricos. Assim, se um programa toma, por exemplo, 15
segundos para ser processado, ao dobrarmos o clock do processador, o mesmo
programa poderá ser concluído em metade do tempo, ou seja 7,5 segundos.
Esperávamos então que, ao acrescentarmos mais núcleos, o mesmo efeito
linear ocorresse, ou seja, dobrando-se o número de núcleos, por exemplo,
reduziríamos o tempo pela metade.
E não é assim?
Não!
O ganho de desempenho por acréscimo de núcleos de
processamento depende do índice de paralelismo do programa. Dito de
outra forma, um novo núcleo só será útil se o programa puder processar
informações em paralelo. A lei de Amdahl vincula justamente o ganho de
desempenho com o “índice de paralelismo” (f).
A equação resultante, apresentada abaixo, dita equação de speedup, será
não linear e dependente, portanto de f e N.
𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒 𝑜𝑜 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 𝑒𝑒𝑒𝑒 𝑢𝑢𝑢𝑢 ú𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 1
𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆 = =
𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒 𝑜𝑜 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 𝑒𝑒𝑒𝑒 𝑁𝑁 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 (1 𝑓𝑓
− 𝑓𝑓) +
𝑁𝑁

Índices “f” típicos são 0,5 para aplicações como players de música e
editores de texto (no limite inferior) e 0,95 para buscas em bancos de dados (no
limite superior). O gráfico abaixo ilustra a equação de speedup para alguns “f”:

22
Figura 18 – Lei de Amdahl

Fonte: Stallings, 2017.

Conforme se observa na Figura 16, um hardware poderoso pode se tornar


inútil se desconhecermos os seus parâmetros e arquitetura. No caso específico
dos modernos processadores com múltiplos núcleos, o software precisa ser
desenhado para aproveitar as vantagens do paralelismo.

FINALIZANDO

Concluímos, neste ponto, nossa primeira etapa. Conhecemos alguns


conceitos fundamentais ligados à arquitetura de máquinas computacionais, seu
funcionamento elementar e parâmetros de desempenho. Certamente você está
curioso quanto ao real processo envolvido no consumo dos dados pela máquina,
sua transformação em dados digitais, endereçamento da memória e
armazenamento.
Por esse motivo, em nosso próxima etapa, aprofundaremos nossos
conhecimentos da eletrônica presente nas máquinas computacionais, bem como
examinaremos o papel do Sistema Operacional na administração dos recursos
do computador.

23
REFERÊNCIAS

AQUINO, P. A Lei de Moore e os avanços tecnológicos: computação quântica. O


Comunicante, v. 12, n. 1, p. 26-30, 2022. Disponível em:
<http://www.ebrevistas.eb.mil.br/OC/article/view/11328/9071>. Acesso em: 28
mar. 2024.

MARÇULA, M.; PIO, A. B. F. Informática - conceitos e aplicações. (5th edição).


Editora Saraiva, 2009.

MONK, S. internet das coisas: uma Introdução com o Photon – série Tekne
Grupo A, 2018.

STALLINGS, W. Arquitetura e organização de computadores. 10. ed. São


Paulo: Pearson, 2017.

VELLOSO, F. C. Informática: conceitos básicos. 11. ed. São Paulo: Grupo GEN,
2022.

24

Você também pode gostar