Milowork/小科普

什么是流水线、SIMD、多核、超线程?

众所周知,做菜的流程大概是这样的:

程序 做素菜(a:蔬菜)
  b=洗菜(a)
  c=切菜(b)
  d=炒菜(c)
  返回 d
程序 做荤菜(a:生肉)
  b=洗肉(a)
  c=切肉(b)
  d=炖肉(c)
  返回 d

从前,有一家饭馆,刚开店时只有一名厨师,他是这样做饭的:

厨师1 洗菜 切菜 炒菜

后来这家饭馆生意越来越火,厨师就变得繁忙起来:

厨师1 洗菜 切菜 炒菜 洗菜 切菜 炒菜 洗菜 切菜 炒菜

这样上菜时间就会变得不可接受。老板就在考虑如何解决这个问题,他想出了如下几个方案:

方案

方案1(提高主频):让厨师加快动作。

厨师1 更快的洗菜 更快的切菜 更快的炒菜

方案2(增加位宽):把做菜用的设施和工具的尺寸变得更大。

厨师1 用大池子洗菜 用大刀切菜 用大锅炒菜

方案3(流水线):将厨师解雇,雇一个洗菜的,一个切菜的,一个炒菜的。

洗菜的 洗菜 洗菜 洗菜
切菜的 切菜 切菜 切菜
炒菜的 炒菜 炒菜 炒菜

方案4(SIMD):雇两个只会跟着厨师一起行动的学徒。

厨师1 洗菜 切菜 炒菜
学徒1 洗菜 切菜 炒菜
学徒2 洗菜 切菜 炒菜

方案5(多核):再雇两个厨师。

厨师1 洗菜 切菜 炒菜
厨师2 洗菜 切菜 炒菜
厨师3 洗菜 切菜 炒菜

方案6(超线程):给厨师配备有定时功能的灶具,这样他就可以在煮、炖的同时做其他工作。

厨师1 洗肉 切肉 炖肉 洗肉 切肉 炖肉
洗肉 切肉 炖肉

缺点

方案1的缺点:非常明显,人类的体力是有限的,如果动作过快,人会疲劳,而且容易出错。所以这条路很快就走到头了。

方案2的缺点:多数情况下,做菜要求切的比较细,刀大到一定程度,就成了杀鸡用牛刀,反而会降低效率。所以现在的厨师即使有大刀,也往往束之高阁,只有剁排骨的时候才会拿出来用。

方案3的缺点:烹饪过程需要更多的人经手,副作用如下:

  • 洗菜的、切菜的、炒菜的不在同一个地方,需要有人负责搬运和监督。
  • 一旦洗菜的发现蔬菜发霉,监工会下令停工检查,这样整条流水线受到影响。
  • 一些环节使用率低。
洗菜的 洗菜 洗菜 发现蔬菜发霉 检查 洗菜 洗菜
切菜的 切菜 切菜 检查 切菜
炒菜的 炒菜 检查
腌菜的
搬运工 搬运 搬运 搬运 搬运 搬运 搬运
监工 监督 监督 监督 下令停工检查 监督 监督

方案4的缺点:学徒不会自己做饭,如果其中一个客人点了荤菜,那么就成了这个样子:

厨师1 洗菜 切菜 炒菜 洗肉 切肉 炖肉
学徒1 洗菜 切菜 炒菜
学徒2

方案5的缺点:厨师的工资远高于流水线工人和学徒,三个厨师的工资不是这种小饭馆能承受得起的,它最多雇两个厨师,这样比其他几个方案就并不占上风。

厨师1 洗菜 切菜 炒菜 洗菜 切菜 炒菜
厨师2 洗菜 切菜 炒菜

有人会说,这样的方案行不行?

厨师1 洗菜 洗菜 切菜 炒菜 炒菜
厨师2 洗菜 切菜 切菜 炒菜

很多情况下不行。厨师与厨师之间有距离。

方案6的缺点:这种方案有很强的局限性,如果是炒菜这样需要人工介入的流程,那么定时灶具是没用的。

厨师1 洗菜 切菜 炒菜 洗菜 切菜 炒菜
洗菜 切菜 炒菜

现状

由于饭馆越来越大,顾客的饭量也越来越大,而且口味越来越刁,不得不并用这几种方法,并通过各种方法改善其缺点。

不过也有一些小摊小贩,由于位置偏僻,客流低,没有必要采用上述任何一种措施。