Het gebruik van flash-geheugen om een desktopsysteem, zoals Windows, te laten draaien, werd al geruime tijd afgeraden. Maar wat maakte het een wenselijke en haalbare optie voor mobiele apparaten? De SuperUser Q & A-post van vandaag biedt het antwoord op de vraag van een nieuwsgierige lezer.
De vraag- en antwoordsessie van vandaag komt tot ons dankzij SuperUser – een onderdeel van Stack Exchange, een door de gemeenschap aangestuurde groepering van Q & A-websites.
De vraag
SuperUser-lezer RockPaperLizard wil weten wat eMMC-flashgeheugen levensvatbaar maakt op mobiele apparaten, maar niet op pc’s:
Sinds USB-sticks werden uitgevonden, hebben mensen zich afgevraagd of ze hun besturingssystemen erop konden uitvoeren. Het antwoord was altijd “nee”, omdat het aantal schrijfbewerkingen dat een besturingssysteem vereist, ze snel zou verslijten.
Naarmate SSD’s populairder zijn geworden, is de slijtage-nivelleringstechnologie verbeterd zodat besturingssystemen erop kunnen draaien. Diverse tablets, netbooks en andere dunne computers gebruiken flash-geheugen in plaats van een harde schijf of SSD, en het besturingssysteem is daarop opgeslagen.
Hoe is dit ineens praktisch geworden? Implementeren ze bijvoorbeeld typisch technologieën voor het egaliseren van slijtage?
Wat maakt eMMC-flashgeheugen levensvatbaar op mobiele apparaten, maar niet op pc’s?
Het antwoord
SuperUser-bijdragers Speeddymon en Journeyman Geek hebben het antwoord voor ons. Ten eerste, Speeddymon:
Alle flash-geheugenapparaten, van tablets tot mobiele telefoons, smartwatches, SSD’s, SD-kaarten in camera’s en USB-sticks maken gebruik van NVRAM-technologie. Het verschil zit in de NVRAM-architectuur en hoe het besturingssysteem het bestandssysteem koppelt aan het opslagmedium waarop het zich bevindt.
Voor Android-tablets en mobiele telefoons is de NVRAM-technologie gebaseerd op eMMC. De gegevens die ik op deze technologie kan vinden, suggereren tussen de 3k tot 10k schrijfcycli. Helaas is niets van wat ik tot nu toe heb gevonden definitief, aangezien Wikipedia blanco is over de schrijfcycli van deze technologie. Alle andere plaatsen waar ik heb gezocht, waren toevallig verschillende forums, dus nauwelijks wat ik een betrouwbare bron zou noemen.
Ter vergelijking: de schrijfcycli op andere NVRAM-technologie, zoals SSD’s, die NAND- of NOR-technologie gebruiken, liggen tussen 10k en 30k.
Nu, wat betreft de keuze van het besturingssysteem om het bestandssysteem te mounten. Ik kan niet zeggen hoe Apple het doet, maar voor Android is de chip verdeeld zoals een harde schijf dat zou zijn. U hebt een besturingssysteempartitie, een gegevenspartitie en verschillende andere eigen partities, afhankelijk van de fabrikant van het apparaat.
De echte rootpartitie leeft in de bootloader, die is gebundeld als een gecomprimeerd bestand (jffs2, cramfs, enz.) Samen met de kernel, zodat wanneer de opstart van fase 1 van het apparaat voltooid is (meestal het logoscherm van de fabrikant), de kernel boots en de rootpartitie wordt tegelijkertijd als een RAM-schijf gemount.
Terwijl het besturingssysteem opstart, koppelt het het bestandssysteem van de primaire partitie (/ system, dat is jffs2 op apparaten vóór Android 4.0, ext2 / 3/4 op apparaten sinds Android 4.0, en xfs op de nieuwste apparaten) als alleen-lezen dus dat er geen gegevens naar kunnen worden geschreven. Dit kan natuurlijk worden omzeild door het zogenaamde “rooten” van uw apparaat, wat u toegang geeft als supergebruiker en u in staat stelt om de partitie opnieuw te koppelen als lezen / schrijven. Uw “gebruikers” gegevens worden naar een andere partitie op de chip geschreven (/ data, die dezelfde conventie volgt als hierboven op basis van de Android-versie).
Nu steeds meer mobiele telefoons SD-kaartsleuven laten vallen, zou u kunnen denken dat u eerder de schrijfcycluslimiet bereikt, omdat al uw gegevens nu worden opgeslagen op eMMC-opslag in plaats van op een SD-kaart. Gelukkig detecteren de meeste bestandssystemen een mislukte schrijfactie naar een bepaald opslaggebied. Als het schrijven mislukt, worden de gegevens stilzwijgend opgeslagen in een nieuw opslaggebied en wordt het slechte gebied (bekend als een slecht blok) afgezet door het bestandssysteemstuurprogramma, zodat er in de toekomst geen gegevens meer worden geschreven. Als het lezen mislukt, worden de gegevens gemarkeerd als beschadigd en wordt de gebruiker verteld om een bestandssysteemcontrole uit te voeren (of schijf te controleren), of het apparaat controleert automatisch het bestandssysteem tijdens de volgende keer opstarten.
Google heeft trouwens een patent voor het automatisch detecteren en afhandelen van slechte blokken: Beheer van slechte blokken in het flash-geheugen voor elektronische gegevensflashkaarten
Om meer ter zake te komen: uw vraag over hoe dit plotseling praktisch werd, is niet de juiste vraag om te stellen. Het was in de eerste plaats nooit onpraktisch. Het werd sterk afgeraden om een besturingssysteem (Windows) op een SSD te installeren (vermoedelijk) vanwege het aantal schrijfbewerkingen naar een schijf.
Het register ontvangt bijvoorbeeld letterlijk honderden lees- en schrijfbewerkingen per seconde, wat te zien is met de Microsoft-SysInternals Regmon Tool.
Het installeren van Windows werd afgeraden op de eerste generatie SSD’s, omdat door het gebrek aan slijtage-egalisatie de gegevens die elke seconde naar het register werden geschreven (waarschijnlijk) uiteindelijk de early adopters inhaalden en resulteerden in niet-opstartbare systemen als gevolg van registercorruptie.
Met tablets, mobiele telefoons en vrijwel elk ander ingebed apparaat is er geen register (Windows Embedded-apparaten zijn natuurlijk uitzonderingen) en dus hoeft u zich geen zorgen te maken dat gegevens constant naar dezelfde delen van het flash-medium worden geschreven.
Voor Windows Embedded-apparaten, zoals veel van de kiosken die te vinden zijn op openbare plaatsen (zoals Walmart, Kroger, enz.) Waar u van tijd tot tijd een willekeurige BSOD kunt zien, is er niet veel configuratie die kan worden gedaan omdat ze zijn vooraf ontworpen met configuraties die bedoeld zijn om nooit te veranderen. De enige keer dat wijzigingen plaatsvinden, is in de meeste gevallen voordat de chip wordt geschreven. Alles wat moet worden opgeslagen, zoals uw betaling aan de supermarkt, gebeurt via het netwerk naar de databases van de winkel op een server.
Gevolgd door het antwoord van Journeyman Geek:
Het antwoord was altijd “nee”, omdat het aantal schrijfbewerkingen dat een besturingssysteem vereist, ze snel zou verslijten.
Ze werden eindelijk rendabel voor regulier gebruik. Dat “slijtage” de enige zorg is, is een beetje een aanname. Er zijn systemen die al een aanzienlijke tijd op solid-state geheugen draaien. Veel mensen die autoputers bouwden, startten op met CF-kaarten (die elektrisch compatibel waren met PATA en eenvoudig te installeren waren in vergelijking met PATA-harde schijven), en industriële computers hadden een kleine, robuuste flash-gebaseerde opslag.
Dat gezegd hebbende, er waren niet veel opties voor de gemiddelde persoon. Je zou een dure CF-kaart en een adapter voor een laptop kunnen kopen, of een kleine, zeer dure industriële schijf op een module-eenheid voor een desktop kunnen vinden. Ze waren niet erg groot in vergelijking met moderne harde schijven (moderne IDE DOM’s komen uit op 8 GB of 16 GB denk ik). Ik ben er vrij zeker van dat je solid-state-systeemschijven had kunnen instellen lang voordat standaard SSD’s gebruikelijk werden.
Voor zover ik weet, zijn er niet echt universele / magische verbeteringen in slijtage-egalisatie. Er zijn stapsgewijze verbeteringen opgetreden terwijl we zijn overgestapt van dure SLC naar MLC, TLC en zelfs QLC, samen met kleinere procesgroottes (die allemaal lagere kosten met een hoger risico op slijtage). Flash is een stuk goedkoper geworden.
Er waren ook een paar alternatieven die geen slijtageproblemen hadden. Bijvoorbeeld, het hele systeem draaien op een ROM (wat aantoonbaar solid-state opslag is) en RAM met batterijvoeding, die veel vroege SSD’s en draagbare apparaten zoals de Palm Pilot gebruikten. Geen van deze is tegenwoordig gebruikelijk. Harde schijven schommelden in vergelijking met bijvoorbeeld RAM met batterijvoeding (te duur), vroege solid-state apparaten (enigszins prijzig) of boeren met vlaggen (nooit gepakt vanwege de vreselijke gegevensdichtheid). Zelfs modern flash-geheugen is een afstammeling van snel wissen eeproms en eeproms worden al eeuwenlang gebruikt in elektronische apparaten voor opslag van zaken als firmware.
Harde schijven bevonden zich gewoon op een mooi kruispunt met een hoog volume (wat belangrijk is), lage kosten en relatief voldoende opslagruimte.
De reden dat u eMMC’s aantreft in moderne, goedkope computers, is dat de componenten relatief goedkoop zijn, groot genoeg (voor desktopbesturingssystemen) tegen die prijs, en gemeen hebben met componenten van mobiele telefoons, zodat ze in bulk worden geproduceerd met een standaardinterface. Ze bieden ook een grote opslagdichtheid voor hun volume. Aangezien veel van deze machines een schamele 32GB- of 64GB-schijf hebben, vergelijkbaar met harde schijven van het grootste deel van tien jaar geleden, zijn ze een verstandige optie in deze rol.
We bereiken eindelijk het punt waarop u een redelijke hoeveelheid geheugen betaalbaar en met redelijke snelheden kunt opslaan op eMMC’s en flash, en daarom gaan mensen ervoor.
Iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden lezen van andere technisch onderlegde Stack Exchange-gebruikers? Bekijk hier de volledige discussiethread.
Beeldcredits: Martin Voltri (Flickr)