1.仲裁含义
“仲裁”汉字的意思是一个人站在中立的位置来裁定,保证正常的秩序。因此,涉及裁定,肯定存在资源分配的矛盾,本来就一个东西却有2方甚至多方争占。在生活中有仲裁,同样在架构中也有仲裁。
而在嵌入式处理器架构中,主要涉及运算和数据传输的矛盾需要仲裁,来保证系统的正常运行。因此,可以通过仲裁的角度将各个处理器架构做一个串联,便于我们学习和理解,文中只是本人自己学习处理器架构的笔记总结,仅供学习参考。
2.各类处理器中的仲裁
MCU(微型处理器即单片机)
微型控制器的核心是不断的从存储器中读取指令和数据送入运算单元运算后将结果写入数据存储器或者输出,在这个过程中就涉及存储器和读写操作的资源的有限,就会涉及到仲裁处理方式,就出现了2种架构:
1. 冯诺依曼架构的分时复用,分时在一个总线上去访问同一存储器来避免冲突矛盾;
2. 哈佛架构的并行处理,2路读写总线和2个独立的存储器,就不存在冲突矛盾。
当然,当有突发情况出现的时候,MCU必须优先处理该突发情况,这里就涉及到仲裁的另一种处理方式:
3. 这里采用的方式就是我们常说的中断,可以理解为被突发需优先处理的事打断,优先处理中断时间,把手头的事临时入库,待中断时间处理完后接着出库处理,这里的入库出库即入栈出栈。
PC CPU(通用处理器即电脑)
PC CPU是针对通用而设计的处理器,就是我们办公用的电脑,仲裁的处理方式和MCU类似,只是更加复杂:
1. 使用了操作系统来处理各个资源的冲突问题;
2. 使用了线程进程的概念来处理资源的冲突问题。
ARM(Advanced RISC Machines)
ARM可理解为是介入MCU和PC间的嵌入式处理器:
1. 比MCU复杂,一般带微型操作系统实现仲裁处理;
2. 比PC灵活,可剪裁,仲裁的处理没有PC的复杂;
3. 在指令集上深耕数年,使用精简的指令集,广泛用于嵌入式行业,可以理解从指令集角度来处理各种操作的矛盾提高效率。
DSP即数字信号处理专用处理器,DSP的冲突更多的是数据的运算和处理能力,原有的MCU架构的仲裁处理方式无法满足,因此:
1. 增加计算处理能力,有更加丰富的数学运算IP核,如三角函数等高等运算;
2. 增加更多的系统总线架构,来减少指令、数据传输间的冲突问题。
GPU
GPU起源是用于图像处理的专用处理器,而图像的特点就是数据量大,计算量大,后面经过需求的不断推动,出现了显卡,而再一波AI潮流,让GPU大放异彩,用一句话来概括GPU的话就是:N个计算核心下超位宽存储单元的处理器。
1. N个计算核心,GPU拥有数千个可完成复杂运算的计算核心,可以同时完成数千个计算;
2. 超位宽,一般处理器的外部存储器DDR受频率位宽的影响数据传输能力有限,那怕有好的仲裁机制也不行,而GPU的DDR位宽是一般处理器的几十倍,自然数据传输上强几十倍。
FPGA计算和数据传输均可定制,但面临需要仲裁的问题和处理方式同其它类似:
1. 数据计算单元并行化,并行处理大量数据时,涉及数据的加载、暂存和输出;
2. 多路总线仲裁数据的传输,AXI4等总线标准的互联IP核,实现更大带宽的数据传输,内部数据传输受资源的限制,外部受DDR存储器理论带宽和DDR仲裁利用率的限制。
3.总结
FPGA要实现高性能的定制功能,也就重点在你的仲裁处理能力,常用的有:
堆资源,用好几片FPGA处理器;
使用优质的仲裁架构,让数据传输间效率最优化。
随着FPGA成本下降,5G的崛起,它会越来越用于传统行业,也就不再是高端的代名词,会更多的用于消费对成本敏感的市场,那时候或许更好的FPGA定制会产生更大的市场竞争力,带来更大的利润。
例如:用EDA软件提高的AXI总线互联IP访问DDR资源大效率低,而用自己编写的AXI仲裁代码只用十分之一的资源而带来接近双倍的效率,自然在消费成本敏感市场中占主导地位,或许觉得编写这样的AXI仲裁的代价太大,但需求和市场的推动让我已经在深度学习中编写实现了这样的代码并封装为IP。
注: 原创不易,未经本人授权,禁止转载,转载必究。