As Implicações da Escassez de Chips para a Segurança Digital Global

Uma nova preocupação no campo da segurança está surgindo e talvez você se interesse em ficar de olho no clima. Não é segredo que há uma escassez global de chips de silício, e onde há escassez, há oportunidades para bandidos e afins.

Imagem: Pexels

Como já mencionei no blog [aqui e aqui], uma cascata de eventos fez com que a fabricação de chips diminuísse de ritmo nos últimos anos. Em algumas áreas, como componentes analógicos para digitais, a quebra no fornecimento foi quase total para alguns dispositivos.

Mas para além dos dispositivos de entrada/saída existem outros dispositivos, como “System on a Chip” (SoC) e “Micro Controller Units” (MCU). Estes não usam os métodos mais modernos de impressão em escala nanométrica e tendem a ser feitos em fábricas de segunda ou terceira linha, onde as margens de lucro são muito baixas.

Bem, esta notícia, que foi reportada no ano passado – e amplamente ignorada, parece estar ficando mais insistente na grande mídia [The Register]. A consequência desse estado de coisas, que recebeu apenas uma menção passageira na parte inferior do artigo do The Register, é que há um buraco se abrindo na segurança das linhas de suprimento globais.

No início a escassez impulsionou os prazos de entrega de algumas semanas para alguns meses. Agora chegam a ultrapassar um ano. Alguns fabricantes estão cancelando novos projetos de design e eliminando recursos em projetos existentes, pois precisam refazer os projetos para aproveitar as peças inferiores ainda disponíveis.

Como em toda escassez, a manipulação de preços já começou, com alguns produtos agora custando cinco a dez vezes o preço que tinham há apenas um ano ou mais. O que significa que a oportunidade de lucrar de forma ilícita está de volta (não que algum dia tenha desaparecido). Os mais experientes talvez se lembrem do choque da mudança do padrão RS232 para USB “FTD-Chip”, quando a FTD mudou o driver do chip fornecido pela Microsoft e, da noite para o dia, centenas de milhares, senão milhões de mouses e produtos semelhantes para PC pararam de funcionar.

O motivo foi a “Grey Supply Line”, a infame “linha cinza” de imitações paralelas dos chips FTD, na época usados em milhões de PCs. O que estava acontecendo era que as peças não-FTD, muitas delas não-funcionais, foram feitas para parecer peças FTD reais e vendidas como “estoque recuperado” e similares, entrando, assim, na cadeia de suprimentos.

Se a história é um guia, devido à escassez e ao aumento dos preços as Grey Supply Lines entrarão em operação a qualquer momento novamente. Enquanto imitações são um problema por si só, pois na maioria das vezes são abaixo do padrão, elas também trazem um novo potencial vetor de ameaças.

Armas Cibernéticas do Mercado Cinza

Muitos chips Grey Supply passam pela China de uma maneira ou de outra, e provavelmente não passou despercebido pelas pessoas atentas que o barulho de sabres e tambores nos mares do sul da China fica cada dia pior.

Essa é uma das razões pelas quais o governo dos EUA vem pressionando o governo e os fabricantes de chips de alta qualidade de Taiwan para mudar as fábricas para os EUA (algo que os taiwaneses estão muito relutantes em fazer por várias razões óbvias). Bem, embora os chineses continentais não tenham fábricas de última geração, eles têm muita capacidade de segunda e terceira linhas. Assim, surge a oportunidade de injetar quantidades consideráveis de Grey Supply em produtos fabricados e vendidos em todo o mundo.

Mais cedo ou mais tarde, algumas peças Grey Supply serão consideradas deficientes ou abaixo do padrão, o que é de se esperar, como se viu no incidente do chip FTD. Mas a presente situação também abre a possibilidade de algo mais insidioso: a oportunidade de se incorporar armas cibernéticas nos chips Grey Supply. Esses chips não seriam totalmente abaixo do padrão, como de costume, mas teriam “um certo conteúdo extra embutido” – o qual seria como um mecanismo de disparo à espera do acionamento

Embora contaminação por malware possa ser realmente desagradável de se lidar, ela afeta as coisas principalmente no nível do software, onde fazer uma simples reinstalação completa a partir dos backups permite que você recupere a funcionalidade de seu sistema em um tempo relativamente curto. Agora considere que infestação por malware está acontecendo cada vez mais no nível de firmware, o nível mais básico, onde o usuário médio não pode fazer uma reinstalação do sistema operacional.

