Why can't Vista 32-bit use a separate memory address space for SuperFetch?

Page 2 - Seeking answers? Join the AnandTech community: where nearly half-a-million members share solutions and discuss the latest tech.

pallejr

Senior member
Apr 8, 2007
216
0
0
It might be getting old, and this might not be the place to discuss it. But if the memory manager chooses only to give away memory below 4G to drivers, no double buffering will ever be needed.
 

bsobel

Moderator Emeritus<br>Elite Member
Dec 9, 2001
13,346
0
0
Originally posted by: pallejr
It might be getting old, and this might not be the place to discuss it. But if the memory manager chooses only to give away memory below 4G to drivers, no double buffering will ever be needed.

You remain wrong. The IO will read into those buffers and then the data will need to be copied into the applications buffer if they are not the same. In PAE mode its likely they wont be the same.

From the DDK:

One software workaround would require the operating system to override the Dma64BitAddresses flag passed by the driver to HalGetAdapter: if the driver passes TRUE and its device is on a bus that does not support DAC, force this to FALSE. That causes the hardware abstraction layer (HAL) to double-buffer transfers done through IoMapTransfer or GetScatterGatherList, so the device never sees an address above 4 GB. For more information, see the "Double-Buffer DMA Transfer" topic in the Windows DDK.

Now please drop this until you've at least read that article from the DDK. I realize you think you know your way around Windows internals from your posts, but you do not.

 

bsobel

Moderator Emeritus<br>Elite Member
Dec 9, 2001
13,346
0
0
http://www.microsoft.com/whdc/...server/PAE/PAEdrv.mspx

1 In these cases, there is still an opportunity for memory corruption, even with 32-bit devices on 32-bit buses using 32-bit drivers, as described in Note 2.
2 The decision to double-buffer is made on a per-transfer basis. It is the same algorithm used to determine whether a DMA transfer to a 24-bit (ISA) adapter should be double buffered.
Double buffering occurs for a given transfer if the physical address of the DMA memory is at an address higher than the adapter can reach. Previously, an adapter that could access all 32 bits of physical address space would set the Dma32BitAddresses field in the DEVICE_DESCRIPTION structure passed into HalGetAdapter. Similarly, an adapter that could access all 64 bits of physical address space would set the Dma64BitAddresses field in the same structure.
If a buffer with a physical address greater than 4 GB is passed to IoMapTransfer, the adapter object is examined. If it is found to be for an adapter that did not set the Dma64BitAddresses field, then a suitable low-memory buffer is found, and the data is copied before or after the transfer (depending on whether the data was going to or coming from the adapter, respectively).

3 Systems having a non-DAC bus are detected at boot time and Windows disables memory above 4 GB by not using the PAE kernel in order to prevent memory corruption and system instability.
4 In these cases, there is still an opportunity for memory corruption, even with 32-bit devices on 32-bit buses using 32-bit drivers, as described in Note 2.

 

pallejr

Senior member
Apr 8, 2007
216
0
0
Yes, I have read all that. You don't understand what I write, and what it means. So let us drop it.

Just a note, now you are hooked on double buffering. In a 64bit OS, if the buffer is above 4G, and the device cannot reach that high, double buffering will also happen here.
 

bsobel

Moderator Emeritus<br>Elite Member
Dec 9, 2001
13,346
0
0
Originally posted by: pallejr
Yes, I have read all that. You don't understand what I write, and what it means. So let us drop it.

I understand that you think you know Windows internals and you do not. You claimed that no double buffering will take place. I quoted the Windows DDK indicating when it would. I suggest you read a book on Windows before claiming to know it further.

Since you seem argumentative, lets review:

You said "But if the memory manager chooses only to give away memory below 4G to drivers, no double buffering will ever be needed."

Microsoft says "If a buffer with a physical address greater than 4 GB is passed to IoMapTransfer, the adapter object is examined. If it is found to be for an adapter that did not set the Dma64BitAddresses field, then a suitable low-memory buffer is found, and the data is copied before or after the transfer"


 

