Relation between I-Cache and ITIM

Dear SiFive Community,

According to my understanding, the HiFive1 Rev B board comes with a 16Kb instruction cache (I-cache), but it is not clear to me how it is related to the ITIM.

By having a look at the metal.default.lds file, it seems that the default configuration reserve 8Kb for the ITIM:

itim (airwx) : ORIGIN = 0x8000000, LENGTH = 0x2000
                     ...
 PROVIDE( metal_itim_0_memory_start = 0x8000000 );
 PROVIDE( metal_itim_0_memory_end = 0x8000000 + 0x2000 );

Does it mean that using this configuration, I will have an 8Kb I-cache and an 8Kb ITIM?
If so, is it possible to trade the ITIM space to get a 16Kb I-cache?

I simply tried to following modifications to metal.default.lds

itim (airwx) : ORIGIN = 0x8000000, LENGTH = 0x0000
                     ...
 PROVIDE( metal_itim_0_memory_start = 0x8000000 + 0x2000);
 PROVIDE( metal_itim_0_memory_end = 0x8000000 + 0x2000 );

but I’m not sure this is the right way to do.

See page 16 of https://sifive.cdn.prismic.io/sifive%2F9ecbb623-7c7f-4acc-966f-9bb10ecdb62e_fe310-g002.pdf

1 Like