Welcome to today's training topic, Armv8-M mainline DSP Extension. As we might have seen already, Armv8-M architecture supports a wide variety of optional extensions or variants of Armv8-M architecture. Some of the major variants are like debug extension, where the implementation can choose not to implement any of the debugging features like setting the breakpoints and other features required for debugging. An MP Extension, like whether a memory protection unit by itself can be optional. A security extension where few of the implementations may or may not need a security extension at all. A DSP Extension and floating-point extension in Armv8-M are added to address the need for high-performance generic code processing, as well as digital signal processing applications. In addition, they provide the opportunity to perform signal processing operations directly on processors while maintaining the ease of use of Cortex and programmer's model. In this module, we will be focusing on the Armv8-M DSP Extension, while the other extensions are covered in different modules. As an objective, at the end of this training topic, you will be able to summarize the DSP Extension and it's related features in the Armv8-M architecture. We will be able to understand the different instruction mnemonics and how they operate. We'll also touch upon on how the tools and library support the DSP Extension including the CMSIS-DSP. The agenda for this training is to get an overview of the DSP in the Armv8-M architecture, understand the DSP extension instruction set extensively, and we'll also touch upon the DSP tools and Library Support through CMSIS. What does Digital Signal Processing or DSP means? We would have studied in our curriculum, however, just to give a brief idea, we will try to see some of the basics here. Digital Signal Processing is distinguished from other areas in the computer science by a unique type of data it uses called signals. In most cases, these signals originate as a sensory data from the real world like seismic vibrations, visual images, sound waves, etc. A DSP is the mathematics, the algorithms, and the techniques used to manipulate these signals after they have been converted into a digital form. What does processing real-world data mean? In offline processing, we enter your input signal resides in the computer at the same time. For example, the offline processing is medical imaging, such as the computer tomography or an MRI. The data set is acquired while the patient is inside the machine, but the image reconstruction may be delayed until a later time. The key point is that all the information is simultaneously available for processing the complete program. In contrast, in real-time processing, the output signal is produced at the same time as the input signal is being acquired. For example, this is needed in a telephone communication, hearing aids, or a radar. These applications must have the information immediately available, or they can be delayed by a short amount, for instance, a 10-millisecond delay in a telephone call cannot be detected by a listener or a speaker. A real-time application inputs a sample, performs the algorithm, and outputs the sample over and over. Alternatively, they may input a group of samples, perform the algorithm, and output a group of samples. This is the work of digital signal processors. To digitally analyze and manipulate an analog signal it must be digitized with an analog to digital converter or ADC. The sampling is usually carried out in two stages : one is the discretization and the quantization. The discretization means that the signal is divided into equal intervals of time, and each interval is represented by a single measurement of amplitude. The quantization means that each amplitude measurement is approximated by a value from a finite set. Rounding the real numbers to integers is an example here. Now we are entering into a new world of rounding, saturating real numbers, complex numbers, and so on. Digital Signal Processing or DSP, is all about manipulating these numbers in binary format for various mathematical theorems. In crux, we need to understand two basic ingredients of DSP that is real-time processing and operating with numbers or data handling. Indeed both are interlinked. Now we know that we need to perform the real-time processing quickly with precision and accuracy, which means that we need to operate on binary numbers, particularly without losing the accuracy of the input information. That's where the concept of single instruction and multiple data, the SIMD is used. The input information is represented in fixed and floating-point numbers. I'll touch upon these two terms in a minute. An application that may take advantage of SIMD is one where the same value is being added to a large number of data points, a common operation in multimedia operations. One simple example would be changing the brightness of the image so each pixel of an image consists of three values of the brightness, the red, green, and blue portions of the color. To change the brightness of RGB values, it is the red, green, and blue values, we need to read from the memory, the value is added or subtracted, and then the resulting values are returned back to the memory. With a SIMD processor, there are two improvements to this process. One, the data is understood to be in blocks, and the number of values to be loaded all at once. It's a series of instructions, saying, retrieve this pixel, now retrieve next pixel. The SIMD processor will have single instruction that effectively says that retrieve a number of pixels, where the number represents from design to design. Another advantage is that the instruction operates on all loaded data in a single operation. In other words, if SIMD system works by loading up eight data points at once, the add operation being applied to data will happen to all eight values at the same time. Now coming on to the numbers which I mentioned earlier, why do we need to have a fixed point or a floating-point data type? Digital signal processing can be separated into two categories, that is the fixed point and floating-point. These designations refer to the format used to store and manipulate the numerical representations of data. Fixed point DSP are designed to represent and manipulate integers that has positive and negative whole numbers, whereas the floating-point DSPs represent and manipulate the relational numbers where a minimum of 32 bits in a manner similar to a scientific notation, where the number is represented with the mantissa and exponent.