更多资料请访问与非网 MIPS
MIPS
MIPS
MIPS 技术社区
利用 MIPS
MIPS
MIPS
MIPS 多线程处理器优化 SoC
SoC
SoC
SoC 设计
多线程是一种基于硬件或软件的处理技术 , 它的首要目标是计算型工作中利用并发来提
高性能。多线程也可以用于区别各种任务,以便可以将优先权分配给更多时间敏感的流量
,
如语音 、 视频或关键数据 。 而公认的基于软件的多线程技术 , 如任务切换和基于软件的线程
调度已经存在了相当一段时间 , 很少有人知道基于硬件的多线程的历史 。 基于硬件的多线程
技术其实已经存在了相当长一段时间,其实现可以追溯到 20 世纪 60 年代的 CDC6600 。 在
CDC6600 电脑中 , 10 个硬件线程被用来保证从 I/O 处理器到约 16 个外围设备的响应时间
。
这个例子的处理器运行速度远远超过了许多 I/O 设备 , 是一个充分利用多线程优势的典型应
用,因为空闲处理时间可以被从线程到线程切换的有益工作所取代。在 70 年代, Denelcor
HEP 机是在 CPU 内,而不是在 I/O 实际执行线程切换。类似上例,最终结果是每个周期的
指令 (IPC) 有了显著改善 。 之后 10 年推出的其他几个系统和学术研究进一步展示了硬件多线
程的好处。
今天的市场上有许多多线程处理器 。 英特尔公司已经利用其超线程技术将该技术引入高端计
算应用领域。此外,其他许多 SoC 制造商,如 Broadcom 、 Lantiq 、 Mobileye 、 NetLogic
Microsystems 、 PMC-Sierra 、 Ralink Technology 和 Sigma Designs 也交付了上百万个采用多
线程处理器的产品 。 许多这样 的 So C 都采用了基于业界标 准 MIP S 架构的多线 程 MIPS32 34 K
系列内核或多线程、多处理 MIPS32 1004K 一致处理系统 (CPS) 。目前硬件多线程已经成为
主流应用,并越来越被视为 SoC 设计中实现最佳性能的有效方法。
用多线程提高流水线利用率
如前所述 , 增加一个给定单线程处理器的 IPC 数量是一个主要目标 。 通常情况下 , 即使是非
常高性能的处理器也有大量时间闲置 , 目的是等待数据到达 。 常见的情况是 , 带有共享存储
系统先进处理器需花 50% 的时间等待数据在缓存未中 (cache miss) 后返回 。 此数据检索的等
待时间可能会持续几十个周期 , 在极端情况下甚至是数百个周期 。 无论数量多少 , 处理器在
此期间做的都是无效工作。多线程处理器可以在多个线程之间切换以利用这些闲置的周期
。
这些周期现在可以用来自其他线程的有用指令填满 , 从而避免未使用的周期白白浪费 。 这最
终将获得更好的流水线利用率并提升系统的吞吐量。
确保线程切换效率的一个关键环节是怎样进行线程相关信息或语境的管理 。 当映射到一个线
程时 , 每个任务都有相关的上下文信息 , 如程序计数器和寄存器信息子集 , 这些信息是以硬
件加载和更新的。在单线程处理器中,由于处理器在线程之间切换,这些上下文必须导入
(swapped in) 或导出。当在线程之间变换时,需要有与保存和恢复操作有关的额外处理 。 这
种负担可能会变得非常繁重,尤其是采用高语境 (high context) 切换。多线程处理器支持由
每个硬件支持的线程的完整上下文存储 , 无需保存和恢复操作 。 这种机制支持切换线程或上
下文的零周期开销。