डिस्क बफर

कंप्यूटर भंडारण में, डिस्क बफर (अक्सर अस्पष्ट रूप से डिस्क कैश या कैश बफर कहा जाता है) हार्ड डिस्क ड्राइव (HDD) या ठोस राज्य ड्राइव (SSD) में एम्बेडेड मेमोरी है जो बाकी कंप्यूटर और कंप्यूटर के बीच बफर (कंप्यूटर साइंस) के रूप में कार्य करता है। फिजिकल हार्ड डिस्क थाली  या फ्लैश मेमोरी जिसका उपयोग स्टोरेज के लिए किया जाता है। आधुनिक हार्ड डिस्क ड्राइव 8 से 256 मेबीबाइट ऐसी मेमोरी के साथ आते हैं, और ठोस राज्य ड्राइव 4 जीबी तक कैश मेमोरी के साथ आते हैं। 1980 के दशक के उत्तरार्ध से, बेचे गए लगभग सभी डिस्क में एम्बेडेड microcontroller  और या तो एक उन्नत प्रौद्योगिकी अटैचमेंट, सीरियल एटीए, एससीएसआई, या फाइबर चैनल इंटरफ़ेस है। ड्राइव सर्किटरी में आमतौर पर थोड़ी मात्रा मुख्य स्मृति होती है, जिसका उपयोग डिस्क प्लैटर से आने और जाने वाले डेटा को स्टोर करने के लिए किया जाता है।

डिस्क बफ़र भौतिक रूप से अलग है और कंप्यूटर की मुख्य मेमोरी में ऑपरेटिंग सिस्टम द्वारा आमतौर पर रखे गए पेज कैश से भिन्न रूप से उपयोग किया जाता है। डिस्क बफ़र को हार्ड डिस्क ड्राइव में माइक्रोकंट्रोलर द्वारा नियंत्रित किया जाता है, और पेज कैश को उस कंप्यूटर द्वारा नियंत्रित किया जाता है जिससे वह डिस्क जुड़ी हुई है। डिस्क बफर आमतौर पर काफी छोटा होता है, 8 एमबी से 4 जीबी के बीच होता है, और पेज कैश आमतौर पर सभी अप्रयुक्त मुख्य मेमोरी होती है। जबकि पेज कैश में डेटा का कई बार पुन: उपयोग किया जाता है, डिस्क बफर में डेटा का शायद ही कभी पुन: उपयोग किया जाता है। इस अर्थ में, डिस्क कैश और कैश बफ़र मिथ्या नाम हैं; एम्बेडेड नियंत्रक की मेमोरी को अधिक उचित रूप से डिस्क बफर कहा जाता है।

ध्यान दें कि डिस्क सरणी नियंत्रक, डिस्क नियंत्रकों के विपरीत, आमतौर पर लगभग 0.5–8 GiB की सामान्य कैश मेमोरी होती है।

रीड-फॉरवर्ड/रीड-बैक
जब एक डिस्क का नियंत्रक भौतिक पढ़ने को निष्पादित करता है, तो एक्ट्यूएटर डिस्क रीड-एंड-राइट हेड | रीड/राइट हेड को सही सिलेंडर (या उसके पास) में ले जाता है। कुछ व्यवस्थित होने और संभावित रूप से ठीक होने के बाद रीड हेड ट्रैक डेटा लेना शुरू कर देता है, और केवल तब तक इंतजार करना बाकी रहता है जब तक कि प्लैटर रोटेशन अनुरोधित डेटा नहीं लाता।

इस प्रतीक्षा के दौरान अनुरोध से पहले पढ़ा गया डेटा अनुरोधित नहीं है, लेकिन मुफ़्त है, इसलिए आमतौर पर बाद में अनुरोध किए जाने पर डिस्क बफर में सहेजा जाता है।

इसी तरह, अनुरोध किए गए डेटा के पीछे डेटा को मुफ्त में पढ़ा जा सकता है यदि सिर ट्रैक पर रह सकता है क्योंकि निष्पादित करने के लिए कोई अन्य रीड नहीं है या अगला एक्चुएटिंग बाद में शुरू हो सकता है और अभी भी समय पर पूरा हो सकता है। यदि कई अनुरोधित रीड एक ही ट्रैक पर हैं (या स्पाइरल ट्रैक पर पास में हैं), तो उनके बीच का अधिकांश बिना अनुरोध वाला डेटा आगे और पीछे दोनों तरह से पढ़ा जाएगा।

