为了账号安全,请及时绑定邮箱和手机立即绑定

在具有HT的一个Core上执行的线程之间的数据交换将使用什么?

在具有HT的一个Core上执行的线程之间的数据交换将使用什么?

超线程技术是Intel引入的一种同时多线程技术的形式。这些资源包括执行引擎,缓存和系统总线接口。资源共享使两个逻辑处理器可以更有效地相互协作,并且使停滞的逻辑处理器可以从另一个逻辑处理器借用资源。在具有超线程功能的英特尔CPU中,一个CPU内核(带有多个ALU)可以在同一时钟执行来自2个线程的指令。两个线程共享:存储缓冲区,缓存L1 / L2和系统总线。但是,如果两个线程在一个Core上同时执行,线程1存储原子值,线程2加载该值,那么该交换将使用什么:共享存储缓冲区,共享缓存L1 / L2或通常的缓存L3?如果两个线程来自同一进程(相同的虚拟地址空间),并且来自两个不同进程(不同的虚拟地址空间),将会发生什么?Sandy Bridge Intel CPU-缓存L1:32 KB-缓存大小64 B-缓存行大小512行(512 = 32 KB / 64 B)8路64-路数集(64 = 512行/ 8路)虚拟地址(索引)的6位[11:6]-定义当前设置的编号(这是标签)4 K-每个相同(虚拟地址/ 4 K)争夺同一组(32 KB / 8路)低12位-对确定当前设置的数字有效4 KB-标准页面大小低12位-每个地址的虚拟和物理地址相同
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

在相同或不同地址空间的两种情况下都是如此,因为页面大小为4096 B(12位),即虚拟地址和物理地址的低12位相同,并且Intel x86_64 L1被“虚拟索引,物理标记”,并且8种方式和标签范围为0-512(8 * 64)的64B高速缓存行大小,即用于物理标记的是低9位(512),正如我们刚刚决定的-虚拟地址和物理地址相同,且标记为高速缓存行对于整个一级缓存是唯一的。

查看完整回答
反对 回复 2019-12-04
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

现在,我对CPU架构有了更多的了解,我只是重新编写了很多这个答案(特别是,存储退役时不会提交给L1 ,而是在存储缓冲区到达时才提交给L1 。) ,我们可以排除超线程之间的存储转发,因为存储缓冲区是静态分区的。另外,我认为我做得更好,解释了为什么可以共享L1d,即VIPT高速缓存的特殊情况,即页面偏移量以下的索引位(设置选择,而不是选路,注释中的另一个错误),因此它像被物理索引一样工作。

查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 728 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信