Uno strumento per la navigazione di complesse istruzioni del computer

Uno strumento per la navigazione di complesse istruzioni del computer
Credito: Intel

Abbiamo fatto molta strada da quando Intel ha introdotto il primo microprocessore nel 1971. Il loro 4004 conteneva 2.300 transistor, con i migliori chip di oggi che superano i miliardi, sfruttando sempre più potenza dalla loro nascita.

Ma ogni volta che Intel rilascia un nuovo chip per computer, si tratta di un investimento costoso, poiché devono aggiungere nuove istruzioni di programmi per computer che indichino quali dati elaborare e come elaborarli. Queste sono cose che un utente non vede, ma che alimentano attività come l’elaborazione delle immagini, l’apprendimento automatico e la codifica video.

Tuttavia, i programmi che elaborano queste nuove informazioni, chiamati compilatori, non possono sempre utilizzare queste istruzioni più complesse. L’onere quindi spesso ricade sugli sviluppatori esperti di svolgere più lavoro a mano e di eseguire attività soggette a errori e ingombranti come la scrittura di codice assembly.

Gli scienziati del Computer Science and Artificial Intelligence Laboratory (CSAIL) del MIT hanno escogitato un modo per navigare meglio nella complessità del supporto di queste istruzioni. Il loro strumento “VeGen” (pronunciato “vegan”) genera automaticamente plug-in del compilatore per utilizzare in modo efficace istruzioni più complicate.

Dottorato di ricerca CSAIL lo studente Yishen Chen afferma che VeGen raccoglie la stessa documentazione che Intel fornisce agli sviluppatori di software e genera automaticamente un plug-in del compilatore che consente al compilatore di sfruttare qualcosa chiamato SIMD (non-Single Instruction Multiple Data), che sono istruzioni più complicate da accelerare un dato programma fornito dall’utente.

“Senza VeGen, gli ingegneri del compilatore devono leggere la documentazione e modificare manualmente il compilatore per utilizzare queste istruzioni”, afferma Chen, autore di un nuovo articolo su VeGen. “I problemi qui sono che questo è ancora manuale e gli attuali algoritmi del compilatore non sono efficaci nell’usare queste istruzioni.”

Metodi di istruzione

La maggior parte dei processori utilizza istruzioni basate sulla matematica che consentono di eseguire operazioni come “A= B+C”.

I processori supportano anche qualcosa chiamato istruzioni vettoriali, che sono istruzioni che eseguono operazioni multiple ma identiche contemporaneamente, come “A1=B1+C1 e A2=B2+C2”. Queste sono entrambe considerate istruzioni “SIMD” più tradizionali.

Le istruzioni “non SIMD” sono più complicate, ma ancora più potenti ed efficienti, come le istruzioni che eseguono sia addizioni che sottrazioni contemporaneamente. Chen afferma che VeGen è principalmente motivato da istruzioni che non si adattano al modello SIMD, in un modo o nell’altro.

Pensa all’intero processo come a un ristorante:

  • Il programmatore è lo chef famoso che pensa a un programma (un piatto)
  • Il compilatore è il sous chef che prende il programma (il piatto) e crea le istruzioni da eseguire (ricetta) conoscendo le risorse a disposizione in cucina
  • Il processore è la cucina
  • Le istruzioni (la ricetta) vengono eseguite (preparate) dai cuochi di linea avvalendosi di diverse attrezzature presenti in cucina
  • Un nuovo design del processore che aggiunge nuove funzionalità al processore è il rimodellamento della cucina o l’aggiunta di nuove attrezzature da cucina.

Se il sous chef e il suo team non sanno come utilizzare le nuove attrezzature, i ristoratori che spendono tutti i soldi per ristrutturare la cucina non saranno contenti.

“Con l’avvento di istruzioni complesse, è diventato difficile per gli sviluppatori di compilatori mantenere aggiornate le strategie di generazione del codice per sfruttare tutto il potenziale supportato dall’hardware sottostante”, afferma Charith Mendis, professore presso l’Università dell’Illinois a Urbana -Champaign, un autore su un articolo sullo strumento. “L’approccio di VeGen alla creazione di generatori di generatori di codice allevia questo onere generando automaticamente parti del compilatore responsabili dell’identificazione di sequenze di codice che possono sfruttare nuove funzionalità hardware. Ci auguriamo che l’approccio di VeGen alla creazione di componenti del compilatore porti a infrastrutture del compilatore più sostenibili e manutenibili nel futuro.”

I risultati iniziali hanno mostrato che, ad esempio, su alcuni kernel di codifica video, VeGen potrebbe utilizzare automaticamente istruzioni vettoriali non SIMD e aumentare la velocità dal 27% al 300%.

“Mettere insieme tutti i manuali di istruzioni Intel è più di un piede di larghezza, e va in migliaia di pagine”, afferma il professore del MIT Saman Amarasinghe, un autore del documento su VeGen. “Normalmente, lo scrittore del compilatore deve riversare i dettagli fini delle modifiche alle istruzioni, distribuite su centinaia di pagine, ma VeGen ignora totalmente il noioso lavoro”.

“Dato che l’hardware diventa più complicato per accelerare i domini ad alta intensità di elaborazione, riteniamo che VenGen sia un contributo prezioso”, afferma Chen. “L’obiettivo a lungo termine è che, ogni volta che si aggiungono nuove funzionalità al proprio hardware, possiamo trovare automaticamente un modo, senza dover riscrivere il codice, per utilizzare quegli acceleratori hardware”.

Chen ha scritto il documento insieme a Mendis e ai professori del MIT Michael Carbin e Saman Amarasinghe. Presenteranno il documento virtualmente alla conferenza Architectural Support for Programming Languages ​​and Operating Systems (ASPLOS) ad aprile.


Leave a Reply