pallejr

Senior member
Apr 8, 2007
216
0
0
I said: if the memory manager makes sure that dma buffers are always allocated below 4G, no double buffering will ever be required.
 

bsobel

Moderator Emeritus<br>Elite Member
Dec 9, 2001
13,346
0
0
Originally posted by: pallejr
I said: if the memory manager makes sure that dma buffers are always allocated below 4G, no double buffering will ever be required.


You seem slow. The DMA buffer may be allocated below the 4G line, but the applications buffers may not be. As such, when the DMA is complete a memory copy must occur. This is IO 101. Seriously, your a developer with Vmware? What do you do for them java and web apps?

Once again for the slow reader... Microsoft says "If a buffer with a physical address greater than 4 GB is passed to IoMapTransfer, the adapter object is examined. If it is found to be for an adapter that did not set the Dma64BitAddresses field, then a suitable low-memory buffer is found, and the data is copied before or after the transfer"


 

bsobel

Moderator Emeritus<br>Elite Member
Dec 9, 2001
13,346
0
0
Just a note, now you are hooked on double buffering. In a 64bit OS, if the buffer is above 4G, and the device cannot reach that high, double buffering will also happen here.

Yep, however few 64bit capable machines are running cards not capable of at least 36bit addressing. That said, your correct, shame you dont understand how it works in a 32bit OS as well.

 

bsobel

Moderator Emeritus<br>Elite Member
Dec 9, 2001
13,346
0
0
Originally posted by: pallejr
I'm slow? Let us stop this here.

Apparently. It's ok to be wrong. But when your shown the facts 4 times in a row and still don't get it, I start to wonder about your ability to comprehend and reason. Now if your not really a developer (as I suspect) then your confusion on this issue is more founded. But you've claimed to be a subject matter expert and your clearly not.


 

pallejr

Senior member
Apr 8, 2007
216
0
0
You say: "but the applications buffers may not be."

I have said (how many times): if the memory manager ensures these buffers are below 4G ... hello?
 

bsobel

Moderator Emeritus<br>Elite Member
Dec 9, 2001
13,346
0
0
Originally posted by: pallejr
You say: "but the applications buffers may not be."
I have said (how many times): if the memory manager ensures these buffers are below 4G ... hello?

Oh, changing your story now? You have all along been refering to DMA buffers. Either way YOU ARE WRONG GET THIS THROUGH YOUR FREAKING HEAD. What you said was "It might be getting old, and this might not be the place to discuss it. But if the memory manager chooses only to give away memory below 4G to drivers, no double buffering will ever be needed."

You can't have it both ways. If neither drivers nor applications can use memory above the 4gig line then you know what, you have a 4gig machine. In fact, this is EXACTLY what Microsoft did in the XP family. If you have more than 4gig of memory its simply never used.

The OP here suggested a way to use is. I pointed out yes you could but you'd have some double buffering going on. You show up and try to correct that. Your wrong, and now your trying to claim your talking about application buffers. Well then sport if your DMA buffers are below the 4gig line and your application memory is below the 4gig line, exactly what are you storing above the 4gig line AND HOW THE HELL DO YOU GET IT THERE WITHOUT COPYING FROM BUFFERS BELOW THE LINE.

Now in 2003 server and 2008 server (32bit)they do allow PAE mode and it works exactly like I described. If the applications buffer is above the 4gig line the data is double buffered if its coming from a driver which can't deal with >32bit addresses.

 

ViRGE

Elite Member, Moderator Emeritus
Oct 9, 1999
31,516
167
106
Just let it drop, Pallejr. What bsobel has said so far is right on the dot.
 

bsobel

Moderator Emeritus<br>Elite Member
Dec 9, 2001
13,346
0
0
Originally posted by: pallejr
Try and read a bit about memory management

I've posted the facts troll. Either refute them (and provide links to the DDK to show where this is wrong) or STFU.

 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |