QNA > D > Dovrei Imparare L'assembly Per Intel O Arm Come Principiante?

Dovrei imparare l'assembly per Intel o ARM come principiante?

Vuoi dire quale, o entrambi, rispetto a qualche altra opzione come il POWER di IBM? O imparare l'assembly invece di un linguaggio di livello superiore come Julia o forse il linguaggio C?

Come principiante dovresti imparare un linguaggio di livello superiore. E anche se il linguaggio assembly non è quasi mai usato direttamente, anche dalla maggior parte dei programmatori attenti alle prestazioni, è utile imparare almeno un po' di assembly per essere in grado di leggerlo.

L'altra risposta qui è buona con ad esempio "Dipende davvero dal motivo per cui si vuole imparare il linguaggio assembly su quale sarebbe un punto di partenza migliore."

Provo a commentare qui, e vedere anche la mia risposta:

Páll Haraldsson's risposta a Qual è la differenza tra un processore (ad es, di Intel) e un processore in un sistema embedded (come nel Raspberry Pi) o microcontrollori?

[In senso stretto ARM di solito implica il set di istruzioni a 32 bit, ma c'è anche un'architettura ARM (o AArch64) completamente diversa con un set diverso usato nei processori ARM a 64 bit, anche negli smartphone. Tutti i chip a 64-bit, almeno nei dispositivi come gli smartphone, possono anche usare il vecchio set di istruzioni ARM a 32-bit]

Mentre ARM è ora più usato negli embedded e negli smartphone (e l'assemblaggio ARM può aiutare per la velocità e/o il codice efficiente per il risparmio della batteria), ARM è ora anche una possibilità per i supercomputer con ormai un ARM-based nella lista dei supercomputer TOP500.

L'efficienza energetica è importante anche per i supercomputer, non perché siano alimentati a batteria, non lo sono, potrebbero aver bisogno di una propria centrale elettrica e la bolletta elettrica è il fattore limitante.

I primi due supercomputer del mondo in questo momento non usano né Intel né ARM (usano CPU POWER), e nemmeno il computer cinese che hanno superato. Quindi l'assemblaggio Intel o ARM sarebbe inutile per loro. Non sto dicendo che sia strettamente inutile imparare l'uno o l'altro, diciamo ARM, dato che non sono troppo diversi e in generale la conoscenza dell'assembly, i concetti, si trasferiscono.

Detto questo, gli x86 (soprattutto Intel e anche tre computer AMD) hanno dominato la lista dei supercomputer TOP500 per anni ormai. Eppure le GPU aiutano la maggior parte di loro, compresa la maggior parte, ma non tutti, dei primi 10. Le GPU forniscono l'efficienza energetica. In senso stretto hanno il loro proprio linguaggio di codice assembly (e macchina), che quasi nessuno vuole imparare perché è astratto e generato. 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) 

Di Kalinda Sanfilippo

Quali sono le app Django più utili? Quali app rendono il tuo sviluppo Django molto più facile? :: Qual è la differenza tra i processori ARM e Intel AMD?
Link utili