Re: what is the function of ICC(instruction cache controller)?
You should be able to get the details from a processor design manual/spec. At a very high level, instruction cache is the cache memory which stores the instructions that will be executed sequentially in a processor. The program counter will point to the memory address of the instruction that needs to be fetched, the I-cache controller looks up the cache and pushes out the instruction from the requested address. In case of an interrupt or change in priority, the instruction cache contents need to be modified, which, will also be handled by the controller. It is effectively, similar to a memory controller. Of course, in case of an I-cache miss, the instruction needs to be loaded from the next memory level and there can be a stall in the processor pipeline.
Disclaimer: I am not a processor microarchitect, so I have a very high-level understanding of this topic.