Transcript ساختار CPU
ساختار CPU & فصل 8کتاب مانو اجزا تشکیل دهنده CPU داده ها را ذخیره میکند Register Set Control ALU عملیات محاسباتی و منطقی را انجام میدهد مشخص میکند که چه عملی در چه زمانی انجام گیرد. بصورت سخت افزاری و یا میکروپروگرام سیگنال الزم را به یخشهای مختلف میفرستد. CPUاز دید استفاده کننده از دید یک برنامه نویس که به زبان سطح پایین برنامه نویسی میکند یک CPUدارای مشخصه های زیر خواهد بود Instruction format The instruction Set Addressing modes Register organization معماری های مختلف CPU Accumulator machine Register machine :PowerPC Stack machine :the Java virtual machine مثال :ماشین های X86دارای یک معماری با مجموعه دستورات پیچیده ای است که تمامی جنبه های معماری های فوق را در بر میگیرد. اهمیت معماری CPUچقدر است؟ استفاده کننده نهائی: هیچ! برنامه نویس سطح باال خیلی کم .تا حدی که بتواند کامپایلر مناسب را انتخاب نموده و عملکرد برنامه را بهینه کند برنامه نویس سطح پائین /طراح OS این افراد باید اطالعات کافی در مورد رجیسترها ،ساختار حافظه ،انواع داده های موجود و عملکرد دستورات داشته باشند. ساختار رجیسترها یکی از مهمترین ویژگی های تعیین کننده برا ی یک CPUساختار رجیسترهای داخلی آن است. این رجیستر ها به دو دسته تقسیم بندی میشوند: رجیسترهائی که استفاده کننده آنها را می بیند! و میتواند از طریق برنامه نویسی به آنها دسترسی داشته باشد Data registers Address registers index register segment pointer stack pointer )Condition codes (flags رجیسترهائی که برای کنترل و نگهداری وضعیت CPUبکار میروند .این رجیسترها توسط واحد کنترل برای اجرای دستورات مورد استفاده واقع میشوند Program counter Instruction register رجیسترهای عمومی محلی برای ذخیره داده ها هستند که در داخل CPUتعبیه شده اند تا با فراهم آوردن دسترسی سریع و آسان عملکرد CPUرا افزایش دهند. این رجیستر ها توسط یک باس مشترک مخصوص به هم وصل میشوند استفاده کننده میتواند از این رجیسترها برای کاربردهای مختلف محاسباتی ،منطقی و شیفت استفاده نماید. مشترکALU مجموعه رجیسترهای عمومی و Clock Input R1 R2 R3 R4 R5 R6 R7 Load (7 inputs) 3x8 decoder SETD SETA MUX A bus OPR MUX B bus Arithmetic logic unit (ALU) Output SETB مجموعه رجیسترهای عمومی و ALUمشترک در شکل فوق: خروجی هر رجیستر به دو MUXمتصل شده است .اینکار باعث میشود تا هر یک از آنان را بتوان آزادانه بعنوان مبدا عملیات ALUانتخاب نمود. برای اینکه بتوان خروجی ALUرا به هر یک از رجیستر ها منتقل نمود این خروجی به ورودی تمام رجیسترها متصل شده و عالوه بر آن با استفاده از یک دیکودر مقصد عملیات را مشخص میکنیم. یک ALUممکن است که قادر به انجام عملیات مختلفی باشد ،برای امتخاب یک عمل مورد نیاز از خطوط کنترلی OPRاستفاده میشود. مثالی از عملیات ALU برای مثال فرض کنید که میخواهیم میکرو اپریشن زیر را انجام دهیم: R1 R2 + R3 برای انجام این عمل واحد کنترل باید سیگنالهای الزم را برای انتخاب ورودیهای متناسب دیکودر MUXA, MUXB,و ALUانتخاب نماید: .1تعیین مقدار مناسب برای ورودی MUXAیعنی SELAطوری که محتوی رجیستر R2در روی باس Aقرار گیرد. .2تعیین مقدار مناسب برای ورودی MUXBیعنی SELBطوری که محتوی رجیستر R3در روی باس Bقرار گیرد. .3تعیین مقدار الزم برای ورودی OPRکه ALUرا وادار به انجام عمل جمع A+B نماید. .4در نهیت انتخاب مقدار مناسب برای دیکور SELDبه نحویکه خروجی ALUرا به رجیستر R1منتقل نماید. کلمه کنترل در مثال نشان داده شده تعداد 14متغیر باینری وجود دارند که مقدار آنها باید توسط واحد کنترل تعیین گردد .هر ترکیب این متغیرها یک کلمه کنترل نامیده میشود .این کلمه به 4فیلد تقسیم میشود OPR SELA SELD SELB SELD SELB SELA Binary code None Input Input 000 R1 R1 R1 001 R2 R2 R2 010 R3 R3 R3 011 R4 R4 R4 100 R5 R5 R5 101 R6 R6 R6 110 R7 R7 R7 111 ALU عملیات OPR Select Operation Symbol 00000 Transfer A TSFA 00001 Increment A INCA 00010 Add A + B ADD 00101 Subtract A – B SUB 00110 Decrement A DECA 01000 And A and B AND 01010 OR A and B OR 01100 XOR A and B XOR 01110 Complement A COMA 10000 Shift right A SHRA 11000 Shift left A SHLA انجام عملیاتCPU در محاسباتی و منطقی بر عهده عمل شیفت را. استALU کهShifter میتوان توسط یک قرارALU قبل و یا بعد از در مواردی هم.میگیرد انجام داد ممکن است عمل شیفت توسط در فصل.انجام شودALU خود را دیدیمALU طراحی چنین4 که عملیات آن در جدول مقابل ذکر شده است مثال برای انجام میکرواپریشن زیر R1 R2 – R3 میبایست کلمه کنترلی بصورت زیر انتخاب شود: OPR SUB 00101 SELD R1 001 SELB R3 011 Field: SELA Symbol R2 Control word 010 همانطور که قبال دیدیم یک راه پیاه سازی واحد کنترل استفاده از میکروپروگرامینگ است که در آن هر کلمه کنترلی در یک محل از حافظه ROMذخیره خواهد شد. Stacks موارد استفاده از پشته ذخیره متغیرهای یک برنامه ذخیره محتوی سایر رجیسترها وقتی که یک برنامه فرعی صدا زده میشود کمک به ترجمه عملیات محاسباتی با روش RPN رجیستر Spمحل آخرین داده ذخیره شده در پشته را مشخص میکند پیاده سازی پشته .1 .2 پیاده سازی پشته بوسیله رجیسترها پیاده سازی پشته در قسمتی از حافظه RAM پیاده سازی پشته بوسیله رجیسترها 63 EMPTY 5 4 3 C 2 B 1 A 0 SP DR FULL عملیات روی پشته Push SPSP+1 M[SP]DR ,EMTY0 if(SP=0) Then (FULL1) POP DRM[SP] , FULL0 SPSP-1 if(SP=0) Then (EMTY1) پیاده سازی پشته در قسمتی از حافظه RAM 1000 2000 حافظه برنامه (دستورات) حافظه داده ها (عملوند ها) PC AR 3000 حافظه پشته 3997 3998 SP 3999 4000 4001 DR عملیات روی پشته Push SPSP-1 M[SP]DR POP DRM[SP] SPSP+1 محدودیت های پشته هنگام استفاده از پشته: باید مواظب بود که بزرگ شدن پشته باعث دست اندازی آن به داده های سایر برنامه ها در RAMنشود .همچنین برنامه های دیگر پشته را خراب نکنند. نمایش لهستانی معکوس )Reverse Polish Notation (RPN روش معمولی نمایش عبارات ریاضی: A*B+C*D روش PNبرای نمایش عبارات ریاضی :عملگرها قبل از عملوندها قرارمیگیرند. +*AB*CD روش RPNبرای نمایش عبارات ریاضی :عملگرها بعد از عملوندها قرا میگیرند AB*CD*+ استفاده از پشته برای پیاده سازی RPN در برخی ماشینهای حساب و کامپیوترها از ترکیب پشته و RPNبرای محاسبه عبارات ریاضی استفاده میکنند. .1ابتدا عبارت بصورت RPNنوشته میشود ) معموال اینکار توسط کامپایلر انجام میشود( .2در هنگام محاسبه با برخورد به عملوندها آنها را در پشته PUSHمیکنیم با برخورد با عملگرها ،دو داده موجود در باالی پشته POPشده و عمل مورد نظر بر روی آنها انجام و حاصل درپشته PUSH میشود. مثال برای محاسبه عبارت زیر یک کامپایلر ممکن است کد زیر را ;a = b + c * d تولید نماید. عبارت معادل RPNبصورت زیر خواهد بود: b c d bcd*+ در اینصورت محتوی پشته بصورت زیر خواهد بود: a PUSH PUSH PUSH MUL ADD POP d b+c*d pop ADD c*d c c b b b MUL d c PUSH PUSH b b PUSH فرمت دستورالعمل معمولترینفرمتیکدستورالعمل .1 قسمت آپ کد ،مشخصکننده نوع عملیات دستور .2 قسمت آدرس ،مشخصکننده آدرس یک خانه حافظه یا ثبات پروسسور .3 قسمت حالت آدرسدهی ،تعیینکننده عملوند یا آدرس مؤثر Add/reg Mode Opcode دستوراتسهآدرسی در کامپیوترهای سهآدرسی ،هر قسمت آدرس ،برای مشخص نمودن یک ثبات پردازنده و یا آدرس یک عملوند در حافظه تخصیص داده میشود. ]R1 M[A] + M[B ]R2 M[C] + M[D M[X] R1 × R2 ADD R1, A, B ADD R2, C, D MUL X, R1, R2 دستورات دوآدرسی دستورات دوآدرسی معمولترین فرمت دستور در کامپیوترها هستند .قسمت آدرس میتواند یک ثبات پردازنده یا یک خانه حافظه را مشخص نماید. ]R1 M[A MOV R1, A ]R1 R1 + M[B ADD R1, B ]R2 R2 + M [D ADD R2, D R1 R1 × R2 MUL R1, R2 M[A] R1 MOV X, R1 دستوراتیکآدرسی دستورات یکآدرسی ،برای تمام عملیات بر روی دادهها، ثبات اکومولیتور ACرا بهکار میبرد. ]AC M[A LOAD A ]AC AC + M[B ADD B M[T] AC STORE T ]AC M[C LOAD C ]AC AC + M[D ADD D ]AC AC × M[T MUL T M[X] AC STORE X دستوراتصفرآدرسی دستورات صفر آدرسی ،برای تمام عملیات بر روی دادهها ،از پشته استفاده می کند. Push A Push B ADD Push C D Push ADD MUL POP X دستورات کامپیوترهای RISC در کامپیوترهای مبتنی بر معماری RISCفقط دو دستور وجود دارند که مستقیما با محتوی حافظه کار میکنند: دستور ذخیره کردن STORE : دستور بار کردن LOAD : بقیه دستورات نطیر دستورات محاسباتی فقط با رجبسترها کار میکنند. RISC مثالی از دستورات X = (A + B) × (C + D) برنامه محاسبه LOAD LOAD LOAD LOAD ADD ADD MUL STORE R1, A R2, B R3, C R4, D R1, R1, R2 R3, R3, R4 R1, R1, R3 X, R1 R1 M[A] R2 M[B] R3 M[C] R4 M[D] R1 R1 + R2 R3 R3 + R4 R1 R1 × R3 M[X] R1 حاالتآدرسدهی دستورات یک کامپیوتر عملی را بر روی داده ذخیره شده در حافظه و یا رجیسترهای CPUانجام میدهند .روش مشخص کردن عملوند یک دستورالعمل حاالت آدرس دهی و یا addressing modeنامیده میشود . اصوال حاالت مختلف آدرسدهی عملوند دستور ،تسهیالت زیر را در سیستم فراهم میآورد: .1 قابلیت ایجاد شمارنده برای برنامه حلقه ،و شاخصبندی در دادهها و همچنین ایجاد اشارهگر حافظه و جابجایی برای کاربر فراهم میشود .2 امکان تقلیل تعداد بیتهای قسمت آدرس دستور ،فراهم میشود. انواع حالت های آدرس دهی آدرس دهی ضمنی Implied Addressing Mode آدرس دهی بالدرنگ Immediate Addressing Mode آدرس دهی ثبات Register Addressing Register Indirect Addressing آدرس دهی غیر مستقیم بکمک ثبات Autoincrement or Autodecrement آدرس دهی افزایش و یا کاهشی خودکار Direct Addressing Mode آدرس دهی مستقیم Indirect Addressing Mode آدرس دهی غیر مستقیم Relative Addressing Mode آدرس دهی نسبی Index Addressing Mode آدرس دهی شاخص Base Register Addressing Mode آدرس دهی با ثبات پابه آدرس دهی ضمنی Implied Addressing Mode در این روش اپراندها بصورت ضمنی در داخل دستورالعمل مشخص میشوند . مثل دستور CMAکه محتوی آکوموالتور را متمم میکند. دستورات صفر آدرسی مورد استفاده در کامپیوترهای stack machine نیز از آدرس دهی ضمنی استفاده میکنند زیرا عملوندها بطور ضمنی در باالی پشته در نظر گرفته میشوند. آدرس دهی بالدرنگ Immediate Addressing Mode در این روش مقدار عملوند در داخل خود دستورالعمل داده میشود. این مد آدرس دهی برای مقدار دهی رجیسترها بکار میرود. مثل دستور زیر در پردازنده x86 MOV CX, 1024 Operand Instruction آدرس دهی ثبات Register Addressing در این روش عملوندها در داخل رجیسترهای پردازنده قرار دارند .با استفاده از Kبیت میتوان تعداد 2kرحیستر را مشخص نمود. مثل دستور زیر در پردازنده x86 ADD AL, BL CPU registers R Operand Instruction آدرس دهی غیر مستقیم بکمک ثبات Register Indirect Addressing در این روش دستورالعمل رجیستری را مشخص میکند که محتوی آن آدرس عملوند در حافظه را مشخص خواهد نمود. مثل دستور زیر در پردازنده x86 ]MOV BX,[SI Memory CPU registers Instruction Operand R آدرس دهی افزایش و یا کاهشی خودکار Autoincrement or Autodecrement addressing این روش مشابه آدرس دهی غیر مستقیم بکمک ثبات است با این تفاوت که مقدار رجیستر بعد از استفاده برای محاسبه آدرس موثر افزایش و یا کاهش میابد. Memory CPU registers Instruction Operand R R=R+1 آدرس دهی مستقیم Direct Addressing Mode در این روش آدرس عملوند در داخل دستورالعمل ذکر میشود. مثل دستور زیر در پردازنده x86 ]MOV AX,[3000 Memory Instruction Operand Address آدرس دهی غیر مستقیم Indirect Addressing Mode در این روش آدرس موجود در دستورالعمل محلی از حاقطه را مشخص میکند که آدرس عملوند درآنجا قرار دارد .در اینحالت برای دسترسی به عملوند دوبار رجوع به حافطه مورد نیاز است :یکبار برای پیدا کردن آدرس آن و بار دیگر برای خواندن مقدار آن . Memory Instruction Operand Address آدرس دهی نسبی Relative Addressing Mode در این روش آدرس موثر از جمع آدرس مشخص شده در داخل دستورالعمل و محتوی PCحاصل میشود: Effective Address= address part of instruction + content of PC آدرس دهی نسبی در دستورالعمل های انشعابی که آدرس پرش در نزدیکی دستور قراردارد Memory Instruction Operand Address + PC آدرس دهی شاخص Index Addressing Mode در این روش آدرس موثر از جمع آدرس مشخص شده در داخل دستورالعمل و محتوی یک رجیستر مخصوص که رجیستر ایندکس نامیده میشود حاصل میشود: Effective Add.= address part of instruction + content of index register معموال از این روش برای دسترسی به داده های یک آرایه استفاده میشود .که محل شروع داده ها در حافظه در دستورالعمل مشخص میشود و فاصله داده مورد نظر تا محل شروع توسط رجیستر ایندکس تعیین میگردد. Memory Instruction Operand Address + Index Register آدرس دهی با ثبات پابه Base Register Addressing Mode این روش مشابه آدرس دهی با ثبات شاخص است با این تفاوت که بجای ثبات شاخص از ثبات پایه استفاده میشود .تفاوت ایندو روش در نحوه استفاده از رجیسترهاست . Effective Add.= address part of instruction + content of Base register Memory Instruction Operand Address + Base Register مثال عددی حافظه حالت مقدار آکوموالتور در صورت اجرای دستور موجود در آدرس 200برای حالتهای مختلف آدرس دهی چیست؟ PC = 200 R1 = 400 بارکردنAC 200 = 500آدرس 201 دستوربعدی 202 450 399 700 400 800 500 900 XR = 100 AC آدرس 600 325 702 300 800 مثال عددی حاالت آدرسدهی آدرس مؤثر محتوای اکومولیتور مستقیم 500 800 بالفصل 201 500 غیرمستقیم 800 300 نسبی 702 325 شاخصدار 600 900 ثبات - 400 غیرمستقیم از طریق ثبات 400 700 افزایش خودکار 400 700 کاهش خودکار 399 450 مجموعه دستورات کامپیوتر دستورات مورد استفاد ه درکامپیوترهای مختلف از لحاظ تعداد ،عملکرد ،نشانه های مورد استفاده برای اسمبلی ،و کد باینری بسیار متفاوت هستند با این وجود تمامی آنها دارای دستوراتی از گروههای زیر میباشند: دستورات انتقال داده دستورات محاسباتی ،منطقی و جابجائی دستورات کنترل برنامه دستوراتمعمولانتقال اطالعات فرم سمبولیک نام LD Load ST Store MOV Move انتقال داده بین رجیسترها انتقال داده بین حافظه و رجیسترها XCH Exchange تعویص داده های دو رحیستر و یا یک رجیستر و حافظه IN Input OUT Output PUSH Push POP Pop انتقال داده بین حافظه و رجیسترها انتقال داده بین ورودی/خروجی و رجیسترها انتقال داده بین پشته و رجیسترها دستوراتمعمولیریاضی نامدستور نماددستور افزایشدهندهیک Increment INC کاهشدهندهیک Decrement DEC جمع Add ADD تفریق Subtract SUB ضرب Multiply MUL تقسیم Divide DIV جمعبابیتنقلی Add with carry ADDC 2مکمل Negate (2’s complement) NEG دستوراتمنطقیوعملیاترویبیت نام دستور نماد دستور CLR Clear صفر کردن COM Complement مکمل کردن AND AND AND OR OR OR XOR XOR XOR CLRC Clear carry صفر کردن بیت نقلی SETC Set carry یک کردن بیت نقلی COMC Complement carry مکمل کردن بیت نقلی EI Enable Interrupt فعال کردن وقفه DI Disable Interrupt غیرفعال کردن وقفه دستوراتمعمولیشیفت نامدستور فرم نمادین شیفتبهراست Logical Shift Right SHR شیفتبهچپ Logical Shift Left SHL شیفتریاضیبه راست Arithmetic Shift Right SHRA شیفتریاضیبه چپ Arithmetic Shift Left SHLA چرخشبهراست Rotate Right ROR چرخشبهچپ Rotate Left ROL چرخشبهراستاز طریقبیتنقلی Rotate Right through carry RORC چرخشبهچپاز طریقبیتنقلی Rotate Left through carry ROLC دستورات متداول کنترل برنامه نامدستور فرمنمادین انشعاب Branch BR پرش Jump JMP ردکردن SKIP SKP صدازدن Call CALL بازگشت Return RET مقایسه Compare( By subtraction) CMP تست Test( By ANDing) TST بیت های وضعیت A 16-bit ALU C15 C16 V Z S B F15-F0 C F15 Check For Zero Output Output F وقفه انواع مختلف وقفه د رکامپیوتر وقفه های خارجی وقفه های داخلی این وقفه ها سخت افزاری بوده و توسط یک وسیله خارجی رخ میدهد. در اثر استفاده غلط و نابجای یک دستور حاصل میشود .مثل رخ دادن Overflowانجام یک تقسیم بر صفر ،سرریز شدن پشته برنامه سرویس دهی به وقفه در هر مورد در باره عکس العمل مناسب تصمیم میگیرد .این وقفه گاهی trapنامیده میشود. وقفه های نرم افزاری نوع خاصی از صدا زدن برنامه فرعی هستند .برای انجام عملیات خاصی نظیر تغییر مد برنامه از حالت userبه supervisorبکار میروند. کامپیوترهای با مجموعه دستورات پیچیده CISC معماری یک کامپیوتر متاثر از مجموعه دستورات انتخاب شده برای آن است. در کامپیوتر های اولیه سعی بر این بود تا تعداد دستورات کم و ساده باشد تا پیاده سازی سخت افزاری آن ممکن باشد. با پیشرفت در زمینه سخت افزار و ارزان شدن آن تعداد دستورات کامپیوتر ها افزایش یافته و بر پیچیدگی آنها افزوده گردید .هدف این بود تا هر چه بیشتر نیاز های کاربران را در سخت افزار گنجانده وبا کاهش فاصله بین زبانهای سطح باال و دستورات کامپیوترکار ترجمه دستورات سطح باال را ساده تر کنند .این نوع کامپیوترها گاها تا 200 دستور و تعداد بسیار زیادی مد آدرس دهی داشتند .این کامپیوتر ها را )Complex instruction set computer (ciscمینامند. ویژگی های کامپیوترهای CISC تعداد زیادی دستورالعمل دارند ) 100تا 200عدد( دستوراتی برای انجام کارهای ویژه دارند که معموال بندرت مورد استفاده قرار میگیرند تعداد زیادی مد آدرس دهی دارند طول دستورالعمل ها متفاوت است دستوراتی دارند که عملیاتی را بر روی اپراندهای موجود در حافظه انجام میدهند. برای اجرای دستورات به چندین کالک نیاز هست. ویژگی های RISC دستورات ساده و کمی دارند هدف این است که بتوان دستورات را بسرعت اجرا کرد .اغلب دستورات RISCدر یک سیکل اجرا میشوند )بعد ازواکشی و رمزگشایی( چون دستورات در زمان مشابهی اجرا میشوند عمل pipeline دارای بازده باالیی خواهد بود. کم بودن دستورات باعث ساده شدن واحد کنترل ومسیرهای ارتباطی میشود که منجر به کم شدن تعدادقطعات مورد نیاز برای ساخت پردازنده میشود اینکار سرعت پردازنده را نیز افزایش میدهد.. در ضمن میتوان واحد کنترل را بروش سیم بندی ساخت. ویژگی های RISC دسترسی به حافظه محدود به دستورات load , Storeاست باقی دستورات بر روی محتوی رجیسترها عمل میکنند. تعداد مد های آدرس دهی آنها کم است معموال فقط از مدهای آدرس دهی زیر استفاده میشود: register addressing direct addressing register indirect addressing displacement addressing ویژگی های RISC دستورات طول و فرمت یکسانی دارند اینکار باعث میشود تا خواندن دستورات و رمزگشائی آنها سریع باشد.زیرا الزم نیست تا معلوم شدن طول دستور برای رمزگشایی آن صبر کرد. یکسانی فرمت باعث سهولت رمزگشایی میگردد زیرا کد و ادرس همه دستورات در محل یکسانی قرار دارند. ویژگی های RISC تعداد رجیسترهای زیادی دارند. کم شدن دستورات باعث کوچک شدن واحد کنترل و آزاد شدن فضا برای گنجاندن تعداد بیشتری رجیستر میشود. متغیرهای محلی ،نتایج میانی و پارامترهای توابع در داخل رجیسترها ذخیره شده و تعداد رجوع به حافظه کاهش پیدا میکند. ستفاده از تکنیک همپوشانی register windowsکه باعث افزایش سرعت صدا زدن تابغ و بازگشت از آن میشود. overlapped register windows صدا زدن برنامه فرعی و بازگشت از آن بخش مهمی از اجرای برنامه را بخود اختصاص میدهد .لذا سرعت بخشیدن به آن میتواند تاثیر زیادی در افزایش کارائی پردازنده داشته باشد. هنگام صدا زدن یک برنامه فرعی دستوراتی استفاده میشوند که مقادیر رجیسترها را ذخیره کنند ،و پارامترها را انتقال دهند. برای بازگشت از برنامه فرعی مقدار بازگشتی تابع به برنامه صدا زننده منتقل شده و مقادیر ذخیره شده رجیسترها بازیابی میشوند. overlapped register windows دربرخی از معمارهای RISCبرای سهولت انتقال بین توابع از همپوشانی پنجره ای رجیسترها استفاده میشود تا نیاز به ذخیره و بازیافت مقادیر رجیسترها را حذف نمایند. هر زمان که تابعی که صدا زده میشود پنجره ای از رجیسترها از میان بانک رجیسترموجود در پردازنده به آن اختصاص میابد. اینکار از طریق افزایش پوینتری انجام میشود .با برگشت از تابع پوینتر به مقدار قبلی آن کاهش داده میشود. پنجره مورد استفاده برای توابع همجوار همپوشانی دارند تا امکان به اشتراک گذاشتن داده ها بین دو تابع وجود داشته باشد. overlapped register windows pointer pointer pointer از قسمت مشترک برای انتقال اطالعات استفاده میشود با برگشت تابع پوینتر کاهش داده میشود پنجره رجیستر اولیه پنجره جدید با صدا زدن تابع پنجره جدیدی از رجیسترها به آن اختصاص داده میشود. بانک رجیستر مثال در کتاب سیستمی معرفی شده است که دارای بانک رجیستری با مشخصات زیر است: این بانک دارای 74رجیستر است. رجیستر های R0تا R9بعنوان رجیسترهای عمومی قابل استفاده تمامی توابع هستند بقیه رجیسترها به 4گروه A,B,C,Dتقسیم شده اند . هر پنجره دارای 10رجیستر اختصاصی و دو دسته رجیستر 6تائی مشترک با پنجره های مجاور است. از رجیسترهای اختصاصی برا ی ذخیره متغیرهای محلی و از رجیسترهای مشترک برای انتقال پارامترها استفاده میشود. به این ترتیب هر تابع میتواند از 32رحیستر استفاده نماید R15 Common to D and A مثال R10 R73 Local to D R64 R63 Common to D and C R58 R57 Proc. D R48 Local to C R47 R42 Proc. C Common to B and C R41 R32 R9 Local to B R31 R26 Proc.B Common to B and A R25 R0 R16 R15 Global Registers R10 Proc.A Local to A Common to D and A overlapped register windows نحوه محاسبه رجیسترهای قابل استفاده برای هر تابع به صورت زیر است. = Gتعداد رجیسترهای عمومی = Lتعداد رجیسترهای اختصاصی هر پنجره = Cتعداد رجیسترهای مشترک بین دو پنجره = Wتعداد پنجره ها = L+2C+Gاندازه پنجره = (L+C)W+Gتعداد کل رجیسترها در بانک رجیستری