在本页阅读全文(共14页)
● 缘起:扩展指令集的前世今生
指令集是做什么的?他跟处理单元又有什么区别呢?我举个简单的例子——要处理“a+b=?”这个方程问题,使用到的是运算器,也就是ALU和FPU。而如果要处理的是“寄存器a的结果+寄存器b的结果=?”,这种情况下所要使用到的,就是扩展指令集了。
运算器所执行的,是从指令中拆解出来的数据,执行这些数据的过程即为操作,由于传统的X86指令集是典型的SISD结构,单周期只能处理一组操作以及使用一组寄存器,这造成了处理效率的极端低下,寄存器资源方面也存在极大的浪费。后来出现的一些并行指令集如MMX虽然改善了状况,但其本身又无法处理浮点数据。针对这种情况,INTEL从Katmai核心也就是PIII开始引进了一系列的SIMD指令集,用来完成并行多指令数据的吞吐工作,这就是我们今天看到的SSE。
SSE的出现代表了浮点指令集正式进入历史舞台,并行吞吐浮点指令的引入极大地提升了CPU的单位周期执行能力,也提高了寄存器资源的利用效率。随着技术的进步,SSE开始有了自己的专用高速寄存器,通过对寄存器的高速操作,很多过去使用X87缓慢进行的浮点运算和处理过程现在可以成倍甚至几十倍的提速。一时间指令集成了提升浮点性能的不二法门。
本文导航