ish*_*243 1 multicore computer-architecture hyperthreading
我正在我的大学做一个并行计算课程,显然我们需要了解程序员级别的架构.谁能说出开发多核处理器的动机是什么?为什么多线程处理器不够用?为什么我们需要在多个内核上分配管道而不是将它们放在一个大型内核上?
随着CPU变得越来越小,速度越来越快,它们接近几个物理极限,这使得在当前路径上继续运行成本更高:
这就是CPU制造商走向多核的原因.理论上,四个核心的处理能力是一个核心的四倍.一些应用程序可以实现这一点但大多数不会.随着时间的推移 - 可能 - 越来越多的应用程序可以更好地利用多核.
在任何时候,构成CPU的大多数组件都没有被使用,理论上可用于处理.这是超线程的存在理由.两个不同的执行线程可以并行运行,只要它们不需要同时访问同一个组件即可.但他们经常这样做.然后一个人必须停下来等待另一个.
另一方面:可以在片上实现的必要功能总是允许比在其他地方更快的执行.外部存储器将始终以CPU内部速度的一小部分执行.80286集成了CPU芯片上的内存保护和虚拟内存.这使其比实现片外功能的竞争设计快得多.80486具有片上L1缓存,尽管80386芯片组的变体实现了片外缓存.然后是片上2级(L2)和后来的L3缓存.奔腾有一个外部存储器接口,宽度是同一时间跨度内读取两倍数据的两倍宽.后来出现了两个或更多外部存储器接口.之后,外部存储器的控制器被移到芯片上,以便更少地干扰正常操作.内存芯片可为每次访问提供两倍(DDR),四倍(DDR2)或八倍(DDR3)的数据.DDR4正在开发中.可以看出,实际CPU和外部存储器之间的接口变得越来越复杂,以便能够消除这一点额外的性能.实施的解决方案基于最适合通用案例的通用访问方案,以便标准软件运行得更快一些.专业软件试图更有效地使用界面,并可以实现惊人的性能.大多数其他软件永远不会接近.相当多的混乱应用程序甚至会超出正常的访问模式而变慢,因为它们对接口起作用.
如果退后一步,你就会意识到,如果可以在CPU和外部存储器之间建立一条直接的,最简单的复杂路径,那么"最佳"的解决方案就是如此.曾经有一台标准计算机就是这样做的 - 基于80386的Compaq Deskpro 386/20 - 它使用静态RAM(SRAM)而不是今天每个人都使用的动态RAM(DRAM)(因为它的价格要便宜得多)记忆单位).SRAM能够与CPU保持同步,这在多周期指令期间实际上会更慢.
我的意思是,许多因素影响总硬件性能,所以说"CPU性能"可能意味着任何数量的东西.他们都在一起工作,经常合作以获得更好的表现.有时他们反其道而行之.
当同时访问相同的资源时,超线程会发生冲突.这些资源不限于CPU中的功能组件.超线程共享相同的缓存和内存接口,也会在那里发生冲突.非超线程多核也会发生冲突,但是当它们访问通常意味着L3缓存和mempry接口的公共资源时.只要它们保留在它们独有的资源(核心,L1和L2)内,它们就可以不间断地运行.
主存储器可以以最大速率传输数据.在标准的,优化不佳的应用程序中,它通常以该速率的100%工作.如果100%可以在可用的n个核之间平均分配,则最佳.
精心设计的硬件解决方案将允许比其他解决方案更快的处理.通过考虑硬件设计而设计为更高效运行的软件将胜过普通软件.
一个有点复杂的答案,但这是一个复杂的主题:-)
| 归档时间: |
|
| 查看次数: |
1718 次 |
| 最近记录: |