Media Engine: Difference between revisions
No edit summary |
|||
(5 intermediate revisions by the same user not shown) | |||
Line 28: | Line 28: | ||
| 0x00000000 || 0x001FFFFF || 0x00200000 (<i>2MiB</i>) || ME Memory | | 0x00000000 || 0x001FFFFF || 0x00200000 (<i>2MiB</i>) || ME Memory | ||
|- | |- | ||
| 0x04000000 || 0x041FFFFF || 0x00200000 (<i>2MiB</i>) || VME Memory (Need confirmation) | | 0x04000000 || 0x041FFFFF || 0x00200000 (<i>2MiB</i>) || Graphics Engine VRAM | ||
|- | |||
| 0x040F8000 || 0x04100000 || 0x00008000 (<i>32KiB</i>) || VME Memory (Need confirmation, collide with GE mem) | |||
|- | |- | ||
| 0x08000000 || 0x087FFFFF || 0x00800000 (<i>8MiB</i>) || Allegrex Kernel memory (RAM) (ME program is loaded at 0x8300000 - 0x837FFFF) | | 0x08000000 || 0x087FFFFF || 0x00800000 (<i>8MiB</i>) || Allegrex Kernel memory (RAM) (ME program is loaded at 0x8300000 - 0x837FFFF) | ||
Line 34: | Line 36: | ||
| 0x08800000 || 0x09FFFFFF || 0x01800000 (<i>24MiB</i>) || Allegrex User memory (RAM) | | 0x08800000 || 0x09FFFFFF || 0x01800000 (<i>24MiB</i>) || Allegrex User memory (RAM) | ||
|- | |- | ||
| 0x1C000000 || ? || ? || Hardware | | 0x1C000000 || ? || ? || [[Hardware Registers|Hardware Registers]] | ||
|- | |- | ||
| 0x1FC00000 || 0x1FDFFFFF || 0x00200000 || MIPS Reset Vector | | 0x1FC00000 || 0x1FDFFFFF || 0x00200000 || MIPS Reset Vector | ||
|- | |- | ||
|} | |} | ||
== Software == | |||
New ME binaries are carefully stripped from any debug info. But old version has few debug strings and even some function names. Example strings from 1.02 devkit firmware from ME program dedicated to UMD Video playback. | |||
*Mangled names | |||
ROM:08300000 TACHYON | |||
ROM:083358AC pure virtual method called\n | |||
ROM:083377C0 14PictListBField | |||
ROM:083377D4 14PictListPField | |||
ROM:083377E8 14PictListBFrame | |||
ROM:083377FC 14PictListPFrame | |||
ROM:08337810 13ReferenceList | |||
ROM:08337898 8PocType2 | |||
ROM:083378A4 8PocType1 | |||
ROM:083378B0 8PocType0 | |||
ROM:083378E0 3Poc | |||
ROM:083379B0 13PictListField | |||
ROM:083379C0 13PictListFrame | |||
ROM:083379D0 20RefFrameListLongTerm | |||
ROM:083379E8 23RefFrameBList1ShortTerm | |||
ROM:08337A04 23RefFrameBList0ShortTerm | |||
ROM:08337A20 23RefFramePList0ShortTerm | |||
ROM:08337A70 18ReferenceFrameList | |||
ROM:08337A90 6squeueI5FrameLi4EE | |||
ROM:08337BCC N10__cxxabiv121__vmi_class_type_infoE | |||
ROM:08337BF4 N10__cxxabiv120__si_class_type_infoE | |||
ROM:08337C1C N10__cxxabiv117__class_type_infoE | |||
ROM:08337C40 St10bad_typeid | |||
ROM:08337C50 St8bad_cast | |||
ROM:08337C5C St9type_info | |||
ROM:08337CB4 St13bad_exception | |||
ROM:08337CC8 St9exception | |||
ROM:08337CFC St9bad_alloc | |||
*Version info: | |||
AVCDEC SW_VER_1_08 ES_RTL | |||
tkimura@avnpb | |||
2004/10/26,15:14:55 | |||
/usr1/tkimura/Work/A1RING/A1RING_SOFT/Tools/BuildTools |
Latest revision as of 20:29, 26 March 2024
The Media Engine (or shortly ME) — is a second MIPS based CPU core, that was not directly accessible by licensed developers. Instead, Sony runs code on the ME to facilitate decoding audio and video assets, along with the help of more specialized hardware like the Virtual Mobile Engine and "AVC".
Overview[edit | edit source]
The ME runs at the same clock frequency as the main CPU core. It seems to have the same instruction set.
The ME has two co-processors:
- COP0: general system control
- COP1: 32-bit Floating Point Unit
It has three instructions the main CPU doesn't have (or used):
DBREAK
(also present on other MIPS processors): used only once in the ME firmwareMTVME
MFVME
These two last instructions actually have the same opcodes as LDL and SDL, which this CPU doesn't have. The instructions are actually encoded like this:
ldl $reg, off($a3) <=> mfvme $reg, $off sdl $reg, off($a3) <=> mtvme $reg, $off
They might be used to store and retrieve information from and to the VME. They seem to be only used for video decoding.
Memory mapping[edit | edit source]
Start | End | Size | Description |
---|---|---|---|
0x00000000 | 0x001FFFFF | 0x00200000 (2MiB) | ME Memory |
0x04000000 | 0x041FFFFF | 0x00200000 (2MiB) | Graphics Engine VRAM |
0x040F8000 | 0x04100000 | 0x00008000 (32KiB) | VME Memory (Need confirmation, collide with GE mem) |
0x08000000 | 0x087FFFFF | 0x00800000 (8MiB) | Allegrex Kernel memory (RAM) (ME program is loaded at 0x8300000 - 0x837FFFF) |
0x08800000 | 0x09FFFFFF | 0x01800000 (24MiB) | Allegrex User memory (RAM) |
0x1C000000 | ? | ? | Hardware Registers |
0x1FC00000 | 0x1FDFFFFF | 0x00200000 | MIPS Reset Vector |
Software[edit | edit source]
New ME binaries are carefully stripped from any debug info. But old version has few debug strings and even some function names. Example strings from 1.02 devkit firmware from ME program dedicated to UMD Video playback.
- Mangled names
ROM:08300000 TACHYON ROM:083358AC pure virtual method called\n ROM:083377C0 14PictListBField ROM:083377D4 14PictListPField ROM:083377E8 14PictListBFrame ROM:083377FC 14PictListPFrame ROM:08337810 13ReferenceList ROM:08337898 8PocType2 ROM:083378A4 8PocType1 ROM:083378B0 8PocType0 ROM:083378E0 3Poc ROM:083379B0 13PictListField ROM:083379C0 13PictListFrame ROM:083379D0 20RefFrameListLongTerm ROM:083379E8 23RefFrameBList1ShortTerm ROM:08337A04 23RefFrameBList0ShortTerm ROM:08337A20 23RefFramePList0ShortTerm ROM:08337A70 18ReferenceFrameList ROM:08337A90 6squeueI5FrameLi4EE ROM:08337BCC N10__cxxabiv121__vmi_class_type_infoE ROM:08337BF4 N10__cxxabiv120__si_class_type_infoE ROM:08337C1C N10__cxxabiv117__class_type_infoE ROM:08337C40 St10bad_typeid ROM:08337C50 St8bad_cast ROM:08337C5C St9type_info ROM:08337CB4 St13bad_exception ROM:08337CC8 St9exception ROM:08337CFC St9bad_alloc
- Version info:
AVCDEC SW_VER_1_08 ES_RTL tkimura@avnpb 2004/10/26,15:14:55 /usr1/tkimura/Work/A1RING/A1RING_SOFT/Tools/BuildTools