In document on AXI3:
"The exclusive access monitor records the address and ARID value of any exclusive read
operation. Then it monitors that location until either a write occurs to that location or
until another exclusive read with the same ARID value resets the monitor to a different
address."
I have an example.
I have 2 Master and 2 bit ID per master. (out of order data & out standing address support)
M0 have master number is 0.
M1 have master number is 1.
When M0 is selected by the Arbiter, then M0 issue exclusive read to S0 with start address is 16h0000.
And then M1 is selected by the Arbiter, then M1 issue exclusive read to S0 with start address is 16h0000.
In two cases above, 2 exclusive read with same address is 16h0000 but different ARID.
What will happen with the monitor in my example???
After that, I assume that M1 issue exclusive write before M0.
What will S0 response to M0 and M1???
Best regards,
** Cao Phi
Hi diandianzhang,
I think you seem to have some misunderstanding.
In this case the hardware feature of supporting exclusive access by the slave is wasted. A workaround must be then found in the software to ensure the exclusive access to the slave.
It is not basically checked dynamically whether a slave support the exclusive.A programmer should know it in advance.Therefore, there would not be so big differences of returning OKAY of EXOKAY for an exclusive read.I can agree with that an exclusive read will always get EXOKAY.
If I understand this correctly, the number of the pairs should correspond to the number of exclusive-capable master IDs. Please correct me, if my understanding is wrong.
Partly correct and partly incorrect.It is correct that the number of pairs of an address and id should be the sane as the number of exclusive-capable masters.It does not mean to have the pairs which is the same number of the masters for an address.The aim of the recommendation is to have an individual semaphore for each master at the same time.
- Case 1 + Case a: A0 is monitored => M0 gets EXOKAY and updates A0 => A0 is not monitored any more => M1 gets OKAY and does not update A0.
Incorrect.M0 gets OKAY and does not update A0, andM1 gets EXOKAY and updates A0.The ordering of M0 and M1 does not change the results.
- Case 2 + Case a: A0 is monitored => M0 gets EXOKAY and updates A0 => A0 is not monitored any more => M1 gets OKAY and does not update A0.
Yasuhiko Koumoto.
Hi Koumoto-san,
In this case the hardware feature of supporting exclusive access by the slave is wasted. A workaround must be then found in the software to ensure the exclusive access to the slave.It is not basically checked dynamically whether a slave support the exclusive.A programmer should know it in advance.Therefore, there would not be so big differences of returning OKAY of EXOKAY for an exclusive read.I can agree with that an exclusive read will always get EXOKAY.
What you explained makes more sense. The AXI spec is somehow misleading ...
If I understand this correctly, the number of the pairs should correspond to the number of exclusive-capable master IDs. Please correct me, if my understanding is wrong.Partly correct and partly incorrect.It is correct that the number of pairs of an address and id should be the sane as the number of exclusive-capable masters.It does not mean to have the pairs which is the same number of the masters for an address.The aim of the recommendation is to have an individual semaphore for each master at the same time.
I did not mean that there are the same number of pairs as the masters for an address. What I wanted to say is that it is possible to have different IDs pointing to the same address.
E.g. in a 3-master-system, there should be three pairs. They can be e.g. be:
- {ID0, A0}, {ID1, A1}, {ID2, A2} // all IDs have different monitored addresses
or
- {ID0, A0}, {ID1, A0}, {ID2, A2} // ID0 and ID1 have the same address, and ID2 has a different one
- {ID0, A0}, {ID1, A0}, {ID2, A0} // all IDs have the same monitored address
Do you think so?
Best regards
Diandian