آی پی امداد
abtahi
آریا الکترونیک mehrinfo تکشو

معرفي ريزپردازنده

kami_in2000

کاربران vip(افتخاری)
vip افتخاری
کاربر
2009-02-04
558
2,880
QOM
· همانگونه که در شکل فوق، مشاهده می گردد از شش " 3-State" استفاده شده که به آنها "tri-State buffers" می گويند. بافرهای فوق قادر به پاس دادن مقادير صفر و يايک و يا قطع خروجی مربوطه می باشند.. اين نوع بافرها امکان ارتباط چندين خروجی رااز طريق يک Wire فراهم می نمايند. در چنين حالتی فقط يکی از آنها قادر به انتقال ( حرکت ) صفر و يا يک بر روی خط خواهد بود.
ريجستر Instruction و Instruction Decoder مسئوليت کنترل ساير عناصر را برعهده خواهند داشت . بدين منظور از خطوط کنترلی متفاوتی استفاده میگردد. خطوط فوق در شکل فوق نشان داده نشده اند ولی می بايست قادر به انجام عمليات زير باشند:
· به ريجستر A اعلام نمايد که مقدار موجود بر روی گذرگاه داده را در خود نگاه دارد.(Latch)
· به ريجستر B اعلام نمايد که مقدار موجود بر روی گذرگاه داده را در خود نگاه دارد.(Latch)
· به ريجستر C اعلام نمايد که مقدار موجود بر روی گذرگاه داده را در خود نگاه دارد.(Latch)
· به " شمارنده برنامه " اعلام نمايد که مقدارموجود بر روی گذرگاه داده را در خود نگاه دارد.(Latch)
· به ريجستر Address اعلام نمايد که مقدار موجودبر روی گذرگاه داده را در خود نگاه دارد.(Latch)
· به ريجستر Instruction اعلام نمايد که مقدارموجود بر روی گذرگاه داده را در خود نگاه دارد.(Latch)
· به " شمارنده برنامه " اعلام نمايد که مقدارخود را افزايش دهد.
· به " شمارنده برنامه " اعلام نمايد که مقدارخود را صفر (Reset) نمايد.
· به واحد منطق و حساب نوع عملياتی را که می بايست انجام گيرد، اعلام نمايد.
· به ريجستر Test اعلام نمايد که بيت های ماحصل عمليات ALU را در خود نگاه دارد.
· فعال نمودن خط RD ( خواندن )
· فعال نمودن خط WR ( نوشتن )
 

kami_in2000

کاربران vip(افتخاری)
vip افتخاری
کاربر
2009-02-04
558
2,880
QOM
حافظه های RAM و ROM
در بخش قبل گذرگاه های آدرس و داده نظيرخطوط RD,WR بررسی گرديدند. گذرگاه های فوق به حافظه های
RAM ،ROM و يا هر دو متصل خواهند بود. در ريزپردازنده ساده فرضی فوق، از گذرگاه های آدرس و داده هشت بيتی استفاده می گردد. بدين ترتيب پردازنده قادر به آدرس دهی 256 بايت حافظه و خواندن و يا نوشتن هشت بيت از حافظه در هر لحظه خواهد بود. فرض کنيد پردازنده فوق دارای 128 بايت حافظه ROM بوده که از آدرس صفر شروع شده و 128 بايت حافظه RAM که از آدرس 128 آغاز می گردد ، است . حافظه ROM تراشه ای است که اطلاعاتی را از قبل و بصورت دائم در خود نگهداری می نمايد. گذرگاه های آدرس به تراشه ROM اعلام خواهند کرد که کدام بايت را خواسته و آن را بر روی گذرگاه قرار خواهد داد. زمانيکه وضعيت خط RD تغيير نمايد تراشه ROM بايت مورد نظر و انتخابی را بر روی گذرگاه داده قرار خواهد داد. RAM شامل بايت هائی از اطلاعات است . ريزپردازنده قادر به خواندن و نوشتن در حافظه فوق بر اساس سيگنال های دريافتی از خطوط RD و RW است . در رابطه با حافظه RAM می بايست به اين نکته نيز اشاره گردد که اين نوع از حافظه ها با از دست منبع انرژی ( برق ) اطلاعات خود را از دست خواهند داد.

 

kami_in2000

