看CSAPP果然大有收获,超线程就是其一。
我们知道计算机的CPU是从单处理器开始,到多处理器,再到多核,最后超线程技术的出现。
单处理器很好理解,就是一个CPU。
所以同一时刻只能运行一个进程,在分时任务系统出现之前,用户只能等待前一个任务结束,才能执行下一个任务。
在分时任务系统出现之后,由系统调度,让CPU轮流执行任务,只不过切换的速度太快,所以造成了同时运行的假象!
无论是多线程还是多进程,需要切换的时候,必须保存原有的状态信息,再载入新的状态信息 -- context switch!
这些信息包括:PC(程序计数器)、Register files等,主要是当前执行到哪个指令了,运算的结果是啥之类的。
多处理器,也很好理解,就是一个主机上安装了多个CPU,但各自为政,没有低层次的数据共享!
多核,也是多个CPU,但共享线路,甚至共享主存(?),现在的主流!
超线程,这是一种新技术(相对而言),以上面的多线程执行来说,如果每个CPU多来几个PC、Register files,那线程切换时的代价就小的多 -- 不需要保存和重载了!
超线程就是基于这种理念,以core i7为例,每个CPU有两套PC、Register files等硬件,然后只有一套浮点运算单元!这样,可以同时保持两个线程,切换起来也速度飞快!
这就是为什么我们总听说双核四线程、四核八线程!
转载自原文链接, 如需删除请联系管理员。
原文链接:超线程是什么?,转载请注明来源!