Payamvdn/NorthPersian_fa_wiki huggingface dataset:
یانگ ایک-جون (؛ زادهٔ ) کارگردان فیلم، و بازیگر سینما اهل کره جنوبی است. از فیلم ها یا برنامه های تلویزیونی که وی در آن نقش داشته است می توان به "سرزمین ما" و "عازم جهنم" (۲۰۲۱) اشاره کرد.
بلوار شهید مسعود منفرد نیاکی (با نام پیشین: خیابان کوهستان) بلواری ۳۵ متری مابین محلات سعادت آباد و شهرک غرب تهران می باشد. این بلوار از دره فرحزاد شروع شده و با گذر از بزرگراه یادگار امام به کمک «پل کوهستان» (تقاطع بزرگراه یادگار امام و خیابان منفرد نیاکی) امتداد یافته و از سمت شرق به خیابان سرو متصل می شود و از جنوب با خیابان شهید فرحزادی تقاطع دارد. میدان کتاب. «ایستگاه مترو میدان کتاب» از خط ۷ متروی تهران بعنوان اولین ایستگاه این خط مترو در این خیابان واقع است و درآینده با عبور شرقی غربی خط ۱۰ متروی تهران ایستگاه تقاطعی خواهد شد.
یعقوب عمامه پیچ (زادهٔ ۲ مهر ۱۳۲۵) نقاش ایرانی است. او همچنین در زمینه طراحی، نیز فعالیت دارد. او در سال ۱۳۴۸ از هنرستان میرک تبریز دیپلم گرفت و در ۱۳۵۶ از دانشکده هنرهای زیبای دانشگاه تهران در رشته نقاشی فارغ التحصیل شد. زندگی نامه. یعقوب عمامه پیچ دوم مهر ۱۳۲۵ در تبریز متولد شده است. او در سال ۱۳۴۸ از هنرستان میرک تبریز دیپلم گرفت و در ۱۳۵۶ از دانشکده هنرهای زیبای دانشگاه تهران در رشته نقاشی فارغ التحصیل شد. از ۱۳۵۶ تا ۱۳۵۷ به تحصیل در دانشگاه بوزار پاریس پرداخت که ناتمام ماند. او از نقاشان منظره پرداز مدرن محسوب می شود. و باور دارد در نقاشی از منظره امکان نوآوری و امر خلاقه وجود دارد. او در توضیح مناظرش می گوید: منظره، انگار ناخواسته خودش را به من تحمیل کرد اما در نهایت توفیری نمی کند و هنرمند روی ایده های مختلفی کار می کند. در این سال ها با منظره برخوردهای مختلفی داشته ام؛ هم عکاسی کرده ام و هم کارهای کلاژ و نقاشی. حتی تجربه هایی داشته ام که ترکیبی از متریال های نامتجانس است. او همچنین از سال ۱۳۶۴ تا کنون در دانشکده صدا و سیما مشغول به آموزش هنری ست.
پِمیلیا معمولا به عنوانِ گل برنجی ها نام یک سرده از تیره مازریونیان است.
گل برنجی برگ دراز نام یک گونه از سرده گل برنجی ها است.
گل برنجی کوهی نام یک گونه از سرده گل برنجی ها است.
گل برنجی ساحلی نام یک گونه از سرده گل برنجی ها است.
پِمیلیا لایلی معمولا به عنوانِ گل برنجی شنزار جنوب ، نام یک گونه از سرده گل برنجی ها است.
کلاه سبز کوتوله نام یک گونه از سرده ارکیده های کلاه سبز است.
حافظه نهان ( , یا در AUE) در رایانش، سخت افزار یا نرم افزاری است که اطلاعات را ذخیره می کند به طوری که درخواست های آینده برای داده ای می تواند سریع تر انجام شود؛ داده ذخیره شده در حافظه نهان ممکن است نتیجه محاسبات قبلی یا یک کپی از اطلاعات ذخیره شده در جای دیگر باشد. یک عملیات موفق در حافظه نهان هنگامی رخ می دهد که اطلاعات درخواست شده در حافظه موقت موجود باشد، در حالی که اگر آن اطلاعات در حافظه یافت نشود عملیات ناموفق است. عملیات موفق در حافظه پنهان برای خواندن داده از این حافظه به کار گرفته می شود، که سریع تر از جمع آوری یک نتیجه یا خواندن از یک حافظه کندتر است؛ بنابراین، درخواست های بیشتری که توسط حافظه پنهان ارائه پاسخ داده شود، باعث بالا رفتن سرعت سیستم عامل می شود. برای مقرون به صرفه بودن و برای استفاده کارآمد از داده، حافظه های نهان باید نسبتاً کوچک باشند. با این وجود، حافظه های پنهان خود را در بسیاری از زمینه های محاسبات نشان داده اند، زیرا نرم افزارهای کاربردی رایج به مقادیر بالایی از داده با مرجع محلی دسترسی دارند. چنین روش های دسترسی نشان دهنده موقعیت مکانی زمانی است، که در آن داده هایی درخواست شده
است که اخیراً درخواست شده است، و آدرس حافظه، جایی که اطلاعات درخواست شده است به صورت فیزیکی نزدیک به داده هایی که قبلاً درخواست شده اند، ذخیره شده است. ضرورت. یک همبستگی ذاتی بین اندازه و سرعت وجود دارد (با توجه به این که یک منبع بزرگتر فضاهای فیزیکی بیشتری را فراهم می کند) اما همچنین یک تعادل بین تکنولوژی های گران قیمت (مانند SRAM) با کالاهای ارزان تری که به راحتی تولید انبوه می شوند (مانند DRAM یا سخت دیسک ها)وجود دارد. بافر ارائه شده توسط یک حافظه پنهان مزایای پهنای باند و تاخیر فراهم: تأخیر. یک منبع بزرگتر، تاخیر قابل ملاحظه ای برای دسترسی به اطلاعات دارد؛ مثلاً در پردازنده مدرن با فرکانس GHz 4، صدها چرخه ساعت برای رسیدن به DRAM طول می کشد. این امر با خواندن در بخش های بزرگ، با امید به آن که خواندن در آینده از نقاط نزدیک به آن باشد، کاهش یابد. پیش بینی یا پیشفرض صریح نیز ممکن است باعث شود که بتوان حدس زد در آینده چیزی که خوانده می شود از کجا می آید و در زمان های پیش رو به درخواست ها جواب داده شود؛ اگر به درستی انجام شود، تأخیر به طور کامل از بین می رود. کارایی. استفاده از حافظه پنهان همچنین باعث می شود تا
میزان تولید بیشتر از منابع زیرزمینی، با جمع آوری چندین انتقال fine grain به درخواست های بزرگتر و کارآمد تر انجام شود. در مورد مدارات DRAM، ممکن است با داشتن یک خط انتقال داده وسیع تر باشد. برای مثال، یک برنامه که به بایت ها را در یک فضای آدرس ۳۲ بیتی دسترسی دارد را در نظر بگیرید، اما توسط یک خط انتقال داده ۱۲۸ بیت بیرون از تراشه استفاده می شود؛ دسترسی های ذخیره نشده در حافظه پنهان اجازه می دهد تا ۱/۱۶ از کل پهنای باند مورد استفاده قرار گیرد، و ۸۰٪ از عملیات انتقال داده ها، به جای خود داده ها، مربوط به آدرس های حافظه خواهد بود. خواندن تکه های بزرگتر، کسری از پهنای باند مورد نیاز برای ارسال اطلاعات آدرس را کاهش می دهد. عملیات. سخت افزار پیاده سازی حافظه نهان به عنوان یک بلوک از حافظه برای ذخیره سازی موقت داده ای که احتمال استفاده مجدد از آن وجود دارد قرار گیرد. واحد پردازش مرکزی (CPU) و هارد دیسک (هارد دیسک) اغلب از حافظه پنهان استفاده می کنند، همانند مرورگرهای وب و سرورهای وب. یک حافظه پنهانی از مجموعه ای از ورودی ها ساخته شده است. هر ورودی مربوط به "داده است"، که یک کپی از داده های مشابه در برخی از فضاهای "پ
شتیبان است". هر ورودی همچنین یک "تگ" دارد که هویت داده ها را در فضای پشتیبان تعیین می کند و مشخص می کند که کدام ورودی یک کپی است. هنگامی که یک درخواست دهنده به حافظه پنهان (یک پردازنده، مرورگر وب، سیستم عامل) نیاز به دسترسی به داده هایی دارد که در فضای پشتیبان وجود داشته باشد، ابتدا حافظه پنهان را بررسی می کند. اگر یک ورودی با یک تگ متناظر با داده مورد نظر پیدا شود، داده ها در ورود به جای آن استفاده می شود. این وضعیت به عنوان عملیات موفق حافظه پنهان شناخته شده است. به عنوان مثال، یک برنامه مرورگر وب ممکن است حافظه محلی خود را بر روی دیسک بررسی کند تا ببینید آیا یک کپی محلی از محتویات یک صفحه وب در یک URL مشخص دارد. در این مثال، URL برچسب است و محتوای صفحه وب، داده ها هستند. درصد دسترسی های موفق در حافظه نهان، به عنوان میزان ضربه یا نسبت ضربه کش شناخته می شود. وضعیت دیگر، زمانی رخ می ذهد که حافظه پنهان بررسی می شود و حاوی هیچ ورودی با برچسب مورد نظر نیست، که این رویداد به عنوان عملیات ناموفق حافظه پنهان شناخته می شود. در این مواقع به دسترسی گران تر از داده ها از فضای پشتیبان نیاز است. هنگامی که اطلاعات درخواست
شده بازیابی می شود، به طور معمول در حافظه پنهان کپی می شود، که برای دسترسی بعدی آماده است. در طول عملیات ناموفق حافظه پنهان، برخی دیگر از موجودی حافظه پنهان قبلاً حذف شده اند تا اطلاعات جدید را بازیابی کند. الگوریتم جستجوی کاشف که برای انتخاب جایگزینی انتخاب شده است به عنوان سیاست جایگزینی شناخته می شود. یکی از سیاست های جایگزین محبوب «که اخیراً استفاده شده» (LRU) قدیمی ترین ورودی را جایگزین می کند است، ورودی که اخیراً نسبت به ورودی های دیگر دسترسی کمتری به آن شده است (به الگوریتم cache مراجعه کنید). الگوریتم های کارآمد تر ذخیره سازی، فرکانس عملیات موفق در حافظه پنهان در مقابل اندازه محتویات ذخیره شده، و همچنین تأخیر و کارایی برای هر دو حافظه پنهان و فضای پشتیبان را محاسبه می کنند. این عملیات برای مقادیر بالای داده، تاخیرهای طولانی تر و کارایی کندتر مانند کار با دیسک های سخت و شبکه ها خوب کار می کند، اما برای استفاده در یک حافظه CPU کارآمد نیست. نوشتن قوانین. هنگامی که یک سیستم اطلاعات را در حافظه پنهان می نویسد، باید در بعضی نقاط این اطلاعات را در فضای پشتیبان نیز بنویسد. زمان بندی این نوشتن توسط آنچه که به
عنوان "سیاست نوشتن" شناخته می شود کنترل می شود. دو رویکرد نوشتن اساسی وجود دارد: یک حافظه نهان با استفاده از معماری write-back برای پیاده سازی پیچیده تر است، زیرا ردیابی هر یک از مکان هایی که در آن نوشته شده است لازم است و آن ها را به عنوان dirty برای نوشتن در فضای پشتیبانی نشان دهد. داده ها در این مکان ها فقط در زمانی که آن ها از حافظه پنهان خارج شده اند، به فضای پشتیبان بازگردانده می شوند، اثری که به عنوان lazy write "اشاره شده است". به همین دلیل، عملیات خواندن ناموفق در حافظه پنهان از نوع write-back (که نیاز به جایگزینی یک بلوک با بلوک دیگر را دارد)، اغلب نیاز به دو دسترسی حافظه برای سرویس دهی دارد: یکی برای نوشتن داده های جایگزین از حافظه پنهان در فضای پشتیبان، و دیگری برای بازیابی اطلاعات مورد نیاز است. سیاست های دیگر ممکن است باعث نوشتن اطلاعات نیز شوند. درخواست دهنده ممکن است تغییرات زیادی در داده ها در حافظه پنهان ایجاد کند و سپس به حافظه پنهان برای نوشتن داده ها به صورت صریح اطلاع می دهد. از آنجاییکه هیچ اطلاعاتی در مورد عملیات نوشتن برای درخواست کننده بازگردانده نشده است، باید تصمیم گیری در مورد نو
شتن ناموفق اتخاذ شود، چه داده ها در حافظه پنهان قرار بگیرند یا نگیرند. این عملیات توسط این دو رویکرد تعریف شده است: هر دو سیاست write-through و write-back می توانند از هر یک از این سیاست های write-miss استفاده کنند، اما معمولاً به این ترتیب به یکدیگر متصل می شوند: واحدهای دیگر غیر از حافظه پنهان ممکن است داده ها را در حافظه های پشتیبانی تغییر دهند، به این صورت که کپی داده در حافظه پنهان ممکن است از تاریخ گذشته یا "کهنه شود". در عوض، هنگامی که درخواست کننده داده ها را در حافظه پنهان به روز می کند، کپی آن داده ها در سایر حافظه های پنهان منقضی می شود. پروتکل های ارتباطی بین مدیران حافظه پنهان که داده های سازگار را حفظ می کنند، به عنوان پروتکل های هماهنگی شناخته می شوند. نمونه هایی از حافظه های نهان سخت افزاری. حافظه نهان در پردازنده. حافظه های کوچک در CPU یا نزدیک آن می توانند سریعتر از حافظه اصلی که بزرگتر هستند، عمل کنند. اکثر پردازنده ها از دهه ۱۹۸۰ تا الان از یک یا چند حافظه پنهان استفاده می کنند، گاهی اوقات در سطوح آبشار؛ بالا پایان مدرن تعبیه شده، دسکتاپ و سرور ریزپردازنده ممکن است هر شش نوع از حافظه پنهان
(بین سطوح و توابع) را داشته باشند، نمونه هایی از حافظه های پنهان با یک تابع خاص، D-cache و I-cache و بافر translation lookaside برای MMU هستند. حافظه پنهان در پردازنده گرافیکی. واحدهای پردازش گرافیک (GPUs) در گذشته اغلب محدودیت های فقط خواندنی(texture caches) را داشتند و با توجه به اینکه بافت های swizelled textures را برای بهبود دوبعدی در حافظه پنهان قرار داده بودند، معرفی شدند. ناپدید شدن حافظه پنهان به شدت بر عملکرد تأثیر می گذارد، به عنوان مثال اگر Mipmapping استفاده نشد. ذخیره سازی برای انتقال داده های ۳۲ بیتی (و گسترده تر) برای داده های بافت بسیار مهم بود که اغلب کمی کمتر از ۴ بیت در هر پیکسل بود، نشان داده شده در الگوهای پیچیده با مختصات UV خودسرانه و تبدیل چشم انداز در نقشه برداری بافت معکوس. به عنوان GPUهای پیشرفته (به ویژه با GPGPU محاسبه سایه ها) آن ها به طور مداوم گسترش می یابند و حافظه های پنهان را بیشتر می کنند، از جمله حافظه نهان پردازنده برای سایه زن، به نمایش گذاشتن عملکرد افزایشی مشترک با حافظه CPU. به عنوان مثال، GPUهای معماری GT200 دارای حافظه نهان L2 نیستند، در حالی که GPU Fermi دارای ۷۶۸
بایت حافظه پنهان در سطح بالا می باشد، GPU Kepler دارای ۱۵۳۶ بایت حافظه پنهان در سطح بالا می باشد، و GPU ماکسول دارای ۲۰۴۸ بایت حافظه نهان در سطح بالا می باشد. این حافظه های نهان برای پردازش اولیه بین رشته ها و عملیات اتمی، و رابط با یک MMU پردازنده ای انجام شده است. DSPs. پردازنده های سیگنال دیجیتال در طول سال ها به طور کلی تعمیم داده شده اند. در طرح های اولیه از حافظه های Scratchpad که در آن ها DMA وجود دارد، استفاده می کنند، اما DSPهای مدرن مانند Qualcomm Hexagon اغلب مجموعه ای بسیار مشابه از حافظه های پنهان را در CPU (مانند معماری هاروارد اصلاح شده با L2 مشترک، تقسیم L1 I-cache و D-cache)شامل می شوند. ترجمه در بافر. یک واحد مدیریت حافظه (MMU) که ورودی های جدول صفحه را از حافظه اصلی دریافت می کند، دارای حافظه نهان ویژه ای است که برای ثبت نتایج ترجمه آدرس مجازی به آدرس های فیزیکی استفاده می شود. این حافظه نهان ویژه، یک Buffer Lookaside)TLB) نامیده می شود. حافظه های نرم افزاری. حافظه نهان دیسک. در حالی که حافظه های نهان CPU به طور کلی توسط سخت افزار مدیریت می شود، نرم افزارهای مختلفی سایر حافظه های پنهان را
مدیریت می کنند. صفحه حافظه نهان در حافظه اصلی، که نمونه ای از حافظه پنهان دیسک است، توسط هسته سیستم عامل مدیریت می شود. در حالی که بافر دیسک، که بخشی یکپارچه از درایو هارد دیسک است، که گاهی به صورت گمراه کننده به عنوان «حافظه نهان دیسک» به آن اشاره می شود، توابع اصلی آن نوشتن ترتیبی و خواندن پیش فرض است. با توجه به اندازه کوچک بافر در مقایسه با ظرفیت درایو، عملیات تکراری موفق در حافظه نهان نسبتاً نادر هستند. با این حال، کنترلرهای دیسک سطح بالا اغلب دارای حافظه نهان درونی در بلوک داده های هارد دیسک خود هستند. در نهایت، یک هارد دیسک محلی سریع، همچنین می تواند اطلاعات ذخیره شده بر روی دستگاه های ذخیره سازی اطلاعات با سرعت های پایین تر از قبیل سرورهای از راه دور (حافظه داخلی وب) یا درایوهای نوار محلی یا دستگاه های جیبی نوری را ذخیره کند؛ این طرح مفهوم اصلی مدیریت ذخیره سازی سلسله مراتبی است. همچنین، درایوهای حالت جامد فوری (SSD) سریع، می تواند به عنوان حافظه های نهان برای هارد دیسک های رسانه ای کوچکتر در حال چرخش استفاده شود، که به عنوان درایوهای ترکیبی یا درایوهای هیبریدی حالت جامد (SSHD) کار می کنند. حافظه نهان
در وب. مرورگرهای وب و سرورهای پروکسی وب از حافظه نهان در وب برای ذخیره پاسخ های قبلی از سرورهای وب مانند صفحات وب و تصاویر استفاده می کنند. حافظه نهان در وب میزان اطلاعاتی را که باید در سراسر شبکه منتقل شود را کاهش می دهد، زیرا اطلاعاتی که قبلاً در حافظه پنهان ذخیره شده است، اغلب می توانند دوباره استفاده شوند. این کار باعث کاهش پهنای باند و پردازش های الزامای وب سرور می شود و به بهبود پاسخگویی برای کاربران وب کمک می کند. مرورگرهای وب یک درج حافظه داخلی را استفاده می کنند، اما برخی از ارائه دهندگان خدمات اینترنتی (ISPها) یا سازمان ها نیز از یک پروکسی سرور ذخیره سازی استفاده می کنند که یک حافظهٔ وب است که بین همه کاربران آن شبکه به اشتراک گذاشته شده است. یکی دیگر از انواع حافظه پنهان، حافظه نهان از نوع P2P است، جایی که فایل های مورد نظر توسط برنامه های peer to peer در حافظه نهان یک ISP ذخیره می شوند تا سرعت انتقال P2P را افزایش دهند. به طور مشابه، معادلات غیر متمرکز وجود دارد که اجازه می دهد مجموعه ها یک کار مشابه برای ترافیک P2P انجام دهند، به عنوان مثال، Corelli. تکنیک Memoization. یک حافظه پنهان می تواند دا
ده ها را که بر اساس تقاضا محاسبه می شود ذخیره کند تا از یک حافظه پشتیبان بازیابی شود. Memoization یک تکنیک بهینه سازی است که نتایج رویه های منابع مصرفی را در یک جدول جستجو ذخیره می کند، اجازه می دهد تا درخواست های بعدی از نتایج ذخیره شده مجدداً استفاده کنند و از محاسبات تکراری جلوگیری می کند. این تکنیک مربوط به روش طراحی الگوریتم برنامه ریزی پویا است که می تواند به عنوان یک روش ذخیره سازی نیز مورد توجه قرار گیرد. انواع دیگر حافظه نهان. BIND DNS daemon یک نگاشت از نام دامنه به آدرس های IP را ذخیره می کند، مانند یک کتابخانه حل کننده عمل می کند. عملیات Write-through در هنگام استفاده از شبکه های غیرقابل اعتماد (مثل شبکه اترنت) رایج است، زیرا پیچیدگی بسیار زیاد پروتکل انسجام بین تعدادی از حافظه های نهان از نوع write-back که ارتباطشان نامعتبر است، مورد نیاز است. به عنوان مثال، حافظه های نهان صفحه وب و سمت سرویس گیرنده سیستم فایل شبکه (مانند حافظه هایی که در NFS یا SMB هستند) معمولاً فقط خواندنی یا به طور ویژه write-through هستند که پروتکل شبکه را ساده و قابل اعتماد نگه می دارد. موتورهای جستجو نیز غالباً صفحات وب خو
د را از طریق حافظه پنهان خود نشان می دهند. به عنوان مثال، Google یک پیوند "Cached" در کنار هر نتیجه جستجو ایجاد می کند. زمانی که صفحات وب از یک سرور وب به صورت موقت یا دائمی غیرقابل دسترسی هستند، این کار می تواند مفید باشد. نوع دیگری از ذخیره سازی، ذخیره نتایج محاسبه شده است که به احتمال زیاد دوباره مورد نیاز است یا برای memoization استفاده می شود. به عنوان مثال، cacache یک برنامه است که خروجی اجرای برنامه را مخفی می کند تا سرعت اجرا شدن را کم کند. ذخیره سازی پایگاه داده می تواند به طور قابل ملاحظه ای توانایی گسترش برنامه های پایگاه داده را بهبود بخشد، به عنوان مثال در پردازش شاخص ها، لغات داده ها و زیر مجموعه های متداول از داده ها، می تواند مفید باشد. حافظه های نهان توزیع شده از میزبان های شبکه برای فراهم کردن مقیاس پذیری، قابلیت اطمینان و کارایی اسفاده می کنند. میزبان ها می توانند در مناطق مختلف جغرافیایی قرار بگیرند. بافر در مقابل حافظه پنهان. معانی «بافر» و «حافظه نهان» کاملاً متفاوت نیستند؛ حتی در این میان، بین فرایند ذخیره سازی و فرایند قرار دادن در بافر تفاوت های اساسی وجود دارد. اساساً، ذخیره سازی، عم
لکرد را برای انتقال داده ها که بارها منتقل می شوند، را افزایش می دهند. در حالی که یک سیستم ذخیره سازی ممکن است افزایش کارایی پس از انتقال اولیه (به طور معمول نوشتن) یک آیتم داده را متوجه شود، این افزایش عملکرد به دلیل قرار دادن در بافر هنگام ذخیره سازی می باشد. در خواندن از حافظه نهان، یک آیتم داده باید از محلی که در آنجا قرار دارد حداقل یک بار دریافت شده باشد تا در دفعات بعدی که این داده خوانده می شود، افزایش عملکرد به دلیل توانایی بارگیری از حافظه نهان (سریع تر) میانی به جای محل سکونت داده ها تحقق یابد. با استفاده از نوشتن در حافظه نهان، افزایش عملکرد درنوشتن یک آیتم داده را داریم، که ممکن است پس از نوشتن اولین آیتم داده بلافاصله در ذخیره سازی میانی، تحویل داده شود، و انتقال داده را به محل اقامت آن منتقل می کند و همچنین یک مرحله بعد یا مرحله دیگری به عنوان فرایند پس زمینه رخ می دهد. برخلاف قرار دادن دقیق در بافر، یک فرایند ذخیره سازی در حافظه نهان باید به یک پروتکل انطباق پنهان (به طور بالقوه توزیع شده) پایبند باشد تا حفظ یکپارچگی بین حافظه میان مدت حافظه پنهان و محل ذخیره سازی داده ها برقرار شود. قرار دادن
در بافر، از سوی دیگر: با اجرای پیوسته به طور معمول، یک آیتم داده که برای اولین بار خوانده یا نوشته شده است، به طور مؤثری در بافر قرار می گیرد؛ و در مورد نوشتن، اغلب افزایش عملکرد برای برنامه از جایی که نوشته شده است منجر شد. علاوه بر این، بخشی از یک پروتکل ذخیره سازی که هر فرد می نویسد که به یک دسته از نوشتارها تعلق می گیرد، یک نوع عملیات قرار دادن در بافر است. بخشی از یک پروتکل ذخیره سازی که خواندن آن را به مجموعه ای از خواندن ها عوض می کند نیز یک شکل از بافر است، اگرچه این رویه می تواند بر عملکرد حداقلی از نشانه های اولیه تأثیر منفی داشته باشد (حتی اگر تأثیر مثبت بر عملکرد مجموع فرد خواند) در عمل، ذخیره سازی تقریباً همیشه شامل برخی از انواع بافر است، در حالی که سختگیرانه قرار دادن در بافر شامل ذخیره سازی نیست. بافر یک مکان حافظه موقت است که به طور سنتی مورد استفاده قرار می گیرد، زیرا دستورات پردازنده نمی تواند به طور مستقیم اطلاعات ذخیره شده در دستگاه های جانبی را پردازش کند؛ بنابراین، حافظه آدرس پذیر به عنوان یک مرحله میانی استفاده می شود. علاوه بر این، بافر ممکن است هنگامی که یک بلوک بزرگ از داده ها جمع
آوری یا جدا (به عنوان مورد نیاز توسط یک دستگاه ذخیره سازی) شد، یا زمانی که داده ها ممکن است در یک سفارش متفاوت از آنچه که در آن تولید می شود تحویل داده. همچنین یک بافر کامل اطلاعات معمولاً به ترتیب (به عنوان مثال به هارد دیسک) منتقل می شود، به طوری که بافر خود گاهی اوقات عملکرد انتقال را افزایش می دهد یا تنوع یا تکان دهندگی از زمان تأخیر انتقال را کاهش می دهد به عنوان مخالف ذخیره سازی که در آن قصد کاهش دادن تأخیر است. این مزایا وجود دارد حتی اگر داده های بافر در یک بافر نوشته شده و یک بار از آن بخوانند. یک حافظه پنهانی نیز عملکرد انتقال را افزایش می دهد. بخشی از افزایش به طور مشابه به این احتمال است که چندین انتقال کوچک به یک بلوک بزرگ ترکیب شود. اما عملکرد اصلی به دست می آید به این دلیل که شانس خوبی وجود دارد که داده های یکسان از چندین بار از حافظه پنهان خوانده شود یا اینکه داده های نوشته شده به زودی خوانده خواهند شد. یک هدف کش تنها هدف کاهش دسترسی به ذخیره سازی آهسته تر است. Cache همچنین معمولاً یک لایه انتزاعی است که طراحی شده از نظر لایه همسایه نامرئی است.
در علوم کامپیوتر، کد خود تغییر دهنده کدی است که دستورالعمل های خود را تغییر می دهد در حالی که دارد اجرا می شود - معمولاً برای کاهش طول مسیر دستور و بهبود عملکرد یا به سادگی برای کاهش کد مشابه تکرارشده تا نگهداری آسان تر بشود. خود-تغییر دهندگی یک جایگزین برای روش «تنظیم پرچم» و برنامه مشروط شاخه ای است که در درجه اول برای کاهش تعداد دفعاتی که یک شرایط باید مورد آزمایش قرار گیرد، استفاده می شود. این اصطلاح معمولاً فقط برای کدی استفاده می شود که در آن خود تغییر دهندگی عمدی و با قصد است، نه در مواردی که کد به صورت تصادفی به علت خطایی مانند سرریز بافر(buffer overflow) تغییر می کند. این روش غالباً برای استفاده مشروط از کد تست / اشکال زدایی کد بدون نیاز به هزینه اضافی محاسباتی برای هر چرخه ورودی / خروجی استفاده می شود. تغییرات ممکن است انجام شود: در حالت دیگر، تغییرات ممکن است به طور مستقیم خودشان به دستورالعمل های کد ماشین اعمال بشوند، با پوشاندن یا جایگزینی دستورالعمل های جدید بر روی دستورالعمل های در حال حاضر (به عنوان مثال: تغییر مقایسه و branch به branch بدون شرط یا " NOP ") انجام می شود. در مجموعه دستورالعمل I
BM / 360 و Z / Architecture دستور EXECUTE (EX) به طور "منطقی" بایت دوم دستورالعمل هدف خود را با ۸ بیت کم ارزش ثبات ۱، قرار می دهد. این اثر خود تغییر دهندگی را نسان می دهد، اگر چه دستورالعمل واقعی در حافظه تغییر نمی کند. کاربرد در زبان های سطح پایین و سطح بالا. خود-تغییر دهندگی را می توان به روش های مختلفی بسته به زبان برنامه نویسی و پشتیبانی آن از اشاره گرها و / یا دسترسی به کامپایلر پویا یا موتورهای مترجم انجام داد: زبان اسمبلی. کد خود تغییر دهندگی برای پیاده سازی در هنگام استفاده از زبان اسمبلی بسیار ساده است. دستورالعمل ها می توانند به طور پویا در حافظه ایجاد شوند (یا در موارد دیگر بر روی کدهای موجود در ذخیره سازی برنامه های محافظت نشده)، در توالی معادل با آن هایی که کامپایلر استاندارد ممکن است به عنوان کد هدف تولید کند. با پردازنده های مدرن، ممکن است عوارض جانبی ناخواسته بر روی حافظه نهان CPU وجود داشته باشد که باید در نظر گرفته شود. این روش اغلب برای آزمایش شرایط «اولین بار» مورد استفاده قرار می گیرد، همان طور که در این نمونه زبان اسمبلی مناسب IBM / 360 توضیح داده شده است. این روش با استفاده از پوشش دستو
ر برای کاهش طول مسیر دستورالعمل به N × 1) -1) که در آن N که تعداد رکوردها در فایل است. (-۱ سرباری برای انجام پوشش است)، استفاده می شود. codice_1 کد جایگزین ممکن است شامل هر بار آزمودن «پرچم» باشد. دستور پرش بدون قید و شرط کمی سریعتر از دستور مقایسه ای است، و همچنین باعث کاهش طول مسیر کلی می شود. در سیستم عامل های بعدی برای برنامه هایی که در حافظه محافظت شده قرار دارند، این تکنیک نمی تواند مورد استفاده قرار گیرد و به جای آن از تغییر اشاره گر به زیر برنامه استفاده خواهد شد. اشاره گر در حافظه پویا قرار دارد و می تواند پس از گذراندن اولین مرحله برای دور زدن OPEN تغییر یابد (ابتدا باید یک اشاره گر به جای یک پرش مستقیم بارگذاری شود و به زیر برنامه ارتباط پیدا کند که N دستورالعمل را به طول مسیر اضافه می کند - اما یک کاهش متناظر با N برای پرش بدون قید و شرط وجود دارد که دیگر لازم نیست). در زیر نمونه ای از زبان اسمبلی Zilog Z80 است. این کد ثبات B را از مقدار ۰ به ۵ افزایش می دهد. دستور مقایسه ای "CP" در هر حلقه تغییر می کند. ORG 0H CALL FUNC00 HALT FUNC00: LD A,6 LD HL,label01+1 LD B,(HL) label00: INC B LD (HL),B labe
l01: CP $0 JP NZ,label00 RET کد خود تغییر دهنده گاهی اوقات برای غلبه بر محدودیت های مجموعه دستورها ماشین مورد استفاده قرار می گیرد. به عنوان مثال، در مجموعه دستورها اینتل ۸۰۸۰ نمی توان یک بایت را از یک پورت ورودی که توسط یک ثبات مشخص شده است را وارد کرد. پورت ورودی به صورت استاتیکی در خود دستور، به عنوان بایت دوم دستور دو بایتی رمزگذاری می شود. با استفاده از کد خود تغییر دهنده، می توان محتویات ثبات را در بایت دوم دستور ذخیره کرد، سپس دستور اصلاح شده را برای رسیدن به اثر مورد نظر، اجرا می کند. زبانهای سطح بالا. برخی از زبان های کامپایل شده به صراحت اجازه می دهند کد خود را تغییر دهید. به عنوان مثال، فعل ALTER در کوبول ممکن است به عنوان دستور پرشی اجرا شود که در حین اجرای برنامه اصلاح می شود. یکی از روش های برنامه ریزی دسته ای استفاده از کد خودمحور است. Clipper و SPITBOL نیز امکانات را برای تغییر صریح خود فراهم می کنند. کامپایلر Algol در سیستم های B6700 یک رابط را برای سیستم عامل ارائه داد که در آن اجرای کد می تواند یک رشته متن یا یک فایل دیسک نام گذاری شده را به کامپایلر Algol منتقل کند و سپس قادر به فراخوانی ن
سخه جدیدی از یک روش بود. با زبان های تفسیر شده، "کد ماشین" متن منبع است و ممکن است حساس به ویرایش بر روی on-the-fly باشد: در اسنوبول، جملات مرجع که اجرا می شوند، عناصر یک آرایه متنی هستند. زبان های دیگر مانند Perl و Python به برنامه ها برای ایجاد کد جدید در زمان اجرا و اجرای آن با استفاده از یک تابع eval، اجازه می دهند، اما اجازه تغییر در کد فعلی قابل را نمی دهند. تغییر غلط (حتی اگر هر کدام از ماشین ها واقعاً رونویسی شوند) با تغییر اشاره گرهای تابع به دست می آید، همان طور که در این مثال جاوااسکریپت داریم: var f = function (x) {return x + 1}; // assign a new definition to f: f = new Function('x', 'return x + 2'); ماکروهای Lisp همچنین اجازه می دهند که کد در زمان اجرا تولید شود بدون آن که به تجزیه رشته حاوی متن برنامه نیاز باشد. زبان برنامه نویسی Push یک سیستم برنامه نویسی ژنتیکی است که به طور ویژه برای ایجاد برنامه های خود تغییر دهنده طراحی شده است. در حالی که یک زبان سطح بالا نیست، زبان سطح پایینی هم در حد زبان اسمبلی نیست. تغییر مرکب. قبل از ظهور تعدادی از ویندوزها، سیستم های command-line ممکن است یک سیستم من