GIC 3.0's SGI interrupt latency seems much bigger than GIC 2.0

Hi,

I tested SGI interrupt latency, it seems that GIC3.0's SGI interrupt latency are much bigger than GIC2.0.

How to test:

GIC3.0:

1. read timestamp(t01)

2. core0 write  ICC_SGI0R_EL1 to trigger core1, read timestamp(t02)

3. isr in core1, read timestamp(t03)

GIC2.0:

1. read timestamp(t11)

2. core0 write GICD_SGIR to trigger core1, read timestamp(t12)

3. isr in core1, read timestamp(t13)

Result is (had think about the time of reading timestamp):

1. (t02 - t01)  nearly 3 times bigger than (t12 - t11)  which means system register cost more time than access to memory mapped memory.

2. (t03 - t02) nearly 2 times bigger than (t13 - t12) which means interrupt latency of GIC3.0 are much bigger than GIC 2.0

Is this normal? Any help will be appreciated! Thanks!

BR,

Peng

Parents
  • I changed timer to ARM counter CNTVCT_EL0, which is more common.

    This is new tests result:

    GIC3.0:

    from write trigger to int enter(assembly entry) = 0.96us

    from int enter to int service = 0.48us
    GIC2.0:

    from write trigger to int enter(assembly entry) = 0.15us

    from int enter to int service = 0.58us

    So, we can see from int enter to int service are nearly same.
    But from write trigger to int enter(assembly entry) of GIC3.0 are much bigger than GIC2.0.

    Did ARM test these parameters? I think maybe it is related to the hardware architecture?

Reply
  • I changed timer to ARM counter CNTVCT_EL0, which is more common.

    This is new tests result:

    GIC3.0:

    from write trigger to int enter(assembly entry) = 0.96us

    from int enter to int service = 0.48us
    GIC2.0:

    from write trigger to int enter(assembly entry) = 0.15us

    from int enter to int service = 0.58us

    So, we can see from int enter to int service are nearly same.
    But from write trigger to int enter(assembly entry) of GIC3.0 are much bigger than GIC2.0.

    Did ARM test these parameters? I think maybe it is related to the hardware architecture?

Children