Quais são os custos de latência e taxa de transferência do compartilhamento produtor-consumidor de um local de memória entre irmãos hiper-irmãos versus irmãos não-hiper?
Dois threads diferentes em um único processo podemcompartilhar um local de memória comum, lendo e / ou escrevendo nele.
Geralmente, esse compartilhamento (intencional) é implementado usando operações atômicas usando olock
prefixo x86, que possui custos bastante conhecidos tanto para olock
próprio prefixo (ou seja, o custo incontestável) e também custos adicionais de coerência quando a linha de cache érealmente compartilhado (verdadeiro oufalso compartilhamento).
Aqui, estou interessado nos custos do consumidor produzido, em que um único segmentoP
grava em um local de memória e outro encadeamento `C lê a partir do local de memória, ambos usandoavião lê e escreve.
Qual é a latência e a taxa de transferência dessa operação quando executada em núcleos separados no mesmo soquete e em comparação quando executada em hyperthreads irmãos no mesmo núcleo físico, em núcleos x86 recentes.
No título, estou usando o termo "hiper-irmãos" para se referir a dois segmentos em execução nos dois segmentos lógicos do mesmo núcleo, e entre-irmãos para se referir ao caso mais comum de dois segmentos em execução em núcleos físicos diferentes .