1 पॉइंट द्वारा GN⁺ 2024-05-20 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Crucial BX500 के QLC NAND को MPTools के जरिए pSLC मोड में फिर से कॉन्फ़िगर कर क्षमता 500GB से घटाकर लगभग 120GB करने के बदले endurance और कुछ performance को काफी बढ़ाने वाला प्रयोग
  • यह conversion Silicon Motion SM2259XT2 controller और Micron N48R NAND combination के लिए firmware और settings का काम है; असफल होने पर SSD damage, warranty void और data deletion हो सकते हैं
  • मूल QLC स्थिति में calculated TBW 120TB था, लेकिन pSLC मोड में 60,000 P/E cycles, 120GB capacity और WAF 1.8 के आधार पर 4,000TB TBW तक बढ़ने की गणना की गई
  • छोटे sequential benchmark में अंतर कम था, लेकिन random performance, latency, PCMark 10 productivity test और long-duration writes में pSLC मोड का फर्क साफ दिखा
  • मूल स्थिति में लगभग 45GB SLC cache के बाद average करीब 50MB/s तक गिर गया, जबकि pSLC conversion के बाद 120GB पूरी capacity और repeated writes में भी लगभग 498~500MB/s बना रहा

प्रयोग का लक्ष्य और जोखिम

  • प्रयोग का लक्ष्य कई बार test किया गया Crucial BX500 SSD है
  • प्रक्रिया खुद overclocking से सुरक्षित हो सकती है, फिर भी इसमें firmware flashing शामिल है, इसलिए सावधानी जरूरी है
  • firmware flash करने पर सारा data delete हो जाता है, इसलिए backup जरूरी है
  • conversion करने पर SSD की warranty void हो जाती है
  • जरूरी tools में Jmicron JMS578 Bridge Chip आधारित SATA-USB 3.0 adapter और SSD PCB के ROM/Safe Mode terminals को short करने के लिए clamp शामिल हैं

BX500 hardware configuration

  • controller Silicon Motion SM2259XT2 है, जो SM2259XT का variant model है
    • single-core controller
    • 32-bit ARC architecture
    • अधिकतम 550MHz पर operate कर सकता है
    • इस SSD में 437.5MHz पर operate करता है
  • SM2259XT2 अधिकतम 2 channels और प्रति channel अधिकतम 8 Chip Enable support करता है, और interleaving के जरिए अधिकतम 16 dies से communicate कर सकता है
  • तुलना के लिए SM2259XT 4-channel और 4 C.E. configuration के साथ अधिकतम 16 dies support करता है
  • यह SATA SSD DRAM-Less structure वाला है और Host Memory Buffer भी support नहीं करता

NAND और default operating characteristics

  • 500GB model में “NY240” marked दो NAND flash लगे हैं
  • decoding के बाद Micron MT29F2T08GELCEJ4-QU:C, N48R Media Grade NAND होने की पुष्टि हुई
    • प्रति die 1Tb, यानी 128GiB
    • 176 data layers और कुल 195 gates
    • array efficiency 90.2%
  • हर NAND flash में 2 dies होते हैं, इसलिए प्रति NAND 256GB और कुल लगभग 500GB configuration बनता है
  • NAND controller से 262.5MHz, यानी 525MT/s पर communicate करता है
  • N48R die 800MHz, यानी 1600MT/s तक operate कर सकता है, लेकिन इस SSD में इसे काफी कम set किया गया है
  • कम speed setting power और heat कम करने, high-speed operation quality standards पूरे न होने, lower endurance की संभावना, सस्ते NAND supply की संभावना आदि से जुड़ी हो सकती है

MPTools-based conversion procedure

  • Silicon Motion controllers के लिए mass-production tool MPTools का उपयोग किया गया
  • इस्तेमाल किया गया tool “SMI SM2259XT2 MPTool FIMN48 V0304A FWV0303B0” है, और यह controller तथा NAND flash दोनों से match होना चाहिए
  • पहले SSD से existing parameters पढ़कर preserve करने होंगे
    • Flash IO Driving और sub-items
    • Flash Control Driving
    • Flash DQS/Data Driving
    • Control ODT
    • Flash ODT
    • Schmitt Window Trigger
  • MPTools के Scan से SSD खोजकर, “Ready (FW: M6CR061, MN48R)” item में factory settings और controller/NAND speed check करें
  • fair comparison के लिए controller और NAND frequency को existing values पर रखा गया

