da apatriarca » 05/10/2020, 11:01
Prima di tutto è importante capire che esistono tantissimi livelli di astrazione quando si lavora con i computer. Un cambio di tecnologia nei transistor non ha necessariamente un effetto immediato visibile sui livelli superiori. Tu insomma continuerai probabilmente a scrivere il tuo programma in Python e questo funzionerà senza problemi e forse più velocemente sui nuovi computer di domani. Per darti un'idea generale i transistor sono simili a interruttori minuscoli. A partire da questi transistor si costruiscono dei circuiti digitali base come le porte logiche che rappresentano operazioni booleane come AND, XOR, NOT.. a partire da queste porte logiche si costruiscono circuiti logici per fare operazioni più complesse come la somma tra numeri interi o la radice quadrata di un numero in virgola mobile. A questo punto questi elementi di base vengono messi insieme per costruire il tuo processore. Un processore a sua volta verrà attratto in base alle operazioni che è un grado di eseguire (prende il nome di ISA instruction set architecture). A questo punto hai il tuo computer e iniziano le astrazioni software fornite dal firmware, sistema operativo, linguaggio di programmazione.. È molto difficile essere un esperto di tutti questi livelli e in effetti le astrazioni servono proprio a non renderlo necessario. Il mondo dei transistor è quello più legato alla fisica. Mentre alcune strade sono più ovvie al momento, altre potrebbero comparire all'improvviso grazie a nuove scoperte e processi ingegneristici attualmente ignoti. Non è facile, neanche per qualcuno che ha studiato queste cose e ne comprende le basi come me, seguire sempre le news in questo campo. Ma per qualcuno che non si occupa del design di processori, è più utile conoscere qualcosa dei livelli un po' più alti. Per esempio come funzionano i processori. Per esempio cos'è la pipeline, cosa si intende con SIMD, cosa significa out-of-order, cos'è la cache, cosa cambia tra una CPU e una GPU. Comprendere perché le GPU sono più adatte a fare operazioni per il deep learning..