We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi,
I would like to know the interrupt behavior on Out-of-Order pipeline on Cortex-A15.
When some instruction is executing on Out-of-Order pipeline, one interrupt is happens.
In this case, its interrupt must wait until finish the current executing instruction?
If it is yes, it makes long wait for interrupt.
For example,
If a load instruction with PCIe transaction is executing on pipeline, the interrupt may wait long time until the load instruction finished.
I think this situation make the performance decreasing dramatically.
Does Cortex-A15 core have some feature for protecting this situation?
I appreciate your quick reply.
Best regards,
Michi
> I think this situation make the performance decreasing dramatically.
Why do you think this is any worse than running interrupt handlers themselves? Most interrupt handling on a A-profile CPU will result in multiple cache misses, TLB misses, and typically will itself talk to peripherals over some peripheral bus interface. One or two pending loads is unlikely to significantly impact performance.
A-profile software typically isn't _that_ sensitive to interrupt latency (on a "big OS" such as Linux you typically have many thousands of cycles of kernel overheads before you even get to the interrupt handler in the device driver, and most "real work" is deferred to a work queue which waits on a kernel thread reschedule which may take thousands more cycles before it is scheduled if the system is busy).
HTH,
Pete
I think you are confusing what is architecturally guaranteed with the way a particular implementation might behave. The architecture says that interrupts arte taken following completion of the instruction. But that is only defined at a local level. It would not, to use your example, take into account whether an outstanding PCIe transaction had completed. That is beyond the scope of the architecture and outside the knowledge of the pipeline at a local level.
Chris
Dear Peter-san,
Thank you for your email. I appreciate your support.
May I ask one more question again?
Please see the below picture.
I would like to know which area existing instructions are discarded. When an interrupt occurs, some instructions on Out-of-Order pipeline ( I marked it as No.6 stage) is completed? After all instructions on No.6 stage are completed, does the interrupt jump to handler?
Or only some instructions on No.7 stage (it is very close to the Retirement buffer, but it does not enter to the retirement buffer yet.) are completed before the interrupt jumps to the handler. And all instructions on No.6 stage are discarded before the interrupt?
Please advise me again.
Dear Chris-san,
Thank you for your advice.
But I am still confusing.
You said that A15 core does not wait that PCIe transaction had completed. It is an outstanding at a local level.
Regarding "local level", you said, it does not include the completion time that for "load" instruction to memory space assigned to PCIe,
I don't know why load(or store) instruction is outstanding at local level. If the load instruction to memory space assigned to DDR3, isn't it outstanding?
This is internal implementation detail of the CPU not programmer's model - we don't disclose this level of detail publically,sorry.