Informazioni sul servizio
TradottoSono uno sviluppatore a basso livello che lavora a stretto contatto con l'hardware. Da oltre dieci anni scrivo e ottimizzo manualmente assembler per x86 e ARM, spremendo prestazioni dove ogni ciclo di clock e ogni linea di cache contano. Quando un ciclo caldo rallenta l'intero prodotto, lo scompongo a livello di istruzione, comprendo esattamente come il processore lo esegue e lo riscrivo in modo che la pipeline non si blocchi, i rami siano ben previsti e l'accesso alla memoria sia amichevole con la cache. Questo non è sviluppo di applicazioni tipico: leggo codice disassemblato con la stessa facilità con cui altri leggono sorgenti e ragiono su registri, corsie SIMD, allineamento e microarchitettura, non su framework.
Il mio lavoro quotidiano consiste nell'ottimizzare manualmente sezioni critiche per le prestazioni, profili accurati e misurazioni oneste prima e dopo, in modo che il guadagno sia visibile nei numeri, non solo a parole. Faccio debugging a livello di istruzione quando un crash o un bug sottile si manifesta solo in una build ottimizzata e conduco un legittimo reverse engineering: ripristino documentazione persa, comprendo comportamenti non documentati del tuo componente e mantengo software il cui binario è divergente dalle sorgenti. Scrivo assembler pulito e commentato che anche un ingegnere ordinario può leggere e tengo sempre a disposizione una versione di riferimento portatile in modo che il codice rimanga manutenibile.
Mostrami dove fa male: codec, kernel matematico, parser, ciclo fisico interno, procedura firmware. Misurerò, troverò il vero collo di bottiglia invece di supposizioni e fornirò una versione ottimizzata e testata con numeri a dimostrarlo.
— Assembler x86 e ARM, scritto a mano e ottimizzato
— Vettorizzazione SIMD: SSE, AVX e NEON
— Profilazione, benchmark e analisi dei punti critici
— Debugging di build ottimizzate a livello di istruzione
— Reverse engineering e disassemblaggio per manutenzione
— Ottimizzazione della cache, allineamento e previsione dei rami
Il mio lavoro quotidiano consiste nell'ottimizzare manualmente sezioni critiche per le prestazioni, profili accurati e misurazioni oneste prima e dopo, in modo che il guadagno sia visibile nei numeri, non solo a parole. Faccio debugging a livello di istruzione quando un crash o un bug sottile si manifesta solo in una build ottimizzata e conduco un legittimo reverse engineering: ripristino documentazione persa, comprendo comportamenti non documentati del tuo componente e mantengo software il cui binario è divergente dalle sorgenti. Scrivo assembler pulito e commentato che anche un ingegnere ordinario può leggere e tengo sempre a disposizione una versione di riferimento portatile in modo che il codice rimanga manutenibile.
Mostrami dove fa male: codec, kernel matematico, parser, ciclo fisico interno, procedura firmware. Misurerò, troverò il vero collo di bottiglia invece di supposizioni e fornirò una versione ottimizzata e testata con numeri a dimostrarlo.
— Assembler x86 e ARM, scritto a mano e ottimizzato
— Vettorizzazione SIMD: SSE, AVX e NEON
— Profilazione, benchmark e analisi dei punti critici
— Debugging di build ottimizzate a livello di istruzione
— Reverse engineering e disassemblaggio per manutenzione
— Ottimizzazione della cache, allineamento e previsione dei rami