I am working on something on a raspberry pi 4 and I am using some 64 bit assembly language.
In some parts of the code I have to use instructions such as isb and dmb but I am using them blindly. It works but I am missing out on exactly how it works.
What I need is pretty much to be able to guarantee that when I read data from a memory location the cpu core reads the same data that is there, i.e. I need to ensure that the cache levels are in sync with the last write.
Also, when I write to a memory location https://routerlogin.uno/, I need to be able to make sure that the data is written to the actual ram as soon as possible, not only to the cache.
Are there any beginner friendly tutorials about how memory and especially cache memory works on aarch64?
I had a look at the official arm documentation but it looks like it's for people who already know quite a bit about that.
Could you please elaborate a bit more why you "need to be able to make sure that the data is written to the actual ram as soon as possible"? Is a peripheral with a DMA possibly involved in your scenario?
In all cases, the "learn the architecture" documents are a good place to start: