Media Engine: Difference between revisions

From PSP Developer wiki
Jump to navigation Jump to search
(Created page with "<b>The Media Engine</b> (<i>or shortly ME</i>) — 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". 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: * <b>COP0</b>: general sy...")
 
No edit summary
Line 1: Line 1:
<b>The Media Engine</b> (<i>or shortly ME</i>) — 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".
<b>The Media Engine</b> (<i>or shortly ME</i>) — 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==
The ME runs at the same clock frequency as the main CPU core. It seems to have the same instruction set.
The ME runs at the same clock frequency as the main CPU core. It seems to have the same instruction set.


Line 19: Line 19:
</pre>
</pre>
They might be used to store and retrieve information from and to the VME. They seem to be only used for video decoding.
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 ==
{| class="wikitable"
|-
! Start !! End !! Size !! Description
|-
| 0x00000000 || 0x001FFFFF || 0x00200000 (<i>2MiB</i>) || ME Memory
|-
| 0x04000000 || 0x041FFFFF || 0x00200000 (<i>2MiB</i>) || VME Memory (Need confirmation)
|-
| 0x08000000 || 0x087FFFFF || 0x00800000 (<i>8MiB</i>) || Allegrex Kernel memory (RAM) (ME program is loaded at 0x8300000 - 0x837FFFF)
|-
| 0x08800000 || 0x09FFFFFF || 0x01800000 (<i>24MiB</i>) || Allegrex User memory (RAM)
|-
| 0x1C000000 || ?          || ?                        || Hardware registers
|-
| 0x1FC00000 || 0x1FDFFFFF || 0x00200000                || MIPS Reset Vector
|-
| 0x1FE00000 || ?          || ?                        || Hardware registers
|-
|}

Revision as of 12:11, 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

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 firmware
  • MTVME
  • 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

Start End Size Description
0x00000000 0x001FFFFF 0x00200000 (2MiB) ME Memory
0x04000000 0x041FFFFF 0x00200000 (2MiB) VME Memory (Need confirmation)
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
0x1FE00000 ? ? Hardware registers