Ci sono modifiche che potrebbero essere apportate alle CPU per renderle più performanti per i runtime simultanei come Rust? Ad esempio, ci sono modifiche alle implementazioni di previsione delle filiali o alle dimensioni della cache che potrebbero aiutare i runtime simultanei?
Ho l'impressione che gli attuali progetti di CPU potrebbero essere ottimizzati maggiormente per i runtime procedurali come C. Se invece avessimo intenzione di ottimizzare per i runtime simultanei, come apparirebbero le CPU diverse?
Per quanto riguarda l'istanza, la previsione del ramo è stata implementata sulla base di generalizzazioni tratte in articoli di ricerca che analizzano i codici procedurali. Mi chiedo se l'astrazione della concorrenza aggiungerà un set di lavoro significativo al runtime che influisce negativamente sugli algoritmi di previsione del ramo esistenti. Ad esempio, prevedere in un ciclo for è una cosa, ma quando la destinazione del ramo è sempre una nuova porzione di memoria (grafica, testo, ecc.), Ci sarà sempre un errore nella cache e non ci sarà mai ramo storia per questo, perché nessuno dei due l'ha ancora toccato.
Questa è probabilmente una domanda sciocca perché il contenuto, sebbene possa essere sempre nella RAM, sarà ramificato a un ordine di grandezza inferiore a quello che verrà utilizzato (una volta caricato nella cache) ... ma comunque, lì dovrebbe essere un limite temporale osservabile per i contesti memorizzati nella cache e predittori di diramazioni in un runtime procedurale, che si manifesterebbe come un confine di astrazione in un ambiente più parallelizzato. Quindi mi chiedo ... Sono stati rispettati questi confini? Alcuni documenti di ricerca lo hanno analizzato?
Le architetture della CPU sono orientate verso il codice procedurale rispetto al codice concorrente; o le moderne CPU sono sufficientemente generiche da non subire un linguaggio altamente concorrenziale?