O Linux está pronto para a "Revolução ARM"?

É ai que começam os problemas.
A grande diferença entre essas arquiteturas são as instruções suportadas por cada uma. O x86/x64 utiliza um conjunto de instruções maiores, que facilita o desenvolvimento mas demanda mais energia e maior complexidade das placas. Já o ARM usa um conjunto reduzido, que teoricamente permite chegar nos mesmos objetivos. Isso simplifica a arquitetura, reduz o consumo de energia e o custo de produção, mas eleva a complexidade de implementação.

Links para algumas informações sobre isso:

Deve-se lembrar que essas instruções são em linguagem de máquina (Assembly) e não em linguagens de alto nível. Então o que acontece normalmente é: Uma pessoa escreve um programa em C, por exemplo, e compila para amd64, o que vai gerar um binário que contém as instruções em linguagem de máquina (assembly) que podem ser executadas pelo processador. Essa “conversão” é feita pelo compilador, que sabe quais são as instruções suportadas pelo processador e como traduzir o código alto nível para essas instruções.

Os principais compiladores são capazes de compilar os códigos para vários tipos de processadores. Porém, as vezes são adicionados nos processadores um conjunto de instruções muito específicas, que são impossíveis (ou muito difíceis) de serem traduzidas para outras arquiteturas. Muitos programas utilizam estas instruções a fim de otimizar o desempenho, o que os tornam incompatíveis com outras arquiteturas. O Steam, por exemplo, modificou os requisitos mínimos para adicionar novos conjuntos de instruções, o que impossibilitou a execução do mesmo em processadores um pouco mais antigos. Fazendo uma procura por “Steam SSE requisitos minimos” no Google retorna alguns exemplos de jogos que também exigem tais instruções.

Além disso, muitas bibliotecas implementam (ou modificam) algumas coisas diretamente em Assembly, para conseguirem mais performance, e assim não podem ser simplesmente compiladas para outras arquiteturas, pois não se compila Assembly. Consequentemente, todos os programas que utilizam essas bibliotecas também sofrerão com a incompatibilidade.

Então basicamente muita coisa simplesmente não será compatível com o ARM, principalmente num futuro próximo. Pode ser que comecem a mudar isso aos poucos, convertendo alguns programas de cada vez, mas com certeza não vão se dar o trabalho de modificarem jogos já lançados, pois isso demandaria muito esforço pra nenhum lucro. É o mesmo que acontece para o Linux, mas ainda pior.

No caso da Apple, é capaz deles próprios tomarem a atitude de ajudarem na adaptação de alguns programas principais, ou criarem um compilador capaz de converter alguns tipos de instruções a mais, mas ainda assim a quantidade de bugs e/ou incompatibilidade total será bastante grande no primeiro momento. Já para o Linux, os programas OpenSource permitem que qualquer um faça essas adaptações, mas será um trabalho de formiguinha até a maioria dos programas estarem funcionando bem. Mas já é possível fazer a maioria tarefas do dia-a-dia, como navegar na internet, desenvolver software, editar documentos e imagens.

8 curtidas