FMod Posted May 15, 2016 Share Posted May 15, 2016 So with 2x4GB GPU that's about 8GB of RAM lost to the GPU leaving approximately 0GB for everything else. This isn't correct. The two GPU in SLI always share their memory. In DX9, the primary storage location is system RAM, so there are three copies of the same data instead of two. There are not, however, four copies of the same data; both GPU reference and access the same virtual memory location. A 32bit CPU can only access 4GB RAM. x86-64 the limit is 4GB per process, on x64 there is no 4GB limit. First of all, "x64" and "x86-64" are the exact same thing. Second, it doesn't work this way. Neither are 16-bit CPU limited to 64k, or 8-bit CPU to 256 bytes, and x86-64 CPU can't access 2^64 bits either. Addressable memory is determined by memory architecture, not CPU word length. Since the mid-1990s, 32-bit x86 CPU have been able to access 64 GB RAM. This had been used in server applications for a while, until Microsoft unilaterally decided to limit consumer versions of its OS to 4 GB of conventionally addressable space when a 32-bit OS version is installed. (It's still addressable with software written to do so, but not as easily as pre-SP2). They had their reasons, some good, and 2^32 happened to be a convenient number. But this is an OS-specific limitation, Microsoft-specific limitation, segment-specific limitation, not a CPU architecture limit. ENB did not magically allow Skyrim to use up to 4GB. Any app can provided the LAA (Large Address Aware) flag is set....Boris is good, but not that good. Actually, ENB did allow Skyrim to use up to 4 GB, albeit not magically. Skyrim will normally crash around the 3 GB mark, ENB uses hacks to avoid that behavior. I'm not the developer, and they're not well-documented enough for me to discuss the implementation, though, only the result. (I also won't discuss the pagefile part, as you're replying to something that hasn't been said. Everyone in this thread suggested adding RAM, no one suggested using a pagefile instead of it.) Link to comment Share on other sites More sharing options...
PillMonster Posted May 15, 2016 Share Posted May 15, 2016 (edited) This isn't correct. The two GPU in SLI always share their memory. In DX9, the primary storage location is system RAM, so there are three copies of the same data instead of two. There are not, however, four copies of the same data; both GPU reference and access the same virtual memory location. Since you've edited your post I assume you've done some research. However I'm going to stick with my original reply because you're still not quite right. The whole system runs in a virtialized environment using pointers so you're repeating what I said earlier. The CPU is the only one with direct access to hardware..,Pointers point to another location with data is, that's how OS virtualization works.Windows Virtualized Environments and Memory Management can not be explained in one or 2 posts so I won't try too hard.Where did I say 4 copies of anything I said 2 copies, one in RAM and one in VRAM which in reference to a single GPU. But yes there would be 3 copies under DX9 and WDM so you're on track.GPU's in SLI do not share VRAM. Nor do they share "virtual memory locations" The GPU's can't even see each other. Both GPU's work independently on different frames which are sent by the CPU. One outputs while the other renders. This is called AFR Alternate Frame Rendering.That's why on SLI/CFX rigs VRAM is always calculated as the sum total. 2x 4GB GPU's = 4GB VRAM not 8GB. If it was shared all 8GB would be available.DirectX doesn't control memory management, it runs under WDDM which is the kernel engine behind DX . Also shared memory, unified memory, and unified address space are not the same. Virtual memory is the page file. With DX9 and WDDM 1.x the physical data needed by the GPU has to be physically copied from RAM to a middle buffer, passed to the GPU and copied to VRAM and vice versa.It's like dealing with a 3rd party broker.This is where DX11 and WDDM unified address space comes in and 0 copy. The GPU can directly access RAM, not possible in earlier systems.RAM can also be used for buffer flipping under DX11/12 so the whole frame can be rendered in RAM then sent to VRAM.All this is where allocation of RAM in W10 comes in....but compatibility between hardware, DX versions, OS and devs is sketchy at best. In DX9 the primary storage location is system RAM? Rather ambiguous statement, would you care to elaborate? Primary Storage for what? Everything on a platform is stored in RAM at some stage whether DX7 or DX12. Second, it doesn't work this way. Neither are 16-bit CPU limited to 64k, or 8-bit CPU to 256 bytes, and x86-64 CPU can't access 2^64 bits either. Addressable memory is determined by memory architecture, not CPU word length. Since the mid-1990s, 32-bit x86 CPU have been able to access 64 GB RAM. This had been used in server applications for a while, until Microsoft unilaterally decided to limit consumer versions of its OS to 4 GB of conventionally addressable space when a 32-bit OS version is installed. (It's still addressable with software written to do so, but not as easily as pre-SP2). They had their reasons, some good, and 2^32 happened to be a convenient number. But this is an OS-specific limitation, Microsoft-specific limitation, segment-specific limitation, not a CPU architecture limit. The formula you quoted has been recycled around the net for years by people who don't even know what it means. A 32bit CPU can absolutely not access more than 4GB of RAM. You're confusing RAM with address space. If you can find a single reference where a 32bit CPU can access over 4GB of RAM I'd like to see it. Not virtual address space or virtual memory. RAM. Memory = RAMPagefile = Virtual RAM ( virtual memory)Windows = Address Space.Applications = Address SpaceProcess = Address SpaceWith pagefile enabled = Pagefile + RAMWith pagefile disabled:total address space available to OS= RAM32bit CPU = 4GB total address space64bit - whatever the motherboard can take. The OS "4GB RAM limit" is a myth, Windows like all software cant accesses RAM. The limit applies to 32bit PROCESSORS. Until C2D all Intel CPU's and all Intel motherboards were 32bit except for servers. Sever CPU's came with an extra bit which could be enabled via register to make them 36bit. That's what PAE is.This gave Intel access to over 4GB of RAM on server platforms with remapping. The memory limits in Windows are just artificial licensing restrictions. XP =4GB Server 2003 =64GB or whatever? Practically the same OS. First of all, "x64" and "x86-64" are the exact same thing. I agree the x86 x64 naming has became convoluted over the years, I'm old school and tend to talk off my head. However I will clarify. 32bit CPU = 4GB RAM period for the whole system. Virtual memory (pagefile) there is practically no limit. The CPU can swap page files all day long but can't access over 4GB of RAM.32bit app 2GB virtual address space or up to 3GB with LAA, 2GB is normally reserved for the kernel. WinXP 86 on 64bit CPU = each process has 4GB of address space available however many processes can run concurrently the whole system can eat over 4GB RAM.64bit CPU + 64bit OS + 32bit application: with LAA flag there is practically no limit. You can see how Intel could use the pagefile as a marketing tool......... I hope that helps clear the fog as it took quite some time... :wink: Tbh most of the material on MSDN related to memory limitations is ambiguous at best.16 years ago Intel was at war with AMD, Intel even paid OEM's not to use AMD hardware. When XP went RTM Intel had no 64bit support while AMD did. So not that hard to connect the dots imho. Edited May 15, 2016 by PillMonster Link to comment Share on other sites More sharing options...
zax141 Posted May 16, 2016 Author Share Posted May 16, 2016 Snip--- Wow... thank you, not what I intended to get out of this topic but you went quite in depth while still remaining very easy to follow. Link to comment Share on other sites More sharing options...
FMod Posted May 16, 2016 Share Posted May 16, 2016 Since you've edited your post I assumeI have not edited any of my posts in this thread. You're using a lot of technical jargon that looks impressive, but keep making factually incorrect claims: A 32bit CPU can absolutely not access more than 4GB of RAM.If you can find a single reference where a 32bit CPU can access over 4GB of RAM I'd like to see it. Not virtual address space or virtual memory. RAM.Counterexamples: Intel Core, Pentium Pro, Pentium II, Pentium III, Pentium 4, and AMD Athlon are all 32-bit CPU that can access up to 64 GB of RAM. Until C2D all Intel CPU's and all Intel motherboards were 32bit except for servers. Sever CPU's came with an extra bit which could be enabled via register to make them 36bit. That's what PAE is.PAE does not turn 32-bit CPU into 36-bit. It does not require a server CPU either. I don't know what your deal is, whether you have a difficulty expressing yourself in English or just don't know as much as you think you do, but the end result is that you're likely to misinform the people reading your posts. A further number of your statements can be easily disproven through experiment: So with 2x4GB GPU that's about 8GB of RAM lost to the GPU leaving approximately 0GB for everything else.But RAM is reserved for the GPU regardless of whether a game needs it or not.The only reason you haven't had a CTD is because your pagefile is enabled. Without it you'd have had a ton of low memory warnings.Experiment 1: On OP's old system (remove the added RAM), set pagefile size to 16 MB min, 8 GB max. If the claims are true, the pagefile should immediately grow to match or exceed peak commit charge. Experiment 2: On OP's old system, disable the pagefile. Launch an old game with low requirements. If the claims are true, it should crash immediately. Link to comment Share on other sites More sharing options...
obobski Posted May 16, 2016 Share Posted May 16, 2016 +1; agree with FMod yet again. The PAE example and the functioning of memory in DirectX are both prime examples; all Intel CPUs since Pentium Pro and AMD Athlon support PAE and will happily run >4GB of RAM in PAE-supported operating systems (e.g. Windows 2000 Advanced, Windows Vista with PatchPAE, and many Linux distros) while still being 32-bit processors. Not all multi-GPU equals "AFR" either - that's one of a few ways multiple GPUs will work co-operatively, and it depends on the specific application/implementation as to whether or not AFR is even compatible. The statement on "2x4GB GPU has 8GB reserved for GPU" is also wrong - with a pair of 4GB cards in SLI there's still only 4GB of video memory available, and FMod's explanation is the correct one (in that resources will be duplicated amongst them), earlier up in the thread. It's also a generally bad idea to turn pagefile off (if the partition Windows has selected is too small/needs space freed you're better off moving it somewhere with sufficient space), and it is not just a "hedge against CTD" or some sort of "Intel marketing ploy" - its an important part of Windows' virtual paged memory system. Oh, and as a matter of historical contention: AMD did not have a 64-bit CPU available at the time Windows XP first released; they had just barely released a CPU that supported SSE at that time (the Morgan Duron). Intel, however, did have a 64-bit CPU on the market (Itanium) and there was a 64-bit version of Windows XP that shipped with support for it. AMD64 ("x86-64") and the Athlon64 came out in 2003, and Intel very quickly implemented their own variant of x86-64, EM64T, on the Pentium 4 shortly thereafter. Link to comment Share on other sites More sharing options...
PillMonster Posted May 17, 2016 Share Posted May 17, 2016 (edited) Since you've edited your post I assumeI have not edited any of my posts in this thread. You're using a lot of technical jargon that looks impressive, but keep making factually incorrect claims: It may sound like "technical jargon" to you but it's plain English to me. And you did edit your post right as I was replying so don't say things that aren't true, A 32bit CPU can absolutely not access more than 4GB of RAM.If you can find a single reference where a 32bit CPU can access over 4GB of RAM I'd like to see it. Not virtual address space or virtual memory. RAM.Counterexamples: Intel Core, Pentium Pro, Pentium II, Pentium III, Pentium 4, and AMD Athlon are all 32-bit CPU that can access up to 64 GB of RAM. Wrong, give me a link to back that up. Until C2D all Intel CPU's and all Intel motherboards were 32bit except for servers. Sever CPU's came with an extra bit which could be enabled via register to make them 36bit. That's what PAE is.PAE does not turn 32-bit CPU into 36-bit. It does not require a server CPU either. I don't know what your deal is, whether you have a difficulty expressing yourself in English or just don't know as much as you think you do, but the end result is that you're likely to misinform the people reading your posts. Total BS mate that's exactly what PAE does. I've been in this industry for nearly 20 years so should know. A further number of your statements can be easily disproven through experiment:So with 2x4GB GPU that's about 8GB of RAM lost to the GPU leaving approximately 0GB for everything else.But RAM is reserved for the GPU regardless of whether a game needs it or not.The only reason you haven't had a CTD is because your pagefile is enabled. Without it you'd have had a ton of low memory warnings.Experiment 1: On OP's old system (remove the added RAM), set pagefile size to 16 MB min, 8 GB max. If the claims are true, the pagefile should immediately grow to match or exceed peak commit charge.Experiment 2: On OP's old system, disable the pagefile. Launch an old game with low requirements. If the claims are true, it should crash immediately. I don't have "a deal" I simply have extensive knowledge of Windows operating systems. And I do not have time to explain it all to someone who is intent on arguing instead of listening just because they don't understand how things work. Edited May 17, 2016 by PillMonster Link to comment Share on other sites More sharing options...
PillMonster Posted May 17, 2016 Share Posted May 17, 2016 +1; agree with FMod yet again. After reading some of your comments that does not surprise me. The PAE example and the functioning of memory in DirectX are both prime examples; all Intel CPUs since Pentium Pro and AMD Athlon support PAE and will happily run >4GB of RAM in PAE-supported operating systems (e.g. Windows 2000 Advanced, Windows Vista with PatchPAE, and many Linux distros) while still being 32-bit processors. I guess you didn't read my earlier post. Operating Systems DO NOT USE RAM. The PAE switch in the bootloader enables the extra bit on Intel CPU's allowing then to use over 4GB RAM on specific platforms.For all other systems the PAE switch only increases ADDRESS SPACE within Windows using the pagefile. I seriously don't have time to go through this. Link to comment Share on other sites More sharing options...
obobski Posted May 17, 2016 Share Posted May 17, 2016 (edited) All technical discussion aside, one wonders: if you're truly so busy that you can't, seriously, be bothered to provide any evidence or support for any of your claims (or for that matter, even exercise the most basic of manners, grammar, spelling, etc), and if you're truly so superior that we're all just utterly beneath you (and apparently unwilling to just "understand how things work" and take whatever you say as the spoken gospel), why you continue to post here... And I'll take your comment about agreeing with FMod as a compliment. :smile: Edited May 17, 2016 by obobski Link to comment Share on other sites More sharing options...
PillMonster Posted May 17, 2016 Share Posted May 17, 2016 @FMOM and Obobski: The screenshot below might convince you guys on the concept of PAE and the 36bit extension. Normally I wouldn't use Wikipedia but I have better things to do than trawl through the official technical documentation. If you want to learn about anything else ask me and I will provide links to the information (not wikipedia). But I refuse to get into a forum debate over it all. http://i1294.photobucket.com/albums/b608/pillmonsta1/Capture1_zpscjntquaf.jpg http://i1294.photobucket.com/albums/b608/pillmonsta1/Capture_zpsg35yl0dl.jpg ^36bit is valid for platforms which support it and enabled via PAE. Link to comment Share on other sites More sharing options...
obobski Posted May 17, 2016 Share Posted May 17, 2016 (edited) You'll notice that the source you've cited says: "All Intel CPUs since Pentium Pro" - you've argued that isn't the case. Are you now meaning to argue against your own sources? Do you perhaps have a better source that supports this claim? Also side-fact there: NX bit requires PAE to be implemented, so if the processor supports NX, it supports PAE. Chipset/MMU support was not part of your original claim, and nobody has argued that physical (or OS licencing) limits won't come into play well before theoretical addressing limits do. So where's the conflict? No idea what the second source is (if you're going to cite things, please provide complete citations not just random plagiarized stuff - what's so hard about providing a link?), but its got some inaccuracies (or at least quaint historical quirks) in it: - There is no "Pentium IV Xeon"- There is no "Intel P7"- The bits on Windows 2000 are roughly accurate; not all versions of Windows 2000 implement >4GB via PAE (only Advanced and Datacenter do; Professional and Server do not), but the parts about AWE are correct with respect to wanting a Win32 application to use >4GB of memory. For conventional Win32 applications you can "stack" them up to whatever the system's limit is, without having to resort to as much paging (e.g. say you have ten applications each using ~2GB and 32GB of physical memory - that would work). Sauce: https://support.microsoft.com/en-us/kb/283037 and https://support.microsoft.com/en-us/kb/268363 and here too: https://msdn.microsoft.com/en-us/library/windows/hardware/Dn613969%28v=vs.85%29.aspx None of this actually has any bearing on the original discussion though ("what do I need to do for my computer to run Skyrim and other games on a 21:9 monitor") nor does it even provide support for your claim that "only server processors" support PAE or that PAE is some "Intel marketing ploy" that "uses pagefile" (there are end-user hacks that will map memory >4GB into a ramdisk and then assign that disk to pagefile; these were/are popular for Windows XP machines where people want to use more than 4GB of memory, but that isn't what PAE does (the big difference being that pagefile isn't mapped as system memory), nor is PAE Intel-exclusive, or Windows-exclusive (there are, however, in Windows Datacenter editions some Microsoft-specific caching features that rely on PAE, and are similar to the "Windows XP with a ramdisk" thing - they're described in the third link I provided)). I'm having a hard time seeing why this diversion was necessary (or why the thread had to be necro'd to have it), or what you're even actually trying to argue (or argue about) here (your goal posts seem to keep moving). Perhaps you could clarify your intention and purpose? What are "we" supposed to gain from this experience? EDIT: Also nobody is arguing that PAE doesn't mean 36-bit ADDRESSING. It does not, however, mean 36-bit REGISTER SPACE. In other words, your Pentium Pro or Pentium 4 or whatever is not working on 36-bit ints or floats* (there *are* 36-bit processors, but they're older than time itself; PDP-10 is an example). Wikipedia has a quick'n'dirty explanation:https://en.wikipedia.org/wiki/Physical_Address_Extension#Design * With SIMD extensions you can theoretically support >32-bit floats. Edited May 17, 2016 by obobski Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now