超线程是什么?

看CSAPP果然大有收获,超线程就是其一。

 

我们知道计算机的CPU是从单处理器开始,到多处理器,再到多核,最后超线程技术的出现。

单处理器很好理解,就是一个CPU。

  所以同一时刻只能运行一个进程,在分时任务系统出现之前,用户只能等待前一个任务结束,才能执行下一个任务。

  在分时任务系统出现之后,由系统调度,让CPU轮流执行任务,只不过切换的速度太快,所以造成了同时运行的假象!

  无论是多线程还是多进程,需要切换的时候,必须保存原有的状态信息,再载入新的状态信息 -- context switch!

  这些信息包括:PC(程序计数器)、Register files等,主要是当前执行到哪个指令了,运算的结果是啥之类的。

多处理器,也很好理解,就是一个主机上安装了多个CPU,但各自为政,没有低层次的数据共享!

多核,也是多个CPU,但共享线路,甚至共享主存(?),现在的主流!

超线程,这是一种新技术(相对而言),以上面的多线程执行来说,如果每个CPU多来几个PC、Register files,那线程切换时的代价就小的多 -- 不需要保存和重载了!

  超线程就是基于这种理念,以core i7为例,每个CPU有两套PC、Register files等硬件,然后只有一套浮点运算单元!这样,可以同时保持两个线程,切换起来也速度飞快!

  这就是为什么我们总听说双核四线程四核八线程

 

posted on 2017-10-19 21:04  LarryZeal  阅读(994)  评论(0编辑  收藏  举报

导航