Firmware booting means telling the nios cpu its reset address at which to load and execute the first instruction....
These boot instructions can be anything. an external flash device, and internal memory or even hard coded as logical combinatorial euqation depending on nios adress.
cfi means this flash device is compatibel to other device so you do not need to write your own programming software and can use the cfi information table from this device to automatical run specific routines. like intel programming algorithmn.
it is also possible to create some kind of custom ip functionality that opens a memory window to nios and forms the nios adress into a serial stream like spi to read an write from an external device, holding nios with waitstates until external execution is finished.
i has implemented a custom ip block that controls nios reset execution adress, by using an external signal to load different op codes.
assign readata = ( externalsignal ) ? 12345678 : 876543210;
this veriloag assignment is in deep larger and nios executed different op code depending on externalsignal and at the end jumps to different memory location as alternate boot address.