गति मिलान
कंप्यूटर के लिए डिस्क के I/O इंटरफ़ेस की गति लगभग कभी भी उस गति से मेल नहीं खाती जिस पर बिट्स को हार्ड डिस्क प्लैटर में और उससे स्थानांतरित किया जाता है। डिस्क बफ़र का उपयोग किया जाता है ताकि I/O इंटरफ़ेस और डिस्क रीड/राइट हेड दोनों पूर्ण गति से काम कर सकें।

त्वरण लिखें
डिस्क का एम्बेडेड माइक्रोकंट्रोलर मुख्य कंप्यूटर को संकेत दे सकता है कि डेटा को वास्तव में प्लैटर में लिखे जाने से पहले राइट डेटा प्राप्त करने के तुरंत बाद डिस्क राइट पूरा हो गया है। यह शुरुआती संकेत मुख्य कंप्यूटर को काम करना जारी रखने की अनुमति देता है, भले ही डेटा वास्तव में अभी तक लिखा नहीं गया हो। यह कुछ हद तक खतरनाक हो सकता है, क्योंकि अगर चुंबकीय मीडिया में डेटा स्थायी रूप से तय होने से पहले बिजली खो जाती है, तो डिस्क बफर से डेटा खो जाएगा, और डिस्क पर फाइल सिस्टम असंगत स्थिति में रह सकता है।

कुछ डिस्क पर, लेखन पूर्ण होने का संकेत देने और डेटा को ठीक करने के बीच की यह कमजोर अवधि मनमाने ढंग से लंबी हो सकती है, क्योंकि नए आने वाले अनुरोधों द्वारा लेखन को अनिश्चित काल के लिए स्थगित किया जा सकता है। इस कारण से, लेखन त्वरण का उपयोग विवादास्पद हो सकता है। हालाँकि, कैशिंग डेटा के लिए बैटरी-समर्थित मेमोरी सिस्टम का उपयोग करके संगति को बनाए रखा जा सकता है, हालाँकि यह आमतौर पर केवल उच्च-अंत RAID नियंत्रकों में पाया जाता है।

वैकल्पिक रूप से, कैशिंग को केवल तब बंद किया जा सकता है जब डेटा की अखंडता लेखन प्रदर्शन से अधिक महत्वपूर्ण मानी जाती है। एक अन्य विकल्प डिस्क को सावधानीपूर्वक प्रबंधित क्रम में डेटा भेजना और कैश फ्लश कमांड को सही स्थानों पर जारी करना है, जिसे आमतौर पर बाधा लिखें  के कार्यान्वयन के रूप में जाना जाता है।

कमांड कतार
नए सीरियल ATA और अधिकांश SCSI डिस्क कई कमांड को स्वीकार कर सकते हैं, जबकि कोई भी कमांड कमांड क्यूइंग के माध्यम से ऑपरेशन में है (देखें नेटिव कमांड क्यूइंग और टैग की गई कमांड क्यूइंग )। ये आदेश डिस्क के एम्बेडेड नियंत्रक द्वारा पूर्ण होने तक संग्रहीत किए जाते हैं। एक लाभ यह है कि कमांड को अधिक कुशलता से संसाधित करने के लिए फिर से आदेश दिया जा सकता है, ताकि डिस्क के समान क्षेत्र को प्रभावित करने वाले कमांड को एक साथ समूहीकृत किया जा सके। एक पंक्तिबद्ध लेखन के गंतव्य पर डेटा को पढ़ने के संदर्भ में, लिखित डेटा वापस कर दिया जाएगा।

एनसीक्यू आमतौर पर सक्षम लेखन बफरिंग के संयोजन में प्रयोग किया जाता है। फ़ोर्स यूनिट एक्सेस (FUA) बिट के साथ 0 पर सेट और सक्षम राइट बफ़रिंग के साथ FPDMA कमांड को पढ़ने/लिखने के मामले में, एक ऑपरेटिंग सिस्टम डेटा को भौतिक रूप से मीडिया में लिखे जाने से पहले राइट ऑपरेशन को समाप्त होते हुए देख सकता है। FUA बिट को 1 पर सेट करने और बफ़रिंग लिखने में सक्षम होने के मामले में, डेटा को भौतिक रूप से मीडिया में लिखे जाने के बाद ही ऑपरेशन वापस लिखें।