pSLC mode activation settings

  • “Edit Config” में project name और firmware version tag set करें
    • example model name “SSD SLC Test” है
    • example firmware version “SSD-SLC” है
  • Flash Control Driving और Flash DQS/Data Driving को existing value 66(hex) पर रखा गया
  • CPU और NAND frequency भी existing comparison conditions के अनुसार रखी गई, और Output driving 03H पर रखा गया
  • MPTools की Setting.set file edit करके pSLC-related options expose किए गए
    • [Function] के ENFWTAG=1 को ENFWTAG=0 में बदलें
    • [Option] में EnSLCMode=1 जोड़ें
  • इसके बाद MPTools में Force SLC Mode option दिखाई देता है
  • actual conversion के लिए firmware folder के boot और initialization files को एक specific directory में copy करना पड़ता है
  • यह file procedure SM2259XT2 + N48R NAND combination के लिए है; दूसरे NAND में folder names और file structure अलग होंगे
  • कुछ NAND models 100% compatible नहीं हो सकते, और tested NAND Intel तथा Micron NAND हैं

Endurance calculation

  • endurance calculation के लिए Write Amplification Factor, NAND Program/Erase Cycle और SSD capacity की जरूरत होती है
  • अधिक precise calculation में JEDEC JESD218A standard और Wear-Leveling Efficiency जैसे additional parameters शामिल होते हैं
  • मूल QLC स्थिति वाले SSD में TBW 120TB और N48R Media Grade NAND के P/E cycles लगभग 900 calculate किए गए
  • मूल स्थिति में WAF calculation के अनुसार 3.75 था, और actual test में यह करीब 3.8 के आसपास था
  • pSLC स्थिति में NAND die datasheet के अनुसार अधिकतम 60,000 P/E cycles सह सकता है
  • pSLC conversion के बाद capacity लगभग 0.12TB, यानी 120GB रह जाती है
  • WAF 1.8 के आधार पर calculation result TBW 4,000TB है
  • TBW 500GB QLC स्थिति के 120TB से 120GB pSLC स्थिति के 4,000TB तक बढ़ता है, यानी increase rate 3333% से अधिक है

Performance test environment

  • OS Windows 11 Pro 64-bit 23H2 है
  • CPU Intel Core i7-13700K है, और सभी cores 5.7GHz पर set हैं
  • RAM 2×16GB DDR4-3200MHz CL16 Netac configuration है
  • motherboard MSI Z790-P PRO WIFI D4 है, BIOS version 7E06v18 है
  • GPU RTX 4060 Galax 1-Click OC है
  • OS drive Solidigm P44 Pro 2TB है, और test SSD BX500 “SLC-Test” के रूप में इस्तेमाल हुआ
  • test variation कम करने के लिए Windows indexing, updates, background apps और antivirus disable किए गए
  • test SSD secondary drive के रूप में इस्तेमाल हुआ, और 0% used state तथा 50% used state tests शामिल थे
  • power test में Quarch PPM QTL1999 से idle, 1-hour write test और average power consumption measure किया गया

CrystalDiskMark results

  • sequential test 2×1GiB, 1MiB block, 8 queues, 1 thread configuration में था
  • random test 2×1GiB, 4KiB block, 1 queue, 1/2/4/8/16 threads configuration में था
  • sequential test में लगभग कोई अंतर नहीं था
    • क्योंकि default pSLC cache ही SATA SSD की maximum bandwidth और manufacturer sequential speed तक पहुंच गया था
    • लंबे और heavy benchmarks में अंतर दिखता है
  • latency काफी कम हुई
    • default state में idle के बाद NAND QLC native mode में read/write शुरू करता है, और SLC में reprogram होने तक delay रहता है
    • pSLC mode में हमेशा pSLC state रहती है, इसलिए latency कम होती है
  • random speed में sequential speed की तुलना में बड़ा अंतर था
  • QD1 में read speed 16% से अधिक और write speed 30% से अधिक बढ़ी

