你能做出这道小学生水平的应用题,就解决了计算机的一个大问题

作者: 实验君

来源: 把科学带回家

发布日期: 2019-11-29

这篇文章通过一个小学生水平的应用题,解释了计算机超线程技术的原理,展示了如何通过优化任务处理顺序来提高计算机处理器的效率。

今天有一个奇趣的小学生水平的应用题给你。不要小看这个问题,它背后的思想解决了计算机的一个大问题,成为了英特尔奔腾4处理器的核心技术。一起来看看。

关键概念超线程

材料和操作

这个问题是这样的。小明、李雷和韩梅梅的妈妈因为很穷,只能给孩子们做烤面包当早饭吃。3个孩子都在人教版小学上学,吃完早饭要麻利地去学校上学。但是因为妈妈很穷,只能买临保,甚至是过期的面包。

孩子们要吃到两面都烤熟的面包才不会拉肚子,也不会挨饿。同时,妈妈买不起烤面包机,只能用炭火给孩子们烤。而且炭火一次只能把面包的一面烤熟,而炭火炉很小,一次只能烤2片面包。妈妈通过大量的实际操作发现,把1片面包的1面烤熟要1分钟。

现在问题来了。把3片面包的两面都烤熟,至少需要多久?如果我告诉你,最少只需要3分钟。你能想出来,聪明的妈妈是怎么烤的嘛?

原理

假设3片面包分别叫做A、B、C,它们分别有1和2两个面。面包A的正面叫做A1,反面叫做A2,以此类推。按照一般人的思路,先把A和B两片面包的两面都烤熟,用去2分钟。然后再单独烤C,这样又要用去2分钟。怎么算都需要4分钟对吧?怎样才能在3分钟内烤完呢?这就是在更少的时间里处理多任务的奥义了。关键在于,不要急于求成。

0-1分钟:烤A1和B1。第1分钟结束时,把B拿走,换C。此时,A1、B1烤熟了。

1-2分钟:烤A2和C1。第2分钟结束时,A的两面都已经熟了,拿走;B1和C1也熟了。把B翻过来,烤B2。

2-3分钟:烤B2和C2。第3分钟结束时,3片面包都烤好了,大功告成!

这个问题看起来就像小学生的智力题,但实际上利用它背后的逻辑,则可以提升计算机处理器的速度。这种计算机技术,就叫做超线程(hyper-threading)。

超线程是英特尔在2002年发布的一种技术,应用在Xeon、奔腾4等处理器里。用下面这个图可以解释CPU里发生的事情。CPU里其实有好多调度单位,它们类似于一个个烤面包的烤位。

单线程(左),超线程(右)。不同颜色的方块表示不同的任务,灰色方块表示闲置的计算单位。如果按照左边的处理法,就等同于4分钟的那种烤法:在烤C面包时,另一边的烤位白白浪费了。

左图里灰色的调度单位相当于闲置的烤位,没有执行任何任务。所以在浪费了这么多调度单位的情况下,完成两个任务(黑色和绿色)的时间就比较长。但是在超线程(右图)的情况下,绿色的任务穿插在黑色的任务里,大部分的调度单位都被同时有效利用,类似于3分钟的烤面包法,两边的烤位随时都在烤面包,大部分烤位没有被浪费,所以2个任务总体完成时间更短。

在超线程技术出现前,CPU只能同时处理一个线程,就像左边的那种方法。但是超线程让CPU可以同时进行2个及以上的线程,在更短的时间里完成更多的任务,大大提升了计算机的计算效率。

根据英特尔的说法,超线程可以让CPU的性能提升30%。不过,超线程也不是对所有类型的任务都有效。那些比较大的软件,比如影片编辑就可以有效利用超线程技术来提高效率。但是如果是编辑图像、浏览器软件等小任务,那么超线程CPU的效率就处于劣势了。

UUID: 2026225b-3706-44cc-a087-fe7fbe33dddc

原始文件名: /home/andie/dev/tudou/annot/AI语料库-20240917-V2/AI语料库/把科学带回家公众号-pdf2txt/2019-2020/2019-11-29_你能做出这道小学生水平的应用题,就解决了计算机的一个大问题科学DIY.txt

是否为广告: 否

处理费用: 0.0038 元