做芯片规划的各位,在某个时间,你或许会发生一个主意,“为什么不自己规划一个处理器呢?”或许是手头的处理器并不好用;或许是想用的处理器贵的离谱;或许是你期望做出差异化的产品;又或许仅仅因为它是个诱人的应战,你想测验一下…既然如此,我很快乐能和你讨论一下怎样完结这个使命。
交给物
咱们先从成果说起,也便是这项使命的终究交给物。这儿无妨参阅ARM处理器核的deliverables。当然,假如仅仅一个自己用的专用处理器,不必定要有这么完好的交给物。
硬件:首要是处理器相关的RTL代码,验证环境,EDA东西的脚本,文档等等。
东西:首要包含编译东西(compiler),调试东西(debugger),仿真东西(simulator)和功用剖析东西(profiler)。下图是ARM的编译东西的比方,首要包含armclang(C编译器),armasm(汇编器),armlink(链接器)和fromelf(image东西)。
仿真东西一般至少包含一个指令仿真器 instruction set simulator (ISS),做的好的有cycle-accurate ISS。
模型:此外,现在一般的处理器IP还会供给一些处理器的模型来支撑体系级规划,比方用于虚拟渠道(virtual platform的处理器model。虚拟渠道能够在没有硬件的状况下支撑软件开发,它能够模仿一个完好的芯片或许一个硬件板卡,比方ARM的Fixed Virtual Platform (FVP)。而专用的处理器模型(比方ARM的Fast Model)是虚拟渠道的重要组成部分,和总线模型以及其它IP模型一同模仿体系的功用。
在上述交给物中,赤色为必不可少的内容。即便你做的专用处理器功用简略,没有这几部分它也几乎是无法正常运用的。当然,你能够说,我不需要ISS做指令验证,不需要debugger做调试,不需要C编译器而只用汇编,我也只能“呵呵”了。
看到这一大堆作业,假如你没有害怕,而是觉得很有意思。那么我也很乐意给你点协助,看看是不是能够把你的主意变成实际。其实办法也很简略 — 自己做不了就找“他人”协助呗。
具体来说,依据你的预算状况,能够分为“穷”和“富”两种玩法。我先说说有钱的玩法吧。
富玩法
其实,不止你一个人想做专用处理器,许多大公司也有这样的需求。所以,就有人为这种需求专门供给了解决方案,比方Synopsys的ASIP-designer东西和Cadence的Xtensa可扩展处理器(拜见Cadence(Tensilica)的可定制处理器),都是为了满足定制处理器的需求而规划的。
其间Cadence的可扩展处理器是在一个根底处理器上给你供给了装备(configure)和扩展(extension)的办法和东西。它供给的功用能够通过下图感受一下。
这套东西的输入包含三个部分:1)一个处理器模板(Processor Template);2)用户装备(Configuratoin Options);3)定制的指令(Custom Instructions)。最简略的状况,你只需选一个处理器模板扔给东西就能够了。假如这个不能满足要求,那么你或许要做一些装备。这个也很简略,根本是菜单挑选。最有技术含量的是第三种状况,你要规划一些定制的指令。有了这些输入,剩余的作业就都交给东西了。咱们在第一节说的那些交给物,都能够主动生成。
那么咱们怎样知道要不要自己定制指令呢?东西也供给了办法。首要,输入你的算法程序输入,通过编译,进行仿真和profiling,得到功用评价的成果。然后判别是否满足需求。答案是NO的话,就测验更新Configuration;假如仍是不可,再测验定制指令的办法,直到满足停止。因为东西协助你做了大部分作业,这个迭代的进程(也能够看作是Design Space Exploration)会非常快。
为了完成定制指令(对原有指令集进行扩展),Cadence(Tensilica)规划了一种专用的描绘言语:Tensilica Instruction Extension (TIE) language。因为Xtensa处理器有一个根本的架构模板,运用TIE言语对它进行扩展是有必定的约束,不是说你想做的指令和架构改动都能够完成。