Mas vá um pouco mais longe e considere que o firmware está na verdade embutido nos chips, de uma maneira que muito poucas pessoas têm conhecimento para reinstalar o código operacional, e mesmo assim apenas de forma insatisfatória. Imagine o que aconteceria se não apenas computadores, mas dispositivos inteligentes e telefones de todos os tipos parassem de funcionar.

A nação mais atingida seria os EUA, na medida em que apenas um ou dois ataques recentes de ransomware demonstraram. Na sequencia viriam as nações do “primeiro mundo”, como grande parte da Europa Ocidental como também as nações da Ásia e Oriente Médio que “saltaram” uma geração de tecnologia no último quartel do século passado e início deste – tecnologia 1985-2010.

Na série de ficção científica “Fundação”, Isaac Asimov tem como enredo uma coalizão de mundos tecnicamente sofisticada, mas não militarmente poderosa, enfrentando uma guerra iniciada por uma população significativamente maior e fortemente militarizada, mas não tecnologicamente sofisticada. Em condições normais estes iriam perder. No entanto, em um plano pérfido, eles já haviam vendido muita coisa de sua tecnologia atrasada para a coalizão, em produtos domésticos e comerciais para o dia a dia.

Os produtos começaram a falhar e a coalizão descobriu que suas forças armadas eram, na verdade, fortemente dependentes desses produtos defeituosos, de tal forma que não tinham mais meios para contra-atacar à altura.

Neste mundo dos tempos modernos, o Ocidente é efetivamente a coalizão e a China o fornecedor de todos os produtos domésticos e comerciais de que tanto dependemos em um ou mais níveis. Com um pouco de imaginação, não é difícil ver como a China poderia, com base nestes pressupostos, facilmente construir um “Grande Interruptor Vermelho” no coração dos EUA, Europa, etc. com os infames produtos “Grey Supply Cyber Weaponized”.

Isso se já não o fez…

F-Droid – Repositório Android de Código Aberto e Livre

Os smartphones continuam produzindo vítimas, à esquerda e à direita. O caso ilustre mais recente, e bizarro, foi o do deputado da Assembleia paulista, pego em uma molecagem épica.

Imagem: Pexels

É até divertido. Enquanto as pessoas continuarem a ignorar a tecnologia subjacente e usar smartphones na ilusão de estarem em privacidade os incidentes – e as revelações – vão continuar sua marcha, para nosso deleite*.

A fachada social, a reputação e o patrimônio das pessoas correm um risco constante na cultura da atenção e da vigilância, impulsionada pela conectividade tóxica. A vida em 2022 é mergulhada em um ambiente tecnológico sem freios éticos. As tecnologias de conectividade imploram por uma revisão geral.

O ambiente Android é notório, entre tecnologistas e engenheiros de software éticos, por sua brutal falta de princípios morais. O usuário médio não faz a menor ideia do monstro que coloca em movimento a cada interação, cada like e a cada share [e, pela minha experiência, faz um about-face toda vez que alguém tenta lhe explicar, como agora – as pessoas odeiam falar de privacidade e eu adoro provocar sua reação].

Existe alternativa a esse estado de coisas assustador? Não, não existe nenhuma solução perfeita nesta situação social de massivo analfabetismo científico-tecnológico. Contudo, podemos falar em mitigação das ameaças. Nesse momento, entra em cena o F-Droid, sistema aberto e livre [as in speech], alternativo ao mefistofélico Android.

A ética tem sido central para a comunidade F-Droid desde o início, com foco em software livre, privacidade e no controle do usuário sobre a plataforma. Uma parte fundamental do design do F-Droid é a ausência de contas de usuário.

No F=Droid, contas de usuário nunca são usadas no processo de entrega de aplicativos. Isso é por design. O F-Droid nunca teve um método para identificar ou rastrear usuários no Android. Obter informações no site f-droid.org também nunca exigiu nenhum tipo de identificação pessoal.

Ter contas de usuário torna alguns problemas muito mais fáceis de resolver: torna mais fácil incluir classificações, revisões e personalizar a documentação. No entanto, ter contas de usuário torna outros problemas muito mais difíceis de resolver, a ponto de o custo-benefício ser negativo.

