Uma importante decisão em torno do kernel Linux pode ser tomada em breve. Recentemente, um e-mail foi divulgado através da lista de discussão Linux Kernel. A mensagem principal era bem clara: o principal objetivo é eliminar o código de implementação da sub-arquitetura x32 (que não deve ser confundido com x86 IA-32).
Ele permite usar o modelo de endereçamento de memória de 32 bits (híbrido x86 e x86_64) em sistemas x86 de 64 bits.
Qual é a arquitetura x32?
A sub-arquitetura x32 é um híbrido x86_64 ABI, que permite a utilização de um endereço de memória modelo de 32 bits em 64 bits (o processador opera em 64 – modo bit, mas usa 32).
O ABI X32 permite que os aplicativos aproveitem ao máximo a arquitetura x86_64, como registros adicionais e instruções mais rápidas, PIC ABI.
Ao mesmo tempo, o ABI X32 permite trabalhar com ponteiros de memória de 32 bits, o que economiza a própria memória. Além disso, contribui para um preenchimento mais eficiente do cache do processador. Por fim, tem um efeito positivo na velocidade geral de execução do código.
A limitação do ABI X32 é a impossibilidade de direcionar mais de 4 GB de memória do aplicativo.
O suporte ao X32 faz parte do kernel Linux desde o seu lançamento.3.4, em maio de 2012.
Os desenvolvedores debaterão se continuarão com a manutenção desta arquitetura ou não
De acordo com o desenvolvedor que propõe a eliminação da tecnologia x32, o uso não foi justificado e não encontrou uma aplicação prática nas modernas distribuições industriais.
Além disso, o código x32 usa um método bastante controverso para trabalhar com chamadas do sistema. Assim, cria o risco de interromper a operação normal após o processamento de chamadas para o sistema.
Linus Torvalds disse que concordaria com a eliminação de x32 se não houver argumentos enviados em defesa do mesmo. Ele também quer a apresentação de sistemas nos quais a subarquitetura x32 foi aplicada.
Linus ainda apontou que, aparentemente, o uso da arquitetura x32 foi limitado a testes de desempenho extremos. Para ele, o suporte desta subarquitetura está associado a um grande número de complicações para manter as distribuições e o ambiente de desenvolvimento.
Veja as mensagens
Olá a todos.
Estou pensando seriamente em enviar um patch para remover o suporte ao Linux x32 . Aqui estão alguns problemas:
- Não é totalmente claro que tem usuários. Tanto quanto sei, é suportado no Gentoo e Debian;
- A maneira como o sistema de chamadas funciona é muito estranha. A maioria dos syscalls em x32 entra através de seu * native * (isto é, não COMPAT_SYSCALL_DEFINE) com o ponto de entrada, e isso é intencional.
Por exemplo, adjtimex () usa a entrada nativa, não a entrada compat, porque o timex da estrutura de x32 corresponde ao design x86_64. Mas um punhado de syscalls tem pontos de entrada separados – estes são os syscalls que começam em 512.
Estes entram pelos pontos de entrada COMPAT_SYSCALL_DEFINE.
Os syscalls x32 que * no * estão no intervalo 512 violam todas as semelhanças da convenção central syscall.
Em manipuladores syscall, in_compat_syscall () retorna verdadeiro, mas o COMPAT_SYSCALL_DEFINE entrada não invocou este é louco e o risco de quebrar as coisas quando as pessoas está consignado sua syscall implementações executar.
E acima de tudo ninguém prova estas coisas.
E os testes?
Em uma ocasião, ao testar x32, um dos desenvolvedores do Gentoo concluiu que a melhoria no desempenho ao mudar para x32 ABI não é tão grande quanto os testes sintéticos mostram criadores x32 ABI:
Um progresso significativo apenas é observada quando em comparação com a arquitectura x 86 anterior. Porém, quando comparado com a arquitetura x86-64 corrente, o ganho é mínimo.