November 11, 2006
Last thrusday, 17.30, some guys from Sony Headquarters in London visited us here, in the University of Southampton [UoS] and gave us a presentation on the architecture and programming for PSP, as a Bonus they also talked to us about PS3 [on next post]. I’ve taken some notes I want to share with you.
Well, there were two guys from Sony, Igor Makaruks started with the, rather technical, presentation on PSP called “Advanced PSP Programming Techniques”.
After opening his Sony Vaio laptop to start the presentation and presenting a very nice presentation 1st slide with a blurred photo of PSP, he showed some statistics. One of them was that there are currently 20 Million PSP distributed. He then, obviously, asked who in the audience owned a PSP. In 100 people, 2 owned a PSP. He was sure quite amazed with the fact that very few people owned one.
Motivation to be there was on how to program the PSP, so everybody can be a PSP developer, just check out the SCEE DEV site.
So, basically [unfortunatly I don’t have access to his slides with nice diagrams] PSP developer accesses the Game Processing Unit and the Media Processing Unit through libraries which are given once your developer application has been accepted. PSP Hardware is based on MIPS processor, which the model is in the between the one of the PS and PS2. It’s helped alongside the CPU with the usual FPU and a new developed for PSP Unit known as VFPU which performes unit calculations on vectors instead of floats. Since most graphical operations is performed over matrices (collections of vectors), the use of the VFPU is essential for good performance and it has been shown that using VFPU for most calculations boosts the performance in most games. Moreover, since PSP CPU is better than PS1, well soon be able to play PS1 games on PSP, i.e. Sony is starting to emulate all PS1 games on PSP. The GE [graphics engine] uses an OpenGL like rasterizes and supports Texture Compress (DXT1, DXT3, DXT5).
The 3D file format used is the gmo. You can get more information on the devs site. The new trend of the PSP is obviously MP3 and soon we’ll have camera [oct. 2006 in japan] and GPS [nov. 2006 in japan]. The game to launch GPS will be a Golf game which will read your global position and will customize the game accordingly.
So, the CPU is based on a MIPS4000 (codename Allegrex) + FPU + VFPU. Basically Allegrex extended the MIPS4000 instruction set with instructions for cache, synchronization, clock management, etc..
All the programming is done with C++, no assembly. Developers use intrinsics to access assembly. An intrinsic is a C++ instruction which is converted to exactly one assembly instruction by without leaving C++, the compiler does all sort of register management and type convertion for that during compile-time. For example:
ext rt, rs, pos, size
can be written with intrinsic:
rt = _builtin_allegrex_ext(rt, rs, pos, size);
Well, there were some examples shown in the presentation. The following links [not very useful] were given: