在一个CPU中拥有多个内核是为了同时运行多个线程/进程,还是为了实现指令级并行? [英] Is having multiple cores in a CPU for running multiple threads/processes at once, or for instruction-level parallelism?

查看:20
本文介绍了在一个CPU中拥有多个内核是为了同时运行多个线程/进程,还是为了实现指令级并行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只是想更清楚地了解多核到底是做什么用的,以及多核和多CPU之间有什么区别。

我想了解的是,拥有多个核心是为了在给定的CPU内实现指令级并行,还是一个CPU内的多个核心都有自己的结构RQ,允许它们独立调用__Schedule()并随意调度进程/线程,然后由每个核心内的其他模块处理指令级并行。

如有任何意见,欢迎光临。

推荐答案

ILP单独位于每个物理核心中。
跨站复制:How does a single thread run on multiple cores?
(并非如此--每个核心都有多个执行单元和一个宽阔的前端。 请阅读我的链接答案,以了解我不会重复的细节。另请参阅现代微处理器 A 90分钟指南!)

此外,实际的CPU核心可以假装是多个逻辑核心(即每个逻辑核心都有寄存器上下文,并且可以独立调用__schedule())。一般而言,这是SMT;该概念最广为人知的品牌实现是英特尔的超线程。让多个软件线程真正同时共享一个CPU(而不是通过软件上下文切换)为核心提供了两个指令流,以寻找核心之间以及内部的并行性,通常会增加总体吞吐量(在一定程度上以单线程性能为代价,这取决于工作负载中的单个线程保持核心的繁忙程度)。


在某些情况下,";CPU";是单核的同义词。例如,perf stat输出显示已使用7.5个CPU。

但更多时候,CPU指的是整个物理包,例如我的CPU是四核的,i7-6700k。服务器主板通常为双插槽,允许您插入两个独立的多核CPU。

也许这就是造成一些术语混淆的原因?

这篇关于在一个CPU中拥有多个内核是为了同时运行多个线程/进程,还是为了实现指令级并行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