Does the ESP32 have SIMD-like instructions?

StridingDragon
Posts: 46
Joined: Fri Aug 02, 2019 11:59 pm

Does the ESP32 have SIMD-like instructions?

Postby StridingDragon » Thu Sep 02, 2021 5:21 pm

I've been looking through datasheets and instruction references for the Xtensa processor that is in the ESP32 but because of Xtensa's extensible nature, I can't seem to find reliable information, so here is my question…

Does the ESP32-WROVER B have any SIMD-like instruction capabilities that allow you to process data in parallel? I have a lot of data processing to do that could benefit greatly from any kind of parallelization so I'd like to utilize whatever the ESP32 has to offer in that respect.

ESP_Sprite
Posts: 9766
Joined: Thu Nov 26, 2015 4:08 am

Re: Does the ESP32 have SIMD-like instructions?

Postby ESP_Sprite » Fri Sep 03, 2021 2:26 am

The ESP32 has a few of them, mostly used for 16-bit multiply-accumulate operations. The ESP32S3 has more complicated instructions. Probably the best thing would be to look at ESP-DSP, that uses some of the acceleration options (and may actually be a good starting point for your own code as well).

StridingDragon
Posts: 46
Joined: Fri Aug 02, 2019 11:59 pm

Re: Does the ESP32 have SIMD-like instructions?

Postby StridingDragon » Sat Sep 04, 2021 7:03 pm

Thanks for the info, but I am not sure. Does any of this apply to the WROVER B?

WiFive
Posts: 3529
Joined: Tue Dec 01, 2015 7:35 am

Re: Does the ESP32 have SIMD-like instructions?

Postby WiFive » Sat Sep 04, 2021 7:45 pm

Anything that applies to esp32 chip applies to ESP32-WROVER B module

StridingDragon
Posts: 46
Joined: Fri Aug 02, 2019 11:59 pm

Re: Does the ESP32 have SIMD-like instructions?

Postby StridingDragon » Wed Sep 29, 2021 6:55 pm

I finally had the chance to take a closer look at the ESP-DSP component, but all I see there are assembler implementations of functions typically used for DSPs. So, it's a DSP library but not what I was looking for.

My original question was trying to find out of the ESP32 and the Xtensa chip used in it do have any kind of accelerated instruction sets that would allow me to run operations the way SIMD instructions do in a non-scalar way. I do not see any of that being done in the ESP-DSP component—unless I am overlooking it.

So, my assumption is, there is no such thing?

jdoubleu
Posts: 8
Joined: Wed Sep 29, 2021 3:58 pm

Re: Does the ESP32 have SIMD-like instructions?

Postby jdoubleu » Thu Sep 30, 2021 8:21 am

As far as I know there aren't any, besides these already mentioned above (e.g. MUL16).

If you would like to find out what Xtensa features are enabled, the overlaying headers for binutils could be helpful: https://github.com/espressif/xtensa-ove ... a-config.h

StridingDragon
Posts: 46
Joined: Fri Aug 02, 2019 11:59 pm

Re: Does the ESP32 have SIMD-like instructions?

Postby StridingDragon » Thu Sep 30, 2021 11:44 pm

Thanks for the link. That's really interesting to see it like this.

psommerfeld
Posts: 2
Joined: Wed Dec 01, 2021 4:19 am

Re: Does the ESP32 have SIMD-like instructions?

Postby psommerfeld » Wed Dec 01, 2021 4:21 am

I thought the ESP32-S3 how has special SIMD instructions to support AIoT, but I haven't been able to find details on them yet.

ESP_Sprite
Posts: 9766
Joined: Thu Nov 26, 2015 4:08 am

Re: Does the ESP32 have SIMD-like instructions?

Postby ESP_Sprite » Fri Dec 03, 2021 2:23 am

Those instructions will end up in the Technical Reference Manual eventually, but unfortunately at this moment that chapter is not done yet.

ParkSun
Posts: 3
Joined: Mon May 16, 2022 10:40 am

Re: Does the ESP32 have SIMD-like instructions?

Postby ParkSun » Tue Aug 23, 2022 9:36 pm

Any updates on this or if the information is in the reference manual?

Who is online

Users browsing this forum: Bing [Bot], jcolebaker and 145 guests