Migracja z Cortex-M3 do Cortex-M4
Tab. 5.
Cortex-M3 | Cortex-M4 | |
xN = *x++; | 2 | 2 |
yN = xN * b0; | 3-7 | 1 |
yN += xNm1 * b1; | 3-7 | 1 |
yN += xNm2 * b2; | 3-7 | 1 |
yN -= yNm1 * a1; | 3-7 | 1 |
yN -= yNm2 * a2; | 3-7 | 1 |
*y++ = yN; | 2 | 2 |
xNm2 = xNm1; | 1 | 1 |
xNm1 = xN; | 1 | 1 |
yNm2 = yNm1; | 1 | 1 |
yNm1 = yN; | 1 | 1 |
Zmniejszenie licznika pętli o 1 (Decrement loop counter) |
1 | 1 |
Rozgałęzienie warunkowe (Branch) |
2 | 2 |
26~46 cykli | 16 cykli |
Aby wykonać ten sam kod źródłowy, rdzeń Cortex-M3 potrzebuje od 26 do 46 cykli (czas wykonania operacji mnożenia zależy od typu danych), natomiast Cortex-M4 potrzebuje tylko 16 cykli. Cortex-M4 zapewnia od 1.6-krotną do 2.9-krotną poprawę wydajności obliczeń filtru IIR. Przyglądając się szczegółowo można zauważyć, że różnica występuje w wierszach kodu, w których wykonywane są kolejne operacje mnożenia i sumowania. Do wykonania tych operacji Cortex-M3 wymaga wielu instrukcji i potrzebuje na to od 3 do 7 cykli, podczas gdy Cortex-M4 wymaga tylko jednej instrukcji wykonywanej w ciągu 1 cyklu. Jest to przykład rzeczywistego przetwarzania sygnałów, pokazujący wydajność rdzenia Cortex-M4.
Podsumowanie
Cortex-M4 oferuje zaawansowane możliwości cyfrowego przetwarzania sygnałów, które były niedostępne w poprzednich produktach rodziny Cortex-M. Korzystając z tej samej platformy sprzętowej i kompatybilnego zestawu instrukcji, projektanci mogą przeprowadzić migrację z Cortex-M3 do M4 przy niewielkim wysiłku, z zachowaniem dotychczasowego oprogramowania.
Opracowanie wykonane na podstawie dokumentacji „Migrating from Cortex-M3 to Cortex-M4”.