- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
想象一个超标量(多个执行单元)并且还具有超线程 (SMT) 支持的 CPU(或内核)。
为什么 CPU 可以真正并行执行的软件线程数量通常由它拥有的逻辑内核(即所谓的硬件线程)数量决定,而不是它拥有的执行单元总数?
如果我的理解是正确的,SMT 实际上并没有实现真正的并行执行,它只是通过复制 CPU 的某些部分(那些存储架构状态,但不是主要执行资源的部分)来使上下文切换更快/更有效。另一方面,超标量架构允许每个时钟周期真正同时执行多条指令,因为 CPU 具有多个执行单元,即多个并行流水线,每个流水线都可以以真正的并行方式处理单独的线程。
那么举个例子,如果一个CPU有2个内核,每个内核有2个执行单元,那么它的硬件并发(真正可以并行执行的线程数)不应该是4吗?为什么它的硬件并发性而不是由逻辑内核的数量给出,而 SMT 实际上并没有启用真正的并行执行?
最佳答案
您不能只是将指令插入执行单元。
如果您想要两个 2 路 SMT,您需要保持两个架构状态并获取两个指令流。
如果一个公司有 100 个开发人员,但只有两个项目经理,它只能并行开发两个项目(但如果让 PM 每天左右切换项目,它可以 concurrently 开发更多)。
如果 CPU 只能从两个指令流中获取数据(仅保留两个线程上下文),则您只能为其分配两个线程来并行执行。
但是,您可以进行时分并同时执行更多线程。
软件无法访问执行单元,这将产生循环参数(软件需要 EU 来执行,但 EU 需要软件来执行)。
CPU 将尝试使用尽可能多的 EU,利用乱序并推测任何可能的东西。
实际上,超线程只是一种让所有资源保持忙碌的方式(例如,当他们无事可做时,与另一个 PM 共享一个开发人员)。
但是,如果一切都失败了并且没有使用欧盟,那么这个可能的工作单元就白费了。
关于cpu - 超线程与超标量执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55636494/
在C#中,我可以通过base关键字访问基类,在java中,我可以通过super关键字访问它。在delphi中如何做到这一点?假设我有以下代码: type TForm3 = class(TF
在这件事上我已经把头撞到墙上好几次了。所以我希望在正确的方向上得到一点帮助。 我有一张 table ,上面有订单,一张 table 上有火车,一张 table 上有航类,一张 table 上有巴士。每
在 Python 中,假设我有以下代码: class SuperClass(object): def __init__(self, x): self.x = x
我希望这个 subview 扩展到它的父 View 之外,但是父 View 的边框正在切入 subview 。有没有办法防止这种情况? class TheView : UIView { let
我有一个标准的高斯函数,看起来像这样: def gauss_fnc(x, amp, cen, sigma): return amp * np.exp(-(x - cen) ** 2 / (2
例如,我有下一个类,带有有界类型参数: public class ItemContainer { void addItems(List items); } 在另一个带有参数的类中使用: pub
如何将此设置转换为命令? 结果如下: // Manual Compression (see the image above) Compressed Size: 12,647,451 bytes //
请建议在应用继承时如何使用@Wither/@With。 我有一个抽象类Parent和具体的Child。 Child 应该是不可变的。将 @Wither 放在两者上会给我两个错误: 构造函数 Child
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在尝试向服务器(虚拟托管)发出 HTTP2 请求,该服务器根据主机 header 值 (SNI) 提供 SSL 证书。 # conn = hyper.HTTP20Connection('h
我有一个应用程序,必须将大约 1300 万行、大约 10 个平均长度的字符串插入到嵌入式 HSQLDB 中。我一直在调整一些东西(批量大小、单线程/多线程、缓存/非缓存表、MVCC 事务、log_si
我想定义一个函数f(x, t::Type)根据 isa(x, t) 是否执行不同的行为.假设我想调用b1(x)如果是,b2(x)除此以外。 我知道我可以像这样在运行时进行动态检查: function
我正在使用 Hyper-V WMI Provider在 Hyper-V 中导入虚拟机,特别是使用 ImportVirtualSystemEx Msvm_VirtualSystemManagementS
这几个星期以来一直困扰着我,我没有结束对它的研究,因为我目前重载并且它让我落后于第一年的 CS (opengl) 大学类(class),这首先让我研究了这个:如何只用一个 for 循环绘制立方体的所有
我正在我的计算机(操作系统:Windows 8)上开发一个 WP8 应用程序。我需要安装一个 VM 才能拥有 linux。同时我需要使用我的 Windows Phone 模拟器。 我下载了 VMWar
我是一名优秀的程序员,十分优秀!