As contas de usuário inevitavelmente significam que informações de identificação pessoal (IPI) serão coletadas. Contas de usuário também exigem senhas e, adicionalmente, números de telefone ou endereços de e-mail. Todos esses dados precisam ser defendidos contra acesso indevido, o que é problemático na plataforma Android. Um dos principais objetivos do F-Droid é eliminar a possibilidade de rastrear os usuários.

Quando se trata de smartphones, a verdade que nunca é dita é que contas de usuário não são um requisito técnico para a criação de um serviço – embora inúmeros aplicativos façam parecer que sim. As contas de usuário são a maneira perfeita para coletar dados e vinculá-los na criação de perfis estatísticos muito detalhados. Essa arquitetura é fundamental para rastrear usuários, a fim de mercantilizá-los e oferecê-los no pregão da economia da atenção.

As contas de usuário também são usadas para controlar o acesso a informações e dados. Elas são usadas ​​para “bloquear região” de vídeos e bloquear seletivamente o acesso a aplicativos. É claro que existem casos de uso legítimos para restringir o acesso, como garantir que crianças possam acessar apenas conteúdo apropriado para a idade. Por outro lado existem outras maneiras de fazer isso, como a curadoria de repositórios para que o material adulto seja entregue por meio de repositórios separados e opt-in.

As contas de usuário são fundamentais para rastrear pessoas

Contas e IDs de usuários são uma parte essencial do rastreamento de usuários e da criação de perfis estatísticos duradouros. Já se tornou um truismo da Intenet, que se um serviço qualquer exige uma conta para acessá-lo, esse serviço certamente está rastreando seus usuários. Quando um usuário faz login, ele está dizendo claramente ao serviço quem ele é. E esse serviço pode facilmente atribuir ações específicas a essa conta no ato da criação do perfil.

Isso não quer dizer que não haja motivos válidos para rastrear usuários. Como mencionado anteriormente, os editores da Wikipédia são um exemplo de serviço essencial construído com base nas contas dos usuários. O que estamos dizendo é que se a privacidade é um bem importante, os requisitos de login dos infinitos sites e serviços da Internet pedem que paremos um instante para pensar.

O Google nos fornece um exemplo não muito edificante. Ele se esforça muito para fazer com que as pessoas façam login o máximo possível, e a maioria de seus serviços exige que os usuários façam login com uma conta. Até o seu navegador Chrome exige logins, que são obviamente vinculados a contas do Google. Eles geralmente justificam esse requisito dizendo que isso torna os serviços mais fáceis de usar e, portanto, “mais convenientes”. A estrada da conveniência ainda vai nos levar a todos para o purgatório.

Embora seja óbvio que o rastreamento de usuários possa fazer com que certas coisas sirvam melhor ao perfil de um usuário, o Google parece consistentemente aplicar esses casos a situações em que eles têm uma vantagem clara em obter mais dados de rastreamento.

O que funciona sem contas de usuário?

F-Droid não está sozinho na entrega de serviços úteis sem contas ou perfis de usuários. Existe toda uma linha de aplicativos, como navegadores, wikis, blocos de notas compartilhados, videoconferência, mensagens e análises estatísticas.

A primeira pergunta a ser respondida é: um serviço precisa saber quem são os usuários para funcionar? Essas informações podem permanecer apenas no dispositivo do usuário? Por exemplo, um serviço de e-mail ou de mensagens precisa saber o suficiente sobre seus usuários para poder direcionar dados de um usuário que envia uma mensagem para o destinatário pretendido. Isso significa principalmente que o servidor de mensagens depende de cada usuário ter uma conta.

Essa é uma maneira comum de implementar esse sistema, mas não é a única. Tor Onion Services [forneço o link para informação, mas não concordo com o nome do verbete da Wiki em português] segue uma abordagem diferente. Eles são projetados para rotear dados sem que nenhuma parte do sistema possa ver quem está enviando dados para quem e quem está fazendo a solicitação. O aplicativo de mensagens Briar, oferecido pelo F-Droid baseia-se nesse esquema para fazer as mensagens funcionarem sem que ninguém saiba quem está enviando para quem, fora os envolvidos na conversa. Com o Briar, as informações de contato do usuário ficam armazenadas apenas nos dispositivos dos usuários.

