SSI Module: It directly connects to the QSPI interface and serves as the "physical layer" for communication with external Flash — it is responsible for transmitting and receiving QSPI signals, and is the component that actually transfers data with the external Flash.
Atomic RWType Interposer: It ensures that read and write operations on Flash are "completely uninterrupted"(for example, when reading a 32-bit data, the process will not be interrupted by other operations), so as to avoid data reading errors or writing confusion.
Mux Multiplexer: It acts as a "data path switch", selecting whether to read data from Cache or directly from Flash, with priority given to Cache for faster access.
Read-only Cache (Read-Only Cache): Since the speed of external Flash is lower than that of on-chip SRAM, the Cache stores frequently used content from the Flash (such as frequently executed program instructions) here; when the core accesses data, it first checks the Cache, and if the target content exists, it reads directly without waiting for the slow Flash, which greatly improves the speed of XIP.
Streaming FIFO Continuous Data Buffer: When a large volume of consecutive data (such as a lengthy program segment or a large file) is to be read from Flash, the data will first be stored in this FIFO before being transferred to the kernel, which prevents the data transmission from being intermittent and enables smoother consecutive access.
Decode and Config Address Resolution Configuration Unit:
Parse the address sent by the core: determine which location of the external Flash this address corresponds to;
Manage the configuration of the entire XIP hardware: such as enabling/disabling the Cache, setting the communication speed of QSPI, configuring the size of the FIFO, etc.
Main AHBL Slave / Aux AHBL Slave: This XIP hardware is connected to the "interface" of the system bus (AHBL):
Main Interface: responsible for regular Flash access (such as reading scattered instructions/data);
Aux Interface: exclusively responsible for high-speed continuous data transmission of Streaming FIFO, and is specifically designed for high-traffic scenarios.
AHBL-APB Bridge for SSI Configuration: It serves as the configuration interface of the SSI. The core sets parameters (such as the clock frequency and transmission mode of QSPI) for the SSI module via the APB bus, enabling the SSI to communicate with external Flash of different models in a compatible manner.
When the kernel needs to read program instructions from the external Flash:
The kernel sends the address to Decode and Config, and parses out which location in the Flash it corresponds to;
The Mux first checks the Read-only Cache: if the content corresponding to this address exists in the Cache, it is directly returned to the kernel;
If the data is not available in the Cache, the SSI module will read it from the external Flash via QSPI.
The read-back data is first stored in the Cache (to facilitate subsequent reads) and simultaneously passed to the kernel;
When reading a long continuous sequence of instructions, the data will first be stored in the Streaming FIFO and then transferred to the kernel in batches.