A 64k MMU page is 8 times larger than a 8k MMU page. If you move
memory blocks with 64k MMU pages you will have 8 times less MMU
callbacks.
I may be mistaken but Ultrasparc does AFAIK have a extra block copy
engine which works in parallel to the main pipeline. But I do not know
how to access it. Maybe others know.
Olga
On Thu, Mar 25, 2010 at 9:49 PM, jf simon <jfs at themis.com> wrote:
> ????? ???????????? wrote:
>> On Niagara 1/2 machines the shadow rendering of even one diagonal line
>> causes incredible MMU turmoil because there are not enough MMU entries
>> for all memory lines being touched.
>>
>> You could try to enforce the use of 64k MMU pages instead of 8k MMU
>> pages at the beginning of Xorg:
>> struct memcntl_mha mha;
>> mha.mha_cmd = MHA_MAPSIZE_BSSBRK;
>> mha.mha_flags = 0;
>> mha.mha_pagesize = 64 * 1024;
>> (void)memcntl(NULL, 0, MC_HAT_ADVISE, (caddr_t)&mha, 0, 0);
>>
>> Stack should be mapped with 64k pages, too:
>> struct memcntl_mha mha;
>> mha.mha_cmd = MHA_MAPSIZE_STACK;
>> mha.mha_flags = 0;
>> mha.mha_pagesize = 64 * 1024;
>> (void)memcntl(NULL, 0, MC_HAT_ADVISE, (caddr_t)&mha, 0, 0);
>>
>> You should examine if the shadow buffer is mapped with 64k pages and
>> compare the performance with 64k pages and 8k pages. You should at
>> least see a 9-15% increase in performance.
>>
>
> thanks.
> i am not familiar with these 64k pages.
> but you dont think i can speed up the transfer speed of the
> shadow FB to the video ram?
> -jfs
>
--
, _ _ ,
{ \/`o;====- Olga Kryzhanovska -====;o`\/ }
.----'-/`-/ olga.kryzhanovska at gmail.com \-`\-'----.
`'-..-| / Solaris/BSD//C/C++ programmer \ |-..-'`
/\/\ /\/\
`--` `--`