O aplicativo de videoconferência foi construído em torno de IDs de usuários, como contas e números de telefone. Serviços como Jitsi Meet [serviço oposto ao proprietário e fechado Zoom] foram pioneiros em uma nova forma de conexão: cada sala de conferência é representada por um nome em na URL, por exemplo, https://meet.jit.si/CanalDoTrabalho. Qualquer pessoa que tenha esse URL pode abri-lo em um navegador e entrar na sala.

O Jitsi Meet funciona lindamente e já demonstrou que as reuniões online realmente funcionam melhor sem contas de usuário – e são muito mais fáceis de configurar e gerenciar. Plataformas de reunião que não suportem ingresso com apenas uma URL [sem conta de usuário] estão fadadas à extinção.

A Wikipedia é um ótimo exemplo híbrido. É possível editar a maioria das páginas sem uma conta, apenas clicando em editar e fazendo as alterações. O conteúdo gerado pelo usuário inevitavelmente precisa de controles para sobreviver às guerras de edição e comportamento abusivo. Portanto, as contas de usuário ainda são uma parte fundamental de como a Wikipédia funciona. No entanto, neste caso o uso de contas decorre da necessidade dos editores da Wikimedia de fornecer serviços essenciais a seus usuários.

Como o ecossistema F-Droid funciona baseado em hashes de arquivos estáticos sem controles de acesso, ele pode liberar todo tipo de flexibilidade. Os repositórios-espelhos do f-droid.org/repo podem ser entregues em todo o mundo com segurança, por meio de web services, Raspberry Pis locais ou até mesmo um pen drive USB. Com o IPFS [Inter Planetary File SystemSistema de Arquivos Inter Planetário] qualquer conteúdo pode ser baixado por qualquer pessoa sem necessidade de permissões ou serviços centralizados.

Para resumir tudo a duas linhas, o F-Droid é um grande aliado do usuário consciente que deseja limitar a presença do Google em suas vidas sempre que possível.

Aqui o link para download, Caso alguma leitora ou leitor queira realmente explorar a ideia e instalá-lo, pode me perguntar nos comentários, que terei prazer em explicar e dar links para todas as informações.


Este post marca o primeiro aniversário do blog. Nada a comemorar em termos de sucesso. Memoráveis as pessoas incríveis que conheci na rede WordPress.

Feliz aniversário para mim, Êêêêê…

Meu Problema com Smartphones

Eu estou abandonando os smartphones como dispositivos de uso pessoal. Desde o começo do ano o meu jaz morto, em uma caixa metálica. Não consigo viver com os muitos problemas dessa infortunada tecnologia.

Imagem: Pexels

O principal problema é que os celulares não podem funcionar se não souberem onde o usuário está. Essa característica fundamental de design é explorada sem qualquer limite por indivíduos mal-intencionados, por corporações internacionais e pelos agentes de aplicação da lei e inteligência. Não que eu tenha algo a esconder – na verdade todos temos.

Ah, os prazeres da vida de volta! Sem um celular é possível dedicar meu tempo inteiro à atividades realmente úteis. É libertador poder evitar os lunáticos do WhatsApp; ou o mau gosto e a indigência mental de certos influencers; poder evitar aquele meme do Big Brother [socorro!]. Evitar ver as pessoas tirando selfies diante do espelho, olhando apatetadas para o celular. Ou evitar os golpes do Pix.

Sem o smartphone é muito fácil evitar os robóticos e intoleráveis operadores de telemarketing. É possível evitar também que as companhias de seguros definam o prêmio a pagar pelo seguro do carro, por conta do histórico de localização e informações de acelerômetro extraídos do smartphone [“você fez Campinas-São Paulo em 25 minutos, faz manobras bruscas e freia muito forte“]. Ou ser incluído em um cadastro fantasma de crédito, como os que pululam no mercado e definem os valores que pagamos pelos diversos serviços que usamos.

Evitar ser atropelado. Ou levar um tiro de um sniper do Mossad.

Vou deixar as torturadamente óbvias questões de segurança de lado nesta postagem, para focar em outros atributos igualmente preocupantes e pouco discutidos dos smartphones. Allez.

São dispositivos voltados ao consumo ostensivo

