程序员遇到的常见的一些疑惑

1. CPU到底有几个核?
经常遇到问CPU有几个核,对于intel的CPU来说,需要区分物理核数还是逻辑核数。因为Intel为了利用Pentium 4多层流水线的设计,充分发挥它的性能,引入了超线程技术,其实是一个“线程级并行”的解决方案。它通过让一个物理 CPU 核心,“装作”两个逻辑层面的 CPU 核心,使得 CPU 可以同时运行两个不同线程的指令。虽然,这样的运行仍然有着种种的限制,很多场景下超线程并不一定能带来 CPU 的性能提升。但是 Intel 通过超线程,让使用者有了“占到便宜”的感觉。
但是要发挥超线程的作用,对于程序有特殊的要求,对于那些IO密集型的程序有提高性能的作用,而对于计算密集型没有太大作用,因为每个CPU核都很忙了,启用多少个线程都没什么作用,甚至因为上下文切换带来副作用。这个跟线程池线程数量设置的原理是一样的。
Windows查看CPU物理和逻辑核数:

wmic cpu get NumberOfCores,NumberOfLogicalProcessors

Linux查看物理CPU个数

cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

Linux查看每个物理CPU中core的个数

cat /proc/cpuinfo| grep "cpu cores"| uniq

Linux查看逻辑CPU的个数

cat /proc/cpuinfo| grep "processor"| wc -l

2. 为什么x86表示32位,amd64表示64位,跟AMD有什么关系?
原因是当时,Intel 想要在 CPU 进入 64 位的时代的时候,丢掉 x86 的历史包袱,所以推出了全新的 IA-64 的架构。但是,却因为不兼容 x86 的指令集,遭遇了重大的失败。
反而是 AMD,趁着 Intel 研发安腾的时候,推出了兼容 32 位 x86 指令集的 64 位架构,也就是 AMD64。所以你在 Linux 下安装各种软件包,经常会看到带有 AMD64 字样的内容。这是因为 x86 下的 64 位的指令集 x86-64,并不是 Intel 发明的,而是 AMD 发明的。

posted @ 2025-04-25 11:40  星辰下的键盘  阅读(23)  评论(0)    收藏  举报