sexta-feira, 2 de outubro de 2015

"Throughput": Inglês, Informatiquês e as velocidades de padarias e computadores


Inglês é um idioma muito peculiar. Afora as exceções (como verbos irregulares, uso de proposições, etc) é uma língua bastante lógica e relativamente simples. Muitos vão discordar, claro. Lógica e simplicidade não tem que ser coisas óbvias, na maior parte das vezes, precisam ser encontradas e essa busca pela lógica e simplicidade pode ser demorada e trabalhosa.

Vejamos, por exemplo, a palavra "input". "Input" significa, numa tradução bastante livre:"entrada de insumos" ou, em alguns casos, apenas "insumos". Insumos são as matérias-primas necessárias para fazermos alguma coisa. Por exemplo, quais de que insumos são necessários para fazermos um pão? Claro, isso vai vai depender do tipo de pão que se vai fazer, mas em geral para fazer um pão, precisamos de água, farinha, sal, açúcar e fermento. Neste caso, os "insumos" são os ingredientes da receita. Para montar um carro, uma montadora usa as peças separadas e segue um roteiro específico, um plano de montagem. Os "insumos", então, são as peças. Para montar uma tabela dos jogos de um campeonato de futebol, precisamos de informações sobre quais times estão participando, como os jogos foram sorteados, quais jogos já aconteceram, quais seus resultados, etc. Os "insumos", neste caso, são as informações. Insumo, ou entrada, é o que entra num sistema, o que o alimenta de modo que ele produza um resultado, às vezes também chamado de "Saída". "Entrada” e “saída”, aqui, não se referem às portas ou caminhos de entrada e saída, como poderiam em outros contextos, mas sim àquilo que entra e que sai do sistema. Entram ingredientes, sai pão; entram peças, sai um carro; entram as informações necessárias e sai uma tabela dos jogos do campeonato.

A sequência de passos do processo pelo qual o sistema recebe um input e produz um output é o que chamamos de "algoritmo" de um sistema. Todo processo de produção de coisas concretas envolve "insumos" (ingredientes, peças, informações sobre o campeonato) e um "algoritmo" (roteiro de ação, o "como fazer", seja pão, um automóvel ou uma tabela do campeonato).

Se input representa os insumos, ou a "entrada", do sistema, output significa o resultado, o produto ou a "saída", do sistema. Essas duas palavras em inglês, input e output, são, cada uma, formadas por duas outras palavras em inglês, assim:

input = in + put


output = out + put

onde:

in significa "em", "dentro";

out significa "fora"; e

put é um verbo que pode ter muitos significados mas, aqui, pode ser traduzido como "colocar algo em algum lugar" ou "passar algo por algum lugar".

Assim, temos que input significa colocar (algo) dentro, inserir, ou antão aquilo é que inserido no sistema para que ele produza um resultado (nem sempre desejado). Input é tanto o ato de fornecer algo ao sistema quanto aquilo que é fornecido.

Output, por sua vez, significa colocar (algo) para fora, ou aquilo que produzido e posto para fora do sistema, o resultado da ação do sistema sobre o input. Alguns talvez prefiram dizer que output é o resultado da interação do sistema com o input, o que, para os fins deste texto, dá quase na mesma.

Até aqui, tudo muito simples,até quem estudou o verbo "to be" durante tantos anos na escola já sabia disso tudo. Talvez não fosse capaz de explicar com clareza, mas entendia os significados de input e output.

Mas, e a expressão throughput?

Through significa, bastante literalmente, "através", em alguns casos pode significar "por intermédio de". E agora?

vamos tentar o mesmo que fizemos antes.

throughput
= through + put

"Colocar através?"

"Atravessar" algo pelo sistema?