Os smartphones são apenas dispositivos de consumo insano e irrefreável. Nesse aspecto, eles diferem criticamente dos PCs, porque os PCs são dispositivos igualitários, no sentido de que o mesmo dispositivo pode ser usado para tanto para criação quanto consumo de conteúdo. Isso significa que qualquer pessoa com um PC pode criar e consumir, se assim o desejar. Essa igualdade cultural, estabelecida no começo da era da Web [minha referência é o Eterno Setembro de 1993] foi diminuída pelo êxodo dos usuários para os dispositivos móveis – que só podem ser usados ​​para consumo.

Eles não são verdadeiros clientes de rede

Os smartphones têm CPUs poderosas e conexões de rede rápidas, exceto que você é impedido de usar esses recursos de forma significativa, porque seu uso consome a carga da bateria – e as pessoas não querem que a preciosa vida útil da bateria de seus telefones seja drenada desnecessariamente.

Portanto, há uma enorme quantidade de poder de computação e conectividade de rede que, na prática, você não pode usar. Isso leva a uma consequência ainda mais infeliz e ridícula: por causa dessas limitações, em um smartphone você não pode implementar a maioria dos protocolos de rede existentes [ou você pode, mas não sem esgotar a bateria]. O que é um paradoxo para um equipamento voltado à conectividade .

Eles arruinaram o web design

Mas eu provavelmente deverei escrever um artigo inteiro sobre isso.

As tecnologias são opacas

São produtos e serviços com alinhamentos empresariais nebulosos, ou de clara malevolência. Supostamente, com o Android, por exemplo, você é livre para instalar software de fontes arbitrárias e substituir o sistema operacional. Exceto que esses recursos são frequentemente restritos pelos próprios fabricantes, ou pelas telecoms.

Promovem a discriminação

A discriminação contra pessoas que exercem controle sobre seus dispositivos é comum, e qualquer aplicativo de análise vai revelar isso. Há uma expectativa predominante das empresas de tecnologia, de que as pessoas vão sempre abrir mão do controle sobre seus dispositivos, a ponto de aqueles que o fizerem serem minoria suficiente para serem discriminados e terem a funcionalidade de seus dispositivos reduzida por isso. A vida bancária é hoje uma tortura sem smartphones. Mas isso não deveria ser encarado de forma normal. É um abuso terrível e – por motivos óbvios – não deveria acontecer.

Ademais, prevalência de fontes de ransomware operados na Rússia, que vendem contas de celular roubadas da Internet, sugere que o uso de verificação por telefone como estratégia anti-spam não tem sido muito eficaz.

São responsáveis por uma centralização maciça

Um número desproporcional de aplicativos para, digamos, Android, depende de um servidor central operado pelo fabricante do software, com algum protocolo proprietário entre o cliente e esse servidor. De fato, essa é a própria premissa dos sistemas de notificação por push usados ​​pelo Android e iOS.

Eles levaram a uma centralização maciça. Parte do movimento dos ativos de Internet em direção à “nuvem” provavelmente é impulsionado pelo fato de que, embora os smartphones tenham recursos computacionais substanciais, você não pode usá-los por causa da curta duração da bateria. Isso faz com que a computação seja transferida para a nuvem, criando uma dependência de uma entidade centralizada. Quantos aplicativos para smartphones vendidos ainda funcionariam se seus fabricantes falissem ou saíssem do negócio?

Provavelmente o exemplo mais risível da centralidade desempenhada pelo telefone é quando, em um momento de loucura [ou de bebedeira] eu tento criar, em um desktop, uma conta numa rede social qualquer. Após o envio do formulário de registro, o site sempre diz para eu me inscrever através do aplicativo de smartphone, o que é um non sequitur realmente bizarro, já que eu não forneço nenhuma evidência de que eu tenha um smartphone. O que é hilário, no entanto, é que é possível criar uma conta do Twitter de dentro de uma máquina virtual no Android (obviamente sem número de telefone), provando essencialmente que a coisa toda é apenas teatro de segurança.

O que realmente me irrita nessas exigências por números de telefone [que são formatados no infame padrão E.164 – the international public telecommunication numbering planplano numérico da comunicação pública internacional], no entanto, é a maneira como eles me obrigam a abandonar meus orgulhosos princípios de pioneiro independente da Internet, sem documento e sem telefone.

Quando o Google exige um número E.164, eles não fazem isso apesar do fato de o E.164 ser um padrão técnico um tanto opaco e fechado, mas exatamente por causa disso. Basicamente, tudo de ruim sobre o namespace E.164 e suas organizações constituintes é precisamente o que o torna atraente para fins nebulosos em organizações como o Google et caterva.

Os gigantes da conectividade e seus operadores sustentam uma rede opaca, mantendo-a assim, porque no íntimo consideram problemática a própria abertura da internet. Isso representa essencialmente a retirada intencional do papel da Internet original como a raiz de todas as redes, orquestrada por uma organização que está ironicamente associada à própria internet. É um movimento deprimente de se ver.

(*) Editado por questões de estilo

O Que é Preciso Saber Sobre SSDs

Muito longo, não vou ler:

SSDs tornaram-se bastante baratos e têm um desempenho muito alto. Por exemplo, um SSD de servidor Samsung PM1733 custa cerca de US$ 200 por TB e promete cerca de 7 GB/s de leitura e 4 GB/s de largura de banda de gravação. Para alcançar esse alto desempenho, é necessário saber como funcionam os SSDs e esta postagem procura descrever os mecanismos subjacentes mais importantes dos SSDs flash.

* * *

Os SSDs, menores e com maior capacidade de armazenamento, permitiram uma geração de dispositivos ‘slim’ – Imagem: iStock

Solid-State Drives (SSDs) baseados em flash têm substituído amplamente os discos magnéticos rígidos como meio de armazenamento padrão. Do ponto de vista de um programador, SSDs e discos rígidos são muito semelhantes: ambos são persistentes, permitem o acesso baseado em página por meio de sistemas de arquivos e chamadas de sistema, e têm grande capacidade.
Há por outro lado diferenças importantes, que se tornam decisivas quando se deseja otimizar o desempenho de um SSD.

Como veremos, os SSDs são mais complicados e seu comportamento no desempenho pode parecer bastante intrigante se pensarmos neles apenas como “discos rápidos”. O objetivo desta postagem é fornecer uma compreensão do por quê os SSDs se comportam dessa maneira – conhecimento que pode ajudar a criar programas mais adequados para explorá-los. (Observe que eu discuto o flash NAND, não uma memória como a Intel Optane, que tem características diferentes.)

Disco não. Unidade é o nome

Os SSDs costumam ser chamados de “discos”. Isso é enganoso, porque eles de fato armazenam dados em semicondutores em vez de em um disco mecânico. Para ler ou gravar em um bloco aleatório, um disco deve mover mecanicamente sua cabeça para o ponto correto, o que leva cerca de 10 ms [milissegundos]. Em contraste, uma leitura aleatória de um SSD leva cerca de 100 us [microssegundos] – 100 vezes mais rápido. Essa baixa latência de leitura é a razão pela qual a inicialização de um SSD é muito mais rápida do que a inicialização de um disco.

As Paralelas

Outra diferença importante entre discos e SSDs é que os discos têm um cabeçote para leitura/escrita e funcionam bem apenas para acessos sequenciais. Os SSDs, em contraste, consistem em dezenas, ou mesmo centenas, de chips flash (“unidades paralelas”), que podem ser acessados ​​simultaneamente.

Os SSDs distribuem os arquivos maiores de forma transparente pelos chips flash na granularidade da página, e um hardware pré-buscador garante que as varreduras sequenciais explorem todos os chips flash disponíveis. No entanto, no nível do flash não há muita diferença entre leituras sequenciais e aleatórias. Na verdade, para a maioria dos SSDs, também é possível usar quase toda a largura de banda disponível com leituras de página aleatórias. Para fazer isso, é necessário agendar simultaneamente centenas de solicitações aleatórias de entrada e saída para manter todos os chips flash ocupados. Isso pode ser feito iniciando muitos threads ou usando interfaces assíncronas de entrada e saída.

Gravando

