مفهوم برگ برگ سازی مفهوم ساده ای هست و خودتون رو با درگیر کردن جزئیاتی که زیاد مهم نیست گیج نکنید.
مثلا اونجایی که ۶۴ را به شکل ۰۰۰۰ نوشته منظورش اینه که ما یک حافظ ۶۴ کیلو بایتی داردیم پس متقابلا این حافظه ۱۶ خط ادرس داره که رنج این ادرسها در مبنای hex از ۰۰۰۰ تا FFFF میباشد دقت کنید که هر رقم معادل چهار بیت که جمعا شانزده بیت در مبنای داریم .
اما خود مفهوم برگ برگ سازی:
فرض کنید میخواهیم یک حافظه چهار کیلو بایتی با چهار حافظه یک کیلو بایتی بسازیم .
یک حافظه چهار کیلو بایتی ۱۲ خط ادرس دارد و حافظه های یک کیلو بایتی ده خط ادرس دارند .
طبیعتا من باید ده خط از دوازده خط ادرسم رو برای هر چهار حافظه یک کیلو بایتی مشترکا استفاده کنم و با دو خط ادرس باقی مانده رو برای انتخاب بین این چهار حافظه استفاده کنم که درو واقع این دو خط ادرس به عنوان ورودی ادرس یک مالتی پلکسر عمل میکند . تا اینجا همه چیز واضح هست .
اما مسئله اصلی در انتخاب این ده خط ادرس مشترک برای خطوط ادرس هر یک از چهار حافظه یک کیلو بایتی و همچنین انتخاب دو خط ادرس برای ورودی انتخاب مالتی پلکسر هست . که باید به نحوی انتخاب کنیم .
روشهای مختلفی برای این انتساب وجود دارد و بسته به سیاستی که سیستم یا ماشین ما دنبال میکند میتوان اینکار رو انجام داد.
دو تا از معروفترین این روشها یکی High Order و یکی هم Low order هست .
هر یکی از این سیاستها ویژگیها و معایبی دارند که در جزوه توضیح داده و حتی در کتاب .
اما سیاست high order چیه ؟
سیاست این روش اینه که سعی میکنه خانه های مجاور را تا حد امکان در یک حافظه نگه داری کند .
مثلا خانه هایی با ادرس ۰ ,۱ ,۲, ۳ ۴, ۵ ,۶ ,۷ , . . . تا ادرس یک کیلو را در حافظه اول قرار دهد
و
ادرسهای یک کیلو تا دو کیلو را در حافظه یا برگ دوم و به همین ترتیب
از اینجا اجازه بدین ادرسهای موجود در یک حافظه را ادرسهای هم برگ بنامیم یعنی ادرسهای که در یک حافظه قرار گرفته اند .
خب وقتی سیاستمان مشخص شد باید به دنبال ویژگی هایی متمایز میان برگها باشیم که در عین حال که در ادرسهای هم برگ مشترک است با سایر ادرسها در برگهای دیگر متمایز است .
اگر ادرس های دوازده بیتی رو بنویسیم متوجه خواهیم شد که دو بیت پر ارزش تمام ادرسهای موجود در برگ اول ۰۰ است و در برگ دوم ۰۱ ودر برگ دوم ۱۰ و در برگ چهارم ۱۱ است .
خب ما هم از همین ویژگی استفاده میکنیم و ده بیت کم ارزشتر را به ورودی تمام برگها وصل کرده (A0--A9) و دو بیت پر ارزش را به عنوان مالتی پلکسر انتخاب میکنیم.
و اما سیاست Low Order:
این روش این سیاست رو دنبال میکند که:
ادرسهایی که باقیمانده انها برچهار برابر با صفر است در اولین برگ مستقر شوند یعنی ادرس های ۰ , ۴ ,۸ , ...
و ادرسهایی که باقیمانده انها بر چهار برابر با یک هست در دومین برگ یعنی ادرس های ۱ , ۵ , ۹ , . . .
و ادرسهایی که باقیمانده انها بر چهار برابر با دو هست در سومین برگ یعنی ادرسهای ۲, ۶, ۱۰ , ...
و ادرسهایی که باقیمانده انها بر چهار برابر با سه هست در اخرین برگ مستقر شوند یعنی ادرسهای ۳, ۷ , ۱۱, ..
وقتی دوباره به سراغ ویژگی ادرسهای هم برگ و با سایر برگها نگاه مکینیم به این خصیصه پی خواهیم برد که اینبار ادرسهای هم برگ در برگ اول دارای دوبیت کم ارزش یکسان میباشند .
تذکر: کافیه واسه چند ادرس اول از هر برگ ادرس باینری را بنوسید وانها را با هم مقایسه کنید مطمئنا خودتان به این خصیصه پی خواهید برد .
خب بنابرین در این روش هم مشخص هست که دو بیت کم ارزش را باید به عنوان ادرس مالتی پلکسر استفاده کنیم و مابقی رو به عنوان ادرس برگها .
درنهایت این دو روش معروف برای برگ سازی هست و بر حسب مورد میتواند تغیر کند کمکا که در تسها شما باید این کار رو انجام بدین یعنی مراحل کار رو الگوریتم وار میگم .
۱- بعد از مشخص کردن تعاداد برگها باید مشخص کنید که هر برگ باید شامل چه ادرسهایی باشد و این کار رو به تفکیک هر برگ انجام میدهید.
۲- در این مرحله باید ادرس باینری چندین عنصر از هر برگ را بنویسد و به دنبال خصیصه ای باشید که دو ویژگی داشته باشد:
اول تمام ادرسهای هم برگ حاوی اون ویژگی باشند
دوم اینکه ادرسهای موجود در سایر برگها در این ویژگی با هم تفاوت داشته باشند .
درنهایت کار تمام است .
امیدوارم تونسته باشم که روند کار رو تا حدودی توضیح داده باشم اما در هر حال با کمی دقت خودتان به این تبحر دست پیدا خواهید کرد که به سادگی تشخیص بدهید که چگونه برگ برگ سازی کنید کما که در مثالها سعی بر این داره که شماخودتان به این مهارت دست پیدا کنید.
اگر توضیحات کم وکسری داشت ببخشید.