ARM,PowerPC等商用IP核授权费价格较高,所以开源处理器越来越受到大家的关注。开源处理器比如OpenRISC,NIOS II,LEON2等。这里我会介绍OpenRISC的优点:
一、指令集可扩展;
二、添加专用的硬件协处理单元。
一般来说,购买的IP只能增加专用的协处理单元,这样增加的协处理也可以运行。但是这样会增加通信成本。所以开源处理器的优点在于可以可以进行指令集的扩展,而且有些指令没什么用而且占用资源较多就可以修改一下,精简指令集。而且协处理器之间的通信不容易同步,双方要进行数据冲突,结构冲突等等。开源处理器可以进行指令集扩展,相比于增加协处理器,指令集扩展的效率更高,更有普遍性。
目前像ARM就有开源m0,有兴趣的话就可以去看看!
首先我们要了解什么事扩展指令集。
总之就是针对你的专门的运用,你要提高这些运用的执行速度等等,那么你就要弄出一些指令出来可以执行你的运用的时候速度更快。
CPU依靠指令来计算和控制系统,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效工
具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分,而从具体运用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single
instruction multiple data-Extensions 2)、SEE3和AMD的3DNow!等都是CPU的扩展指令集,分别增强了CPU的多媒体、图形图象和Internet等的处理能力。我们通常会把CPU的扩
展指令集称为CPU的指令集。SSE3指令集也是目前规模最小的指令集,此前MMX包含有57条命令,SSE包含有50条命令,SSE2包含有144条命令,SSE3包含有13条命令。目前SSE3也是
最先进的指令集,英特尔Prescott处理器已经支持SSE3指令集,AMD会在未来双核心处理器当中加入对SSE3指令集的支持,全美达的处理器也将支持这一指令集。
接下来我就说一下怎么扩展指令集吧!
常见的有MPEG-2解码库,libMPEG2。用GNU中的gprof程序进行程序分析,得到你的运用的指令消耗比重。这样我们就可以看出需要进行怎么样的改进,接着就是进行扩展了。
指令集修改那就涉及硬件和软件的实现。先来说一下硬件的修改。
硬件部分修改:参考论文Patrick Pelgrims,Dries Driessens,Tom Tierens.Basic Custom OpenRISC system Software Tutorial,2004
先了解OpenrISC的指令格式:下图介绍了两种。第一种是两输入(源寄存器 A,B),输出(目的寄存器 C)的形式,L,K就是作为一些标志位,可以进行功能扩展。NIOS II使用Altera的SOPC builder可在界面下完成,十分直接快捷。
软件部分修改:参考论文Patrick Pelgrims,Dries Driessens,Tom Tierens.Basic Custom OpenRISC system Hardware Tutorial,2004
(1)如果你够屌,直接修改编译器,使之能够识别你新定义的指令。这里软件部分只需要使用高级语言编程;
(2)手工编写机器码,指定哪些操作由扩展指令完成。这个时候软件人员直接使用汇编来操作扩展指令。这种做法更简单一些,因为直接涉及到的就是指令到二进制的映射。
参考资料:
http://zhidao.baidu.com/link?url=kYh_6JYqO1Vvez5PL0dsEyCuQ5OMXNu39wdAUt74xxo3AsyM86qy4SG8eJILzcUkIYJzC42plIZK08nCe5d9Xa
http://www.cnki.com.cn/Article/CJFDTotal-DZXU200805027.htm
论文《开源软核处理器OpenRISC自定义指令的研究与实现》