آدرس حافظه

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

در رایانش، آدرس حافظه یک نوع داده‌ای است که در سطوح مختلفی توسط سخت‌افزار و نرم‌افزار برای دسترسی به انباره اصلی حافظه رایانه استفاده می‌شود. آدرس‌های حافظه رشته‌هایی از ارقام با طول ثابت هستند که مطابق قرارداد نشان داده می‌شوند و با اعداد صحیح بی علامت با آنها کار می‌شود. این چنین معناهای شمارش معنایی که خودشان بر اساس ویژگی های پردازنده (مانند دستور العمل‌های اشاره‌گر و آدرس ثبات افزایشی) هستند، و همچنین از حافظه مانند آرایه‌ای تایید شده توسط زبان های برنامه‌نویسی مختلف استفاده می‌کنند.

انواع آدرس‌های حافظه[ویرایش]

انواع مختلفی از آدرس‌های حافظه وجود دارد. به عبارت دیگر یک رایانه و حتی یک برنامه ممکن است فضاهای آدرس حافظه مختلفی داشته باشند. یک حافظه رایانه دیجیتال ، به طور خاص حافظه اصلی، شامل تعدادی مکان حافظه می باشد، هر یک با داشتن یک آدرس فیزیکی یا یک کد قابل استفاده برای پردازنده (یا دستگاه های دیگر) می توانند به آن دسترسی پیدا کنند. در کل فقط نرم افزارهای سیستمی، یعنی بایوس، سیستم عامل، و برخی از برنامه‌های سودمند عمومی (مانند ارزیاب‌های حافظه)، حافظه فیزیکی رابا استفاده از عملوند کد ماشین یا ثبات پردازنده آدرس‌دهی می‌کنند. دستوردهی پردازنده برای هدایت یک دستگاه سخت افزاری، به نام کنترل گر حافظه، برای استفاده از گذرگاه حافظه یا گذرگاه سیستم و یا کنترل جداگانه، آدرس و گذرگاه‌های داده‌ها، برای اجرای دستورهای برنامه به کار می‌رود. هدایت‌گر حافظه گذرگاه شامل تعدادی خطوط موازی است که هر کدام با یک عدد دودویی نشان داده می‌شوند. عرض گذرگاه و به این ترتیب تعدادی از واحد های ذخیره سازی آدرس و تعداد بیت در هر واحد در میان رایانه های مختلف متفاوت است.

واحد وضوح آدرس[ویرایش]

بیشتر رایانه‌های امروزی آدرس پذیر بایتی هستند یعنی هر آدرس یک تک بایت ۸ بیتی از انباره را مشخص می‌کند. داده های بیش از حد بزرگ که در یک بایت ذخیره می شود ممکن است چند بایت را اشغال کنند و در دنباله‌ای از آدرس‌های متوالی را قرار بگیرد . رایانه های آدرس پذیر کلمه‌ای وجود دارد که در آن حداقل واحد ذخیره سازی آدرس پذیر دقیقا کلمه پردازنده است. به عنوان مثال در رایانه کوچک اطلاعات عمومی Nova و تگزاس اینسترومنتز TMS9900 و ریزرایانه‌های ملی نیمه هادی IMP-16 استفاده می شود از کلمات ۱۶ بیتی استفاده می‌شود. بسیاری از رایانه‌های بزرگ ۳۶ بیتی (مانند PDP-10) که نه از آدرس‌دهی بایتی بلکه از آدرس‌دهی کلمه ۱۸ بیتی استفاده می‌کنند که یک فضای آدرس ۲۱۸ ، ۳۶ بیت کلمه‌ای (حدود یک مگابایت از انباره) می‌دهد. بهره وری از آدرس‌دهی حافظه بستگی به اندازه بیت در گذرگاه استفاده شده برای آدرس ها - بیت استفاده شده بیشتر آدرس‌های در دسترس بیشتری را برای رایانه به همراه دارد. برای مثال، یک دستگاه 8 بیتی آدرس‌پذیر بایتی با گذرگاه آدرس ۲۰ بیتی (به عنوان مثال اینتل ۸۰۸۶) می تواند ۲۲۰ (۱۰۴۸۵۷۶) محل حافظه یا یک مگابایت از حافظه را آدرس دهی کند، در حالی که یک گذرگاه ۳۲ بیتی (به عنوان مثال اینتل ۸۰۳۸۶) می‌تواند ۲۳۲ (۴۲۹۴۹۶۷۲۹۶) مکان یا ۴ گیگابایت فضای آدرس داشته باشد. در مقابل یک ماشین آدرس پذیر کلمه‌ای ۳۶بیتی با یک گذرگاه آدرس ۱۸بیتی تنها ۲۱۸ (۲۶۲۱۴۴) مکان ۳۶ بیتی (۹۴۳۷۱۸۴ بیت) برابر با ۱۱۷۹۶۴۸ بایت 8 بیتی و یا ۱۱۵۲ کیلوبایت، یا ۱/۱۵۲ مگابایت یعنی کمی بیش از ۸۰۸۶ را آدرس‌دهی می‌کند.