کاربران vip(افتخاری)
vip افتخاری
کاربر
2009-02-04
558
2,880
QOM
تمامی کامپيوترها دارای حافظه ROM به ميزان مشخص می باشند. ( برخی از کامپيوترها ممکن است دارای حافظه RAM نبوده نظير ميکرو کنترل ها ، ولی وجود و ضرورت حافظه ROM را در هيچ کامپيوتری نمی توان انکار نمود).بر روی کامپيوترهای شخصی حافظه ROM را BIOS نيز می نامند. زمانيکه ريزپردازنده فعاليت خود را آغاز می نمايد ، در ابتدا دستورالعمل هائی را اجراء خواهد کرد که در BIOS می باشند. دستورالعمل های موجود در BIOS عمليانی نظير تست سخت افزار و سيستم را انجام و در ادامه فرآيندی آغاز خواهد شد که نتيجه آن استقرار سيستم عامل در حافظه خواهد بود. (Booting) . در آغاز فرآيند فوق ، بوت سکتور هارد ديسک ( می تواند آغاز عمليات فوق از هارد شروع نشده و از فلاپی ديسک انجام گردد ، اتخاذ تصميم در رابطه با وضعيت فوق بر اساس پارامترهای ذخيره شده در حافظه CMOS خواهند بود ) را بررسی خواهد کرد . بوت سکتور فوق حاوی برنامه ای کوچک است که در ادامه BIOS آن را خوانده و در حافظه RAM مستقر خواهد کرد. ريزپردازنده در ادامه دستورالعمل های مربوط به برنامه بوت سکتور را که در حافظه RAM مستقر شده اند ،اجراء خواهد کرد. برنامه فوق به ريزپردازنده اعلام خواهد کرد که اطلاعات ديگری را از هارد ديسک به درون حافظه RAM انتقال و آنها را اجراء نمايد. با ادامه وتکميل فرآيند فوق سيستم عامل در حافظه مستقر ومديريت خود را آغاز می نمايد.

 

kami_in2000

کاربران vip(افتخاری)
vip افتخاری
کاربر
2009-02-04
558
2,880
QOM
دستورالعمل های ريزپردازنده
هر ريزپردازنده دارای مجمو عه ای از دستورالعمل ها بوده که دارای کارآئی خاصی می باشند. اين دستورالعمل ها بصورت الگوئی از صفر و يا يک پياده سازی می گردنند. استفاده از دستورات فوق با توجه به ماهيت الگوئی آنها برای انسان مشکل و بخاطر سپردن آنها امری است مشکل تر! ، بدين دليل از مجموعه ای " کلمات " برا ی مشخص نمودن الگوهای فوق استفاده می گردد. مجموعه " کلمات " فوق " زبان اسمبلی " ناميده می شوند. يک " اسمبلر" قادر به ترجمه کلمات به الگوهای بيتی متناظر است .پس از ترجمه ، ماحصل عمليات که همان استخراج " الگوهای بيتی " است، در حافظه مستقر تا زمينه اجرای آنها توسط ريزپردازنده فراهم گردد جدول زير برخی از دستورالعمل های مورد نياز در رابطه با پردازنده فرضی را نشانن می دهد.
 

kami_in2000

کاربران vip(افتخاری)
vip افتخاری
کاربر
2009-02-04
558
2,880
QOM
LOADA mem لود نمودن ريجستر A از آدرس حافظه LOADB mem لود نمودن ريجستر B از آدرس حافظه CONB con لود نمودن يک مقدار ثابت در ريجستر B SAVEB mem ذخيره نمودن مقدار موجود در ريجستر B در يک آدرس حافظه SAVEC mem ذخيره نمودن مقدار موجود در ريجستر C در يک آدرس حافظه ADD جمع A و B و ذخيره کردن حاصل در C SUB تفريق A و B و ذخيره کردن حاصل در C MUL ضرب A و B و ذخيره کردن حاصل در C DIV تقسيم A و B و ذخيره کردن حاصل در C COM مقايسه A و B و ذخيره کردن حاصل در Test JUMP addr پرش به يک آدرس مشخص JEQ addr پرش شرطی ( اگر مساوی است ) به يک آدرس مشخص JNEQ addr پرش شرطی ( اگر نا مساوی است ) به يک آدرس مشخص JG addr پرش شرطی ( اگر بزرگتر است ) به يک آدرس مشخص JGE addr پرش شرطی ( اگر بزرگتر و يا مساوی است ) به يک آدرس مشخص JL addr پرش شرطی ( اگر کوچکتر است ) به يک آدرس مشخص JLE addr پرش شرطی ( اگر کوچکتر و يا مساوی است ) به يک آدرس مشخص STOP توقف اجراء
مثال : فرض کنيد برنامه محاسبه فاکتوريل عدد پنج (5!=5*4*3*2*1 ) با يکی از زبانهای سطح بالا نظير C نوشته گردد . کمپايلر ( مترجم ) زبان C برنامه مورد نظررا به زبان اسمبلی ترجمه خواهد کرد. ( فرض کنيد که آدرس شروع RAM در پردازنده فرضی 128 و آدرس شروع حافظه ROM صفر باشد.) جدول زير برنامه نوشته شده به زبان C رابه همراه کد ترجمه شده اسمبلی معادل آن، نشان می دهد.
 

kami_in2000

کاربران vip(افتخاری)
vip افتخاری
کاربر
2009-02-04
558
2,880
QOM
a=1;
f=1;
while (a <= 5)
{
f = f * a;
a = a + 1;
} // Assume a is at address 128
// Assume F is at address 129
0 CONB 1 // a=1;
1 SAVEB 128
2 CONB 1 // f=1;
3 SAVEB 129
4 LOADA 128 // if a > 5 the jump to 17
5 CONB 5
6 COM
7 JG 17
8 LOADA 129 // f=f*a;
9 LOADB 128
10 MUL
11 SAVEC 129
 

kami_in2000

کاربران vip(افتخاری)
vip افتخاری
کاربر
2009-02-04
558
2,880
QOM
12 LOADA 128 // a=a+1;
13 CONB 1
14 ADD
15 SAVEC 128
16 JUMP 4 // loop back to if
17 STOP در ادامه می بايست کدهای ترجمه شده به زبان اسمبلی به زبان ماشين ( الگوهای بيتی ) ترجمه گردند. بدين منظور لازم است که هر يک از دستورات اسمبلی دارای کد معادل (OpCode) باشند. فرض کنيد دستورات اسمبلی در پردازنده فرضی دارای Opcode ( کدهای عملياتی) زير باشند.

Assembly Instruction


Opcode

LOADA mem 1 LOADB mem 2 CONB con 3 SAVEB mem 4 SAVEC mem 5 ADD 6 SUB 7 MUL 8 DIV 9 COM 10 JUMP addr 11 JEQ addr 12 JNEQ addr 13 JG addr 14 JGE addr 15 JL addr 16 JLE addr 17 STOP 18
در نهايت برنامه ترجمه شده به زبان اسمبلی به زبان ماشين ( الگوهای بيتی ) ترجمه خواهد شد.

Assembly Language
 

kami_in2000

کاربران vip(افتخاری)
vip افتخاری
کاربر
2009-02-04
558
2,880
QOM
// Assume a is at address 128
// Assume F is at address 129
0 CONB 1 // a=1;
1 SAVEB 128
2 CONB 1 // f=1;
3 SAVEB 129
4 LOADA 128 // if a > 5 the jump to 17
5 CONB 5
6 COM
7 JG 17
8 LOADA 129 // f=f*a;
9 LOADB 128
10 MUL
11 SAVEC 129
12 LOADA 128 // a=a+1;
13 CONB 1
14 ADD
15 SAVEC 128
16 JUMP 4 // loop back to if
17 STOP
 

kami_in2000

کاربران vip(افتخاری)
vip افتخاری
کاربر
2009-02-04
558
2,880
QOM
// Assume a is at address 128
// Assume F is at address 129
Addr opcode/value
0 3 // CONB 1
1 1
2 4 // SAVEB 128
3 128
4 3 // CONB 1
5 1
6 4 // SAVEB 129
7 129
8 1 // LOADA 128
9 128
10 3 // CONB 5
11 5
12 10 // COM
13 14 // JG 17
 

kami_in2000

کاربران vip(افتخاری)
vip افتخاری
کاربر
2009-02-04
558
2,880
QOM
14 31
15 1 // loada 129
16 129
17 2 // loadb 128
18 128
19 8 // mul
20 5 // savec 129
21 129
22 1 // loada 128
23 128
24 3 // conb 1
25 1
26 6 // add
27 5 // savec 128
28 128
29 11 // jump 4
30 8
31 18 // stop
 
بالا