حافظه دفتر یادداشت

حافظه دفتر یادداشت (انگلیسی: (SPM) ScratchPad Memory)، همچنین به عنوان دفتر یادداشت (scratchpad)، رم (حافظه) دفتر یادداشت یا حافظه محلی در اصطلاحات کامپیوتر، یک حافظه داخلی سرعت بالا است که برای نگداری موقت محاسبات، داده‌ها، و عملیات دیگر در حال اجرا استفاده می‌شود. با اشاره به یک ریزپردازنده (واحد پردازش مرکزی) ,scratchpad به یک مدار حافظه مخصوص با سرعت بالا که برای نگهداری اطلاعات کوچک برای بازیابی سریع استفاده می‌شود، اشاره دارد. این حافظه شبیه از لحاظ اندازه و استفاده به یک دفتر یادداشت در زندگی است: یک مجموعه از کاغذها برای یادداشت‌های اولیه، طرح‌ها یا نوشته‌ها، و غیره.
این حافظه را می‌توان شبیه به حافظه نهان L1 در نظر گرفت که در آن، نزدیکترین حافظه ای است به واحد محاسبه و منطق پس از ثبات‌های پردازنده و با دستورالعمل‌های صریح و اختصاصی برای انتقال داده‌ها به حافظه اصلی یا از حافظه اصلی، که اغلب مبتنی بر استفاده از انتقال داده DMA است. در مقایسه با یک سیستم که از حافظه‌های نهان(cache) استفاده می‌کند، یک سیستم با این حافظه‌ها(scratchpad)، یک سیستم با تاخیرهای حافظه دسترسی غیریکپارچه است، زیرا تاخیرهای دسترسی به انواع مختلف این حافظه و حافظه اصلی تفاوت دارد. یک تفاوت دیگر که یک سیستم از حافظه‌های نهان استفاده می‌کند، این است که این حافظه معمولاً یک کپی از داده‌ها را ندارد که در حافظه اصلی ذخیره شده‌اند.
Scratchpadها برای ساده‌سازی منطق ذخیره‌سازی نهان(caching) استفاده می‌شوند و برای تضمین اینکه یک واحد می‌تواند بدون درگیری حافظه اصلی در یک سیستم با استفاده از پردازنده‌های چندگانه کار کند، به خصوص در سیستم چند پردازنده‌ای سیستم بر تراشه(multiprocessor system-on-chip) که برای سیستم‌های نهفته هستند. آنها عمدتاً برای ذخیره‌سازی نتایج موقت (همان‌طور که در پشته CPU یافت می‌شوند) مناسب می‌باشند و معمولاً نیازی به درخواست دادن به حافظه اصلی نیستند. با این حال هنگامی که توسط DMA تغذیه می‌شود، می‌توانند به جای یک حافظه نهان برای بررسی وضعیت حافظه اصلی آهسته‌تر، استفاده شوند. مسائل مربوط به مکان مرجع در رابطه با کارایی استفاده می‌شود؛ اگر چه بعضی از سیستم‌ها اجازه دسترسی به DMA را برای دسترسی به مجموعه داده‌های مستطیلی می‌دهند. یکی دیگر از تفاوت این است که scratchpadها به صراحت و به صورت مستقیم توسط برنامه‌ها دستکاری می‌شود. آنها ممکن است برای برنامه‌های بی درنگ مفید باشند، در حالی که زمان‌بندی قابل پیشبینی توسط رفتار حافظه نهان مانع می‌شده‌است.
Scratchpadها در پردازنده‌های mainstream desktop استفاده نمی‌شوند، زیرا برای سامانه موروثی که از نسل به نسل به کار می‌روند، عموماً لازم است که حجم حافظه موجود در تراشه قابل تغییر باشد.. آنها بهتر در سیستم‌های نهفته به کار برده بشوند مثل پردازنده‌های خاص منظوره و کنسول‌های بازی، جایی که تراشه‌ها اغلب به عنوان MPSoC تولید می‌شوند که نرم‌افزار اغلب به یک پیکربندی سخت‌افزاری تنظیم می‌شود.

کنترل حافظه نهان در مقابل scratchpadها

بعضی از معماریها مانند PowerPC، برای اجتناب از نیاز به قفل کردن cacheline یا scratchpadها از طریق استفاده از دستورالعمل‌های کنترل حافظه، تلاش می‌کنند. علامتگذاری یک قسمت از حافظه با «Data Cache Block: Zero» (تخصیص یک خط اما تنظیم کردن محتویات آن به صفر به جای خواندن از حافظه اصلی) و بعد از استفاده، دور انداختن آن («Data Cache Block: Invalidate»، نشان می‌دهد که حافظه اصلی هیچ داده به روز رسانی شده را دریافت نمی‌کند) حافظه پنهان ساخته شده تا به عنوان scratchpad رفتار کند. عمومیت در آن نگهداری می‌شود که این‌ها نکات هستند و سخت‌افزارهای زیربنایی بدون توجه به اندازه واقعی حافظه پنهان به درستی کار می‌کنند.