Xtensa 架构处理器总结

     Tensilica 是一个迅速成长的公司,公司主要产品是在专业性应用程序微处理器上,为现今高容量嵌入式系统提供最优良的解决方案。公司成立于1997年7月,该公司的投资者包括三家声名卓著的创投公司:Oak Investment Partners, Worldview Technology Partners 和 Foundation Capital, 与高科技电子业内著名的五家公司:Cisco Systems,Inc,Matsushita Electric Industrial Company Ltd, Altera Corporation,NEC Corporation 和 Conexant Systems。Tensilica的创始人为Chris Rowen,同时也是第一任CEO,他原来曾任职于Intel,Stanford,MIPS,SGI和Synopsys,同时他也是可重构处理思想的提出者和实践者。Tensilica公司创立的目的则是提供一种可以实现可重构的、核基于ASIC的、拥有对应软件开发工具的专用微处理器解决方法。

其HIFI系列产品的主要应用包括:

Xtensa 架构处理器总结_第1张图片

1.寄存器window的 概念可以将物理寄存器和逻辑寄存器(ISA寄存器)分离开来,在设计上增加了一层抽象,可以避免在函数调用的时候频繁的压栈和出栈操作,下图展示在64个物理寄存器上实现的寄存器窗口,虽然ISA仅仅定义了16个AR寄存器,但是实际微架构设计时不限物理寄存器的数量的,当然,成本是随着微架构寄存器的数目增加而增加的。

Xtensa 架构处理器总结_第2张图片

更具体的一个映射的例子:

Xtensa 架构处理器总结_第3张图片

物理寄存器数量是有限的,如果嵌套多层调用call4/8/12,则一定会发生覆盖原来寄存器窗口的情况,覆盖发生时,Xtensa通过寄存器窗口异常来处理这种情况。寄存器窗口机制中,任何地方引用a0-a3都不会产生register window异常,用户在c或者汇编代码里面可以任意使用,因为在任意环境里,当前逻辑窗口的寄存器,要么无覆盖发生,要么已经在call/entry指令中进行了压栈保存。a4-a15的高位寄存器引用会触发低位寄存器的覆盖检测,哪怕没有显示的使用低位寄存器,触发的顺序是先进行overflow4,然后overflow8至overflow12.

entry指令的执行伪码:

Xtensa 架构处理器总结_第4张图片

2.ESP32和HIFI3/4/5的区别

Xtensa 架构处理器总结_第5张图片

HIFI3/4/5的ISA是一样的,区别可能在于资源的数量。

Xtensa 架构处理器总结_第6张图片

Xtensa 架构处理器总结_第7张图片

总结:

  1. HIFI系列在Xtensa核心的基础上,集成了DSP Extensions,比如集成VLIW计算单元加速各种DSP操作等等,ESP32核心则没有这些扩展。 
  2. ESP32和HIFI系列的base ISA部分应该是一样的,这有点类似于RISCV ISA RV32I/64I extensions的设计。但是,Base ISA相同并不表示处理器的特性是完全一样的,尤其是Xtensa这种支持可重构的处理器设计架构,它非常容易扩展新的指令,所以HIFI系列作为xtensa core的DSP实现,一定在增加了支持fast DSP操作DSP指令。ESP32不是DSP,它没有这些。
  3. ESP32确实有一些32bit mac单指令,比如单周期的乘累加指令,虽然也可以用它做一些DSP操作,但是这和HIFI核的做法是完全不一样的,HIFI核基于硬件vector和VLIW的方式实现,是面向DSP处理的,性能肯定不在一个水平上。
  4. 实际上github上有一个项目,就是实现了一个用ESP32进行类似DSP操作的算法库。esp-dsp项目。

结束!

你可能感兴趣的:(嵌入式系统)