Related
Edit: TL;DR VERSION: 128 of that 512 megs of RAM in ur Epic is leet special-sawce Samsung RAM that pwns other RAMs, and makes ur GPU make moar trianglez in ur gamez.
Forgive me folks, I'm lazy, so I'm posting this more or less verbatim from what I posted in my blog, with a few minor tweaks. It's long and probably boring, so you have my apologies in advance.
Despite my efforts to pull myself away from ARM architecture, Android, and specifically, the mysteries surrounding the Hummingbird processor, I can never really extract myself. One of these days I'll get around to obsessing over something else (hopefully career-related) but until then, I'll let you know what I think I've uncovered as the solution to how Samsung solved the GPU bandwidth issue (which I puzzled over in my original Hummingbird vs. Snapdragon article.)
There have been a few opportunities where I've had to step in and correct people when they post that a Galaxy S phone has only ~320 megs of RAM. It's an error I see made frequently when people use Android system info applications that can only see the 320 megs of volatile memory, despite the fact that the phone does actually contain 512 megs of RAM. We see it happen every time a new Galaxy S phone is leaked, even the Nexus S.
The explanation for this has always been that a certain amount of memory have been "reserved" by Samsung for the Android OS, and that memory is not visible nor available to applications. Despite this, I've never been able to figure out exactly how the system provides the 12.6 GB/sec of memory bandwidth it (theoretically) needs to push out 90 million triangles/sec with the PowerVR SGX540 GPU.
I'm not quite sure how it happened, but in my meanderings across the interwebs, I ran across the following image on ODROID.com of the block diagram of the S5PC110 that they use for their developer board.
(Edit: Image-Shacked... ODROID didn't appreciate me hot-linking their image. Whoops. Use the ODROID.com link above to see the original.)
Careful observation of the POP (Package-On-Package, or "Stacked" circuits) module on the left-hand side shows 384 MB of LPDDR1 and 128MB of OneDRAM, a term I'd noticed on S5PC110 documentation on the list of supported technologies. I'd assumed that it wasn't used. I'd already determined that even though the Hummingbird supports LPDDR2, it only supports it at 400 Mbps transfer rate (which LPDDR1 is capable of) and, with an x32 bus, only allows for 1.6 GBps data bandwidth, a far cry from the 12.6 GBps needed.
So what is this OneDRAM? According to Samsung, "OneDRAM is a fusion memory chip that, can significantly increase the data processing speed between a communications processor and a media processor in mobile devices," and, "...this results resulting in a five-fold increase in the speed of cellular phone and gaming console operations, longer battery life and slimmer handset designs." (Sic.)
Hear hear! 5 times 1.6 GBps still doesn't equal 12.6, but the 12.6 number is a something I arrived at using a lot of assumptions (4.2 GBps bandwidth needed by the PowerVR SGX540 to perform 28 million triangles per second, multiplied times 3 to make ~90 million triangles per second). I'm satisfied that the OneDRAM is that holy grail memory I've been looking for.
Now, how to prove that it actually exists inside my Epic 4G? Remember, the S5PC110 Hummingbird doesn't come with memory built-in; that's something that gets stacked on when the phone is built. The ODROID guys could very well be using a completely different configuration; though that ~320 megs showing up over and over in Android system info apps hardly seems like a coincidence, assuming the difference between 384 and 320 is actually reserved memory for the OS' own system applications. The OneDRAM on the other hand would be reserved primarily for hardware use, such as the GPU as Samsung earlier suggested.
I turned to one of my Android developer acquaintences, noobnl of xda-developers.com. When I showed him what I've run across, (hoping to see if he'd heard of this before, as he has a good handle on Epic hardware) he told me that I had made a good find. He also pasted some kernel code that clearly referenced OneDRAM, proving that the Epic 4G contains this technology.
So there you go folks. The secret is out. The Galaxy S phones are likely able to achieve such amazing graphics performance via a 128 MB Samsung-proprietary high-speed hybrid memory solution. The remaining 384 megs of memory is plain-jane LPDDR1. The total is the promised 512 megs, and honestly, I wouldn't trade the OneDRAM for 128 megs more of LPDDR1 available application memory, but it's interesting how Samsung has kept the OneDRAM solution so quiet. It's likely enjoying the current GPU supremacy of the Galaxy S phones, unfortunately come Cortex-A9, LPDDR2 memory (> 400 Mbps), and dual-channel memory controllers, they will be back on a level playing field. Who could blame them for setting aside Orion and picking up NVIDIA's Tegra 2 SoCs for their next-gen smartphones? It's a fast-moving industry out there, particularly when you don't have Intrinsity any longer as your ace-in-the-hole. Curse you, Apple.
PS - Some of you guys on here know more about this **** than I do. Please feel free to offer suggestions, corrections, and jeers. Though I'm hoping for less of the latter.
Dude what?
Sent from my SGH-T959D using XDA App
Mannnnnnn ....I had a hunch it worked like that
thanks for clearing this up Im glad im not the only one that figured this out!
Are you not compensating for TBDR memory efficiency?
Interesting. Could also complicate porting newer Android versions, at least wih the same efficiency.
I pretend I understood all that you said..and say...Voila..FINALLY!
Yeah I've seen documentation saying the Galaxy S phones have 4Gb of RAM. 1Gb of which is OneDRAM and 3Gb is LPDDR (Idk version). Now, tell us why ODROID and the block diagram can do 1080p and we can't.
EDIT:
thephawx said:
Are you not compensating for TBDR memory efficiency?
Click to expand...
Click to collapse
I just pulled my information from some raw data about the Intel GMA500 (which is an SGX540 disguised as Intel) running at 200 MHz. I would assume the 4.2 GB/s bandwidth needed assumes TBDR is being used.
It's a shaky line of reasoning though. Wish I had some more hard data on the SGX540, and more specifically, the clock rate it runs at in the Epic.
arashed31 said:
Yeah I've seen documentation saying the Galaxy S phones have 4Gb of RAM. 1Gb of which is OneDRAM and 3Gb is LPDDR (Idk version). Now, tell us why ODROID and the block diagram can do 1080p and we can't.
EDIT:
Click to expand...
Click to collapse
Yeah, I could swear I've seen those numbers somewhere but I can't for the life of me find it.
As for the 1080p, that's a good catch; interesting. And, now that I look closer, WiFi doesn't have N support, though I suppose it's possible they used a different WiFi chip.
delete, double post.
Interesting...I guess it makes sense somewhat...though with that much processing why would they then set an FPS limit? is it suppose to be their way of saving energy?
As for 1080p..we have specifications for it..If i were to guess we just don't have the proper drivers...video decoding is done via the ARM Neon..so if anything 1080p would play slow..but it doesn't play at all...so its either locked out intentionally..or the driver is not configured to...I mean it can handle 720p at [email protected] reason why it can't handle 1080p at lower settings...
Wow.. My brains are like oh my gawds!
Interesting tho
Sent from my SPH-D700 using Tapatalk
Another thing. If you look at the Bluetooth certification site you'll see the Samsung Epic is certified for Bluetooth 3.0. Even though the chip in there is a Broadcomm chip that only supports Wireless N and Bluetooth 3.0.
gTen said:
Interesting...I guess it makes sense somewhat...though with that much processing why would they then set an FPS limit? is it suppose to be their way of saving energy?
As for 1080p..we have specifications for it..If i were to guess we just don't have the proper drivers...video decoding is done via the ARM Neon..so if anything 1080p would play slow..but it doesn't play at all...so its either locked out intentionally..or the driver is not configured to...I mean it can handle 720p at [email protected] reason why it can't handle 1080p at lower settings...
Click to expand...
Click to collapse
Video decoding is on the processor? WHAT. THE. HELL. SAMSUNG.
Sounds like you did your homework, i'll buy it. Thanks for sharing. I'll take the fast vid over ram too
tmuka said:
Sounds like you did your homework, i'll buy it. Thanks for sharing. I'll take the fast vid over ram too
Click to expand...
Click to collapse
Homework, yes... but I'd really like to see an ARM engineer affirm it.
gTen said:
Interesting...I guess it makes sense somewhat...though with that much processing why would they then set an FPS limit? is it suppose to be their way of saving energy?
As for 1080p..we have specifications for it..If i were to guess we just don't have the proper drivers...video decoding is done via the ARM Neon..so if anything 1080p would play slow..but it doesn't play at all...so its either locked out intentionally..or the driver is not configured to...I mean it can handle 720p at [email protected] reason why it can't handle 1080p at lower settings...
Click to expand...
Click to collapse
Yeah, I just actually took a look at the S5PC110 User Manual and sure enough, 1080p encoding / decoding at 30 FPS is showing supported on the block diagram:
"1080p 30 fps MFC
Codec H.263/H.264/MPEG4
Decoder MPEG2/VC-1/Divx"
But then, directly below the block diagram, the following is shown:
"Multi Format Codec provides encoding and decoding of MPEG-4/H.263/H.264 up to [email protected] and
decoding of MPEG-2/VC1/Divx video up to [email protected] fps"
That's an odd discrepancy, particularly for an official Samsung processor owner's manual.
Also worth mentioning is that that manual makes no mention of OneDRAM in the memory subsystem breakdown where OneNAND, LPDDR1, LPDDR2, and DDR2 support are outlined, however, it's clearly listed as a supported memory type in the block diagram, and later throughout the manual. Hmm.
Sent from my SPH-D700 using XDA App
For ALL devs.
I remember an old post of our belove Blades (Kernel's Dev), that talked about the possibility to push up RAM frequency, not only timings. Today can we reach this goal on our TF101?
"Testing out memory timings that may bite you.. If anyone can help cut through the bull**** that is MC/EMC clocks... just chime in here.. Originally I increased (slowed down) the timings and bumped up the clock by 33mhz.. and got fail. So... advancing the timings it is.. They are pretty pitiful stock.. What really pisses me off is the missing 33mhz (and thus 66mhz from emc).. we could use that... Well.. lets see if waking up the wimpy timings helps".
So, a new challange on the road!
Original Thread:
http://forum.xda-developers.com/showthread.php?t=1226717&highlight=blades
I remember that! That would bem a great improvement :good:
General rule of thumb: If you didn't create 'it', it doesn't belong in the Development subforums
Click to expand...
Click to collapse
..
I would like to see this continued but I remember running some beta tests for blades with different timings and we found that the quality of the RAM in our TF101's was not that great.
If I remember correctly blades said because of the RAM it was not viable to do it and also that the way the timings had to be done was warped to say the least.
I think he had one or two updates with it but then stopped.
Sent from my Transformer TF101 using XDA Premium HD app
Really dangerous. I've been messing around with it a bit and it looks like the RAM chips in most devices can't handle higher clocks properly.
Also, not all batches of RAM chips are the same quality, just like with Intel and AMD CPUs.
Some may clock a lot better than others. It would be almost impossible to find clocks that work fully stable for everyone and really actually speed.
and finally,if someone do this change in ram's freq. sure there will be the need of many types of configurations,becuase our ram is ****ty,and not the same like you have sad.then a dev have to do many types of kernel with different ram's bumping,to accomodate all the users out there.my tab has an "elite" tegra2,never had poblems with blades kernels with tweaked timing and ram,and never had problems also oc to 1.7\1.8 like first elite kenels made by clemsyns
in the 2 type of ram packaged with tegra2,Ventana type,we have the lpddr2 at 300 mhz..i'd preferred to have the others one,ddr2 at 333 with a little more speed (2.66 compared to 2.4)
in the total of types of ram in the market,2.4 gb\sec is very very poor...i don't think that upping the freq. can apport so much performance's gain in this Soc..
from 2008 here on xda,and you don't know that non development things goes in others section?there is nothing related to something you have made OP and this 3ad is not in the right section.
Does anyone who has looked at the kernel source know if we will be able to do RAM overclocking? We know from the whitepaper that playing games on the resolution that the N10 has will take 10+ gigabytes per second of bandwidth so a memory OC should be able to help out considerably, especially if overclocking the GPU as well.
Additionally, how come we never see an area in the tunables where we can tweak timings? All we ever see is voltage and frequency, but the memory has to have primary and subtimings as well, just like all regular computer memory. If someone could make the timings able to be modified we might be able to get some series bandwidth increases out of these.
Oh and one last thing, why dont we ever see memory voltage setting either? We have core, gpu, and video decoding core voltages but being able to tweak memory voltage would be a great addition too. We already know that the Exynos 5 dual uses low power 1.35v DDR3 memory. If Samsung's other LP 1.35v DDR3 chips are any indication, these things have MASSIVE overclock potential. I have seen people running them up over 2400MHz!
bump since we have device support now. Any kernels dev's want to look into the possibility of these things?
I too would be very interested in seeing some RAM overclocking/voltage tweaking; I believe it could open up a lot of potential
If a kernel gets developed that can accomplish this I'll go to the store and buy a n10 that very same day.
Right now I'll show patience and wait to read true reviews from actual users.
Sent from my Nexus 7 using Tapatalk 2
I'm not overclocking my device, in fact if anything i'll under volt it. If I could get a 3rd party accidental warranty, it would be a whole different story.
http://en.wikipedia.org/wiki/Tegra#Tegra_3
Wasjust reading this and it says the CPU goes to 1.3Ghz in single core mode. does that mean 4 cores run at 1.2 then it shuts 3 down and bumps one of them to 1.3 if it needs it?
also anyone now the memery the gfx uses
4 cores @ 1.2Ghz = 4.8 G-ops/sec
1 core @ 1.3Ghz = 1.3 G-ops/sec.
So, the answer to your question is yes and no. Under an idle condition (not sleep) where there is little processor load or runnable threads, there will be only one CPU running @ 1.3 Ghz Fmax. (It can of course be running at a slower speed than this based on what the rate governor has decided) If the demand changes so that one or more additional cores need to be brought on line, the Fmax is constrained to 1.2 Ghz, and those additional cores are brought on line as needed. It may or may not have actually been clocking at 1.3 Ghz when this happens, but probably it will be.
This answer applies to the STOCK kernels. All of this behavior is under control of the kernel, and some of the dev kernels alter this code with different behaviors.
cheers.
Niice info man. thanks very much. any idea on how much RAM the gfx uses?
-PiLoT- said:
Niice info man. thanks very much. any idea on how much RAM the gfx uses?
Click to expand...
Click to collapse
No clue. Don't even know if the GPU has some private SRAM on the SoC. Consult the Tegra 3 TRM for that. But, a single-layer 24-bit framebuffer @ 1280x800 needs 3MB for a single layer. Add in z-buffering and whatever else the openGL ES (1.0 & 2.0) libraries do with offscreen/onscreen primitive storage in userland memory space and I suppose it can be much much higher than that.
Somehow I sense you are asking about kernel-reserved memory; I don't know if the kernel reserves some minimum amount of general-purpose RAM (e.g. for the framebuffer) or not. Sorry. (Use the force, read the source!)
bftb0 said:
No clue. Don't even know if the GPU has some private SRAM on the SoC. Consult the Tegra 3 TRM for that. But, a single-layer 24-bit framebuffer @ 1280x800 needs 3MB for a single layer. Add in z-buffering and whatever else the openGL ES (1.0 & 2.0) libraries do with offscreen/onscreen primitive storage in userland memory space and I suppose it can be much much higher than that.
Somehow I sense you are asking about kernel-reserved memory; I don't know if the kernel reserves some minimum amount of general-purpose RAM (e.g. for the framebuffer) or not. Sorry. (Use the force, read the source!)
Click to expand...
Click to collapse
No im thinking more a portion of the 1gb system RAM was given to the gfx to play with. so our system RAM is only say 768mb
I want to raise question is it possible to overclock the CPU, or GPU or memory speed. We all know that ze550kl / z00l performance with msm8916. Is almost in the limit to run apps and games, wanted to know if possible or not, and if there is any development has this respect. I like the device and it is great but it is clear that it is getting weak in the matter of hardware, if someone can work in this respect to give a breath / power to our device
Ermes.mt/brasil said:
I want to raise question is it possible to overclock the CPU, or GPU or memory speed. We all know that ze550kl / z00l performance with msm8916. Is almost in the limit to run apps and games, wanted to know if possible or not, and if there is any development has this respect. I like the device and it is great but it is clear that it is getting weak in the matter of hardware, if someone can work in this respect to give a breath / power to our device
Click to expand...
Click to collapse
i don't think so , if its possible to overclock the processor to its frequency,
you can costumize it too max frequency of it or to lower , as u need
But if is then i would love like to know too
I am already extracting the maximum, from him that I can of him, already put using ex kernel, with governor ordenad, frequency of 200mhz @ 12000mhz, and simple GPU ordered frequency of 200mhz to 400mhz, active zram of 512mb, and entropy of 128/256, then Of course, here with standard frequency of the paddle extracting nothing more than that, the problem and that we have a large bottleneck in memory lpddr3 of 533mhz, that opera and 32bit, there is a single channel giving bandwidth of 4.2gb / s that It has to be split between CPU and GPU. What is clearly one of the pro soc power limiter, I do not know much about the arm architecture, but I can not do over clock in lpddr3 memory, since I did not see any software or tutoring Citing this. Although this would be a solution, if you do over clock in the CPU or ns GPU will force the clock controller up what will increase the memory performance consequently, something else, not good will lock the clock at maximum in 1200mhz and GPU at 400mhz, as there will be a large power consumption and the performance will be limited by the cords of the tempering control and the low frequency of the RAM, # excuse me to have been so far more enthusiastic about hardware,
even with my old htc explorer i could increase cpu clocsk from 600mhz to 900mhz why we cant do it on zenfone 2 just we need good developer and kernel
it's up to the hardware
If you look at the specs from qualcom it has a max speed and not every device is possible to reach the max, but if you have the proper kernel you can reach that speed and "overclock"