As coisas ficam ainda mais interessantes com as gravações. Por exemplo, se olharmos com atenção para a latência de gravação, podemos medir resultados tão baixos quanto 10us – 10 vezes mais rápido do que uma leitura. No entanto, a latência só parece baixa porque os SSDs estão armazenando gravações em cache na RAM volátil. A latência real de gravação do flash NAND é de cerca de 1 ms – 10 vezes mais lenta do que uma leitura. Em SSDs de consumidor, isso pode ser medido emitindo um comando sync/flush após a gravação, para garantir que os dados persistam no flash. Na maioria dos SSDs de alta performance [data center/servidor], a latência de gravação não pode ser medida diretamente: a sincronização/liberação será concluída imediatamente porque uma ‘bateria’ garante a persistência do cache de gravação, mesmo em caso de perda de energia.

Para alcançar alta largura de banda de gravação, apesar da latência relativamente alta, os SSDs usam o mesmo truque das leituras: eles acessam vários chips flash simultaneamente. Como o cache de gravação pode gravar páginas de maneira assíncrona, não é necessário agendar muitas gravações simultaneamente para obter um bom desempenho de gravação. No entanto, a latência de gravação nem sempre pode ser completamente oculta: por exemplo, como uma gravação ocupa um chip flash 10 vezes mais do que uma leitura, as gravações causam latências de cauda significativas para leituras no mesmo chip flash.

Gravações fora-do-local

Nosso entendimento está ignorando um fato importante: as páginas flash NAND não podem ser substituídas. As gravações de página só podem ser executadas sequencialmente nos blocos que foram apagados anteriormente. Esses blocos de apagamento têm um tamanho de vários MB e, portanto, consistem em centenas de páginas. Em um SSD novo, todos os blocos estão apagados e é possível começar a anexar novos dados diretamente.

Atualizar páginas, no entanto, não é tão fácil. Seria muito “overhead” apagar o bloco inteiro apenas para sobrescrever uma única página no local. Portanto, os SSDs executam atualizações de página gravando a nova versão da página em um novo local. Isso significa que os endereços lógico e físico das páginas são separados. Uma tabela de mapeamento, que é armazenada no SSD, converte endereços lógicos (software) em locais físicos (flash). Esse componente também é chamado de Flash Translation Layer (FTL).

Por exemplo, vamos supor que temos um SSD (hipotético) com 3 blocos de apagamento, cada um com 4 páginas. Uma sequência de gravações nas páginas P1, P2, P0, P3, P5, P1 pode resultar no seguinte estado físico do SSD:

Bloco 0 P1 (antigo) P2 P0 P3
Bloco 1 P5 P1 →
Bloco 2

Coleta de lixo

Usando a tabela de mapeamento e gravação fora-de-local, tudo vai bem até que o SSD fique sem blocos livres. A versão antiga das páginas sobrescritas deve, no fim de tudo, ser recuperada. Se continuarmos nosso exemplo acima, escrevendo para as páginas P3, P4, P7, P1, P6, P2, teremos a seguinte situação:

Bloco 0 P1 (antigo) P2 (antigo) P0 P3 (antigo)
Bloco 1 P5 P1 (antigo) P3 P4
Bloco 2 P7 P1 P6 P2

Neste ponto, não temos mais blocos de apagamento livres (embora, lógicamente, ainda deva haver espaço). Antes que alguém possa escrever outra página, o SSD primeiro deve apagar um bloco. No nosso exemplo, pode ser melhor para o coletor de lixo apagar o bloco 0, porque apenas uma de suas páginas ainda está em uso. Depois de apagar o bloco 0, liberamos espaço para 3 gravações e nosso SSD fica assim:

Bloco 0 P0 →
Bloco 1 P5 P1 (antigo) P3 P4
Bloco 2 P7 P1 P6 P2

Amplificação de gravação e excesso de provisionamento

Para o bloco de coleta de lixo 0, tivemos que mover fisicamente a página P0, embora logicamente essa página não tenha sido envolvida em nenhum processo. Em outras palavras, com SSDs flash, o número de gravações físicas (flash) é geralmente maior do que o número de gravações lógicas (software). A proporção entre os dois números é chamada de ‘’amplificação de gravação. Em nosso exemplo, para abrir espaço para 3 novas páginas no bloco 0, tivemos que mover 1 página. Assim, temos 4 gravações físicas para 3 gravações lógicas, ou seja, uma amplificação de gravação de 1,33.

A alta amplificação de gravação diminui o desempenho e reduz a vida útil do flash. O tamanho da amplificação de gravação depende do padrão de acesso e de quão preenchido está o SSD. Grandes gravações sequenciais têm baixa amplificação de gravação, enquanto gravações aleatórias são o pior caso.

