您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>电子百科>主机配件>cpu>

- 设计一个自己专用处理器该怎么完成?

2017年05月17日 10:51 StarryHeavensAbove 作者:佚名 用户评论(0
#e#

为了实现定制指令(对原有指令集进行扩展),Cadence(Tensilica)设计了一种专用的描述语言:Tensilica Instruction Extension (TIE) language。由于Xtensa处理器有一个基本的架构模板,使用TIE语言对它进行扩展是有一定的限制,不是说你想做的指令和架构改动都能够实现。

Synopsys提供的工具直接就叫ASIP designer,ASIP(Application-Specific Processor)专用处理器设计工具。和Tensilica的可扩展处理器不同,ASIP designer支持从零开始设计和实现一个专用处理器。相应的,它比Tensilica可扩展处理器有更高的灵活性。你可以非常自由的设计指令集和微结构,覆盖从Extensible processor,到Application-specific uP/DSP,到Programmable datapath这样一个更大的架构空间,如下图所示。这里也可以看出,这个工具的目标并不是设计通用处理器。

设计一个自己专用处理器该怎么完成?

转自synopsys.com

下图是这个工具完整的方法学。

设计一个自己专用处理器该怎么完成?

转自synopsys.com

它的输入就是两个,算法(C/C++代码)和处理器模型(Processor Model),输出则是一个处理器相关的所有设计和工具链。从输入到输出的过程同样是自动化完成的。当然,这个过程并不像看起来那么简单,处理器建模的门槛不低。而且,工具赋予你的灵活性越高,掌握这种工具的门槛也越高。ASIP designer的处理器建模需要使用一种专门的语言,即nML,对处理器的指令集和架构进行高层次建模;此外还需要很多和编译器相关的设计,(具体的信息大家可以访问synopsys网站)。所以,即使你能买得起,要玩好这套工具,还得具备两个条件:第一,是你必须熟悉处理器架构和编译方面知识;第二,是要学习这套建模语言和工具。

总的来说,如果你有专用处理器设计的需求,足够的资金和学习的耐心,可以考虑引入这类辅助设计工具。在经历过一定的学习周期后,你不仅可以完成一个设计,还能获得快速、高效设计处理器的能力。

穷玩法

看了上面的介绍,你是不是也对“自动”设计专用处理器的方法很眼馋呢?可惜,你可能没有足够的资金来购买这样的工具,或者是你的目标收益还不值得做出这样的投资。这种情况下,我建议你从开源的处理器(或者指令集)开始做你自己的专用处理器。其实这也算是废话吧。所以还是得给个具体的例子,假设你想在RSIC-V的基础上做定制处理器。RSIC-V是现在一个相对成熟的开源处理器指令,已经有很多相关实现和非常活跃的社区。相信大家都听说过,就不科普了。这里得说明一下,我并没有对RISC-V进行过深入的研究和尝试,以下的说法基本上是纸上谈兵,不对的地方请大家批评指正。

首先,你要好好学习一下RISC-V指令集手册中的“Chapter 10 Extending RISC-V”,这里明确介绍了给RISC-V指令集增加指令的规则。

第二,在现有的RISC-V的硬件实现基础上,增加新指令对应的硬件。可能需要增加专用的寄存器,运算单元,pipeline寄存器,控制信号等等。或者,你可以按照新的指令集(假设叫“RISC-V++ ISA”)自己做完整的硬件实现。其实我觉得第二种方法还更靠谱一点。很多时候,修改别人的东西,要比自己做困难的多。

第三,在RISC-V原有的工具链(比如GNU或者LLVM的编译器)基础上做出修改,支持新的指令。相对来说,这项工作是有比较完善的规则的,只要按照编译工具的规则就可以把新增的指令加进去。当然,如果你增加的指令比较特殊,比如是向量操作,那么工具链的设计会困难很多。这种情况下的一个选择是在高级程序语言的编译器中不增加对新指令的支持,这些新的指令以汇编或者intrinsic的方法实现。

最后,这套方法是不是也能支持在第二节中所说的快速design space exploration呢?基本的思路也是差不多的。你可以先用基本指令集来仿真你的算法;根据profiling的结果(比如性能指标,指令效率,code size等)考虑对指令集进行的修改;然后更新相应的硬件实现和工具链,再编译和仿真你的算法,并不断迭代。现在你实现这个过程没有自动化工具的帮忙,可能需要更长的时间才能完成,特别是需要对功耗面积等implementation结果进行优化的情况。当然,如果现在RSIC-V的生态中已经有了辅助设计工具,那么可能情况会轻松一些。

这种方法看起来行的通,不过中间的坑非常多,要求你对基础处理器(比如RISC-V)非常熟悉。适合那些已经完整的做过RISC-V实现的玩家尝试。否则,也许有的坑你根本过不去。

最后,我写这篇文章并不是想鼓励大家都自己做专用处理器,而是希望大家清楚做这件事情要付出的代价。

非常好我支持^.^

(0) 0%

不好我反对

(0) 0%

( 发表人:方泓翔 )

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!