Introducción a la arquitectura de PS2
Esta sección está en beta. Consulta la nota en la hoja de referencia.
La PS2 tiene varios procesadores, cada uno con su propia memoria, conectados por unos pocos buses angostos. Esta página los enumera junto con los paquetes del SDK que apuntan a cada uno. Las páginas siguientes tratan cada pieza.
CPU
La Emotion Engine (EE) es el procesador principal - una CPU de 128 bits basada en MIPS con dos Vector Units conectadas (VU0, fuertemente acoplada a la propia EE, y VU1, que corre principalmente por su cuenta alimentando al GS). Aquí es donde corre la lógica de tu juego, la mayor parte de tu main(), y cualquier código que escribas contra los targets ee/ee_lib en ps2.yaml.
El IOP (I/O Processor) es una segunda CPU MIPS mucho más simple - de hecho, descendiente de la que traía la PlayStation original, razón por la cual la PS2 también puede leer discos de PS1. No corre la lógica de tu juego; corre un pequeño kernel que carga módulos reubicables (archivos IRX - .irx es al IOP más o menos lo que .elf es a la EE) y media el acceso a casi todos los periféricos: los puertos de control, las tarjetas de memoria, la unidad de CD/DVD, el adaptador de red, el sonido. Esto es para lo que compilan los targets iop/iop_lib en ps2.yaml.
Ninguno de esos periféricos está conectado directamente a la EE. Todos son hardware del lado IOP, y la EE pasa por el IOP para alcanzarlos. Una funcionalidad normalmente necesita un paquete en cada procesador.
SIF
La EE y el IOP no comparten memoria. El SIF (Sub-system InterFace) es el enlace de hardware entre ambos, y los paquetes sifman/sifcmd de PS2SDK son el software construido sobre él - un mecanismo RPC (remote procedure call) que permite que código de la EE le pida a un módulo del IOP que haga algo y le devuelva un resultado. Consulta EE, IOP y SIF para ver el código y por qué tantos paquetes vienen en pares EE-cliente/IOP-driver (pad+padman, mc+mcman, netman del lado IOP emparejado con ps2ip del lado EE).
GS
El Graphics Synthesizer (GS) es su propio chip con su propia memoria de video local (eDRAM) - la EE no puede leer ni escribir la memoria del GS directamente como puede hacerlo con la RAM principal. En cambio, la EE construye un flujo de comandos de dibujo y escrituras de registros (un paquete GIF) y lo entrega, casi siempre vía DMA en lugar de que la CPU lo copie byte por byte. Consulta Graphics Synthesizer.
DMA
La EE, el GS, VU1 y el enlace SIF hacia el IOP son destinos separados. La PS2 tiene diez canales DMA dedicados para mover datos entre ellos mientras la CPU hace otro trabajo. dmakit es el envoltorio de este SDK para construir y encolar ese trabajo. Consulta DMA.
Sonido y almacenamiento
SPU2 (el chip de sonido) y la unidad de CD/DVD se alcanzan ambos a través del IOP, de la misma manera que los controles y las tarjetas de memoria - no hay una ruta directa EE-a-SPU2 ni EE-a-unidad. Consulta Audio y Almacenamiento.
Redes
El adaptador de red (DEV9/SMAP) también es hardware del lado IOP, pero este SDK ofrece dos formas de exponerlo: una donde la pila TCP/IP corre en la EE y el IOP solo reenvía paquetes (netman+ps2ip), y otra donde toda la pila corre del lado IOP (ps2ip-nm+smap-ps2ip). No son intercambiables y no pueden correr al mismo tiempo. Consulta Redes.