Casa > D > Devo Aprender Montagem Para A Intel Ou Arm Como Um Iniciante?

Devo aprender montagem para a Intel ou ARM como um iniciante?

Você quer dizer qual, ou qualquer uma, ao contrário de alguma outra opção, como o POWER da IBM? Ou aprender assembly em oposição a uma linguagem de nível superior como Julia ou talvez a linguagem C?

Como iniciante você deve aprender uma linguagem de nível superior. E enquanto a linguagem assembly quase nunca é usada diretamente, mesmo pela maioria dos programadores com mente de desempenho, é útil aprender pelo menos algum assembly para ser capaz de lê-la.

A outra resposta aqui é boa com, por exemplo, "Realmente depende do porque você quer aprender a linguagem assembly sobre qual seria um melhor ponto de partida".

Vou tentar comentar isso aqui, e ver também a minha resposta:

Páll Haraldsson'a resposta de Qual é a diferença entre um processador (por exemplo, da Intel) e um processador em um sistema embarcado (como no Raspberry Pi) ou microcontroladores?

[Estritamente falando ARM geralmente implica o conjunto de instruções de 32 bits, mas há também uma arquitetura ARM (ou AArch64) completamente diferente com um conjunto diferente usado em processadores ARM de 64 bits, inclusive em smartphones. Todos os chips de 64 bits em pelo menos dispositivos como smartphones, também podem usar o antigo conjunto de instruções de 32 bits do ARM.]

Embora o ARM seja agora mais usado em smartphones embutidos e smartphones (e a montagem do ARM pode ajudar na velocidade e/ou código de economia de bateria eficiente), o ARM agora também é uma possibilidade para supercomputadores com um ARM baseado na lista de supercomputadores TOP500.

A eficiência energética também é importante para os supercomputadores, não porque eles sejam alimentados por bateria, eles não são, eles podem precisar de sua própria estação de energia e a conta elétrica é o fator restritivo.

Os dois maiores supercomputadores do mundo agora não usam nem Intel nem ARM (eles usam CPUs POWER), e nem o computador chinês que eles usaram. Portanto, a montagem Intel ou ARM seria inútil para eles. Eu não estou dizendo estritamente inútil para aprender também, digamos ARM, já que eles não são muito diferentes e no conhecimento geral de montagem, os conceitos, transferência.

Having disse que o x86 (principalmente Intel e também três computadores AMD) dominou a lista de supercomputadores TOP500 por anos. Ainda assim as GPUs ajudam a maioria deles, incluindo a maioria, mas não todos, dos 10 melhores. As GPUs fornecem a eficiência energética. Eles têm a linguagem de código assembly (e máquina) própria, que quase ninguém quer aprender, pois é abstraída e gerada. You want that so that your code works on a newer or other type of GPU that doesn’t have the same instruction set. Neural network chips (e.g. Google’s TPUs, with three generations by now) are in some cases a replacement for GPUs (where they are used for computation, not graphics).

While I mostly read x86 by now as [my] laptop (and most desktops use), if my computer happened to use ARM I would get ARM assembly below (and with POWER get such etc. while currently these four are the only ones supported as they are the only important ones left) and need to understand it, if I wanted to use the code_native macro to feel confident that my code is as optimized as it could be:

  1. julia> @code_native 2*2 
  2. .text 
  3. Filename: int.jl 
  4. pushq %rbp 
  5. movq %rsp, %rbp 
  6. Source line: 33 
  7. imulq %rsi, %rdi 
  8. movq %rdi, %rax 
  9. popq %rbp 
  10. retq 
  11. nopl (%rax) 
  12.  
  13.  
  14. julia> @code_native 2.0*2.0 
  15. .text 
  16. Filename: float.jl 
  17. pushq %rbp 
  18. movq %rsp, %rbp 
  19. Source line: 244 
  20. mulsd %xmm1, %xmm0 
  21. popq %rbp 
  22. retq 
  23. nopw (%rax,%rax) 

De Salim

Os chips ARM são mais rápidos que a Intel? :: Como está o processador 'Shakti' fabricado na Índia, comparado com a Intel e o ARM?