The DE10-nano is both an FPGA and an ARM computer, running Linux. Because of this, MiSTer benefits from all of the input/output flexibility of a modern computer. Note that the DE10-nano's USB PHY is USB 2.0 so there is no speed advantage using USB 3.0 devices.
This comparison has been months in the making, and I'm happy to finally publish my findings.
Storage History:
In 2018, a new MiSTer script added the ability to mount network volumes via CIFS/SAMBA which can be used for game storage. In 2019, MiSTer added the option of storing games on USB storage. So which storage solution is best for your setup? Let's dive in and look at some data.
Game Loading:
Most MiSTer cores store the game data in SDRAM. When you load a game, you see a loading bar, indicating the copy progress from SD/USB/CIFS to the SDRAM. Other MiSTer cores use the DE10-nano's DDR3 memory for hard drive/game/cd streaming. Neo-Geo does a combination of both, loading the game from SD/USB/CIFS to DDR3, then to SDRAM.
Disc-based Games:
Most games are pretty small (<20 MB). Some, can be up to 128 MB, and the rest are disc-based which can be up to 700 MB. CD-ROM drives rate data throughput in terms of "x", where 1x = 150 KB/sec. In order to properly stream disc-based games, storage should have >= 150 KB/sec read speed, preferably factors of that for buffering purposes.
Test Methodology:
For each device, both read and write speeds are tested 3 times, and the results are averaged for that device. Write speeds are tested first, creating a temp file, after which read speed is tested by reading back that temp file.
My setup:
- Ubiquiti routing and access points
- 1Gbps wired ethernet Synology NAS. 5 x 8TB = 24TB in RAID5. Don't even comment about RAID not being backup, because I'll wholeheartedly agree!
The MiSTer was one floor above the nearest WiFi access point.
This can be done locally through the framebuffer terminal (F9 at the menu screen, root:1), or through ssh (ssh [email protected])
For local storage devices, the write command is:
sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync
and the read command is:
dd if=tempfile of=/dev/null bs=1M count=1024
For network storage, the write command is:
sync; dd if=/dev/zero of=/media/fat/games/tempfile bs=1M count=16; sync and
the read command is
dd if=/media/fat/games/tempfile of=/dev/null bs=1M count=16
Results:
Test | Min (MB/s) | Average (MB/s) | Max (MB/s) |
WiFi Read | 1.7 | 5.8 | 7.6 |
MicroSD Read | 11.9 | 19.6 | 23.6 |
USB Read | 19.5 | 20.6 | 22.07 |
1Gbps Ethernet Read | 46.7 | 47 | 47.6 |
WiFi Write | 0.5 | 5.6 | 9.13 |
MicroSD Write | 5.7 | 12.3 | 16.3 |
USB Write | 0.9 | 10.9 | 14.57 |
1Gbps Ethernet Write | 47.8 | 50.2 | 52.3 |
WiFi Specific Results:
Devices are in the same order as the list (top row = left, bottom row = right)
Device |
Chipset | USB Hardware ID | Read Speed (MB/s) |
Write Speed (MB/s) |
"802.11n" (Red and Black) | RTL8188EUS | obda:8179 | 1.0 | 5.1 |
300M Wireless USB Adapter | RTL8192EU | 0bda:818b | 0.5 | 4.4 |
MiSTer Addons Wifi | RTL8192EU | obda:818b | 0.5 | 7.4 |
Paul6 Panda Wireless 300Mbps | RT5372 | 148f:5372 | 4.0 | 1.7 |
Canakit | RT5370 | 148f:5370 | 4.9 | 5.8 |
TP-Link Nano AC600 (2.4 GHz) | TP-Link | 2357:011e | 5.4 | 5.9 |
EDiMAX AC1200 EW-7822ULC | Edimax | 7392:b822 | 6.7 | 5.7 |
ASUS USB-AC53 AC1200 (2.4 GHz) | ASUS | 0b05:184c | 8.4 | 6.1 |
BT + AC600 Driver Free (Black + Green) (2.4 GHz) | Realtek | obda:c820 | 7.0 | 6.6 |
600M WiFi + Bluetooth 4.2 Drive Free (Black + White) | Realtek | obda:c820 | 7.6 | 6.2 |
WiFi AC 600Mbps Dual Band Adapter (Black + Orange) (2.4 GHz) | Realtek | 0bda:c811 | 8.4 | 6.3 |
TP-Link AC1300Mbps Archer T3U (2.4 GHz) | TP-Link | 2357:012d | 9.1 | 6.2 |
TP-Link AC1300Mbps Archer T3U Plus (2.4 GHz) | TP-Link | 2357:0138 | 8.9 | 7.6 |
TP-Link Nano AC600 (5 GHz) | TP-Link | 2357:011e | 6.43 | 11.67 |
BT + AC600 Driver Free (Black + Green) (5 GHz) | Realtek | obda:c820 | 7.20 | 13.60 |
WiFi AC 600Mbps Dual Band Adapter (Black + Orange) (5 GHz) | Realtek | 0bda:c811 | 12.90 | 14.37 |
TP-Link AC1300Mbps Archer T3U (5 GHz) | TP-Link | 2357:012d | 11.57 | 18.80 |
TP-Link AC1300Mbps Archer T3U Plus (5 GHz) | TP-Link | 2357:0138 | 13.17 | 18.90 |
ASUS USB-AC53 AC1200 (5 GHz) | ASUS | 0b05:184c | 13.87 | 20.97 |
Anomolies:
WiFi Connections:
Linux's wifi compatibility has always seemed inadequate to me. Recent Linux updates have massively improved wifi driver support but there are still some intermittent issues. Sometimes the wifi doesn't connect on boot. This isn't specific to any one device, but seems to happen on all devices. Some wifi adapters take longer than others to negotiate a connection (15-50 seconds based on my experience). Once the connection is established, it's solid. The issue could be due to my network topology, which has the same SSID for 2.4 GHz and 5.0 GHz networks.
5 GHz WiFi:
Higher frequency wifi has both greater throughput, and lower range. As the frequency increases, wavelength decreases, as does its ability to pass through solid surfaces such as walls. The 5 GHz results in the table were measured from 10 feet away in the same room as the wireless access point. Most routers / access points allow for 2.4 and 5 GHz networks to be merged or separated. Consult your wireless access point (WAP) documentation to properly expose the 5GHz bandwidth in a way that works with MiSTer. You must either have a separate SSID altogether or force your access point to only feed 5 GHz to supported devices.
WiFi Slow Read Performance:
Realtek RTL8192EU and RTL8188EUS both have poor write performance (0.5-1 MB/s) but adequate read performance (5-7.1 MB/s). These are totally acceptable for updates and loading games over wifi, but avoid trying to transfer files to MiSTer using these.
USB SATA Bridge Read Performance:
Several USB devices exhibit similar low write performance(0.1-0.9 MB/s). This is pretty astonishing for local storage. One of the devices with this issue has a JMicron JMS576 chipset. There may be others with issues, but this is the one I had on hand. Other results came from other users.
Price to Performance Ratio:
Price per TB:
Price Per MB/sec (Read) Per TB:
Combining the previous chart with the average performance (MB/s) of the storage type, we arrive at what I consider the value chart.
Diminishing Returns:
To test real world performance, I loaded the largest ROM based game in on the platform: 'Garou: Mark of the Wolves' on Neo-Geo. Neo-Geo does a multi-step load: from external storage > DDR3 > SDRAM. The DDR3 > SDRAM transfer takes roughly 3 seconds regardless of ROM source so consider this when comparing times.
Basically, anything but WiFi will be imperceptible for game loading (WiFi results exclude the poor read performance Realtek dongles). Still faster loading than dedicated Neo-Geo flash carts :)
Conclusion:
- If you have accessible, wired, network storage use it. It's both the fastest and the cheapest storage for MiSTer. It works with both wired and wireless MiSTers and the same set of games l, saves, and save states can be shared by all of your MiSTers (you have more than one, right? RIGHT!?).
- If you require portability, get a high capacity micro SD card. If neither of those apply and you want lots of storage, get a USB mechanical hard drive (preferably one that has external power so you don't overload the USB hub).
- Lastly, if you have SSDs or m.2 lying around, you can use them but they're not more performant than any other USB or micro SD device. I hope this info is useful as you embark on your MiSTer storage adventure.
Yes, the MiSTer Express will have a 2.5" SATA port. You can get an m.2 adapter if you must :)
Edit 1 - January 3, 2021 - Added 5 GHz WiFi test results
Thanks your article helped me a lot, my TP-Link AC1300Mbps Archer T3U (2.4 GHz) has always worked very well but after the last mister update it stopped working.
Thanks your article helped me a lot, my TP-Link AC1300Mbps Archer T3U (2.4 GHz) has always worked very well but after the last mister update it stopped working.