Any Update On 2nd Cpu?


Wait, a second. If the 2nd CPU is used for movies, then it must be the home of the 2D accelerator. Which is the main argument in support of the GP2X being much more powerful then the GP32@166.

So if coders cant use the 2nd CPU without tricks, then does that make, inmost situations, the inability to use the fabeled 2D acceleration.

So for people not able to muster the 2nd core, does this not then make the GP2X a GP32@200mhz?

EDIT: added out
 
Ok, back onto the topic.

Squidge seems to have some success in getting the second cpu going here.

Being unable to access memory at the same time is not as bad as it sounds. For one thing, "at the same time" on a GP2X means every 1/200,000,000 of a second.

I don't have any metrics on me, but programs do not spend 100% of their time accessing main memory. The each have a local cache which should be in use most of the time (up to 1 millisecond even!). Even if they spend 40% of clock cycles waiting for main memory (which I think is very high) then they will collide on 16% of clock cycles. And a collision means that one of the cpus will be delayed by 1/200,000,000 of a second.

16% is more than 0%, obviously, but it is still an improvement over just having a single cpu.

A well written game (we don't all write emulators here) will be designed to run memory intensive tasks on one processor, to minimise the amount of time spent waiting for access to memory.
 
Last edited by a moderator:
so why didn't GPH just use a 400mhz arm processor in the first place?

if it's the case of being able to shut down the 2nd cpu for powersaving.

don't arm processor slow down to save power anyway?
 
icurafu posted on Dec 2 2005 at 10:07 PM said:
Wait, a second. If the 2nd CPU is used for movies, then it must be the home of the 2D accelerator. Which is the main argument in support of the GP2X being much more powerful then the GP32@166.

So if coders cant use the 2nd CPU without tricks, then does that make, inmost situations, the inability to use the fabeled 2D acceleration.

So for people not able to muster the 2nd core, does this not then make the GP2X a GP32@200mhz?

EDIT: added out

The second core is NOT the 2D accelerator !
The gp2x, is NOT "much more powerful then the GP32@166" !

The second CPU, is a custom chip, to run small code, very fast.
( like a divx codec )

>So for people not able to muster the 2nd core, does this not then make the GP2X a GP32@200mhz?
You do now undertand, what i wrote some Month here ago...
 
Last edited by a moderator:
swf posted on Dec 3 2005 at 09:15 AM said:
Ok at back onto the topic.

Squidge seems to have some success in getting the second cpu going here.

Being unable to access memory at the same time is not as bad as it sounds. For one thing, "at the same time" on a GP2X means every 1/200,000,000 of a second.

I don't have any metrics on me, but programs do not spend 100% of their time accessing main memory. The each have a local cache which should be in use most of the time (up to 1 millisecond even!). Even if they spend 40% of clock cycles waiting for main memory (which I think is very high) then they will collide on 16% of clock cycles. And a collision means that one of the cpus will be delayed by 1/200,000,000 of a second.

16% is more than 0%, obviously, but it is still an improvement over just having a single cpu.

A well written game (we don't all write emulators here) will be designed to run memory intensive tasks on one processor, to minimise the amount of time spent waiting for access to memory.

That sounds a little better then a collision causing a hardware fault.
 
Last edited by a moderator:
geniv posted on Dec 2 2005 at 10:16 PM said:
so why didn't GPH just use a 400mhz arm processor in the first place?

if it's the case of being able to shut down the 2nd cpu for powersaving.

don't arm processor slow down to save power anyway?


The cpu does not use a lot power, then he is doing nothing. The second core is only idle all the time.

I think its not possible to power save one core, and run the other.
But iam not shure about this...
 
Last edited by a moderator:
mr.mirko. One correction: The GP32 GBA Emulator was able to play some commercial ROMs. For example "Wer wird Millionär (G)" It was a bit slow, but worked great. And some questions:

"emulate the missing stuff on core 1, run the GBA cpu, directly on core 2". But... wouldn't both CPUs use Memory then?

Or would one of both just emulate and offer the emulated parts to the other core?

Can the CPUs send code to each other?

If yes there could be two ways to offer Memory access to both CPUs at the same time:

1. Let one core do a emulation job and send it to the core with mem access and let it send the code to mem. So one CPU sends and receives to/from mem for both CPUs.

2. How about Pausing one CPU while the other accesses the ram and then pausing this one and let the first do his job? Would this slowdown too much or could it help?
 
furikuri posted on Dec 2 2005 at 10:25 PM said:
Talking about use of the second core, I wonder how this will turn up:

http://wiki.gp2x.org/wiki/GL2x

> Currently the system has been planned is in the early stages of being implemented. Currently there is no released code, but it will be linked to from here as soon as it is uploaded.

Yes, i have also some projects in planing phase on my mind. :)

Once again, it is possible to run stuff on the second core.
But writing an OPENGL implementation from scratch, only for the gp2x...
AND using the second core for hugh speed ups ?

Dont believe all you read @ www
 
Last edited by a moderator:
geniv posted on Dec 3 2005 at 09:16 AM said:
so why didn't GPH just use a 400mhz arm processor in the first place?

if it's the case of being able to shut down the 2nd cpu for powersaving.

don't arm processor slow down to save power anyway?

The main hardware for the GP2X is the MP2520F. Gamepark Holdings don't have the resources to custom build their own hardware, so they decided to go with this. It's a System on a Chip, which means everything: the cpus, video, graphics, usb, sd, sound, etc is all on this single chip. You can't customise it, you can't add or remove cpus, or increase the clock speed (much). But it is cheap, readily available and well tested.

If Gamepark holdings had Sony or Nintendo resources, then they would probably make their own hardware. But they don't, so we have two ARM9s to play with instead.

I think that a regular arm processor has power saving techniques, but this is a SoC, so it's all integrated, and powering the chip probably powers everything in the chip, regardless of whether it is used. So the second cpu will be powered, but idle. I don't know much about SoC designs though.
 
Last edited by a moderator:
Emu&Co posted on Dec 2 2005 at 10:25 PM said:
mr.mirko. One correction: The GP32 GBA Emulator was able to play some commercial ROMs. For example "Wer wird Millionär (G)" It was a bit slow, but worked great. And some questions:

"emulate the missing stuff on core 1, run the GBA cpu, directly on core 2". But... wouldn't both CPUs use Memory then?

Or would one of both just emulate and offer the emulated parts to the other core?

Can the CPUs send code to each other?

If yes there could be two ways to offer Memory access to both CPUs at the same time:

1. Let one core do a emulation job and send it to the core with mem access and let it send the code to mem. So one CPU sends and receives to/from mem for both CPUs.

2. How about Pausing one CPU while the other accesses the ram and then pausing this one and let the first do his job? Would this slowdown too much or could it help?


The design of the gp2x, 2 cpu core, is a little complicated...

You can use core one, for your main code.
And use the second core for some other tasks.

Problem 1:
CPU 1 and CPU2, can not share the SAME memory.
Of course they can talk together, and exchange data between them, trough a small pipe.
( some registers ).

So, Both CPUs can access memory, but can not use the same Memory.
It is also not possible to access Memory from core1, and at the SAME time, access memory from core2. So you must wait on one core, until the other finished memory reading/writing.
 
Last edited by a moderator:
So sending memory read/write attempts from second to first through this pipe wont work...

OK, but it could support first one through this pipe, right? For example one does Video emulation, second does audio? This should be around the same speed like a no Sound program on single core. (I hope, I'm not THE hardware checker)
 
icurafu posted on Dec 2 2005 at 10:38 PM said:
craigix told me that you can shut off any of the CPUs with a simple command. And you can even clock each one at different speeds.

Both cores are @ the same memory.
Memory clock @ cpu clock does depend on each other.

So, both cores run @ same speed, always !


You can not power off, one core, you can only halt it.
 
Last edited by a moderator:
swf posted on Dec 2 2005 at 10:39 PM said:
geniv posted on Dec 3 2005 at 09:16 AM said:
so why didn't GPH just use a 400mhz arm processor in the first place?

if it's the case of being able to shut down the 2nd cpu for powersaving.

don't arm processor slow down to save power anyway?

The main hardware for the GP2X is the MP2520F. Gamepark Holdings don't have the resources to custom build their own hardware, so they decided to go with this. It's a System on a Chip, which means everything: the cpus, video, graphics, usb, sd, sound, etc is all on this single chip. You can't customise it, you can't add or remove cpus, or increase the clock speed (much). But it is cheap, readily available and well tested.

If Gamepark holdings had Sony or Nintendo resources, then they would probably make their own hardware. But they don't, so we have two ARM9s to play with instead.

I think that a regular arm processor has power saving techniques, but this is a SoC, so it's all integrated, and powering the chip probably powers everything in the chip, regardless of whether it is used. So the second cpu will be powered, but idle. I don't know much about SoC designs though.

Youre absolutly right...
 
Last edited by a moderator:
Emu&Co posted on Dec 2 2005 at 10:50 PM said:
So sending memory read/write attempts from second to first through this pipe wont work...

OK, but it could support first one through this pipe, right? For example one does Video emulation, second does audio? This should be around the same speed like a no Sound program on single core. (I hope, I'm not THE hardware checker)

You can send/receive date from one core to another one. Throught a pipe, and not using the memory bus.

You can decode Video on one core, and audio on the other core.
Thats how GPH is using the CPU now.
couse the cpu design is a little bad, you have some overhead here, explained some post above... ( waiting for memory, piping from one core to the other,...)

But yes, for some cases the two cpu cores can work hand in hand...
 
Last edited by a moderator:
SolidSnake posted on Dec 2 2005 at 11:47 PM said:
but for example. Some kind of timesharing processing is impossible? like one cpu running a game and rendering maps, etc and the another rendering the models?

Both CPU cores can run @ the same time !
You can run whatever you want, on any core.

The Problem is, core 1, can not see the memory core 2 uses. And vice versa.
The two cores can only exchange data, throught a "pipe".
Both cores can not read/write memory at the same time.


A simple gp2x setup, how to use two cores:
Code:
*********     pipe    *********
*core1****<---------->*core2***
*********             *********
       |                    |
       |                    |
**************  *************
*memory  32MB *   *memory 32MB*
**************  *************
 
Last edited by a moderator:
Back
Top