Não tão literalmente, claro, mas bem próximo disso. Throughput significa, a passagem de algo pelo sistema, o tempo entre o momento que os ingredientes (input) entram no processo de fazer pão (sistema) e o momento em que o pão (output) sai do sistema. Mais especificamente, throughput significa a velocidade do processo em que o sistema produz um output a partir de um input. Em uma padaria, seria a velocidade em que se produzem pães, a partir dos ingredientes, supondo que o estoque destes seja bem grande, quantos pães são produzidos por hora? Numa montadora de carros, o throughput seria a medida de quantos carros são produzidos por unidade de tempo, digamos, carros por  semana ou por mês. Podemos chamar essas velocidades de "taxa de produção" (de pães ou de carros. Uma “taxa de produção” também poderia ser medida pra a produção de tabelas dos jogos do campeonato mas, neste caso, como a tabela provavelmente será feita uma única vez (mesmo que, depois, façamos várias cópias, a elaboração da tabela está terminada) é mais interessante falar em “tempo de produção” de uma tabela. Um detalhe importante de lembrar é que, a taxa (ou velocidade) de um processo é inversamente proporcional ao tempo que o processo demora. Assim, quanto maior o tempo de um processo, menos sua velocidade.

Em informatiquês brasileiro (um idioma esquisito que mistura português e inglês e é falado por gente esquisita que em geral gosta de ficção científica e toma muito café) throughput pode ser traduzido como "taxa de transferência", “velocidade de processamento”, ou “velocidade de comunicação”. Por exemplo, o tempo entre um comando dado ao computador, digamos, "abra meu navegador de internet" e a janela do navegador estar aberta na tela do computador depende de uma série de transferências de dados. Primeiro, temos a velocidade de digitação do comando, que representa o tempo entre o usuário decidir enviar o comando e inseri-lo corretamente através do teclado. Depois, temos a velocidade com o comando inserido é transferido à CPU. Depois, há uma série de operações complexas entre a memória e o processador. A memória RAM recebe os dados do comando a uma velocidade de entrada (tempo necessário para que cada bit seja lido e gravado na memória) e enviada ao processador a uma velocidade de saída (tempo necessário para que cada bit seja lido na memória e enviado ao processador), temos a velocidade de transmissão dos dados entre a memória e o processador, depois o tempo de processamento, depois o tempo de envio de volta à memória, etc, até que são enviados à tela do computador, onde você vê a janela do navegador na sua frente (e, ao mesmo tempo, tem o navegador disponível para acessar as páginas que quiser). Cada passo deste processo ocorre a velocidades diferentes. Cada passo do processo pode ter uma velocidades diferente, relacionada ao componente do sistema sendo utilizado. Os dados "passam" ou "fluem" através de partes diferentes do sistema, a taxas (ou velocidades) específicas para cada passagem.

Da mesma forma que teríamos pães por hora, no caso de medirmos a taxa de produção de uma padaria, ou carros por semana como medida da taxa de produção de automóveis, a velocidade de processamento ou taxa de transferência (throughput) de um sistema computacional é uma medida de quantas unidades de informação podem ser processadas em um dado intervalo de tempo e suas unidades de medida são bits por segundo (bps, ou Kbps, Mbps, etc) ou Bytes por segundo (Bps, KBps, Mbps, etc).

Gargalos de velocidade


Teoricamente, é possível medir a velocidade de cada componente de em um computador ou sistema de computadores. Cada componente terá sua velocidade própria, já que não todos iguais e desempenham tarefas diferentes. Também se pode medir a velocidade dos sistema como um todo. O tempo total de processamento de um sistema será a soma dos tempos parciais de processamento de cada parte (ou componente) do sistema. Assim, não é difícil concluir que a velocidade total máxima de qualquer sistema será sempre limitada pelos componentes mais lentos. Tarefas de execução mais lenta em um processo complexo limitarão a velocidade do processo. Por exemplo, em uma padaria, podemos acelerar a preparação da massa, mas o tempo que esta demora para crescer (fermentar) e o tempo que os pães demoram a assar não pode ser reduzido além de um certo limite, sobe pena de estragar a massa e queimar o pão por for a, mantendo-o cru por dentro. Componentes que reduzem a velocidade do sistema através deste tipo de mecanismo são chamados de gargalos (bottlenecks, em inglês). Da mesma forma que o gargalo de uma garrafa reduz a vazão de líquido para dentro e para fora da garrafa, gargalos em sistemas de computador reduzem a velocidade total do sistema, mesmo que a velocidade dos outros componentes seja muito mais alta.

É por isso que o ganho em velocidade de processamento com um processador muito rápido pode ser pequeno se, por exemplo, as velocidades de leitura e escrita dos elementos da memória forem baixas. Para evitar isso, alguns processadores mais rápidos vêm acompanhados de unidades de memória de capacidade relativamente pequena, mas com velocidades muito altas, chamadas memórias cache, que agilizam o processamento total. Da mesma forma, a velocidade de acesso a dados em uma rede de computadores ou da internet dependerá da velocidade de processamento do computador (levando em conta a quantidade de recursos disponíveis no sistema) e da velocidade da conexão (transmissão e recepção de dados) com rede. No limite máximo de velocidade dos componentes, a velocidade do sistema não será limitada pela velocidade de cada componente do sistema, mas pela taxa de transferência entre componentes do sistema. No caso dos computadores pessoais, está será a velocidade com que os dados passam pelos “fios” impressos na placa-mãe, em sua transmissão entre um componente e outro.

Gargalos precisam ser levados em conta, por exemplo, na hora de escolher os componentes para montar ou fazer upgrade em um computador, estruturar uma rede de computadores, entre outras coisas.

Este raciocínio pode ser estendido para qualquer sistema, desde a implementação de uma montadora de automóveis até uma padaria ou o sistema de trânsito de uma cidade. Muitas vezes, o ganho em eficiência pode ser maior quando se investe em melhorar o sistema nos gargalos do que quando se investe diretamente nas partes do sistema que já são muito eficientes.


Material de referência para termos técnicos, jargão de informática, etc, em inglês e português:

Computer Hope: Auxílio e informações gratuitos sobre computadores. (Computer Hope: Free computer help and information): http://www.computerhope.com/jargon.htm

Página de terminologia da IBM (IBM Terminology Page):  https://www-01.ibm.com/software/globalization/terminology/

Pagina de glossário do WhatIs.com: http://whatis.techtarget.com/glossary/Computing-Fundamentals

em português:
Dicionário técnico do Guia do Hardware: http://www.hardware.com.br/termos/ 


---------------------------------------------
Minha gratidão a todos que leram versões aneriores deste texto a contribuíram com críticas, siugestões, etc.


Última revisão, 05.jun.2016