ATTO, 3DMark, PCMark 10 results

  • ATTO Disk Benchmark 512B से 8MiB तक block sizes, 256MB file size और Queue Depth 1/4 के साथ test किया गया
  • ATTO में pSLC mode SSD सभी block sizes पर default state SSD से आगे रहा
  • QD1 में भी वही pattern repeat हुआ, लेकिन कुछ block sizes पर अंतर QD4 से कम था
  • 3DMark Storage Benchmark में game loading, OBS 1080p 60FPS recording/streaming, game installation, game folder file transfer आदि शामिल हैं
  • 3DMark जैसे हल्के real-world environment में भी performance और latency का अंतर था, लेकिन everyday use में यह पूरी तरह महसूस हो, ऐसा जरूरी नहीं
  • PCMark 10 Full System Drive Benchmark productivity-focused है और इसमें write proportion 3DMark से ज्यादा है
  • PCMark 10 में real-world usage difference साफ था, और performance difference लगभग दोगुना था

Premiere Pro, booting, game loading

  • Adobe Premiere Pro 2021 test में लगभग 16.5GB, 4K resolution, 120Mbps bitrate और effects-heavy project को editable state तक open करने का time measure किया गया
  • Premiere Pro project loading मुख्यतः sequential read scenario था, इसलिए अंतर लगभग नहीं था और run-to-run variation के करीब था
  • game loading time की तुलना Final Fantasy XIV benchmark से की गई
  • DirectStorage और दूसरे API limitations की वजह से game loading में बड़ा फर्क महसूस करना मुश्किल है
  • Windows booting भी new system baseline पर था, लेकिन SSD पर applied features का उपयोग न कर पाने के कारण बड़ा अंतर नहीं आया

SLC cache और long-duration writing

  • आज कई SSD storage space के कुछ हिस्से को SLC Caching के रूप में use करते हैं
    • MLC, TLC, QLC NAND के कुछ हिस्से को per cell 1-bit storage area की तरह write/read buffer के रूप में use किया जाता है
    • buffer खत्म होने पर controller native NAND area में write करता है
  • IOmeter test result के अनुसार इस SSD का default pSLC cache dynamic है और लगभग 45GB लगता है
  • default state में cache खत्म होने तक average लगभग 493MB/s बना रहा
  • 45GB लिखने के बाद folding process शुरू होता है, और QLC SSD की कमजोरी सामने आती है
  • cache के बाद sustained write speed average लगभग 50MB/s तक गिर जाती है
  • pSLC conversion के बाद 120GB पूरी capacity को average 498MB/s पर लिखा गया
  • 500GB तक लिखकर capacity को 4 बार से ज्यादा बार repeatedly लिखने पर भी लगभग 500MB/s बना रहा
  • pSLC cache, folding और native area को मिलाकर average write speed difference लगभग 10x है

File copy, temperature, power

  • file copy test में RAM Disk से SSD में Windows 10 21H1 ISO 6.25GB और CSGO installation folder 25.2GB copy किया गया
  • दोनों test files default SSD के 45GB SLC cache से छोटी थीं, इसलिए realistic copy test में कोई अंतर नहीं था
  • बड़ी file test न करने का कारण यह था कि RAM Disk के लिए उपलब्ध memory 32GB तक limited थी
  • temperature test में SSD बहुत ज्यादा गर्म नहीं हुआ, और sensor NAND Flash sensor माना गया
  • power test में pSLC conversion के बाद efficiency काफी बढ़ी
    • default QLC state में 45GB cache से काफी ज्यादा बड़े test में यह 55MB/s से कम speed पर लंबे समय तक चला, इसलिए efficiency कम थी
    • pSLC mode में अपनी capacity के दोगुने तक write करने के दौरान bandwidth नहीं गिरी और power consumption भी कम था
  • pSLC mode में power consumption घटने का कारण यह है कि SLC NAND केवल 2 logical levels use करता है, इसलिए required threshold voltage कम होता है
  • QLC NAND 16 logical levels use करता है, इसलिए higher threshold voltage चाहिए
  • idle state में भी pSLC mode का power consumption कम था

