<div dir="ltr">Hi all,<div><br></div><div>To make libmm abstract for the user who wants to apply memory attributes for a region of memory, libmm defines general common attributes at high-level that maps to specific CPU attributes for each target. These attributes are for Caches, memory protection currently. I propose two solution for translation process and I'd like to get a feedback.</div>
<div><br></div><div><div style="font-family:arial,sans-serif;font-size:13px">#1 : Translation Table : </div><div style="font-family:arial,sans-serif;font-size:13px">Place a translation table for every BSP that maps high-level attributes to CPU attributes.</div>
<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">Performance is O(1) regardless of how many attributes.</div><div style="font-family:arial,sans-serif;font-size:13px">
Size is O(n) : where n is the number of attributes entries.</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">This solution is good from performance perspective, but it cost some space. As the attributes would be a few, the size issue can be neglectable. </div>
<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">#2 : Conditional translation (the current implementation) : <br></div><div style="font-family:arial,sans-serif;font-size:13px">
A function which simply do conditional checking for high-level attributes and set return with the corresponding CPU attribute</div><div style="font-family:arial,sans-serif;font-size:13px">Performance is O(n) :  where n is the number of attributes combinations.</div>
<div style="font-family:arial,sans-serif;font-size:13px">No size would be taken for attributes, it deals with macros (the current implementation).</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">
The more attributes we support, the more the performance would be hurt during translation phase.</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">
Which solution is more convenient for RTEMS ? <br></div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">I prefer the first solution of translation table as it would consume only a few bytes for the table.</div>
</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">Regards,</div><div style="font-family:arial,sans-serif;font-size:13px">Hesham</div></div>