Any Update On 2nd Cpu?


Someone should try to overclock their gp2x and see waht happens :lol:

If it gets busted u can just return it and say the batteries popped it! :unsure:
 
thanks for all the info, mrmirko! i do hope there will be good use of the two cores sometime soon..
 
As it says on the main website:
ARM920T : Host processor
ARM940T : Video Coprocessor

I think the 2nd one is for 2D Video
 
No, the second one can be used for whatever you see fit, just as GPH/ME use it as a video decoder.

I don't know why MrMirko is saying the memory is segmented - they can both access exactly the same memory addresses, just as the second one will be offset by whatever value you give it. So, for example, if you decide to use 0x03000000 (to store the code for the second processor at 48MB), then the framebuffer, which is normally at 0x03101000 will need to be accessed at 0x00101000.
 
It might be an interesting idea to see if it's possible to write a 3D rendering core on the second processor, so the primary could send polygon data down the pipe for rendering and then get on with something else. Perhaps a 3D library based around that idea would be a nice thing to have.
 
Squidge posted on Dec 3 2005 at 08:54 AM said:
No, the second one can be used for whatever you see fit, just as GPH/ME use it as a video decoder.

I don't know why MrMirko is saying the memory is segmented - they can both access exactly the same memory addresses, just as the second one will be offset by whatever value you give it. So, for example, if you decide to use 0x03000000 (to store the code for the second processor at 48MB), then the framebuffer, which is normally at 0x03101000 will need to be accessed at 0x00101000.

With running/working Linux in the background ?

Also it is not possible, that both cores, share the same memory, the 32MB was only an example. Both cores need differen memory locations, or do you want to run the same programm on both cores ?
 
Last edited by a moderator:
white posted on Dec 3 2005 at 10:38 AM said:
It might be an interesting idea to see if it's possible to write a 3D rendering core on the second processor, so the primary could send polygon data down the pipe for rendering and then get on with something else. Perhaps a 3D library based around that idea would be a nice thing to have.

This is exactly, how demo programmers, used the DSP insinde the Atari Falcon030.
You can use the second DSP as a 3D redering cpu. Send over the data, and get in return the transformed data. ( A better floating point unit ).
Somone only needs to write a floating point lib, for the second core, and all 3D games, like quake1,2 , and other 3D games would benefit from a real jump in performance.
The second core is usefull for small programms, that need less memeory, can run inside the cache, and needs low data. ( Low data, but heavy math on the data) Like mpeg decoding..
 
Last edited by a moderator:
dioxide posted on Dec 3 2005 at 05:28 AM said:
As it says on the main website:
ARM920T : Host processor
ARM940T : Video Coprocessor

I think the 2nd one is for 2D Video

The second core is only used for DIVX decoding !
Not for displaying the Video to the Screen .

The 2D display unit, is a seperate unit from the two cores.
 
Last edited by a moderator:
I didn't read everything but it seems like no one talked about the power of Linux, I dont now much about it but there are diffrent Linux versions out there that supports two processors...
Couse I hope I'm right gp2x have two processors right?? or is it two cores i just got a bit confussed..........

So what im talking about is that it would be possible for GPH to make the OS use both processors or at least make it support it so it would be easier for you coders out there.. right??
I don't think this would be 1st priority at this point but maybe in the future.

I hope to see some response on this post.

Thx
Jacxz
 
Jacxz posted on Dec 3 2005 at 11:51 AM said:
I didn't read everything but it seems like no one talked about the power of Linux, I dont now much about it but there are diffrent Linux versions out there that supports two processors...
Couse I hope I'm right gp2x have two processors right?? or is it two cores i just got a bit confussed..........

So what im talking about is that it would be possible for GPH to make the OS use both processors or at least make it support it so it would be easier for you coders out there.. right??
I don't think this would be 1st priority at this point but maybe in the future.

I hope to see some response on this post.

Thx
Jacxz

This is not possible, and will never happen, couse Linux can not support SMP the way, the two cores are inside the CPU.

The BIG Problem is, that there is no MMU ( Memory manegment Unit) in the second core. And Linux needs it. Without a SMP system can not work.
 
Last edited by a moderator:
Jacxz posted on Dec 3 2005 at 11:51 AM said:
I didn't read everything but it seems like no one talked about the power of Linux, I dont now much about it but there are diffrent Linux versions out there that supports two processors...
Couse I hope I'm right gp2x have two processors right?? or is it two cores i just got a bit confussed..........

So what im talking about is that it would be possible for GPH to make the OS use both processors or at least make it support it so it would be easier for you coders out there.. right??
I don't think this would be 1st priority at this point but maybe in the future.

I hope to see some response on this post.

Thx
Jacxz

