Quais são as vantagens e desvantagens das instruções do polegar em relação às instruções de 32 bits do ARM?
Vantagens:
25% - 35% menor tamanho do programa. Ou, olhando para ele pelo outro lado, 33% - 50% mais recursos na mesma quantidade de código. Isto é importante tanto para computadores embedded muito baixos com espaço limitado do programa na ROM como, talvez contra-intuitivamente, em servidores massivos com grande número de núcleos de CPU e caches de tamanho limitado.
Desvantagens:
Pumbum1: não é um conjunto completo de instruções. Não só faltam coisas necessárias aos sistemas operacionais, mas também coisas necessárias ocasionalmente aos programas normais, exigindo assim que o conjunto completo de instruções ARM também esteja presente, e uma mudança para ele e de volta. Isso não é muito lento, mas precisa de várias instruções para fazer isso. Algumas coisas nos programas Thumb1 podem acabar maiores e mais lentas do que no ARM. Thumb1 foi projetado tanto para rodar em um barramento de memória de 16 bits de largura (sem caches) quanto para programas menores. Isso raramente se aplica hoje.
Thumb2: sem desvantagens. É um conjunto completo de instruções, e algumas CPUs são feitas apenas com o Thumb2, sem modo ARM. Essencialmente todas as instruções do ARM estão disponíveis como instruções Thumb2 de 32 bits, e você pode misturá-las livremente com instruções de 16 bits. A única desvantagem muito leve é que a codificação binária é um pouco feia, então é basicamente impossível ler o código da máquina em hexadecimal por "mão". Mas é muito incomum agora não ter um depurador que possa desmontar o código para você. Mesmo sistemas embarcados podem ser "amarrados" a um depurador em um "PC" anexado, e todos podem pagar um PC (qualquer coisa do Raspberry Pi em cima).
Talvez o mais estranho para mim é que a ARM Ltd esqueceu as lições de Thumb2 quando projetaram o ARM64 (Aarch64) Todas as instruções são de 32 bits de tamanho fixo, e não há espaço na codificação para convenientemente adicionar instruções mais curtas mais tarde. Eles poderiam duplicar o truque Thumb1, mas não há gordura nas instruções para fazer o truque Thumb2 (essencialmente trocando os quatro bits usados para a execução predicated).
RISC-V por outro lado fez isso direito. Ele foi projetado como um conjunto de instruções de 64 bits (com um subconjunto de 32 bits possível). Todas as instruções padrão são de 32 bits e você pode fazer um computador usando apenas aquelas (RV64I{MA}). Mas foi deixado espaço desde o início tanto para instruções de 16 bits como para instruções mais longas. Como resultado, o RISC-V com a extensão padrão C é de longe a instrução mais compacta definida para um computador de 64 bits (e corresponde essencialmente ao Thumb2 para os 32 bits mais compactos).
Isso pode acabar prejudicando o Aarch64.
Artigos semelhantes
- Por que HDR é apenas 8+2 bits = 10 bits, não 8*4=32 bits quando 4K = Full HD x4 pixels?
- Porque é que você precisa de uma licença do ARM para projetar uma CPU ARM? Como são protegidos os conjuntos de instruções?
- Por que alguns laptops são pré-instalados com SO de 32 bits quando eles são capazes de 64 bits?
- Quais são algumas das vantagens da Amazon? Quais são algumas das desvantagens?