Closed gxflying closed 7 months ago
Hi Felix,
The chi interconnect at the moment does not process multiple requests simultaneously/in parallel, it processes requests one by one (see lines 1894-1897). The overlapping check is there for when support for above has been introduced into the interconnect.
Best regards, Francisco
Hi figlesia:
I saw the comment in line L1894 // One at a time,
my understanding is that for a interconnect or a HN-F, it should have the abilities to handle requests (accessing to different cache line) in in parallel.
for example: at T0 , two requests arrives at interconnect, and the two requests target to cache lineA and cache lineB respectively. then the progress of the two requests may be as below, and they are processed parallelly
T0 T1 T2 T3 T4
req0 ordered processing processing finished
req1 ordered processing processing finished
But current implementation of libsystemctlm-soc does not support this feature, and the two request are processed as below, is it right ?
T0 T1 T2 T3 T4 T5 T6
req0 ordered processing processing finished
req1 ordered processing processing finished
Hi Felix,
Yes above is correct. Perhaps with the minor rephrasing on the '...should have the abilities...' to '...is allowed to have the abilities...'. Processing in parallel is done for performance and is probably always done (but it is not a must feature of an interconnect).
iconnect-chi.h currently does not support this yet, but this is definitively an addition that would be great have.
Best regards, Francisco
@figlesia-xilinx , got it, Thanks ~
Hi sir: I learned the flow of the chi inter-connect and found that the thread RequestOrderer::req_ordering_thread will be blocked when there is a hazard for a cache line(a ongoing request for a cacheline, and a incoming request for the same cache line). but theoretically, the request to a diffrent cache line can be handled and be processed nomally, but in the current implementation, the request to a diffrent line is also blocked! because the RequestOrderer::req_ordering_thread only be waked up when the hazard request is done. is my understanding right ?
https://github.com/Xilinx/libsystemctlm-soc/blob/42aa8ed780cb9eef3a61bc50ea35ff079a7e6284/tlm-modules/iconnect-chi.h#L1880