कैश फ्लशिंग
डिस्क डिवाइस के राइट कैश में स्वीकार किए गए डेटा को अंततः डिस्क प्लैटर्स में लिखा जाएगा, बशर्ते फर्मवेयर दोष के परिणामस्वरूप कोई संसाधन भुखमरी न हो, और कैश्ड राइट्स को डिस्क प्लैटर्स के लिए मजबूर करने से पहले डिस्क बिजली की आपूर्ति बाधित न हो। राइट कैश को नियंत्रित करने के लिए, ATA विनिर्देश में फ्लश कैश (E7h) और फ्लश कैश EXT (EAh) कमांड शामिल हैं। ये आदेश डिस्क को उसके कैश से डेटा लिखने को पूरा करने का कारण बनते हैं, और डिस्क कैश में डेटा के डिस्क मीडिया में लिखे जाने के बाद डिस्क अच्छी स्थिति में वापस आ जाएगी, और फ्लैश मीडिया पर ये कमांड फ्लैश अनुवाद परत  मैपिंग टेबल को तुरंत सहेज लेंगे। इसके अलावा, सॉफ्ट रीसेट या स्टैंडबाय तत्काल कमांड जारी करके कैश को कम से कम कुछ डिस्क में फ्लश करना शुरू किया जा सकता है। कुछ फाइल सिस्टम (उदाहरण के लिए, ext4) में राइट बैरियर के कार्यान्वयन के लिए लिनक्स में अनिवार्य कैश फ्लशिंग का उपयोग किया जाता है, साथ में जर्नलिंग ब्लॉक डिवाइस कमिट ब्लॉक के लिए फोर्स यूनिट एक्सेस राइट कमांड के साथ।

फोर्स यूनिट एक्सेस (एफयूए)
फोर्स यूनिट एक्सेस (एफयूए) एक I/O राइट कमांड विकल्प है जो लिखित डेटा को स्थिर भंडारण के लिए बाध्य करता है। FUA राइट कमांड (WRITE DMA FUA EXT – 3Dh, DMA क्यूयूड फूए एक्सट लिखें –  3एह, एक से अधिक फूए एक्सट लिखें –  CEh), FUA के बिना संबंधित कमांड के विपरीत, मीडिया को सीधे डेटा लिखें, भले ही डिवाइस में कैशिंग लिखना सक्षम हो या नहीं। मीडिया को डेटा लिखे जाने तक FUA राइट कमांड वापस नहीं आएगा, इस प्रकार एक पूर्ण FUA राइट कमांड द्वारा लिखा गया डेटा स्थायी मीडिया पर होता है, भले ही फ्लश कैश कमांड जारी करने से पहले डिवाइस को बंद कर दिया गया हो। FUA SCSI कमांड सेट में दिखाई दिया, और बाद में SATA द्वारा नेटिव कमांड क्यूइंग के साथ अपनाया गया। एफयूए अधिक सुक्ष्म है क्योंकि यह एक एकल लेखन ऑपरेशन को स्थिर मीडिया के लिए मजबूर करने की अनुमति देता है और इस प्रकार पूरे डिस्क कैश को फ्लश करने वाले आदेशों की तुलना में कम समग्र प्रदर्शन प्रभाव होता है, जैसे कि एटीए फ्लश कैश कमांड का परिवार। Windows (Vista और up) Transactional NTFS के भाग के रूप में FUA का समर्थन करता है, लेकिन केवल SCSI या फाइबर चैनल डिस्क के लिए जहाँ FUA के लिए समर्थन आम है। यह ज्ञात नहीं है कि क्या एक SATA ड्राइव जो FUA राइट कमांड का समर्थन करती है, वास्तव में कमांड का सम्मान करेगी और निर्देश के अनुसार डिस्क प्लैटर्स पर डेटा लिखेगी; इस प्रकार, विंडोज 8 और विंडोज सर्वर 2012 इसके बजाय कुछ लेखन कार्यों के बाद डिस्क राइट कैश को फ्लश करने के लिए कमांड भेजते हैं। हालांकि लिनक्स कर्नेल ने 2007 के आसपास NCQ के लिए समर्थन प्राप्त किया, SATA FUA डिफ़ॉल्ट रूप से अक्षम रहता है क्योंकि 2012 में पाए गए प्रतिगमन के कारण जब FUA के लिए कर्नेल के समर्थन का परीक्षण किया गया था। Linux कर्नेल ब्लॉक स्तर स्तर पर FUA का समर्थन करता है।

यह भी देखें

 * हाइब्रिड सरणी
 * हाइब्रिड ड्राइव