Qualcuno ha pensato a come scrivere un gestore di memoria (in C++) completamente privo di diramazioni? Ho scritto un pool, uno stack, una coda e una lista collegata (allocata dal pool), ma mi chiedo quanto sia plausibile scrivere un gestore di memoria generale senza branch.Gestione memoria senza rami?
Questo è tutto per contribuire a creare un framework davvero riutilizzabile per fare una solida CPU concomitante, in-order e cache friendly.
Modifica: da branchless intendo senza effettuare chiamate di funzione dirette o indirette e senza utilizzare ifs. Ho pensato che probabilmente potrei implementare qualcosa che prima modifica la dimensione richiesta a zero per le chiamate false, ma in realtà non ha ottenuto molto di più. Sento che non è impossibile, ma l'altro aspetto di questo esercizio è quindi di profilarlo su detti processori "ostili" per vedere se vale la pena provare così tanto per evitare la ramificazione.
Cosa intendi per "ramo"? –
@Neil, suppongo, è qualcosa che divide il flusso di controllo (operatore 'if', ad esempio). –
Se branch significa 'if', la risposta è solo no. @OP: potresti per favore chiarire se è davvero quello che intendi? –