协处理器,这是一种协助中央处理器完成其无法执行或执行效率、效果低下的处理工作而开发和应用的处理器。这种中央处理器无法执行的工作有很多,比如设备间的信号传输、接入设备的管理等;而执行效率、效果低下的有图形处理、声频处理等。为了进行这些处理,各种辅助处理器就诞生了。需要说明的是,由于现在的计算机中,整数运算器与浮点运算器已经集成在一起,因此浮点处理器已经不算是辅助处理器。而内建于cpu中的协处理器,同样不算是辅助处理器,除非它是独立存在。
协处理器可以附属于arm处理器。一个协处理器通过扩展指令集或提供配置寄存器来扩展内核处理功能。一个或多个协处理器可以通过协处理器接口与arm内核相连。
协处理器可以通过一组专门的、提供load-store类型接口的arm指令来访问。例如协处理器15(cp15),arm处理器使用协处理器15的寄存器来控制cache、tcm和存储器管理。
协处理器也能通过提供一组专门的新指令来扩展指令集。例如,有一组专门的指令可以添加到标准arm指令集中,以处理向量浮点(vfp)运算。
这些新指令是在arm流水线的译码阶段被处理的。如果在译码阶段发现是一条协处理器指令,则把它送给相应的协处理器。如果该协处理器不存在,或不认识这条指令,则arm认为发生了未定义指令异常。这也使得编程者可以用软件来仿真协处理器的行为(使用未定义指令异常服务子程序)。
协处理器80x87的内部结构如图所示。它可分为二个主要部分:控制部件(cu)和数值执行部件(neu)。
控制部件(cu)把协处理器接到cpu的系统总线上,协处理器和cpu都监视正在执行的指令流。如果当前将要执行的指令是协处理器指令(即:escape指令),那么,协处理器会自动执行它,否则,该指令将交给cpu来执行。
数值执行部件(neu)复制执行所有的协处理器指令,它有一个用8个80位的寄存器组成的堆栈,该堆栈用于以扩展精度的浮点数据格式来存放数学指令的操作数和运算结果。在协处理器指令的执行过程中,要么指定该堆栈寄存器中的数据,要么使用压栈/出栈机制来从栈顶存放或读取数据。
在neu部件中,还有一些记录协处理器工作状态的寄存器,如:状态寄存器、控制寄存器、标记寄存器和异常指针寄存器等。有关这些寄存器的作用将在后面给予分别介绍。
协处理器在超级计算机领域崭露头角,与中国合作的天河二号继续霸占全球no.1宝座,intel近日又披露了 下一代产品“knights landing”的更多技术细节,进步之大令人震惊。
现在的xeon phi只是协处理器,需要做成pci-e扩展卡的样式,搭配xeon e6-2600/v2系列中央处理器才能运作,只是起到加速作用。
幸运的是,xeon phi虽然基于新的imc众核架构,但本质上依然是x86,所以同样可以扮演中央处理器的角色,原生运行操作系统。
intel披露说,knights landing将有协处理器、主处理器两种样式供选择,其中后者可安装在标准的服务器机架内,完全原生运行各种程序,而不需要专门的协处理器,这将大大简化编程难度,消除内存、pci-e、网络之间数据转移的延迟,进而提升性能。
制造工艺也会从22nm进步到最新的14nm,更有利于缩小内核面积、扩大计算规模、降低整体功耗。
特别是在内存配置方面,knights landing会提供三种不同的方式,同时只需标准的内存编程模型即可,不像其它百亿亿次超高性能计算的概念设计那样还得开发特定的代码。
knights landing的主处理器版本会在内部整合封装高带宽的内存缓冲(胶水式而非原生),再搭配外部的ddr3、ddr4内存,将极大地提升内存密集型应用的性能。
根据今年早些时候泄露的一张幻灯片,knights landing将在2015年初发布,支持avx 3.1指令集、ddr4内存、pci-e 3.0总线。
具体性能暂时没有官方数据,据说双精度浮点速度可以提升到大约3tflops,能效折合14-16gflops/w,而现在的knights corner只有大约1tflops、4-6gflops/w。
不过这比起gpu来说还是有些弱,比如nvidia的开普勒现在就有5.7gflops/w,下一代麦克斯韦可达8-16gflops/w。
来源:电子发烧友











