
Si fas servir Windows des de fa anys, segur que alguna vegada has sentit a parlar de Prefetch, Superfetch o SysMain però potser no tinguis clar què fan exactament, en què es diferencien o si té sentit desactivar-los, sobretot ara que gairebé tothom munta un SSD. Són d'aquelles funcions que hi són, treballant en silenci, i que només recordem quan el disc comença a sonar o la RAM va al límit.
En aquest article desgranarem de forma clara les diferències entre prefetching i Superfetch a Windows, com funcionen per dins, quina relació tenen amb la CPU, quin impacte real tenen sobre HDD i SSD, i en quins casos pot tenir sentit tocar-los (o deixar-los en pau). Ho farem amb un llenguatge proper, però entrant a fons a la part tècnica i recolzant-nos en tot allò que sabem per la documentació i l'experiència pràctica.
Què és el prefetching: maquinari vs programari
El terme prefetching descriu una tècnica que consisteix a portar dades o instruccions a una memòria més ràpida abans que es necessitin, amb la idea de reduir al màxim la latència quan el sistema o l'aplicació els utilitzi. Aquest concepte existeix tant a nivell de programari (sistema operatiu, compilador) com a nivell de maquinari (processador).
Quan parlem de prefetching per programari ens referim a mecanismes implementats al sistema operatiu o al compilador, que analitzen patrons daccés i preparen les dades amb antelació. Un exemple típic és lús de funcions com __builtin_prefetch en compiladors com ara GCC, que insereixen instruccions especials al binari perquè el processador sol·liciti dades de memòria abans de necessitar-les.
Al costat del maquinari, el prefetching ho implementa la CPU mitjançant unitats dedicades que observen els accessos a memòria i intenten anticipar-se. En arquitectures x86, per exemple, hi ha instruccions específiques com PREFETCH que permeten a la CPU portar línies de memòria a les caixets L1/L2/L3 per avançat. La gràcia daquest enfocament és que actua de manera transparent per a lusuari.
L'objectiu comú en tots dos casos és que les dades o instruccions estiguin ja en una memòria molt ràpida quan es facin servir, de manera que es minimitzin els temps d'espera deguts a accessos a memòria principal o disc. Aquest concepte general és el que després Windows adapta amb les seves pròpies tecnologies Prefetch i Superfetch.
Prefetch a Windows: què és i com funciona
Dins l'ecosistema Windows, Prefetch és una tecnologia introduïda a Windows XP i mantinguda en versions posteriors com Windows Vista, Windows 7, Windows 10 i Windows 11. S'implementa al nucli del Windows NT i el seu propòsit principal és accelerar l'arrencada del sistema i la càrrega inicial de les aplicacions.
Quan Windows inicia o quan executes un programa, el sistema registra quins fitxers es llegeixen i en quin ordre. Amb aquesta informació genera uns fitxers especials amb extensió .pf que guarda a la carpeta C: \ Windows \ Prefetch. Cada executable monitoritzat té el seu propi fitxer prefetch, on semmagatzema la traça dels accessos necessaris per arrencar més ràpid la següent vegada.
Gràcies a aquests fitxers, en les següents arrencades Windows pot reordenar i agrupar lectures de disc de manera òptima, de manera que no estigueu saltant sense sentit pel disc dur i es redueixi molt el temps d'inici del sistema i d'obertura d'aplicacions habituals. Això va ser una part important de la sensació de fluïdesa que va tenir Windows XP respecte als seus antecessors.
A més del propi algorisme, existeix el que podem anomenar “servei Prefetch” integrat al sistema, que s'ocupa d'aquesta captura i ús de traces. Des del punt de vista de l'usuari, no veuràs un servei amb aquest nom a la consola de serveis, però sí que veuràs clarament l'activitat a la carpeta Prefetch amb la creació i modificació de fitxers .pf.
Convé tenir clar que Prefetch a Windows funciona a nivell de sistema de fitxers: no es tracta d'una simple memòria cau de RAM, sinó d'un mecanisme que decideix quins fitxers llegir, en quin ordre i en quin moment, de cara a les següents arrencades o execucions d'aplicacions.
Carpeta Prefetch i fitxers .pf: què contenen i per a què serveixen
La famosa carpeta C:\Windows\Prefetch és el cor visible del sistema Prefetch al Windows. Dins d'aquest directori s'emmagatzemen els fitxers .pf que representen les traces de càrrega de cada aplicació o component del sistema sotmès a aquest procés d'optimització.
Cada cop que executes un programa, Windows pot generar o actualitzar un fitxer .pf amb el nom de l'aplicació i un identificador (per exemple, FIREFOX.EXE-24B8FB1A.pf). En aquest fitxer s'inclouen dades com els fitxers accedits durant la inicialització, les rutes internes (per exemple, rutes del tipus \DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\KERNEL32.DLL) i metadades com el nombre d'execucions o l'hora de l'última vegada que es va arrencar.
Des del punt de vista de l'administració i la informàtica forense, aquests fitxers són molt útils perquè permeten reconstruir patrons dús: quines aplicacions s'han executat, quantes vegades, en quin moment, i fins i tot quines llibreries o fitxers concrets s'han carregat a l'inici. Eines com WinPrefetchView, Prefetch Parser, Windows File Analyzer o prefetch-tool permeten obrir i analitzar detalladament aquests fitxers .pf.
Hi ha un límit intern al nombre d'entrades que s'emmagatzemen al directori de Prefetch: Windows sol conservar un màxim de 128 traces. Això implica que, amb l'ús continuat del sistema, les aplicacions menys utilitzades o més antigues són expulsades per deixar espai a les més rellevants segons el patró actual.
Molts usuaris no tenen ni idea que aquesta carpeta existeix, cosa que fa que en entorns reals sol trobar-se plena d'informació útil. Precisament per això moltes suites de “neteja de privadesa” o d'”optimització” inclouen l'opció de buidar la carpeta Prefetch, cosa que pot esborrar empremtes valuoses per a una anàlisi forense i, almenys temporalment, resetejar part de l'aprenentatge de Windows.
Diferències entre Prefetch i Superfetch (SysMain)
Amb l'arribada de Windows Vista, Microsoft va afegir un segon component anomenat SuperFetch (renombrat a SysMain des de la versió 1809 de Windows 10), que moltes vegades es confon amb Prefetch encara que la seva funció és una mica diferent. Tots dos formen part de la gestió avançada de memòria i de càrrega d'aplicacions a Windows, però ataquen problemes diferents.
D'una banda, Prefetch s'ocupa d'optimitzar el patró de lectura des del disc durant l'arrencada del sistema i la primera càrrega de les aplicacions, usant els fitxers .pf com a guia. Se centra en què es llegeix del disc i en quin ordre, no en mantenir res calent a RAM més enllà del comportament normal de la memòria cau de fitxers.
Superfetch, en canvi, és un servei que s'executa en segon pla i que té com a missió principal anticipar-se a les aplicacions que probablement utilitzaràs i precarregar les dades a la memòria RAM. El que fa és observar els hàbits de l'usuari al llarg del temps (quins programes obre, a quines hores, amb quina freqüència) i, basant-s'hi, manté en memòria les aplicacions més utilitzades perquè s'obrin pràcticament a l'instant.
Mentre que Prefetch gestiona sobretot traces en disc i planificació de lectura, Superfetch actua com un “majordom” de la RAM, omplint-la amb allò que considera més probable que hagis de necessitar. En màquines amb suficient memòria, això és un avantatge perquè la RAM lliure que no es fa servir és, a la pràctica, RAM desaprofitada.
Cal tenir present que Superfetch/SysMain ha anat canviant de comportament amb les versions de Windows, ajustant millor quan i com precarrega dades, especialment des que l'ús de SSD s'ha estandarditzat. Tot i així, segueix havent-hi escenaris on el benefici o la molèstia de Superfetch depenen molt de la quantitat de RAM i del tipus demmagatzematge que tinguis.
Superfetch/SysMain: impacte real en HDD i SSD
Superfetch va ser dissenyat inicialment pensant en equips amb discs durs mecànics (HDD) relativament lents, on el temps de cerca i accés és alt. En aquest context té molt de sentit que Windows tracti d'avançar-se, omplint la RAM amb dades d'aplicacions que utilitzes sovint perquè no s'hagin de llegir del disc cada vegada.
En un HDD, el temps daccés aleatori és molt superior al dun SSD, de manera que qualsevol cosa que reduïu lectures aleatòries o agrupeu accessos sol traduir-se en una millora apreciable de la rapidesa percebuda. Per això moltes guies antigues recomanaran mantenir activats Prefetch i Superfetch en sistemes amb discos mecànics.
Amb la generalització dels discos SSD de consum, la velocitat de lectura aleatòria dels quals és molt superior, l'impacte positiu de Superfetch es redueix considerablement. Els temps de càrrega de les aplicacions des d'un SSD ja són molt baixos, per la qual cosa mantenir un servei que reordena i precarrega dades en RAM pot arribar a ser irrellevant en termes de millora, o fins i tot contraproduent en certs escenaris, en consumir memòria i generar I/O addicional.
De fet, molts usuaris amb SSD i poca RAM han observat que SysMain pot disparar lús de disc o de memòria en determinades circumstàncies, especialment en equips antics o amb maquinari ajustat, cosa que ha portat a desactivar-lo a la recerca d'un sistema més estable i predictible, encara que es perdi una mica d'“anticipació” en la càrrega de programes.
Microsoft, per la seva banda, ha afinat el comportament del servei en versions recents de Windows 10 i 11 perquè sigui menys agressiu en sistemes amb SSD, però això no treu que en alguns equips concrets l'usuari decideixi apagar-lo millor si detecta pics d'activitat injustificats o un desgast de disc que considera innecessari.
Prefetch a la CPU: cache prefetching i tipus
Més enllà de Windows, el terme prefetching també es fa servir per descriure mecanismes interns de les CPU modernes orientats a reduir la penalització associada als accessos a memòria lenta. En aquest cas, no parlem ja de fitxers .pf ni de carpetes al sistema operatiu, sinó de lògica de maquinari dins del processador.
Les microarquitectures actuals incorporen prefetchers de memòria cau que analitzen el patró d'accessos a memòria (tant de dades com d'instruccions) i intenten portar a les caixets línies que encara no s'han sol·licitat formalment, però que, segons el patró observat, és molt probable que es necessitin a continuació.
Podem distingir, a grans trets, dos tipus de prefetching a nivell de CPU: el prefetching de dades i el prefetching d'instruccions. El primer se centra en operands que les instruccions manipularan (estructures de dades en memòria, buffers, etc.), mentre que el segon porta per avançat instruccions que encara no han estat executades, alimentant la cua d'instruccions de la CPU i reduint les aturades per manca de codi en memòria cau.
Aquest tipus de tècniques existeixen des de fa dècades. Ja processadors com el Intel 8086 amb la cua de 6 bytes o la família Motorola 68000 amb 4 bytes empraven formes primerenques de prefetching d'instruccions. Avui, qualsevol processador de sobretaula o portàtil d'altes prestacions inclou múltiples nivells de memòria cau i algorismes avançats de prefetch capaços de reconèixer patrons seqüencials, strides, patrons indirectes, etc.
En algunes BIOS/UEFI trobaràs opcions com CPU Prefetch, Maquinari Prefetcher, Adjacent Cache Line Prefetch o similars, que permeten activar o desactivar aquests mecanismes. En general, no sol ser recomanable tocar-los tret que estiguis depurant problemes molt concrets, perquè estan pensats per millorar el rendiment general de gairebé qualsevol càrrega de treball.
Com activar o desactivar Prefetch al Windows
El comportament de Prefetch a Windows es controla a través del Registre del sistema en una clau específica. Això permet ajustar si el sistema aplica prefetch a l'arrencada, a les aplicacions oa tots dos, i fins i tot desactivar-lo del tot si així es decideix.
La configuració principal es troba a la ruta de registre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters. Dins d'aquesta clau apareix un valor anomenat EnablePrefetcher (o EnablePrefetch en algunes referències) que admet diversos valors numèrics.
Els valors típics que pot prendre aquest paràmetre són els següents: 0 per deshabilitar Prefetch completament, 1 per habilitar únicament la precàrrega associada a l'arrencada d'aplicacions, 2 per centrar-se en l'arrencada del sistema i 3 per activar tant l'optimització de l'arrencada del sistema com la de les aplicacions; aquest últim és el valor recomanat i el que sol venir per defecte.
Per modificar aquest comportament cal obrir el Editor del Registre de Windows (regedit), navegar a la ruta esmentada i canviar el valor de EnablePrefetcher. És important fer-ho amb compte i, si és possible, amb una còpia de seguretat del registre, ja que un canvi mal realitzat pot comportar problemes de rendiment o estabilitat.
Més enllà de canviar el valor de configuració, alguns usuaris opten per buidar periòdicament el contingut de la carpeta C:\Windows\Prefetch per “netejar” el sistema. Tot i això, Windows ja gestiona de forma automàtica aquest directori, eliminant traces antigues o poc usades, per la qual cosa excepte en casos molt concrets (per exemple, proves de rendiment o entorns molt específics) no sol ser necessari ni especialment beneficiós.
Com activar o desactivar Superfetch (SysMain) a Windows 10 i posteriors
A diferència de Prefetch, que es controla en gran mesura via registre, Superfetch/SysMain es gestiona principalment com un servei de Windows. Això vol dir que es pot activar o desactivar igual que altres serveis del sistema des de la consola de serveis.
En versions de Windows 10 anteriors a la 1809, el servei es deia SuperFetch. A partir d'aquesta actualització, Microsoft va passar a fer servir el nom SysMain per al mateix component, encara que la seva funció segueix sent la mateixa: supervisar patrons dús i precarregar aplicacions en memòria per accelerar la seva resposta.
Per manipular aquest servei cal obrir el quadre d'execució amb Win + R i escriure services.msc, prémer Intro i, a la finestra de serveis, localitzar l'entrada corresponent (Superfetch o SysMain segons la versió del teu sistema). Fent doble clic s'obre la finestra de propietats del servei.
En aquestes propietats pots canviar el Tipus d'inici a Habilitat, Manual o Deshabilitat. Si seleccioneu Deshabilitat i apliqueu els canvis, el servei deixarà d'executar-se i Windows deixarà de fer precàrrega agressiva d'aplicacions en RAM, encara que el sistema continuarà usant la memòria cau d'arxius bàsica i altres optimitzacions internes.
Molts usuaris amb equips amb HDD opten per mantenir Superfetch/SysMain actiu perquè ajuda que el sistema se senti més àgil, mentre que els que usen SSD, especialment en equips amb poca RAM, sovint el desactiven per evitar pics de I/O que consideren innecessaris atès que el SSD ja és prou ràpid per al seu ús habitual.
Prefetch i Superfetch en HDD vs SSD: quan té sentit desactivar-los
Una de les preguntes més habituals és si val la pena desactivar Prefetch i Superfetch quan el sistema operatiu està instal·lat en un SSD en comptes d'un disc mecànic tradicional. La resposta no és idèntica per a tots dos components.
En el cas de Prefetch, fins i tot amb SSD, Windows continua traient cert partit a l'optimització de lectura, sobretot en equips amb maquinari modest o càrregues de treball variades. Tot i que la millora no és tan dramàtica com en un HDD, l'impacte negatiu de deixar-ho activat sol ser petit, per la qual cosa en la majoria de situacions no es recomana desactivar-lo tret que es tingui un motiu molt concret.
Amb Superfetch/SysMain la història canvia una mica: en sistemes amb SSD i suficient RAM, el guany de precarregar aplicacions en memòria és menor perquè els temps de lectura des del SSD ja són molt reduïts. Si a més el servei genera molta activitat de disc o de memòria, en algunes màquines pot ser més una nosa que una ajuda, sobretot si s'utilitzen aplicacions pesades o hi ha poc marge de RAM lliure.
D'altra banda, cal tenir en compte que tant Prefetch com Superfetch incrementen lleugerament el nombre d'escriptures i lectures al disc. En HDD això no és especialment crític, però a SSD sí que influeix en el desgast a llarg termini, encara que avui dia els SSD moderns tenen una resistència més que suficient per a l'ús quotidià, fins i tot amb aquests serveis actius.
Al final, la decisió sol reduir-se a provar al teu propi equip: si notes pics de disc o problemes de rendiment associats clarament a SysMainpot tenir sentit desactivar-lo i comprovar si el sistema es comporta millor. Amb Prefetch, en canvi, el més habitual és deixar-ho en el seu valor per defecte (3) tret que busques un comportament molt específic o estiguis depurant alguna cosa concreta.
Limitacions, problemes i visió crítica de Prefetch i Superfetch
Tot i que sobre el paper Prefetch i Superfetch són mecanismes intel·ligents per accelerar Windows, a la pràctica no estan exempts de problemes i decisions de disseny discutibles. Un dels punts més criticats és la poca discriminació a l'hora de què es prefetxera o es monitoritza.
Per exemple, el sistema pot generar traces i prefetching fins i tot de fitxers executables que només es fan servir una vegada, com molts instal·ladors setup.exe que descàrregues, executes i després esborres o mous. En aquests casos, l'esforç invertit en crear traces i conservar-les a Prefetch no té pràcticament cap benefici, perquè aquest fitxer no es tornarà a utilitzar en la majoria de situacions.
Un altre problema assenyalat és que, quan es van actualitzant programes amb freqüència, Prefetch i Superfetch poden acumular entrades de versions antigues d'aplicacions que ja no estan instal·lades o que han canviat de ruta, mantenint en els seus llistats referències que ja no aporten res. Això contribueix, encara que sigui en petita mesura, a un cert soroll ia ocupar espai amb dades que no tindran ús real.
En aquest context, alguns usuaris avançats opten per utilitzar desinstal·ladors més sofisticats, com per exemple eines de codi obert que, a més de desinstal·lar el programari, rastregen restes al registre, al sistema d'arxius i fins i tot esborren entrades de Prefetch relacionades amb aquestes aplicacions, tractant de deixar el sistema més net d'empremtes.
Finalment, hi ha qui critica que, malgrat el temps transcorregut des del llançament de Windows 10 el 2015, aquestes funcions no hagin evolucionat tant com es podria esperar, mentre que Microsoft ha centrat esforços a integrar publicitat, components web, ginys, aplicacions preinstal·lades i múltiples panells de configuració solapats. Des d'aquest punt de vista més crític, el disseny de Prefetch/Superfetch sembla haver-se quedat una mica estancat davant d'alternatives més lleugeres que ofereix el programari de tercers per a la cerca, indexació i gestió de rendiment.
Comprendre com funcionen Prefetch, Superfetch/SysMain i el prefetching de CPU permet prendre decisions més informades sobre la seva configuració, valorar quan compensa mantenir-los actius i quan pot interessar desactivar-los, i, de passada, aprofitar-ne les traces per a tasques d'anàlisi de rendiment o fins i tot per reconstruir l'activitat d'un sistema en investigacions forenses.
