gpt4 book ai didi

multithreading - 使用超线程,一个物理核心的线程通过什么级别的缓存 L1/L2/L3 进行交换?

转载 作者:行者123 更新时间:2023-12-04 06:47:20 31 4
gpt4 key购买 nike

超线程是否允许使用 L1 缓存在两个线程之间交换数据,这两个线程在单个物理内核上同时执行,但在两个虚拟内核中执行?

前提是两者都属于同一个进程,即在同一个地址空间中。

第 85 页 (2-55) - 英特尔® 64 位和 IA-32 架构优化引用手册 :http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf

2.5.9 Hyper-Threading Technology Support in Intel® Microarchitecture Code Name Nehalem

...

Deeper buffering and enhanced resource sharing/partition policies:

  • Replicated resource for HT operation: register state, renamed return stack buffer, large-page ITLB.

  • Partitioned resources for HT operation: load buffers, store buffers, re-order buffers, small-page ITLB are statically allocated between two logical processors.

  • Competitively-shared resource during HT operation: the reservation station, cache hierarchy, fill buffers, both DTLB0 and STLB.

  • Alternating during HT operation: front end operation generally alternates between two logical processors to ensure fairness.

  • HT unaware resources: execution units.

最佳答案

英特尔架构软件优化手册在第 2.3.9 章中简要描述了如何在内核上的 HT 线程之间共享处理器资源。记录了 Nehalem 架构,变得陈旧但很可能仍然与当前架构相关,因为分区在逻辑上是一致的:

  • 为每个 HT 线程复制:寄存器、返回堆栈缓冲区、大页面 ITLB
  • 为每个 HT 线程静态分配:加载、存储和重新排序缓冲区、小页面 ITLB
  • 在 HT 线程之间竞争共享:保留站、缓存、填充缓冲区、DTLB0 和 STLB。

  • 您的问题与第 3 个项目符号相符。在每个 HT 线程执行来自同一进程的代码的非常特殊的情况下,有点意外,您通常可以预期 L1 和 L2 包含由一个 HT 线程检索的数据,这些数据可能对另一个有用。请记住,缓存中的存储单位是一个缓存行,64 字节。以防万一:这不是采用线程调度方法的好理由,该方法有利于让两个 HT 线程在同一个内核上执行,假设您的操作系统支持。一个 HT 线程的运行速度通常比一个获得内核的线程慢很多。 30% 是通常的数字,YMMV。

    关于multithreading - 使用超线程,一个物理核心的线程通过什么级别的缓存 L1/L2/L3 进行交换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27797424/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com