Sega Saturn/Hardware comparison
From Sega Retro
(Redirected from Sega Saturn/Hardware comparison (Nintendo 64))
- For technical details on the Sega Saturn, see Sega Saturn/Technical specifications.
This article presents a hardware comparison between the Sega Saturn and other rival systems in its time. It compares the technical specifications and hardware advantages/disadvantages between the systems.
Contents
Vs. PlayStation
In certain aspects, the Sega Saturn generally has more raw power than the rival PlayStation, ^{[1]} ^{[2]}^{[3]}^{[4]} but its complex hardware was more difficult to get to grips with. ^{[2]}^{[3]}^{[5]}^{[3]}^{[6]} The Saturn has more computational power and faster pixel drawing; the PS1 can only draw pixels through its polygon engine, whereas the Saturn can draw pixels directly with its processors, giving it more programming flexibility.^{[7]}
When both SH-2 and the SCU DSP are used in parallel, the Saturn is capable of computing fixed-point operations faster than the PS1's GTE. The GTE is faster at calculating 3D geometry than each SH-2 and SCU DSP individually, but when these processors are used as a parallel geometry engine, the Saturn can calculate 3D geometry faster than the PS1.^{[3]}^{[6]} In addition, the VDP2 has its own internal geometry processing unit for its 3D planes, allowing both SH-2 and the SCU DSP to calculate geometry for the VDP1 polygons.
In terms of polygon rendering fillrate, the PS1's GPU and the Saturn's VDP1 have similar performance. The GPU has a performance advantage for large polygons and flat shading, while the VDP1 has a performance advantage for small polygons and Gouraud shading. The GPU uses multiplicative Gouraud shading,^{[8]} which halves its fillrate,^{[9]} whereas the VDP1 uses additive Gouraud shading,^{[8]} which has less of an impact on fillrate.^{[10]} The advantage of multiplicative shading is more intense white light, whereas the advantage of additive shading is more intense colored lighting.
The Saturn's VDP2 has a higher rendering fillrate than the PS1's GPU. If the VDP2 is used for drawing textured 3D infinite planes, this significantly reduces the fillrate requirements of the VDP1, maximizing its fillrate for other 3D assets. In comparison, the PS1's GPU needs to use much of its fillrate to render textured planes, with very limited draw distance compared to the VDP2, limiting the PS1's fillrate for other 3D assets.^{[11]} When the VDP1 and VDP2 are used in parallel, the Saturn is capable of a significantly higher fillrate than the PS1. However, the VDP2's significant fillrate advantage is only evident for large environments with mostly flat surfaces (though it is possible to have curves and bumps on the VDP2 planes), whereas traditional polygons would be more of an advantage for environments that are smaller or with uneven surfaces.
The VDP1's quad polygons are rendered with forward texture mapping (a form of perspective correction), bilinear approximation (reduces texture warping), and medium polygon accuracy (resulting in seamless polygons), while the VDP2's textured infinite planes are rendered with true perspective correction, whereas the PS1's triangle polygons are rendered with affine texture mapping (which lacks perspective correction, resulting in perspective distortion), linear approximation (resulting in texture warping and polygon jitter), and low polygon accuracy (resulting in seams between polygons).^{[8]}^{[12]} In terms of transparency, the PS1's GPU is more effective than the VDP1, whereas the VDP2 is more effective than the PS1's GPU. In terms of visual effects, the VDP2 is more effective at visual effects such as misting and reflective water effects. ^{[2]}
The PS1's straightforward hardware architecture, triangle polygons, and more effective development tools and C language support, made it easier for developers to program 3D graphics. While the Saturn is just as powerful in terms of 3D graphics, the Saturn's architecture was complex and difficult to program 3D games for.
When it comes to 2D graphics, on the other hand, the Saturn's combination of a VDP1 sprite framebuffer and VDP2 parallax scrolling backgrounds makes it both more powerful and straightforward to program 2D graphics. In comparison, the PS1 draws all 2D graphics to a single framebuffer, making it less effective for 2D graphics.
In terms of audio, the Saturn has a more capable sound chip than the PS1. The Saturn sound chip, Yamaha's Saturn Custom Sound Processor (SCSP), is capable of 32 channels, more than the PS1's Sony SPC sound chip which is capable of 24 channels. The Saturn sound chip also supports both PCM sampling and FM synthesis, whereas the PS1 sound chip only supports PCM sampling.
Original PlayStation
The Saturn's VDP1 had smoother and more intense Gouraud shading than the PS1's GPU.color banding, but had more intense white light. This often resulted in PS1 games having brighter Gouraud lighting with fewer shades and Saturn games having more dim Gouraud lighting with smoother shading.
^{[2]} The VDP1's additive Gouraud shading displayed significantly more shades, resulting in smoother shading, and had more intense colored lighting,^{[8]} whereas the GPU's multiplicative Gouraud shading displayed much fewer shades, resulting inIn terms of memory, the Saturn has more RAM and VRAM than the PS1. The Saturn's VRAM (SDRAM) is also generally faster, with a higher overall bandwidth and lower latency, than the PS1's VRAM. On the other hand, the PS1's GPU has a small, on-chip texture cache. However, the Saturn's VRAM is equivalent to the PS1's texture cache, as the Saturn's VRAM has low latency, with an access time comaprable to the PS1's texture cache. In comparison, the PS1's VRAM has a latency almost twice as high as, with almost half the access speed of, the Saturn's VRAM. The Saturn's VDP1 and VDP2 are capable of single-cycle VRAM access, ^{[13]} ^{[14]} whereas the PS1's GPU requires multiple cycles for each VRAM access,^{[15]}^{[16]} making the texture cache necessary to help reduce the effect of the PS1's VRAM latency. Due to the Saturn VRAM's low latency, it functions like a very large texture cache. In addition, the VDP2 is capable of tiled texture compression, further increasing the amount of texture data the VDP2's VRAM can hold, though this only applies to the VDP2.
Revised PlayStation
The comparison above is for the original PS1 hardware, used in the SCPH-1000 to SCPH-3500 models, released from 1994 to 1995. A new PS1 hardware was introduced with the SCPH-5000 model, released for Japan in late 1995. This new hardware was eventually introduced to North America in late 1996 and then the rest of the world in 1997. This was the basis for the hardware used in subsequent PlayStation models.
The new PS1 hardware replaced the VRAM with SGRAM, which was capable of lower latency, allowing faster memory access. The SGRAM's lower latency was only used for faster transparency blending and improved Gouraud shading. The original PS1 hardware's 5-bit Gouraud shading led to color banding, which was eliminated by the new PS1 hardware, which improved it to 8-bit Gouraud shading. This still results in fewer shades than the Saturn's VDP1, which produces 15-bit Gouraud shading. However, the PS1's GPU is capable of full-screen dithering, which could give the illusion of smoother shading on the newer PS1 hardware.
Vs. Nintendo 64
This short article is in need of work. You can help Sega Retro by adding to it.
Vs. PC
The Saturn's VDP1 was the basis for NVIDIA's first graphics processor, the NV1, which was one of the first 3D graphics accelerators on PC, released in 1995. Like the Saturn, it uses quad polygons and supports forward texture mapping with limited perspective correction, and several Saturn ports are available for it. However, the NV1 has a lower fillrate and rendering performance
The most powerful PC graphics card of 1995 was Yamaha's Tasmania 3D, which was based on triangle polygons. It had a higher fillrate and rendering throughput than the NV1, but less than the Saturn and PlayStation.
Graphics comparison table
- See Sega Saturn technical specifications for more technical details on Saturn hardware
System | Sega Saturn (1994) | Sony PlayStation (1994) | Nintendo 64 (1996) | Sega Model 2 (1993) | PC (1995) | ||
---|---|---|---|---|---|---|---|
Geometry processors | 2x Hitachi SH-2 (28.63636 MHz),^{[n 1]} Sega SCU DSP (14.31818 MHz), Yamaha VDP2 (57.27272 MHz) |
Sony GTE (33.8688 MHz)^{[19]} | NEC VR4300 (93.75 MHz), SGI RSP (62.6 MHz)^{[20]} |
6x Fujitsu TGP (16 MHz), Intel i960-KB (25 MHz), Sega chipset (50 MHz) |
Intel Pentium (133 MHz) | ||
Arithmetic | MOPS^{[n 2]} | 110 MOPS^{[n 3]} | 66 MOPS | ^{[23]}190 MOPS^{[n 4]} | 210 MOPS | 44 MOPS^{[n 5]} | |
MACs^{[n 6]} | 57 million MACs/sec^{[n 7]} | 33 million MACs/sec^{[24]} | 50 million MACs/sec^{[n 8]} | 100 million MACs/sec | 22 million MACs/sec^{[n 9]} | ||
16-bit divisions | 5 million divides/sec^{[n 10]} | 4 million divides/sec^{[n 11]} | 14 million divides/sec^{[n 12]} | 30 million divides/sec | 4 million divides/sec^{[n 13]} | ||
Geometry | Transformations | 2,400,000 vertices/sec,^{[n 14]} 1,800,000 polygons/sec^{[n 15]} |
1,900,000 vertices/sec,^{[n 16]} 1,300,000 polygons/sec^{[n 17]} |
2,500,000 vertices/sec,^{[n 18]} 2,000,000 polygons/sec^{[n 19]} |
6,000,000 vertices/sec, 2,000,000 polygons/sec |
1,100,000 vertices/sec,^{[n 20]} 380,000 polygons/sec^{[n 21]} | |
Flat lighting | 800,000 polygons/sec^{[n 22]} | 600,000 polygons/sec^{[n 23]} | 1,400,000 polygons/sec^{[n 24]} | 2,000,000 polygons/sec | 290,000 polygons/sec^{[n 25]} | ||
Gouraud lighting | 700,000 polygons/sec^{[n 26]} | 360,000 polygons/sec^{[n 27]} | 1,000,000 polygons/sec^{[n 28]} | 1,500,000 polygons/sec | 200,000 polygons/sec^{[n 29]} | ||
Rendering processors | Hitachi VDP1 (28.63636 MHz), Yamaha VDP2 (57.27272 MHz) |
Sony GPU (33.8688 MHz)^{[43]} | SGI RDP (62.6 MHz)^{[44]} | Lockheed Martin (50 MHz), Sega chipset (50 MHz) |
NVIDIA NV1 (12.5 MHz)^{[n 30]} |
Yamaha Tasmania 3D (50 MHz)^{[45]} | |
Bitmap framebuffer fillrate |
15-bit color/pixel | 85 MPixels/s^{[n 31]} | 33 MPixels/s^{[43]} | 62 MPixels/s | 110 MPixels/s | 12 MPixels/s | 25 MPixels/s |
8-bit color/pixel | 150 MPixels/s^{[n 32]} | 67 MPixels/s^{[n 33]} | 120 MPixels/s^{[n 34]} | 230 MPixels/s | |||
4-bit color/pixel | 260 MPixels/s^{[n 35]} | 67 MPixels/s^{[n 36]} | 250 MPixels/s^{[n 37]} | 260 MPixels/s | |||
Tile fillrate |
15-bit color/tile | 560 MPixels/s^{[n 38]} | 33 MPixels/s | 120 MPixels/s^{[n 34]} | 110 MPixels/s | ||
8-bit color/tile | 570 MPixels/s^{[n 39]} | 67 MPixels/s^{[n 36]} | 250 MPixels/s^{[n 37]} | 230 MPixels/s | |||
Flat shading |
Fillrate (8-bit color) |
28 MPixels/s (VDP1) | 66 MPixels/s (512×512 polys), 18 MPixels/s (10×10 polys) |
62 MPixels/s (512×512 polys), 40 MPixels/s (10×10 polys)^{[n 40]} |
200 MPixels/s | 12 MPixels/s | 25 MPixels/s (512×512 polys), 18 MPixels/s (10×10 polys) |
Fillrate (15-bit color) |
28 MPixels/s (VDP1) | 33 MPixels/s (512×512 polys), 18 MPixels/s (10×10 polys)^{[47]} |
62 MPixels/s (512×512 polys), 40 MPixels/s (10×10 polys) |
100 MPixels/s | |||
Polygons | 800,000 polygons/s (32-pixel), 500,000 polygons/s (50-pixel)^{[n 41]} |
500,000 polygons/s (32-pixel),^{[n 42]} 360,000 polygons/s (50-pixel)^{[47]} |
900,000 polygons/s (32-pixel), 600,000 polygons/s (64-pixel)^{[n 43]} |
900,000 polygons/s (100-pixel) | 50,000 polygons/s | 290,000 polygons/s | |
Gouraud shading |
Shades | 32,768 shades (15-bit) | ^{[49]}32 shades (5-bit)^{[n 44]} | 32,768 shades (15-bit) | 32 shades (5-bit) | 32 shades (5-bit) | 32 shades (5-bit) |
Fillrate (polygons) |
28 MPixels/s (512×512), 16 MPixels/s (10×10)^{[n 45]} |
33 MPixels/s (512×512), 10 MPixels/s (10×10)^{[52]} |
62 MPixels/s (512×512),^{[53]} 40 MPixels/s (10×10) |
31 MPixels/s (512×512), 19 MPixels/s (10×10)^{[n 46]} |
10 MPixels/s | 25 MPixels/s (512×512), 10 MPixels/s (10×10) | |
Polygons | 200,000 polygons/s^{[n 47]} | 200,000 polygons/s^{[52]} | 600,000 polygons/s | 300,000 polygons/s | 50,000 polygons/s | 200,000 polygons/s | |
Texture mapping |
Fillrate (bitmap textures) |
47 MTexels/s (504×255), 14 MTexels/s (10×10)^{[n 48]} |
33 MTexels/s (64×64),^{[n 49]} 10 MTexels/s (10×10)^{[52]} |
60 MTexels/s (128×64),^{[n 50]} 30 MTexels/s (10×10)^{[n 51]} |
100 MTexels/s | 10 MTexels/s | 12 MTexels/s (64×64), 10 MTexels/s (10×10) |
Fillrate (tiled textures) |
500 MTexels/s (VDP2) (2048×2048 to 4096×4096) ^{[59]} |
33 MTexels/s (256×256)^{[60]} |
62 MTexels/s^{[58]} (128×128 to 1024×256)^{[61]} |
200 MTexels/s | |||
4-bit color | 300,000 polygons/s (32-texel), 200,000 polygons/s (70-texel) |
200,000 polygons/s (50-texel)^{[52]} | 600,000 polygons/s (32-texel), 400,000 polygons/s (70-texel)^{[n 52]} |
^{[62]} 900,000 polygons/s (200-texel) | 50,000 polygons/s | 150,000 polygons/s | |
8-bit color | 300,000 polygons/s (32-texel), 200,000 polygons/s (70-texel) |
100,000 polygons/s (50-texel)^{[52]} | 600,000 polygons/s (62-texel), 400,000 polygons/s (70-texel) |
900,000 polygons/s (200-texel) | 50,000 polygons/s | 100,000 polygons/s | |
15-bit color | 200,000 polygons/s (70-texel) | 60,000 polygons/s (50-texel)^{[52]} | 400,000 polygons/s (70-texel) | 900,000 polygons/s (100-texel) | 50,000 polygons/s | 60,000 polygons/s | |
Texture Gouraud shading |
Fillrate (textures) |
19 MTexels/s (504×255), 9 MTexels/s (10×10) |
16 MTexels/s (256×256),^{[n 53]} 7 MTexels/s (10×10)^{[52]} |
60 MTexels/s (128×64), 30 MTexels/s (10×10) |
31 MTexels/s (512×512), 19 MTexels/s (10×10) |
7 MTexels/s | 7 MTexels/s |
Polygons | 140,000 polygons/s (15-bit color) | 140,000 polygons/s (4-bit color), 100,000 polygons/s (8-bit color)^{[52]} |
500,000 polygons/s | 300,000 polygons/s | 50,000 polygons/s | 100,000 polygons/s | |
Sprites | Fillrate (4/8-bit color) |
12 MTexels/s (8×8), 130 MTexels/s (504×255),^{[n 54]} 250 MTexels/s (1024×1024)^{[n 55]} (flat and scaling) |
10 MTexels/s (8×8, scaling), 15 MTexels/s (8×8, flat),^{[9]} 33 MTexels/s (256×256, scaling), 66 MTexels/s (256×256, flat)^{[55]} |
20 MTexels/s (8×8), 62 MTexels/s (1024×256, scaling), 250 MTexels/s (1024×256, flat)^{[46]} |
200 MTexels/s | 10 MTexels/s | 12 MTexels/s |
Fillrate (15-bit color) |
12 MTexels/s (8×8), 47 MTexels/s (504×255),^{[n 56]} 250 MTexels/s (1024×1024) |
10 MTexels/s (8×8),^{[52]} 33 MTexels/s (256×256)^{[63]} |
40 MTexels/s (8×8), 120 MTexels/s (1024×256) |
100 MTexels/s | 10 MTexels/s | 10 MTexels/s | |
Sprites (8-bit color) |
500,000 sprites/sec,^{[n 57]} 16,000 sprites/frame (VDP1) |
240,000 sprites/sec,^{[9]} 4000 sprites/frame ^{[64]}^{[65]}^{[57]} |
400,000 sprites/sec,^{[n 58]} 7000 sprites/frame |
900,000 sprites/sec, 15,000 sprites/frame |
50,000 sprites/sec, 1000 sprites/frame |
100,000 sprites/sec, 2000 sprites/frame | |
Sprites (15-bit color) |
500,000 sprites/sec, 16,000 sprites/frame (VDP1) |
160,000 sprites/sec,^{[52]} 2600 sprites/frame | |||||
Graphical planes | 7 planes^{[n 59]} | 1 plane | 1 plane | 5 planes^{[n 60]} | 1 plane | 1 plane | |
2D tilemap planes |
2D planes | 5 planes^{[n 61]} | 1 plane | 1 plane | 5 planes | 1 plane | 1 plane |
Tiles | 4,000,000 tiles/sec,^{[n 62]} 68,000 tiles/frame^{[n 63]} |
240,000 tiles/sec, 4000 tiles/frame |
400,000 tiles/sec, 10,000 tiles/frame |
1,800,000 tiles/sec, 31,000 tiles/frame^{[n 64]} |
50,000 tiles/sec, 1000 tiles/frame |
100,000 tiles/sec, 2000 tiles/frame | |
3D textured planes |
3D planes | 3 planes^{[n 65]} | 1 plane | 1 plane | 1 plane | 1 plane | 1 plane |
Equivalent textured polygons |
1,300,000 polygons/s^{[n 66]} | 200,000 polygons/s | 600,000 polygons/s | 900,000 polygons/s | 50,000 polygons/s | 150,000 polygons/s | |
Display resolution | 704×512 | 640×512^{[67]} | 720×576 | 656×496 | 640×480 | 640×480 | |
Video memory |
Memory | 4–8 MB^{[n 67]} (1 MB framebuffers)^{[n 68]} |
3 MB^{[n 69]} (1 MB framebuffer)^{[n 70]} |
4–8 MB^{[n 71]} | 7–35 MB^{[n 72]} (1 MB framebuffer) |
2–4 MB^{[n 73]} | 2–4 MB^{[n 74]} |
Bandwidth | 440 MB/s^{[n 75]} (220 MB/s framebuffers)^{[n 76]} |
200–260 MB/s^{[n 77]} (60–130 MB/s framebuffer) |
560 MB/s^{[n 78]} | 880 MB/s (400 MB/s framebuffer) |
96 MB/s^{[75]} | 200 MB/s^{[n 79]} | |
Latency | 34 ns (VDP1), 17 ns (VDP2) | 60 ns^{[n 80]}^{[n 81]} | 60 ns^{[n 82]} | 20 ns | 80 ns^{[n 83]} | 60 ns^{[45]} | |
Texture cache |
Memory | 1 MB^{[n 84]} (17 MB compressed)^{[n 85]} | 2 KB | 4 KB | 4.5 MB^{[n 86]} | N/A | |
Bandwidth | 170 MB/s^{[n 87]} (590 MB/s compressed)^{[n 88]} |
130 MB/s^{[63]} | 500 MB/s^{[n 89]} | 400 MB/s | |||
Latency | 34 ns (VDP1), 17 ns (VDP2) | 30 ns^{[n 90]} | 16 ns^{[n 91]} | 20 ns | |||
Compression | 34:1 (tiled)^{[n 85]} | 1:1 (N/A) | 20:1 (JPEG)^{[n 92]} | 1:1 (N/A) | |||
CPU–GPU transmission bus | 114 MB/s^{[n 93]} | 60 MB/s^{[n 94]} | 500 MB/s | 80 MB/s | 60 MB/s | ||
System | Sega Saturn (1994) | PlayStation (1994) | Nintendo 64 (1996) | Sega Model 2 (1993) | PC (1995) |
Notes
- ↑ 2x CPU cores, 2x DMAC controllers, 2x MULT multiplier DSP, 2x DIVU division units ^{[17]} ^{[18]}
- ↑ MOPS (million operations per second)
- ↑ 2x SH-2 MULT DSP: 57.27272 MOPS
2x SH-2 DIVU: 1.468531 MOPS (39 cycles per divide)^{[22]}
SCU DSP: 28.63636 MOPS (add and multiply per cycle)
VDP2: 28.63636 MOPS (only for VDP2's 3D planes) ^{[21]} - ↑ VR4300: 93.75 MFLOPS (1 floating-point operation per cycle)
RSP: 100 MFLOPS (1.6 floating-point operations per cycle) - ↑ 6 cycles per MAC (multiply and add)
- ↑ MAC (multiply-accumulate) operation = Multiply and add
- ↑ 2x SH-2: 28,636,360 MACs/sec (2 cycles per MAC)
SCU DSP: 14,318,180 MACs/sec (1 cycle per MAC)
VDP2: 14,318,180 MACs/sec ^{[21]} - ↑ VR4300 offloads geometry calculations to RSP
- ↑ 10 cycles per integer MAC (9 cycles multiply,^{[25]} 1 cycle add),^{[26]} 6 cycles per floating-point MAC (3 cycles multiply, 3 cycles add)^{[27]}
- ↑ 2x CPU: 3,579,545 divides/sec (16 cycles per 16-bit divide)^{[28]}
2x DIVU: 1,468,531 divides/sec (39 cycles per divide)^{[22]} - ↑ 25 cycles (23 cycles instruction,^{[29]} 2 cycles delay^{[30]}) per 3 divides^{[12]}
- ↑ 7 FLOPS per divide^{[31]}
- ↑ 30 cycles per divide^{[25]}
- ↑ Transformation (21 adds/multiplies),
- 894,886 vertices/sec: 894,886 SCU DSP transformations (14 cycles per transform, ^{[32]} 2 cycles per projection), 894,886 SH-2 DIVU divisions (1 divide per vertex)
- 573,644 vertices/sec: 14,341,100 SH-2 MULT DSP transform/projection operations (25 cycles per vertex), 573,644 SH-2 DIVU divisions (1 divide per vertex)
- 1,011,294 vertices/sec: 41,463,054 SH-2 transform/projection/divide cycles (41 cycles per vertex)
- ↑ 8 vertices per cube (6 quad polygons) ^{[35]}
- ↑ 17 cycles (15 cycles instruction,^{[36]} 2 cycles delay^{[30]}) per vertex
- ↑ 25 cycles (23 cycles instruction,^{[29]} 2 cycles delay) per triangle polygon
- ↑ 39 FLOPS per vertex (32 multiplies/adds,^{[37]} 1 divide^{[34]})
- ↑ 16 vertex blocks, equivalent polygons/vertex ratio to triangle strips^{[38]} (N polygons per N+2 vertices), 14 polygons per 16 vertices (7 polygons per 8 vertices)
- ↑ 116 cycles per vertex (74 cycles matrix transformation,^{[39]} 4 projection multiplies/adds,^{[37]} 1 divide^{[34]})
- ↑ 3 vertices per triangle polygon
- ↑ 8 transformations (168 adds/multiplies), 6 surface normals (72 multiplies, 36 adds),^{[40]} 6 light sources (72 adds/multiplies),^{[41]} 8 projections (32 adds/multiplies) and 8 perspective divisions (24 divides)^{[33]} per cube with 8 vertices and 6 quad polygons:
- 52,640 cubes/sec: 52,640 SCU DSP cubes (112 transform cycles, 72 surface normal cycles, 72 light source cycles,^{[41]} 16 projection cycles), 1,263,360 SH-2 DIVU divisions (24 divides per cube)
- 8548 cubes/sec: 2,940,512 SH-2 MULT DSP transform/projection operations (347 cycles per cube), 205,152 SH-2 DIVU divisions (24 divides per cube)
- 72,614 cubes/sec: 52,862,992 SH-2 transform/projection/divide cycles (728 cycles per cube)
- ↑ 54 cycles (23 cycles RTPT, 8 cycles MVMVA, 17 cycles NCCS,^{[42]} 6 cycles delay) per triangle polygon
- ↑ 976 FLOPS per 16-vertex block, 14 polygons per block, 75 FLOPS per polygon^{[37]}
- Transformation: 528 FLOPS per 16-vertex block (512 multiplies/adds, 16 divides)
- Lighting: 448 FLOPS per 14-polygon block (32 FLOPS per polygon)
- ↑ 444 cycles: 348 cycles transformation (116 cycles per vertex), 32 lighting multiplies/adds^{[37]}
- ↑ 8 transformations (168 adds/multiplies), 8 surface normals (96 multiplies, 48 adds), 8 light sources (96 adds/multiplies), 8 projections (32 adds/multiplies) and 8 perspective divisions (24 divides) per cube with 8 vertices and 6 quad polygons:
- 44,744 cubes/sec: 44,744 SCU DSP cubes (112 transform cycles, 96 surface normal cycles, 96 light source cycles, 16 projection cycles), 1,073,856 SH-2 DIVU divisions (24 divides per cube)
- 16,444 cubes/sec: 7,235,360 SH-2 MULT DSP transform/projection operations (440 cycles per cube), 394,675 SH-2 DIVU divisions (8 divides per cube)
- 58,942 cubes/sec: 48,568,208 SH-2 transform/projection/divide cycles (824 cycles per cube)
- ↑ 92 cycles (23 cycles RTPT, 24 cycles MVMVA, 39 cycles NCCT,^{[42]} 6 cycles delay) per triangle polygon
- ↑ 1040 FLOPS per 16-vertex block, 14 polygons per block, 70 FLOPS per polygon^{[37]}
- Transformation: 528 FLOPS per 16-vertex block (512 multiplies/adds, 16 divides)
- Lighting: 512 FLOPS per 16-vertex block (32 FLOPS per vertex)
- ↑ 636 cycles: 348 cycles transformation (116 cycles per vertex), 96 lighting multiplies/adds^{[37]}
- ↑ Diamond Edge 3D
- ↑ VDP1: 28.63636 MPixels/s
VDP2: 57.27272 MPixels/s - ↑ VDP1: 35.6465 MPixels/s
VDP2: 114.54544 MPixels/s - ↑ 67 MPixels/s (2D sprites and 3D flat shading), 33 MPixels/s (3D texture mapping and Gouraud shading)^{[43]}
- ↑ ^{34.0} ^{34.1} 120 MPixels/s (2D), 62 MPixels/s (3D)
- ↑ VDP1: 35.6465 MPixels/s
VDP2: 229.09088 MPixels/s - ↑ ^{36.0} ^{36.1} 67 MPixels/s (2D sprites and 3D flat shading), 33 MPixels/s (3D texture mapping and Gouraud shading)
- ↑ ^{37.0} ^{37.1} 250 MPixels/s (2D), 62 MPixels/s (3D)
- ↑ VDP1: 28.63636 MPixels/s
VDP2: 534.77376 MPixels/s - ↑ VDP1: 35.646464 MPixels/s
VDP2: 534.77376 MPixels/s - ↑ 36 cycles memory access (9 cycles data and latency, double-buffering, CPU and GPU access) per polygon, 5 cycles data (40 bytes, 9 bytes/sec) and 4 cycles latency (60 ns access, 16 ns cycles) per polygon,^{[46]} 1 cycle per pixel: 460,294 polygons/sec (136 cycles per 10×10 pixel polygon)
- ↑ 16 cycles per polygon in 28.63636 MHz texture cache, ^{[48]} 1 cycle per pixel in 28.63636 MHz framebuffer
- ↑ 18 megapixels/sec for polygons that are 50-pixel or less^{[47]}
- ↑ 36 cycles memory access (9 cycles data and latency, double-buffering, CPU and GPU access) per polygon, 5 cycles data (40 bytes, 9 bytes/sec) and 4 cycles latency (60 ns access, 16 ns cycles) per polygon,^{[46]} 1 cycle per pixel, 68 cycles per 32-pixel polygon, 100 cycles per 64-pixel polygon
- ↑ 5-bit shading (32 shades) with color banding in original PlayStation hardware,^{[50]} 8-bit shading (256 shades) in revised PlayStation hardware
- ↑ 164,576 Gouraud-shaded 10×10 polygons/sec: 57.27272 million parallel bus cycles/sec, 248 cycles overhead per polygon (16 cycles command table fetch, ^{[48]} 232 cycles Gouraud shading), ^{[51]} 348 cycles per polygon (100 cycles drawing per 100-pixel polygon)^{[10]}
- ↑ TGP: 96 million cycles/sec (6x 16 MHz), 163 cycles (124 cycles geometry, 39 raster operations) per polygon, 3 cycles per scanline, 3 cycles per pixel
- ↑ 57.27272 million parallel bus cycles/sec, 248 cycles overhead per polygon (16 cycles command table fetch, ^{[48]} 232 cycles Gouraud shading), ^{[51]} 32 cycles drawing per 32-pixel polygon^{[10]}
- ↑ VDP1: 19.023 MTexels/s (504×255 textures), 14 MTexels/s (10×10 textures)
VDP2: 28.63636 MTexels/s (512×256 textures) ^{[54]} ^{[51]} - ↑ 33 MTexels/s,^{[55]} 2 KB texture cache (up to 64×64 texels), automatic tiling^{[56]}^{[57]}
- ↑ 4 KB texture cache, manual tiling^{[58]}
- ↑ 72 cycles memory access (2x access) per textured polygon,^{[58]} 1 cycle per texel:
- 8264 cycles per 128×64 texel polygon (7575 polygons/sec)
- 172 cycles per 10×10 texel polygon (363,953 polygons/sec)
- ↑ 72 cycles memory access (2x access) per textured polygon,^{[46]} 1 cycle per texel:
- 104 cycles per 32-texel polygon
- 142 cycles per 70-texel polygon
- ↑ Gouraud shading halves fillrate^{[9]}
- ↑ VDP1: 19.023 MTexels/s
VDP2: 114.54544 MTexels/s - ↑ VDP2: 4x 1024×1024 textures, 60 FPS
- ↑ VDP1: 19.023 MTexels/s
VDP2: 28.63636 MTexels/s - ↑ 57.27272 million parallel bus cycles/sec, 99 parallel cycles per 8×1 sprite ^{[51]}
- ↑ 72 cycles memory access (2x access) per sprite,^{[46]} 1 cycle per texel: 136 cycles per 8×8 texel sprite
- ↑ 1 VDP1 plane, 5 VDP2 planes
- ↑ 1 polygon plane, 4 tilemap planes^{[66]}
- ↑ 1 VDP1 plane, 4 VDP2 planes
- ↑ VDP1: 189,644 tiles per second (57.27272 million parallel bus cycles/sec, 302 parallel cycles per 8×8 tile)
VDP2: 3,932,160 tiles per second (4x 128×128 tiles ^{[59]} at 60 FPS) ^{[51]} - ↑ VDP1: 3160 tiles per frame (60 FPS)
VDP2: 65,536 tiles per frame (4x 128×128 tiles) ^{[59]} - ↑ 900,000 sprites/sec (15,000 sprites per frame), 983,040 background tiles/sec (16,384 tiles per frame, 4 planes, 64×64 tiles and 512×512 pixels per plane, 60 FPS)^{[66]}
- ↑ 1 VDP1 plane, 2 VDP2 planes
- ↑ VDP1: 300,000 textured polygons per second
VDP2: Equivalent to 1,000,000 textured polygons per second. 4096×4096 tiled planes can be manipulated as textured polygons, with scaling, rotation, perspective transformation, curved surface, and bumps. At 500 pixels per polygon, equivalent to 33,554 textured polygons per frame, at 30 frames per second. - ↑ 2 MB main RAM (1 MB SDRAM, 1 MB FPM DRAM), 1.5 MB VRAM (SDRAM), 512 KB CD-ROM buffer, 1–4 MB optional main RAM expansion (Extended RAM Cartridge)
- ↑ 512 KB VDP1 framebuffers, 512 KB VDP2 memory
- ↑ 2 MB main RAM (EDO DRAM),^{[68]}^{[69]} 1 MB VRAM ^{[70]}
- ↑ 1 MB VRAM
- ↑ 4 MB RDRAM, 4 MB optional RDRAM Expansion Pak
- ↑ 7136 KB video RAM: 1152 KB main RAM, 5984 KB VRAM
VROM: 28.75 MB - ↑ FPM DRAM / VRAM
- ↑ DRAM^{[71]}
- ↑ 114.54544 MB/s main RAM, 286.3636 MB/s VRAM (171.81816 MB/s VDP1, 114.54544 MB/s VDP2), 40 MB/s CD-ROM buffer
- ↑ 114.54544 MB/s VDP1 framebuffers, 114.54544 MB/s VDP2 memory
- ↑ Main RAM: 60–132 MB/s (multiple cycles required for 32-bit memory access)^{[72]}^{[73]}
VRAM: 60 MB/s (small polygons/textures),^{[73]}^{[74]} 132 MB/s (large polygons/textures)^{[63]} - ↑ 9-bit, 500 MHz
- ↑ 32-bit,^{[71]} 50 MHz
- ↑ Original PlayStation hardware released during 1994–1995:
Main RAM: Samsung KM48V514DJ-6 EDO DRAM (60 ns access)^{[68]}^{[76]}
VRAM: Samsung KM4216V2566-6 VRAM (60 ns access)^{[77]}^{[78]} - ↑ Revised PlayStation hardware released for Japan in late 1995 and North America in late 1996:
Main RAM: Samsung KM48V514DJ-6 EDO DRAM (60 ns access)
VRAM: NEC UPD481850GF-A12-T SGRAM (30 ns access)^{[68]}^{[79]} - ↑ 60 ns RDRAM access^{[80]}^{[81]}^{[82]}
- ↑ 12.5 MHz, 80 ns cycles
- ↑ SDRAM: 512 KB VDP1 texture memory, 512 KB VDP2 memory
- ↑ ^{85.0} ^{85.1} 17 MB textures (4096×4096 and 1024×1024 texels, 8-bit palettes) compressed in 512 KB VDP2 memory
- ↑ 4 MB texture cache, 576 KB tile cache
- ↑ 57.27272 MB/s VDP1 texture bandwidth, 114.54544 MB/s VDP2 bandwidth
- ↑ 57.27272 MB/s VDP1 texture bandwidth, 534.77376 MB/s compressed VDP2 texture bandwidth
- ↑ 64-bit, 62.6 MHz
- ↑ 33.8688 MHz, 30 ns cycles
- ↑ 62.6 MHz, 16 ns cycles
- ↑ Compressed JPEG textures need to be decompressed before being sent to texture cache^{[83]}
- ↑ 57.27272 MB/s VDP1, 57.27272 MB/s VDP2
- ↑ LoadImage,^{[74]} 60 MB/s^{[73]}
References
- ↑ Edge, "March 1996" (UK; 1996-02-09), page 99
- ↑ ^{2.0} ^{2.1} ^{2.2} ^{2.3} Sega Saturn Magazine, "October 1997" (UK; 1997-09-17), page 25
- ↑ ^{3.0} ^{3.1} ^{3.2} ^{3.3} Pure Entertainment Interview
- ↑ Jason Gosling (Core Design) Interview (Edge)
- ↑ Shiny Entertainment Interview (Edge)
- ↑ ^{6.0} ^{6.1} Jason Gosling (Core Design) Interview (Edge)
- ↑ Scavenger Interview (Edge)
- ↑ ^{8.0} ^{8.1} ^{8.2} ^{8.3} Sega Saturn 3D Capabilities
- ↑ ^{9.0} ^{9.1} ^{9.2} ^{9.3} File:SCEA BBS.pdf, page 672
- ↑ ^{10.0} ^{10.1} ^{10.2} Saturn VDP1 hardware notes (2003-05-17)
- ↑ Core Design Interview (Edge)
- ↑ ^{12.0} ^{12.1} Playstation Specifications (GTE Coordinate Calculation Commands)
- ↑ File:ST-TECH.pdf, page 142
- ↑ File:ST-058-R2-060194.pdf, page 49
- ↑ File:ADV GPU.pdf, page 6
- ↑ File:ADV GPU.pdf, page 24
- ↑ File:SH7604 Hardware Manual.pdf, page 3
- ↑ File:SH7604 Hardware Manual.pdf, page 22
- ↑ File:PlayStation Hardware.pdf, page 17
- ↑ File:Nintendo Ultra64 Programming Manual and Addendums.pdf, page 137
- ↑ ^{21.0} ^{21.1} File:SH7604 Hardware Manual.pdf, page 51
- ↑ ^{22.0} ^{22.1} File:Hitachi SuperH Programming Manual.pdf, page 308
- ↑ Next Generation, "December 1995" (US; 1995-11-21), page 42
- ↑ File:SCEA BBS.pdf, page 639
- ↑ ^{25.0} ^{25.1} File:Instruction Tables.pdf, page 100
- ↑ File:Instruction Tables.pdf, page 99
- ↑ File:Instruction Tables.pdf, page 101
- ↑ File:Hitachi SuperH Programming Manual.pdf, page 155
- ↑ ^{29.0} ^{29.1} Everything You Have Always Wanted to Know about the Playstation (pages 60-61)
- ↑ ^{30.0} ^{30.1} Team PSX (page 17)
- ↑ MSP Simulation Layer for Vector Unit Computational Divides (RSP)
- ↑ ^{32.0} ^{32.1} File:ST-240-A-SP1-052295.pdf, page 8
- ↑ ^{33.0} ^{33.1} Design of Digital Systems and Devices (page 97)
- ↑ ^{34.0} ^{34.1} ^{34.2} 3D Polygon Rendering Pipeline (page 50)
- ↑ File:ST-237-R1-051795.pdf, page 51
- ↑ Everything You Have Always Wanted to Know about the Playstation (pages 59-60)
- ↑ ^{37.0} ^{37.1} ^{37.2} ^{37.3} ^{37.4} ^{37.5} Design of Digital Systems and Devices (pages 95-97)
- ↑ gSPVertex (N64 SDK)
- ↑ File:MMX Technology Architecture Overview.pdf, page 10
- ↑ Design of Digital Systems and Devices (page 95)
- ↑ ^{41.0} ^{41.1} Sega DTS, March 1996, DSP Demo
- ↑ ^{42.0} ^{42.1} Everything You Have Always Wanted to Know about the Playstation (pages 49-51, 59-67)
- ↑ ^{43.0} ^{43.1} ^{43.2} File:ADV GPU.pdf, page 28
- ↑ File:Nintendo Ultra64 Programming Manual and Addendums.pdf, page 175
- ↑ ^{45.0} ^{45.1} Tasmania 3D
- ↑ ^{46.0} ^{46.1} ^{46.2} ^{46.3} ^{46.4} File:Nintendo Ultra64 Programming Manual and Addendums.pdf, page 177
- ↑ ^{47.0} ^{47.1} ^{47.2} File:SCEA BBS.pdf, page 1041
- ↑ ^{48.0} ^{48.1} ^{48.2} File:TUTORIAL.pdf, page 15
- ↑ File:ST-013-R3-061694.pdf, page 41
- ↑ File:ADV_GPU.pdf, page 23
- ↑ ^{51.0} ^{51.1} ^{51.2} ^{51.3} ^{51.4} File:TUTORIAL.pdf, page 8
- ↑ ^{52.0} ^{52.1} ^{52.2} ^{52.3} ^{52.4} ^{52.5} ^{52.6} ^{52.7} ^{52.8} ^{52.9} Sony PlayStation (SONY PS) FREQUENTLY ASKED QUESTIONS
- ↑ Past Microcode, Nintendo 64 Programming Manual, Nintendo
- ↑ File:TUTORIAL.pdf, page 41
- ↑ ^{55.0} ^{55.1} File:ADV GPU.pdf, page 29
- ↑ File:ADV GPU.pdf, page 5
- ↑ ^{57.0} ^{57.1} psx.rules.org/gpu.txt (archived: 2001-01-10 22:57)
- ↑ ^{58.0} ^{58.1} ^{58.2} File:Nintendo Ultra64 Programming Manual and Addendums.pdf, page 216
- ↑ ^{59.0} ^{59.1} ^{59.2} File:ST-058-R2-060194.pdf, page 132
- ↑ File:Net Yaroze Official Startup Guide.pdf, page 18
- ↑ File:Nintendo Ultra64 Programming Manual and Addendums.pdf, page 262
- ↑ Next Generation, "December 1995" (US; 1995-11-21), page 86
- ↑ ^{63.0} ^{63.1} ^{63.2} File:ADV GPU.pdf, page 30
- ↑ Next Generation, "Premiere Issue 1995" (US; 1994-12-08), page 48
- ↑ PlayStation documentation (pages 28-29)
- ↑ ^{66.0} ^{66.1} Sega System 24
- ↑ File:Net Yaroze Official Startup Guide.pdf, page 17
- ↑ ^{68.0} ^{68.1} ^{68.2} PU-18 (PSX Dev)
- ↑ Samsung KM48V514DJ-6 datasheet
- ↑ Next Generation, "June 1995" (US; 1995-05-23), page 53
- ↑ ^{71.0} ^{71.1} PARADISE TASMANIA 3D
- ↑ File:SCEA BBS.pdf, page 563
- ↑ ^{73.0} ^{73.1} ^{73.2} File:SCEA BBS.pdf, page 630
- ↑ ^{74.0} ^{74.1} File:ADV GPU.pdf, page 7
- ↑ Nvidia NV1
- ↑ File:KM48 datasheet.pdf
- ↑ PU-7 (PSX Dev)
- ↑ File:KM4216 datasheet.pdf
- ↑ File:UPD481850 datasheet.pdf
- ↑ Map (N64dev)
- ↑ File:Direct RDRAM datasheet.pdf
- ↑ File:Oki Concurrent RDRAM datasheet.pdf
- ↑ JPEG Microcode, Nintendo 64 Programming Manual, Nintendo