From what I understand, the second processor isn't really equipped to be managed by the operating system - it's useful for running parallel pieces of small code on. Even if we could run Linux processes under it, it wouldn't be the best use of resources - it's best to write a simple assembler/C task on it, and write a library to upload that task and send information to it from the primary.
 
Last edited by a moderator:
mr.mirko posted on Dec 3 2005 at 12:02 PM said:
With running/working Linux in the background ?

Yes, the 920 can access all the memory locations that the 940 can very easily under Linux (the full 64MB). However, it's a little more involved for the 940 to access the 920's address space < 32MB under Linux (well, it's easy to access, but getting the right data is trickier), but easy under HH.

This is currently how the frame buffer works - there's two frame buffers (for double buffering reasons), and they are both accessible by both cores. I tested this by running a program on the second core that just read the contents of the primary frame buffer, inverted it, and wrote it back. Gives some funky effects when you load up the gp2xmenu and play around moving between icons and screens. It was my first program to use the second core under linux.

Jacxz: the problem is that the 920 has MMU, but the 940 has no MMU, so can only see physical memory. Also, the mpeg decoding relies on being at a certain address in memory, and assumes full use of the 940, so probably wouldn't like to be task swapped by the OS.
 
Last edited by a moderator:
Squidge posted on Dec 3 2005 at 12:33 PM said:
Jacxz: the problem is that the 920 has MMU, but the 940 has no MMU, so can only see physical memory. Also, the mpeg decoding relies on being at a certain address in memory, and assumes full use of the 940, so probably wouldn't like to be task swapped by the OS.

Does the mpeg decoder upload its code at boot time or at the start of any mpeg application? I.e. are we free to cheerfully overwrite the 940's address space, secure in the knowledge that the 920 will reupload the mpeg code when we want to do decoding again?
 
Last edited by a moderator:
Squidge posted on Dec 3 2005 at 02:33 PM said:
mr.mirko posted on Dec 3 2005 at 12:02 PM said:
With running/working Linux in the background ?
This is currently how the frame buffer works - there's two frame buffers (for double buffering reasons), and they are both accessible by both cores. I tested this by running a program on the second core that just read the contents of the primary frame buffer, inverted it, and wrote it back. Gives some funky effects when you load up the gp2xmenu and play around moving between icons and screens. It was my first program to use the second core under linux.
Squidge it would be really GREAT if you could build a little example/tutorial on how to use the 940 (and how to compile/link code) in linux.

Something very very simple, just to get started...
 
Last edited by a moderator:
Oscaruzzo posted on Dec 3 2005 at 12:49 PM said:
Squidge posted on Dec 3 2005 at 02:33 PM said:
mr.mirko posted on Dec 3 2005 at 12:02 PM said:
With running/working Linux in the background ?
This is currently how the frame buffer works - there's two frame buffers (for double buffering reasons), and they are both accessible by both cores. I tested this by running a program on the second core that just read the contents of the primary frame buffer, inverted it, and wrote it back. Gives some funky effects when you load up the gp2xmenu and play around moving between icons and screens. It was my first program to use the second core under linux.
Squidge it would be really GREAT if you could build a little example/tutorial on how to use the 940 (and how to compile/link code) in linux.

Something very very simple, just to get started...

The ideal would be

a) a skeleton assembler file for the program on the second core (you don't have to teach us ARM code) possibly just an empty program that returns a value in some memory somwhere
b) how to assemble the file and build it into our own projects, possibly as a big C static array
c) how to upload the code tidily
d) how to invoke the code on the coprocessor, wait for results, read the result.

Asking a lot, we know! Perhaps someone needs to put a library together with the last two functions in it? And a standard for processes running on the second core?
 
Last edited by a moderator:
Yes squidge, a simple example, on how you use the second core under Linux, would be great, and how you access global data. You said its easy, your chance now...

Please fill out this :

Code:
char globaldata[8192];

int use_core2() {
// fill globaldata with 0xff
return;
}

int main() {

use_core2();

while (1) {
if (globaldata[8191] == 0xff) break;
}

return;
}

Yes, show us, how easy it is, to do this simple dual core setup under linux...
 
mr.mirko posted on Dec 3 2005 at 01:13 PM said:
Yes squidge, a simple example, on how you use the second core under Linux, would be great, and how you access global data. You said its easy, your chance now...
...
Yes, show us, how easy it is, to do this simple dual core setup under linux...

I imagine it's not going to be that easy, but then I suspect I detected sarcasm in your post. Anyway, I doubt the code for the second core can be compiled using the same settings as the code for the primary core so at the very least it'll have to be in a separate object file; more likely a completely separate lump of assembler which the primary core just treats as a bunch of bytes.

Apart from that, it could be pretty much as you say. Probably considerably simpler than starting a multiprocessor thread under Linux, certainly with regard to the interprocess communication :)
 
Last edited by a moderator:
Back
Top