Estudando o curso para iniciantes sobre interface de hardware / software e sistemas operacionais, muitas vezes surgem o tópico de se seria melhor substituir algumas peças de hardware por software e vice-versa. Não consigo fazer a conexão.
interfaces
operating-systems
software
hardware
Gabriele Scarlatti
fonte
fonte
Respostas:
Eu acho que a conexão fundamental que falta outras respostas é a seguinte:
Dado um computador de uso geral (por exemplo, uma CPU), pode-se programá-lo para executar praticamente qualquer cálculo que definimos. No entanto, o hardware especializado pode ter um desempenho melhor ou não fornecer nenhum valor.
(esta resposta é focada no processamento da área de trabalho e usa exemplos desse domínio)
Substituindo software por hardware
Se você tem idade suficiente para se lembrar de jogos para PC em meados da década de 90, provavelmente se lembra de jogos FPS como o Quake . Começou sendo "renderizado por software", significando que a CPU executou os cálculos necessários para renderizar os gráficos. Enquanto isso, a CPU também precisava executar processamento de entrada, processamento de áudio, processamento de IA, etc. Isso era muito desgastante para os recursos da CPU. Além disso, o processamento gráfico não é adequado a uma CPU convencional (na época ou agora). Tende a ser uma tarefa muito altamente paralela, exigindo muito mais núcleos do que até uma CPU moderna de ponta (8).
Mudamos o processamento gráfico do software para o hardware: entre no 3dfx Voodoo e na Nvidia TNT (agora GeForce ). Essas eram placas gráficas especializadas que descarregavam o processamento da CPU para a GPU. Isso não apenas espalhou a carga de trabalho, fornecendo mais recursos de computação para a mesma quantidade de trabalho, como também as placas gráficas eram um hardware especializado que podia renderizar gráficos 3D muito mais rápido e com mais recursos do que a CPU.
Avanço rápido para a era moderna, e gráficos sem CPU são necessários na área de trabalho. Mesmo o sistema operacional não pode funcionar sem uma GPU. É tão importante que as CPUs realmente integrem as GPUs agora. 1
Substituindo Hardware por Software
Quando o DVD era novinho em folha, você podia instalar uma unidade de DVD no seu computador desktop. No entanto, as CPUs do dia não eram poderosas o suficiente para decodificar os fluxos de áudio e vídeo em DVD sem gaguejar. Inicialmente, era necessária uma placa PCI especializada para executar a decodificação. Era um hardware especializado, criado especificamente para decodificar o formato de DVD e nada mais. Muito parecido com os gráficos 3D, ele não apenas forneceu mais recursos de computação, como foi personalizado para a tarefa, facilitando a reprodução de DVD.
À medida que as CPUs se tornaram muito mais poderosas, tornou-se possível decodificar DVDs "em software", significando "em um computador de uso geral". Mesmo com um processador menos eficiente, ele tinha otimizações de velocidade e pipeline brutas suficientes para fazer com que a reprodução de DVD funcionasse de acordo com as expectativas dos usuários.
Agora, temos CPUs centenas ou até milhares de vezes mais poderosas 2 do que quando os DVDs foram lançados. Quando o Blu-ray apareceu, nunca precisávamos de hardware especializado, porque o hardware de uso geral era mais do que poderoso o suficiente para lidar com a tarefa.
Fazendo os dois
As modernas CPUs Intel têm instruções especializadas para codificação e decodificação H.264 . Isso faz parte de uma tendência em que as CPUs de uso geral estão ganhando funções especializadas, todas no mesmo chip. Não precisamos de uma placa PCI Express separada para decodificar o H.264 com eficiência, como nos DVDs desde o início, porque as CPUs contêm circuitos semelhantes.
1 GPU refere-se a um processador projetado especificamente para executar cálculos gráficos. As placas gráficas 2D mais antigas não eram GPUs: eram simplesmente buffers de quadros com DACs para conversar com o monitor. A diferença é que as GPUs contêm processadores especializados que se destacam em certos tipos de cálculos e, com o passar do tempo, agora são programáveis (shaders). O hardware gráfico sempre continha os circuitos especializados necessários para converter os dados em um buffer de quadros em um formato que pode ser transmitido por um cabo (VGA, DVI, HDMI, DisplayPort) e entendido por um monitor. Isso é irrelevante para a discussão de descarregar os cálculos para hardware especializado.
2 O DVD-Video foi lançado em 1997, numa época em que o Pentium 2 também era recém-lançado. Era uma época em que as CPUs aumentavam rapidamente de potência: era possível considerar um novo computador P2 com um decodificador de DVD ou instalar um em um P1 um pouco mais antigo. Compare isso com o 6 Core i7 da geração moderna, usando a lista de MIPS da Wikipedia , e um CPU moderno está entre 590 e 1.690 vezes mais rápido. Isso se deve em parte à velocidade do clock, mas também à mudança para vários núcleos como padrão, bem como às CPUs modernas que fazem muito mais trabalho por núcleo por clock. Também relevante é que, à medida que a tecnologia avança, a Intel (que domina o mercado de desktops e servidores x86) adiciona instruções especializadas para ajudar a acelerar as operações que os usuários de desktops desejam realizar (por exemplo, decodificação de vídeo).
fonte
Estou surpreso que ninguém tenha mencionado ainda um dos exemplos mais flagrantes: rádio definido por software.
Se você pegasse um smartphone atual de volta no tempo cerca de 50 anos e o mostrasse a um engenheiro competente em meados da década de 1960, ele seria capaz de compreender a maior parte dele. Que um supercomputador pode ser reduzido a algo que cabe no seu bolso? Verifica. Que você pode ter o equivalente a uma televisão em cores de altíssima qualidade no pacote? Verifica. Que é muito mais rápido, tem muito mais armazenamento, etc., do que os computadores da época? Verifica. Esse software foi escrito que pode executar funções tão complexas? Verifica.
Mas diga ao engenheiro competente que, a propósito, este pacote contém um conjunto de transmissores e receptores sensíveis extremamente eficientes: um transceptor digital de espectro que pode transmitir e receber simultaneamente em vários canais, comunicando-se com uma torre de infraestrutura que pode estar a quilômetros de distância ; outro transceptor digital que comunica dados de alta velocidade com uma estação base em algum lugar do edifício; outro transceptor digital que se comunica com dispositivos vestíveis de baixa potência; e outro receptor que capta um sinal fraco de um satélite em órbita intermediária ... ele chamaria você de mentiroso.
Ele o chamaria de mentiroso porque sabe que receptores de alta sensibilidade não podem ser construídos sem uma infinidade de circuitos sintonizados, que filtram as estações vizinhas e selecionam o sinal de interesse. E que tais circuitos requerem peças com tamanhos definidos mais pela física do que pela tecnologia, como capacitores e indutores.
Você teria que explicar que em um rádio moderno, a maior parte disso é feita em software. Depois que o sinal recebido da antena é convertido para uma freqüência intermediária e amplificado um pouco, é então amostrado por um conversor analógico-digital; e o processamento subsequente ocorre em um processador de sinal digital. Todo esse ajuste, essa filtragem, que costumava exigir toneladas de hardware em um rádio high-end da velha escola, podem ser descritos na forma de equações matemáticas; e se isso puder ser feito, essas equações podem ser executadas em tempo real pelo DSP.
Acho que esse é um dos exemplos mais flagrantes de substituição de hardware por software. Como resultado, carregamos smartphones nos bolsos que, mesmo para um engenheiro competente da década de 1960, seriam semelhantes a um truque de mágica.
Comparada a isso, a ideia de que a lógica simples de um abridor de porta de garagem, uma balança de banheiro eletrônica ou um controle remoto de TV hoje em dia é implementada usando um microcontrolador e software de uso geral em vez de hardware personalizado parece quase trivial (e certamente seria muito mais compreensível para o hipotético engenheiro da década de 1960 do que o rádio definido por software.)
fonte
Considere este circuito:
É um flip flop, também conhecido como multivibrador biestável. Pode ser substituído por este código:
fonte
Significa exatamente o que parece.
Um exemplo particularmente famoso é o Disk II Drive, projetado por Steve Wozniak para o Apple II:
Outro exemplo com o qual você provavelmente está mais familiarizado: Emuladores. Eles substituem conjuntos inteiros de hardware (e software) inteiramente no software. CPUs, vários chips de controle e até dispositivos de armazenamento.
Agora você não pode eliminar todo o hardware; eventualmente, você precisa de algo para executar o software. Mas, em geral, qualquer tarefa lógica que você pode implementar no hardware também pode ser implementada no software (o desempenho pode não ser idêntico, pode ser mais lento, mais rápido ou em situações diferentes, dependendo do hardware subjacente e da implementação).
fonte
Outro campo em que isso é verdade são os sintetizadores.
Os primeiros sintetizadores eram hardware 100% analógico que gerava formas de onda diretamente e depois as modificava por meio de circuitos (filtros, amplificadores, etc.). Era possível sintetizar digitalmente o som, mas era necessário recursos de computação que as pessoas comuns não podiam pagar (um mainframe real e um hardware personalizado de conversor digital-analógico).
À medida que a fabricação de chips melhorava, os sintetizadores passavam de chips analógicos puros para sintetizadores controlados por sinais digitais, mas ainda geravam sinais analógicos, e depois para a síntese digital pura (reprodução de amostra, síntese FM , síntese aditiva verdadeira e assim por diante).
Atualmente, os processadores são baratos o suficiente e rápidos o suficiente para permitir que programadores criem versões para computador de sintetizadores analógicos clássicos que duplicam exatamente o comportamento dos circuitos originais simulando-os em tempo real - na verdade, telefones e tablets agora são capazes de rodar rápido o suficiente para execute essas recriações; o Korg iMS-20 é um exemplo.
Sintetizadores clássicos e novos estão disponíveis como plug-ins VST ou AU para programas de áudio digital, como Ableton Live, Logic ou Cubase, e fornecem acesso a sintetizadores a pessoas que, de outra forma, não teriam espaço ou dinheiro para poderem usar eles.
Edit: Neste ponto, também devo mencionar o VCVRack , que simula a síntese modular analógica em tempo real. Um passo à frente em tempos de renderização de várias horas por alguns segundos de música.
fonte
>:*3
.Antigamente, o corte era bastante claro. A maioria das coisas que precisavam de execução rápida tiveram que ser implementadas em hardware. Tomemos, por exemplo, um multivibrador que gera uma frequência. Há pouco tempo, você precisava de alguns transistores, capacitores e, eventualmente, um quartzo para gerar uma frequência (fixa). Agora, existem microcontroladores baratos que custam apenas alguns centavos. Como são muito rápidos, você pode usá-los facilmente para criar um multivibrador. Além disso, você pode facilmente controlar via software qual frequência gerar onde antes era necessário soldar hardware diferente. Porém, passando por uma certa frequência (mas agora bastante alta), você ainda precisará de hardware puro. Como vê, existe uma linha entre os dois, mas a parte que você pode resolver com o software está crescendo (exponencialmente).
Editar Na verdade, “O software pode substituir o hardware” não está realmente correto. É apenas o fato de que o hardware ficou tão poderoso que você pode usá-lo para executar software que simula hardware. Portanto, em vez de alguns transistores simples, mas soldados estaticamente, você usa milhões de transistores que entendem software. Portanto, o termo deve ser "Hardware agora pode entender software".
fonte
Uma comparação entre o jogo de arcade Tank (por volta de 1976) e o jogo de console doméstico Combat (1977) fornece um bom exemplo de como o software poderia substituir o hardware até 40 anos atrás.
O jogo de arcade Tank (por volta de 1976) permitiu que dois jogadores dirigissem em torno de tanques e atirassem um contra o outro. Ele não incluía nenhum tipo de processador, mas possuía contadores de hardware para acompanhar as posições horizontal e vertical do feixe de elétrons, tanques e disparos, assim como as pontuações do jogador, ângulos de rotação e o tempo decorrido. Tinha lógica lógica para gerar os dados de bitmap associados às pontuações, às formas dos tanques dos jogadores e ao fundo.
O Sistema de Computador de Vídeo Atari 2600 (um console de jogos em casa por volta de 1977) incluía hardware para rastrear as posições horizontais (mas não verticais!) De dois objetos de bitmap e quatro geradores de pulso de largura variável, mantêm e cronometram um nível baixo de 20 bits - padrão de resolução de gráficos de campo de jogo, bem como dois padrões de 8 bits de alta resolução, cores de trava para os jogadores, plano de fundo e campo de jogo e detecta colisões entre os vários objetos. Ele também incluía um cronômetro programável de uso geral, mas o hardware tinha pouco além do acima. No entanto, mesmo que o hardware seja muito mais simples que o do jogo Tank, o cartucho Combat 2K ROM permite que o 2600 jogue o mesmo jogo básico, mas com muitos outros recursos (uma variedade de veículos e fundos, tiros saltitantes etc.) porque ele pode substituir a maior parte da máquina de arcade ' s hardware com software. É interessante notar que, embora o Atari 2600 seja provavelmente a segunda plataforma de hardware mais simples de qualquer sistema de videogame doméstico baseado em microprocessador vendido comercialmente, ele é tão bem projetado para facilitar a substituição de hardware por software que, quando programado corretamente, pode percorrer muitos seus concorrentes.
fonte
A frase "o software pode substituir o hardware" é um aviso para não tentar resolver problemas com o hardware, a menos que haja vantagens muito claras. O software é 10x-50x mais barato para desenvolver e quase infinitamente mais barato para produzir por unidade que o hardware. Fazer X no hardware não será uma solução vencedora, a menos que o X realmente não possa ser feito com eficiência no software.
fonte
A nuance foi bem resolvida, mas acho que é possível a pedra de tropeço para o OP, pois é muito pouco possível substituir hardware por software. O 'hardware' invariavelmente envolve significativamente menos 'hardware' do que a solução 'software'.
A diferença é que a lógica de um processo / algoritmo / computação pode ser movida entre hardware e software. Muitos exemplos foram dados, então não vou elaborar.
fonte
Nos primeiros computadores com memória virtual, era necessário alterar a tarefa após uma falha do TLB para carregar uma nova entrada de página. Um software do sistema operacional encontraria o processo correto e percorreria as tabelas da página, localizando a entrada correta e escrevendo-a de volta ao TLB. Antes de voltar ao processo original para continuar.
Agora, a maioria das CPUs usa hardware para fazer o processo, lendo a tabela de páginas, percorrendo as tabelas de páginas e atualizando o TLB.
Ambos os métodos precisam usar o software para lidar com falhas de página, mas, como o TLB perde muito mais do que o número de falhas de página, o caminho do hardware ainda supera o software.
Em geral, se você tiver um procedimento simples com o qual precisa lidar repetidamente, encontrará uma substituição de hardware. Se você tiver uma solução de hardware complexa com um fluxo de controle complicado, poderá simplificar o hardware usando o software.
fonte
Existem muitos casos em que o software pode substituir o hardware e vice-versa.
Um exemplo clássico disso é uma tabela de pesquisa matemática. Em vez de calcular os resultados para expressões comuns a cada vez, eles são armazenados internamente no seu coprocessador matemático e simplesmente referidos quando necessário.
A maioria provavelmente já está familiarizada com filtros de áudio e software que podem imitar instrumentos e dispositivos reais, como pedais ou amplificadores.
Qualquer hardware que possa ser criado virtualmente será usado, se for mais rápido e / ou mais barato que o equivalente físico.
fonte
Na contabilidade, uma cópia impressa de uma fatura (por exemplo) agora pode ser enviada eletronicamente, e o software está começando a lidar com o recebimento desse tipo de papelada e seu processamento cada vez mais. É um excelente exemplo de hardware sendo substituído por software.
fonte