Vamos supor que nosso SSD está 50% preenchido e que executamos gravações aleatórias. No estado estacionário, sempre que apagamos um bloco cerca de metade das páginas desse bloco, em média, ainda estão em uso e devem ser copiadas. Assim, a amplificação de gravação para um fator de preenchimento de 50% é 2. Em geral, a amplificação de gravação de pior caso para um fator de preenchimento f é 1/(1-f):

f 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 0,95 0,99
WA 1,11 1,25 1,43 1,67 2,00 2,50 3,33 5 10 20 100

Como a amplificação de gravação torna-se excessivamente alta para fatores de preenchimento próximos a 1, a maioria dos SSDs tem uma capacidade ociosa oculta. Esse super provisionamento é normalmente de 10 a 20% da capacidade total. Obviamente, também é fácil adicionar mais provisionamento em excesso, criando uma partição vazia e nunca gravar nela.

Espero ter sido bem sucedido nesta tentativa de explicação. Tentei também manter este post curto, o que significa que eu tive que simplificar as coisas.

História (1978): Podemos nos Libertar do Estilo de von Neumann?

Anos 70, quando os mainframes e as linguagens procedurais FORTRAN e COBOL reinavam. A complexidade nos negócios aumentava e o mundo da computação parecia estar em um beco sem saída, quando o artigo abaixo foi publicado. Era preciso um novo paradigma e os questionamentos emergiam de todos os lados. Uma nova concepção de software surgiria em 1979, com a linguagem C e o paradigma de Orientação a Objetos. Mas nunca nos libertamos da Máquina de von Neumann. Isso virá um dia com a computação quântica, que ainda dá seus primeiros passos.

Uma máquina de von Neumann, projetada pelo físico e matemático John von Neumann (1903–1957) é um projeto teórico para um computador de uso geral. Uma máquina de von Neumann consiste em um processador central (dir.) com uma unidade lógica/aritmética (ULA), uma unidade de controle e uma memória (esq.).

* * *

A programação pode se libertar do estilo de von Neumann? Um estilo funcional e sua álgebra de programas

Resumo

As linguagens de programação convencionais estão ficando cada vez maiores, mas não mais fortes. Defeitos inerentes ao seu nível mais básico as tornam inchadas e fracas: seu estilo primitivo de programação ‘palavra-por-vez’ herdado de seu ancestral comum – o computador de von Neumann; seu acoplamento íntimo da semântica a transições de estado; sua divisão da programação em um mundo de expressões e um mundo de declarações; sua incapacidade de usar eficazmente formas combinantes poderosas para construir novos programas a partir dos existentes; e sua falta de propriedades matemáticas úteis para raciocinar sobre programas.

Um estilo funcional alternativo de programação baseia-se no uso de formas combinantes para a criação de programas. Os programas funcionais lidam com dados estruturados, são frequentemente não repetitivos e não recursivos, são construídos hierarquicamente, não nomeiam seus argumentos e não exigem que o mecanismo complexo de declarações de procedimento se torne aplicável de forma geral. Formas combinantes podem usar programas de alto nível para construir outros programas de nível ainda mais alto, em um estilo não possível em linguagens convencionais.

Uma álgebra de programas cujas variáveis ​​abarcam todo um programa e cujas operações são formas combinantes é relacionadas ao estilo funcional de programação. Essa álgebra pode ser usada para transformar programas e resolver equações cujas “incógnitas” são também programas como as transformações de equações na álgebra do ensino médio. Essas transformações são dadas por leis algébricas e são executadas na mesma linguagem em que os programas são escritos. As formas combinantes são escolhidas não apenas por seu poder de programação, mas também pelo poder das leis algébricas associadas a elas. Teoremas gerais dessa álgebra fornecem o comportamento detalhado e as condições de término [halting conditions] para grandes classes de programas.

Uma nova classe de sistemas de computação usa o estilo de programação funcional tanto em sua linguagem de programação quanto em suas regras de transição de estado. Ao contrário das linguagens de von Neumann, esses sistemas têm semântica fracamente acoplada a estados – apenas uma transição de estado ocorre por computação principal.

Ver transcrição do artigo original em Association for Computing Machinery.