निष्कर्ष

  • अगर procedure सही तरीके से नहीं किया गया, तो SSD damage हो सकता है, इसलिए सावधानी जरूरी है
  • pSLC conversion का performance difference scenario के अनुसार बदलता है
    • छोटे sequential benchmarks, small file copy, game loading और Windows booting में अंतर कम है
    • random performance, latency, productivity tests और long-duration writes में अंतर बड़ा है
  • सबसे बड़ा बदलाव endurance है, calculation के अनुसार TBW 120TB से 4,000TB हो जाता है
  • इसके बदले usable capacity 500GB से घटकर लगभग 120GB रह जाती है

1 टिप्पणियां

 
GN⁺ 2024-05-20
Hacker News की राय
  • सस्ते DRAM-less SSD को pSLC मोड में इस्तेमाल करने के लिए इतनी मशक्कत करने की ज़रूरत नहीं है
    बस कुल क्षमता का केवल 25~33% इस्तेमाल करने के लिए under-provisioning कर दें
    ज़्यादातर सस्ते DRAM-less कंट्रोलर whole-disk caching मोड में काम करते हैं, इसलिए वे पहले सभी writes को pSLC में करते हैं और cells भर जाने के बाद ही कुछ cells को TLC/QLC में फिर से समूहित करके जगह खाली करते हैं
    TLC हो तो डिस्क के 1/3, QLC हो तो 1/4 आकार का ही partition बनाएं और बाकी खाली जगह को TRIM की हुई हालत में कभी इस्तेमाल न होने दें, तो writes हमेशा pSLC में होंगी
    जिस SSD में आपकी रुचि है वह इस तरह काम करता है या नहीं, यह जाँचने के लिए उस मॉडल का "HD Tune" full-disk write benchmark खोजें। अगर शुरुआती 1/3~1/4 हिस्सा तेज़ हो और बाकी हिस्से में रफ्तार बुरी तरह गिर जाए, तो उसे whole-disk caching मोड मान सकते हैं

    • जिज्ञासा है कि यह कैसे पक्का किया जाए कि यह स्थिति लगातार बनी रहती है
      डिस्क के सिर्फ एक हिस्से को partition बनाने का तरीका 160GB SCSI के ज़माने वाले “सिर्फ बाहरी sectors इस्तेमाल करें” जैसा लगता है
    • अगर LBA के सिर्फ एक हिस्से तक access किया जाए, तो आदर्श FTL वास्तव में ऐसा ही व्यवहार करेगा
      हालांकि जैसा कहा गया, निर्माता firmware को अलग तरह से tune कर सकता है, और यह modification लगभग guarantee देता है कि पूरी जगह SLC के तौर पर इस्तेमाल हो
    • मूल लेख के अंत में “SLC CACHING” section देखें
      इस approach में असली SLC cache 120GB भी हो तो यह शायद 45GB तक ही ठीक से काम करेगा, क्योंकि SLC पूरी तरह खत्म होने से पहले ही paging के लिए process शुरू हो जाता है
      अगर drive की SLC क्षमता का 66% चाहिए ही नहीं, तो छोटा partition वाला तरीका आसान और सुरक्षित है
    • कैसे guarantee कर सकते हैं कि खाली जगह TRIM हो चुकी है? जिज्ञासा है कि क्या डिस्क के केवल कुछ हिस्सों पर TRIM किया जा सकता है
  • यह hacking असल में 480GB SSD को 120GB SSD में बदलने जैसी है
    बदले में write endurance, यानी failure की उम्मीद से पहले लिखे जा सकने वाले data की मात्रा 120TB से 4000TB हो जाती है, इसलिए log storage disk जैसी चीज़ों के लिए यह बहुत उपयोगी trade-off हो सकता है
    मैंने manufacturers को ऐसा option देते नहीं देखा; जिज्ञासा है कि वे ऐसा क्यों नहीं करते

    • कुछ कंपनियां industrial use के लिए SLC SSD बेचती हैं
      उदाहरण के लिए Swissbit जैसी कंपनियां TLC या QLC flash का इस्तेमाल करती हैं, लेकिन उसे उस mode में इस्तेमाल न करने वाले products industrial use के लिए बेचती हैं
    • लेखक कहता है कि उसने write amplification factor को 3.8 से 2.0 तक घटाया और फिर endurance 30 गुना बढ़ने की गणना करता है—यह बात समझ नहीं आती
      उस हिसाब से तो करीब 2 गुना की उम्मीद होगी
      देखने में लगता है कि शुरुआती value के लिए OEM warranty figure 120TBW लिया गया है, और final value के लिए NAND की P/E cycle specification इस्तेमाल की गई है, इसलिए यह संदिग्ध लगता है
      अगर मैंने कुछ छोड़ा है, तो वह यह होगा कि pSLC mode cell programming voltage को काफी घटाकर P/E cycles को नाटकीय रूप से बढ़ा देता है, लेकिन वह write amplification factor में शामिल होना चाहिए लगता है
    • जिज्ञासा है कि ZFS या Synology के cache disk के तौर पर यह उपयोगी होगा या नहीं। हालांकि कुछ अतिरिक्त tuning की ज़रूरत होगी
    • Manufacturers पहले से ही TLC drive के रूप में ऐसी चीज़ देते हैं
      यह hack data loss कर सकता है और supported भी नहीं है, लेकिन TLC drive supported होती है
      यह तरीका 120GB पर 4000TB write endurance देता है, लेकिन 200 डॉलर में 4TB TLC drive खरीदी जा सकती है जिसमें 3000TB write endurance मिलती है
    • data retention firmware implementation पर निर्भर है, और user उसके अंदर बिल्कुल नहीं देख सकता
      ज़्यादातर consumer drives में retention कम होने की संभावना है
  • लेख में जो बात खास तौर पर उभरकर नहीं कही गई, वह यह है कि endurance और data retention का आपस में बहुत गहरा संबंध है
    flash cells cycles से गुजरते-जाते इस तरह घिसते हैं कि leakage बढ़ती है, इसलिए cycle जितने ज़्यादा हों, charge उतनी जल्दी खोता है
    SLC को QLC की तरह 16 states अलग-अलग पहचानने के बजाय सिर्फ 2 states अलग करनी होती हैं, इसलिए समान cycle count पर SLC mode में data कहीं ज़्यादा समय तक रहता है
    यानी यह modification extreme endurance के साथ-साथ retention भी देता है
    Manufacturers आम तौर पर इसे “M cycles के बाद N साल” जैसे लिखते हैं; शुरुआती SLC को 100K cycles के बाद 10 साल के तौर पर rate किया गया था, और यह QLC शायद QLC mode में 900 cycles के बाद 1 साल, SLC mode में 60K cycles के बाद 1 साल हो सकता है
    अगर blocks को वास्तव में इतनी बार cycle नहीं किया जाता, तो retention काफी ज़्यादा होगी
    पता नहीं firmware SLC mode blocks पर भी QLC के लिए ज़रूरी ज़्यादा मजबूत error correction code वैसा ही इस्तेमाल करता है या नहीं, लेकिन अगर करता है तो reliability भी और बढ़ेगी

  • करीब 10 साल पहले benchmark के लिए मुझे आखिरी production batches के आसपास के कुछ FusionIO SLC cards मिले थे
    software एक in-memory database था, जिसके customer capacity बढ़ाकर इस्तेमाल करना चाहते थे, और सचमुच Fusion cards को केवल swap के तौर पर इस्तेमाल किया गया
    कुछ मिनट data load करने के बाद kernel stable हो गया और यह सच में बहुत अच्छा चला
    500 डॉलर के computer पर अरबों records में प्रति सेकंड लाखों transactions निकल रहे थे, और card मेरी कार से भी महंगा था
    आजकल होता तो मैं ऐसा बिल्कुल नहीं करता, लेकिन वह बहुत प्रभावशाली hardware था

    • जहां मैं पहले काम करता था, वहां कह सकता हूं कि FusionIO ने कंपनी बचाई
      app का बड़ा हिस्सा एक single Postgres database पर टिका था, और horizontal scaling project शुरू करने की कोशिश हुई थी, लेकिन खास नतीजा नहीं निकला। हमें पता चला कि complex, पुराने codebase में partitioning कठिन होती है
      संयोग से FusionIO card आ गया, और सबसे सस्ते 2TB card से pgbench में read QPS लगभग 5,000 से 300k तक उछल गया
      उसके बाद हम vertical scaling को उम्मीद से कहीं ज़्यादा practical मानने लगे। hardware हमारी सोच से कहीं ज़्यादा काम कर सकता है
    • शुरुआती Intel SSDs के समय, मैंने एक ISP के साथ काम किया था जो mail server में 10K disks की 8-drive RAID-10 array इस्तेमाल कर रहा था
      बहुत सारे छोटे random I/O थे, इसलिए यह हमेशा अटका रहता था कि load संभल पाएगा या नहीं
      प्रयोग के तौर पर laptop drive form factor वाला 600GB Intel SSD भेजा, secondary node को down किया, SSD install किया और फिर उसे वापस up किया
      DRBD से array synchronize करने के बाद primary node को SSD node पर failover किया, SSD को logical volume में जोड़ा, फिर pvmove से 8-disk array के blocks SSD पर move किए
      कुछ घंटों तक load लगातार घटता रहा और अंत में लगभग गायब हो गया
      हथेली में आराम से आ जाने वाली एक चीज़ से 3.5-inch 10K disks की 8 drives को replace करना मज़ेदार था
    • 90s में ज़्यादा scaling की सख्त ज़रूरत वाले database के WAL data के लिए नई कार से महंगा battery-backed RAM भी इस्तेमाल किया जाता था
  • अगर embedded डिवाइस में eMMC इस्तेमाल कर रहे हैं, तो यह भी recommend करूँगा
    Linux सिस्टम में mmc-utils के mmc command से डिवाइस को pSLC mode में set किया जा सकता है
    U-Boot में भी यह संभव है, लेकिन command थोड़ी ज़्यादा मुश्किल है। इसे केवल एक बार program किया जा सकता है, इसलिए set करने के बाद वापस नहीं बदला जा सकता
    अगर मात्रा mass production वाली है, तो programming company यह setting और दूसरी eMMC settings पहले से configure करके दे सकती है

  • काश इस तरह की bus transfer rate तक गहराई में जाने वाली analysis ज़्यादा आम होती
    अच्छा होगा अगर हर SSD के लिए एक block diagram हो, जिसमें महत्वपूर्ण IC model names, operating clock frequencies, ICs के बीच bus width और operating speed लिखी हो

  • कुछ Kingston SSDs में manufacturer द्वारा दिए गए software tool से over-provisioning manage किया जा सकता है
    यानी capacity और endurance के बीच trade-off आप खुद चुन सकते हैं

    • फिर भी शायद cell में stored bits की संख्या नहीं बदलेगी
      उदाहरण के लिए, अगर over-provisioning 80% set करें, तो QLC capacity का 80% spare space के रूप में रखा जाएगा, और बचा 20% भी शायद QLC mode में ही इस्तेमाल होगा
      इसे ऐसे नहीं समझेगा कि SLC के 20% को over-provisioned SLC की तरह इस्तेमाल किया जा सकता है
  • अच्छा होगा अगर manufacturers driver setting जैसी किसी विधि से SSD को SLC तक downshift करके इस्तेमाल करने का तरीका दें

    • SSD खुद ऐसा न भी करे, फिर भी सभी flash chips में यह संभव है
      अगर आप खुद SSD बनाते हैं या SoC के extra pins पर flash सीधे connect करते हैं, तो उसे इस तरह program किया जा सकता है
      अगर demand पर्याप्त हो, तो NVMe में इसे provide करने के लिए extension करना भी संभव लगता है
    • Disk की अच्छी बात यह है कि शुरुआत से ही driver की जरूरत नहीं होती
      ऐसा feature आ भी जाए, तो Windows के लिए driver settings app open source में release नहीं होगा
    • तभी तो manufacturer के पास ज़्यादा पैसे कमाने का तरीका नहीं बचेगा, है न
  • मुझे लगा था कि यह hardware-level का फर्क है, इसलिए हैरानी हुई

    • कोई खास NAND chip cell per कितने bits store कर सकती है, यह hardware-level की बात होगी
      फिर भी, भले ही TLC या QLC supported हो, उनमें SLC implement करना संभव लगता है
      मेरे current computer में लगा Silicon Power NVMe SSD भी writes के लिए SLC इस्तेमाल करता है, और बाद में idle time में उस data को TLC में move करता दिखता है
      NAND को SLC mode में चलाना ऐसे drives का feature है, और इसे “SLC caching” कहा जाता है
    • TLC SSD के cells में 0 को 000 और 1 को 111 लिख दें, तो उसे असल में SLC SSD बनाना जाहिर तौर पर आसान है
      लेकिन सिर्फ इससे यह explain नहीं होता कि read और write TLC से कहीं ज़्यादा तेज़ क्यों होते हैं
      उदाहरण के लिए, अगर DRAM की तरह capacitor में charge के रूप में data store किया जाए, तो value लिखने के लिए R-2R ladder DAC और value पढ़ने के लिए flash ADC की कल्पना की जा सकती है। ऐसे case में noise आदि को ignore करें, तो cell per effective levels की संख्या के आधार पर speed difference नहीं होगा
      pSLC mode तेज़ क्यों है, इसका कारण लगता है कि flash को program और read कैसे किया जाता है, और flash memory की analog characteristics क्या हैं
      DRAM की तरह value store करने के लिए charge इस्तेमाल होता है, लेकिन यह simple capacitor नहीं, बल्कि double MOSFET gate में store होता है
      charge की मात्रा transistor के effective threshold voltage को बदलती है, और read करते समय यह देखने के लिए कई voltages लगाने पड़ते हैं कि transistor कब conduct करना शुरू करता है
      cell को program करते समय desired bit pattern के अनुरूप threshold voltage बनाने के लिए एक निश्चित मात्रा में charge inject करना पड़ता है। charge केवल inject किया जा सकता है, इसलिए ज़्यादा न भर जाए, इसके लिए छोटे pulses कई बार दिए जाते हैं, और बीच-बीच में read cycle से verify किया जाता है कि required level तक पहुँचा या नहीं
      इसलिए cell per जितने ज़्यादा levels होंगे, उतने ही shorter pulses और ज़्यादा read cycles चाहिए होंगे
      multi-level cell को single-level mode में program करें, तो एक बड़ा charge injection भी पर्याप्त हो सकता है, और read करते समय भी सिर्फ single reference पर conduction देखनी होती है
      संक्षेप में, pSLC में multi-level cell को खुद बदलने की जरूरत नहीं होती, लेकिन उस cell को program और read करने का तरीका बदलना पड़ता है। इसलिए related circuits कुछ हद तक अलग होने की संभावना अधिक है, और इसे purely firmware से implement नहीं किया जा सकेगा
      https://en.wikipedia.org/wiki/Flash_memory#Floating-gate_MOS...
      https://dr.ntu.edu.sg/bitstream/10356/80559/1/Read%20and%20w...
      https://people.engr.tamu.edu/ajiang/CellProgram.pdf
      http://nyx.skku.ac.kr/publications/papers/ComboFTL.pdf
  • सोच रहा हूँ कि क्या इसे पहले से घिस चुके SSD की life बढ़ाने में भी इस्तेमाल किया जा सकता है
    शायद चीन में कहीं ऐसा business हो, जहाँ ऐसे SSD लाकर उन्हें re-flash करके “new product” के रूप में बेचा जाता हो

    • मेरी जानकारी में एकमात्र rejuvenation process heat treatment है
      250°C पर लंबे समय तक expose करना, या 800°C जैसे ज़्यादा temperature पर कम समय के लिए treat करना
      https://m.hexus.net/tech/news/storage/48893-making-flash-mem...
      https://m.youtube.com/watch%3Fv%3DH4waJBeENVQ&sa=U&ved=2ahUK...
    • तकनीकी रूप से, QLC NAND जो अब QLC levels को distinguish नहीं कर पाता, उसे भी कुछ समय तक MLC की तरह इस्तेमाल किया जा सकता होगा, और practical तौर पर SLC की तरह लगभग हमेशा के लिए इस्तेमाल किया जा सकता होगा