اندازه کلمه در مقابل اندازه آدرس[ویرایش]

اندازه کلمه یک ویژگی است که به یک معماری رایانه داده می‌شود. این نشان دهنده تعداد ارقامی است که یک پردازشگر مرکزی می تواند در یک زمان پردازش کند. پردازشگرهای نوین، از جمله سامانه‌های نهفته، معمولا کلمه‌ای با اندازه‌های ۸، ۱۶، ۲۴، ۳۲ یا ۶۴ بیت دارند. بیشتر رایانه‌های با مصارف عمومی در حال حاضر از پردازشگرهای ۳۲ بیت یا ۶۴ بیتی استفاده می‌کنند. در طول تاریخ بسیاری از اندازه های مختلف از جمله ۸، ۹، ۱۰، ۱۲، ۱۸، ۲۴، ۳۶، ۳۹، ۴۰، ۴۸، و ۶۰ بیت استفاده شده است.

محتویات هر محل حافظه[ویرایش]

هر محل حافظه در یک برنامه ذخیره شده رایانه به نوعی یک عدد دودویی یا عدد دهدهی را نگه می دارد.

فضای آدرس در برنامه‌نویسی[ویرایش]

در محیط‌های چندکارگی امروزی، فرآیند یک نرم‌افزار کاربردی معمولا در فضای آدرس خودش تکه‌های حافظه از انواع زیر را دارد:

برخی از بخش‌های فضای آدرس ممکن است در به جایی نگاشت نشوند.

شمای آدرس دهی[ویرایش]

نوشتار اصلی: حالت_آدرس‌دهی

یک رایانه می‌تواند به آدرس داده شده به صراحت دسترسی داشته باشد (در برنامه‌نویسی سطح پایین که معمولا آدرس‌دهی مطلق یا گاهی اوقات آدرس‌دهی خاص نامیده می‌شود و به عنوان نوع داده اشاره‌گر در زبان‌های سطح بالا شناخته می‌شود). با این حال یک برنامه می‌تواند از آدرس‌دهی نسبی استفاده کند که یک مکان را در ارتباط با جایی دیگر (پایه آدرس‌دهی) مشخص می‌کند. حالات آدرس‌دهی غیر مستقیم بسیاری وجود دارد . نگاشت آدرس‌های منطقی به حافظه فیزیکی و مجازی، چند سطح غیر مستقیم را می‌افزاید، پایین را ببینید.

انواع حافظه[ویرایش]

بسیاری از برنامه نویسان ترجیح می دهند طوری حافظه را آدرس دهی کنند که هیچ تمایزی بین فضای کد و فضای داده (رجوع کنید به بالا)، و همچنین بین حافظه فیزیکی و مجازی (پایین را ببینید) وجود نداشته باشد. به عبارت دیگر، اشاره‌گرهای عددی یکسان دقیقا به همان بایت مشابه از حافظه دسترسی تصادفی اشاره می‌کند.

انواع حافظه در معماری x86[ویرایش]

کامپیوتر های x86 اولیه بر اساس ترکیبی از دو عدد از آدرس های نوع حافظه قطعه بندی شده استفاده می‌کردند: بخش حافظه و حاشیه که در آن قطعه است.

منابع[ویرایش]

مشارکت‌کنندگان ویکی‌پدیا، «Memory address»، ویکی‌پدیای انگلیسی، دانشنامهٔ آزاد (بازیابی در ۲۱ دسامبر ۲۰۱۳).

پیوند به بیرون[ویرایش]