موتورولا 68000 (گاهی به موتورولا 68k یا m68k کوتاه می شود و معمولاً "شصت و هشت هزار" تلفظ می شود) [2] [3] یک ریزپردازنده کامپیوتری مجموعه دستورالعمل پیچیده 16/32 بیتی (CISC) است که در سال 1979 توسط Motorola Semiconductor معرفی شد. بخش محصولات
این طرح یک مجموعه دستورالعمل 32 بیتی را با ثبات های 32 بیتی و یک گذرگاه داده داخلی 16 بیتی اجرا می کند . [4] گذرگاه آدرس 24 بیتی است و از تقسیمبندی حافظه استفاده نمیکند ، که برنامهنویسی برای آن را آسانتر کرده است. در داخل، از یک واحد منطقی محاسباتی 16 بیتی (ALU) و دو ALU 16 بیتی دیگر که بیشتر برای آدرس ها استفاده می شود، استفاده می کند، [4] و دارای یک گذرگاه داده خارجی 16 بیتی است . [5] به همین دلیل، موتورولا آن را یک پردازنده 16/32 بیتی نامید.
68k به عنوان یکی از اولین پردازندههای در دسترس با مجموعه دستورالعملهای 32 بیتی، فضای آدرس بزرگ بدون بخشبندی و سرعت نسبتاً بالا برای آن دوره، طراحی محبوبی در دهه 1980 بود. این به طور گسترده در نسل جدیدی از کامپیوترهای شخصی با رابط کاربری گرافیکی از جمله Macintosh 128K ، Amiga ، Atari ST و X68000 استفاده شد . کنسول Genesis/Mega Drive 1988 توسط 68000 قدرت می گیرد.
پردازندههای بعدی در سری موتورولا 68000 ، که با موتورولا 68020 شروع میشوند ، از ALUهای کامل 32 بیتی استفاده میکنند و دارای آدرسهای کامل 32 بیتی و گذرگاههای داده هستند که سرعت عملیات 32 بیتی را افزایش میدهند و امکان آدرسدهی 32 بیتی را به جای 24 بیتی فراهم میکنند. آدرس دهی 68000 و 68010 یا آدرس دهی 31 بیتی موتورولا 68012 . 68k اصلی علیرغم محدود بودن به یک گذرگاه خارجی 16 بیتی، عموماً با بقیه خط سازگار است. [4]
پس از 45 سال تولید ، معماری 68000 هنوز در حال استفاده است. [6] [7]
اولین ریزپردازنده موتورولا 6800 بود که در اوایل سال 1974 معرفی شد و در اواخر همان سال به تعداد زیاد در دسترس قرار گرفت. [8] شرکت هدف خود را برای فروش 25000 واحد تا سپتامبر 1976 تعیین کرد، هدفی که آنها به آن دست یافتند. اگرچه طراحی قابلتوجهی بود، اما طراحیهای قدرتمندتری مانند Zilog Z80 و طرحهای ارزانتر مانند MOS Technology 6502 تحت تأثیر قرار گرفت . [9] در اواخر سال 1976، دفتر فروش یکنواخت بود و این بخش تنها با پروژه ای برای جنرال موتورز که به یک خط تولید بزرگ برای کنترل موتور و سایر وظایف تبدیل شد، نجات یافت. [10]
در زمان معرفی 6800، تعداد کمی از طرح های 16 بیتی به بازار آمده بود. اینها عموماً بر روی پلتفرمهای مینی کامپیوتر مانند Data General Nova یا PDP-8 مدلسازی شدند . بر اساس فرآیندهای تولید نیمه هادی در آن دوره، اینها اغلب راه حل های چند تراشه ای مانند National Semiconductor IMP-16 یا PACE تک تراشه ای بودند که با سرعت مشکل داشتند. [11]
در اواخر سال 1976، کالین کروک، مدیر عملیات، شروع به بررسی چگونگی کسب موفقیت در فروش آینده کرد. آنها میدانستند که اینتل در حال کار بر روی یک پسوند 16 بیتی از سری 8080 خود است که به عنوان Intel 8086 ظاهر میشود، و شایعاتی درباره Zilog Z80 16 بیتی شنیده بودند که به Z8000 تبدیل شد . اینها از تکنیکهای طراحی جدید استفاده میکنند که مشکلاتی را که در سیستمهای 16 بیتی قبلی دیده میشد از بین میبرد. [12]
موتورولا میدانست که اگر محصولی مشابه 8086 را با 10 درصد تواناییهایش روانه بازار کند، اینتل از آنها در بازار بهتر خواهد بود. آنها برای رقابت، هدف خود را دو برابر قدرتمندتر بودن با هزینه یکسان یا نصف هزینه با عملکرد یکسان قرار دادند. کروک تصمیم گرفت که با قدرتمندترین پردازنده موجود در بازار به سطح بالای بازار حمله کند. [12] 16 بیتی دیگر انجام نمی شود، طراحی آنها باید بزرگتر باشد، و این به معنای داشتن برخی ویژگی های 32 بیتی است. [ 13] کروک در پایان سال 1976 در مورد این رویکرد تصمیم گرفته بود.
کروک پروژه سیستم کامپیوتری پیشرفته موتورولا روی سیلیکون (MACSS) را برای ساخت این طرح تشکیل داد و تام گانتر را به عنوان معمار اصلی آن استخدام کرد. گانتر در ژانویه 1977 شروع به تشکیل تیم خود کرد. [14] هدف عملکرد 1 میلیون دستورالعمل در ثانیه (MIPS) تعیین شد. آنها می خواستند این طرح نه تنها فروشندگان ریز رایانه مانند Apple Computer و Tandy را به دست آورد ، بلکه شرکت های رایانه کوچک مانند NCR و AT&T را نیز به دست آورد . [14]
تیم تصمیم گرفت که تلاش برای سازگاری با 6800 را کنار بگذارد، زیرا آنها احساس کردند که طراحی های 8 بیتی آنقدر محدود هستند که نمی توانند مبنایی برای طراحی های جدید باشند. سیستم جدید تحت تأثیر PDP-11 ، محبوب ترین طراحی مینی کامپیوتر در آن دوران بود. [15] در آن زمان، یک مفهوم کلیدی در مینی ها، مفهوم مجموعه دستورات متعامد بود که در آن هر عملیاتی مجاز بود بر روی هر نوع داده کار کند. برای وارد کردن دادههای صحیح به واحدهای داخلی، MACSS از میکروکد استفاده کرد ، برنامههای اساساً کوچک در حافظه فقط خواندنی که دادههای مورد نیاز را جمعآوری میکرد، عملیات را انجام میداد و نتایج را مینوشت. MACSS جزو اولین کسانی بود که از این تکنیک در ریزپردازنده استفاده کرد. [16] [17]
مقدار زیادی سخت افزار پشتیبانی برای 6800 وجود داشت که مفید باقی می ماند، مواردی مانند UART ها و سیستم های رابط مشابه. به همین دلیل، طراحی جدید حالت سازگاری پروتکل اتوبوس را برای 6800 دستگاه جانبی موجود حفظ کرد. [18] [17]
یک تراشه با 32 داده و 32 پین آدرس دهی به 64 پین، به علاوه بیشتر برای قدرت و سایر ویژگی ها نیاز دارد. در آن زمان، بستههای درون خطی دوگانه 64 پین (DIP) سیستمهای «بزرگ و پرهزینه» و «فقط وحشتناک» بودند، که آن را بزرگترین سیستمی بود که میتوانستند در نظر بگیرند. برای اینکه آن را مناسب کند، کروک یک طرح ترکیبی با معماری مجموعه دستورالعمل های 32 بیتی (ISA) انتخاب کرد اما اجزای 16 بیتی آن را پیاده سازی کردند، مانند واحد منطق حسابی (ALU). [14] رابط خارجی به 16 پین داده و 24 پین برای آدرسها کاهش یافت و به همه آنها اجازه داد تا در یک بسته 64 پین قرار گیرند. این به "سوسک تگزاس" معروف شد. [13] [الف]
در اواسط دهه 1970، تکنیکهای طراحی MOS موتورولا نسبت به رقبای آنها کمتر پیشرفته شده بود و خطوط ساخت آنها گاهی با بازده پایین دست و پنجه نرم میکردند . در اواخر دهه 1970، این شرکت وارد یک برنامه تبادل فناوری با هیتاچی شد و به طور چشمگیری قابلیت های تولید خود را بهبود بخشید. به عنوان بخشی از این، یک مدل جدید به نام MOS-8 با استفاده از آخرین اندازههای ویفر 5 اینچی و فرآیند HMOS اینتل با اندازه ویژگی 3.5 میکرومتر ساخته شد . [19] این سرمایهگذاری با هدف جذب رقابت بود: حتی شرکتهای نیمهرسانای تازهکار مانند Zilog و MOS Technology قبل از موتورولا CPUهایی را معرفی کرده بودند که بر اساس منطق NMOS در حالت تخلیه تولید شده بودند. در واقع، موتورولا ممکن است در کنار گذاشتن تدریجی حالت بهبود و گیت فلزی، به طور قابل توجهی از معاصران عقب مانده باشد، به طوری که گانتر به یاد می آورد که خود 68000 علیرغم اینکه در ابتدا طراحی دروازه فلزی را اتخاذ کرده بود، باید موفق می شد. [20] اگرچه نکته در مورد بازی کردن واضح است، اما این نمیتوانست خلاصهای کاملاً دقیق باشد، زیرا برگههای داده موتورولا در سال 1976، قبل از شروع پروژه MACCS، اکثریت خانواده 6800 آن را در سیلیکون گیت نشان میدهند. [21] در واقع، مقاله خود گانتر در سال 1979 که 68000 را معرفی کرد، آن را به عنوان یک طراحی HMOS در حالت تخلیه سیلیکونی گیت برجسته کرد. [22] هر چه درجه کسری فرآیند و تولید موتورولا در روزهای اولیه وجود داشت، تیم منصرف نشد و در جستجوی یک ریزپردازنده با عملکرد پیشرو در صنعت سازش نکرد. [23]
به طور رسمی در سپتامبر 1979 معرفی شد، [24] نمونه های اولیه در فوریه 1980 منتشر شد و تراشه های تولیدی در نوامبر در دسترس بودند. [25] درجه های سرعت اولیه 4، 6 و 8 مگاهرتز بودند . تراشههای 10 مگاهرتز در سال 1981، [26] و تراشههای 12.5 مگاهرتز تا ژوئن 1982 در دسترس قرار گرفتند. [25] نسخه 16.67 مگاهرتز "12F" MC68000، سریعترین نسخه تراشه اصلی HMOS، تا اواخر دهه 1980 تولید نشد.
در آغاز سال 1981، 68k در حال برنده شدن سفارشات در سطح بالایی بود و گانتر شروع به نزدیک شدن به اپل برای برنده شدن در تجارت خود کرد. در آن زمان، 68k به قیمت حدود 125 دلار فروخته شد. در ملاقات با استیو جابز ، جابز در مورد استفاده از 68k در Apple Lisa صحبت کرد ، اما اظهار داشت: "آینده واقعی در این محصول است که من شخصا انجام می دهم. اگر این تجارت را می خواهید، باید متعهد شوید که آن را بفروشید. برای 15 دلار." [27] موتورولا با پیشنهاد فروش آن به قیمت 55 دلار در ابتدا، سپس کناره گیری به 35 دلار و غیره مخالفت کرد. جابز موافقت کرد و مکینتاش از 6809 به 68k منتقل شد. میانگین قیمت در نهایت به 14.76 دلار رسید. [27]
در سال 1982، 68000 یک به روز رسانی جزئی در معماری مجموعه دستورالعمل های خود (ISA) دریافت کرد تا از حافظه مجازی پشتیبانی کند و با الزامات مجازی سازی Popek و Goldberg مطابقت داشته باشد . تراشه به روز شده 68010 نام دارد . [28] همچنین یک "حالت حلقه" جدید اضافه می کند که حلقه های کوچک را سرعت می بخشد، و عملکرد کلی را تا حدود 10٪ در همان سرعت ساعت افزایش می دهد. نسخه توسعه یافته دیگری که 31 بیت از گذرگاه آدرس را نشان می دهد نیز در مقادیر کم به عنوان 68012 تولید شد .
برای پشتیبانی از سیستمهای کمهزینه و برنامههای کنترلی با اندازههای حافظه کوچکتر، موتورولا MC68008 سازگار 8 بیتی را نیز در سال 1982 معرفی کرد. این یک 68000 با یک گذرگاه داده 8 بیتی و یک گذرگاه آدرس کوچکتر (20 بیتی) است. بعد از سال 1982، موتورولا توجه بیشتری را به پروژه های 68020 و 88000 معطوف کرد .
چندین شرکت دیگر تولیدکنندگان منبع دوم HMOS 68000 بودند. اینها عبارتند از Hitachi (HD68000) که اندازه ویژگی را برای نسخه 12.5 مگاهرتز خود به 2.7 میکرومتر کاهش داد، [25] Mostek (MK68000)، Rockwell (R68000)، Signetics (SCN680). ، Thomson / SGS-Thomson (در ابتدا EF68000 و بعداً TS68000) و توشیبا (TMP68000). توشیبا همچنین منبع دوم سازنده CMOS 68HC000 (TMP68HC000) بود.
انواع رمزگذاری شده 68000 که هیتاچی FD1089 و FD1094 هستند، کلیدهای رمزگشایی برای کدهای عملیاتی و داده های اپکد را در حافظه پشتیبان باتری ذخیره می کنند و در برخی از سیستم های آرکید سگا از جمله سیستم 16 برای جلوگیری از دزدی دریایی و بازی های غیرقانونی بوتلگ استفاده می شوند. [29]
68HC000، اولین نسخه CMOS 68000، توسط هیتاچی طراحی شد و به طور مشترک در سال 1985 معرفی شد. [30] نسخه موتورولا MC68HC000 نامیده می شود، در حالی که هیتاچی HD68HC000 است. 68HC000 سرعت 8 تا 20 مگاهرتز را ارائه می دهد. به جز استفاده از مدار CMOS، رفتار آن مشابه HMOS MC68000 بود، اما تغییر به CMOS مصرف برق آن را تا حد زیادی کاهش داد. HMOS MC68000 اولیه در دمای محیط 25 درجه سانتیگراد حدود 1.35 وات بدون توجه به سرعت ساعت مصرف می کرد، در حالی که MC68HC000 تنها 0.13 وات در 8 مگاهرتز و 0.38 وات در 20 مگاهرتز مصرف می کرد. (برخلاف مدارهای CMOS، HMOS همچنان در حالت بیکار برق مصرف می کند، بنابراین مصرف انرژی با نرخ ساعت متفاوت است.) اپل 68HC000 را برای استفاده در Macintosh Portable انتخاب کرد .
موتورولا در سال 1990 MC68008 را با MC68HC001 جایگزین کرد. [31] این تراشه از بسیاری جهات شبیه 68HC000 است، اما گذرگاه داده آن بسته به مقدار پین ورودی در هنگام تنظیم مجدد، می تواند در هر دو حالت 16 بیتی یا 8 بیتی کار کند. بنابراین، مانند 68008، می توان از آن در سیستم هایی با حافظه های 8 بیتی ارزان تر استفاده کرد.
تکامل بعدی 68000 بر برنامههای کنترل تعبیهشده مدرنتر و تجهیزات جانبی روی تراشه متمرکز شد. تراشه 68EC000 و هسته SCM68000 گذرگاه جانبی M6800 را حذف میکند و MOVE را از دستورالعمل SR از برنامههای حالت کاربر حذف میکند، و باعث میشود 68EC000 و 68SEC000 تنها 68000 CPU باشند که 100٪ با کد شیء کاربر Mo800 در CPU6 قبلی سازگار نیستند. هنگامی که در حالت Supervisor اجرا می شود، هیچ تفاوتی وجود ندارد. [32] در سال 1996، موتورولا هسته مستقل را با مدارهای کاملاً ایستا به روز کرد و تنها 2 میکرووات را در حالت کم مصرف کشید و آن را MC68SEC000 نامید. [33]
موتورولا تولید HMOS MC68000 و همچنین MC68008، MC68010، MC68330، و MC68340 را در 1 ژوئن 1996 متوقف کرد، [34] [35] اما شرکت فرعی آن Freescale Semiconductor همچنان در حال تولید HC8HC600MC8HC60MC60MC8HC60MC60MC60MC8HC60MC60MC60MC60MC60MC8HC60MC6. و MC68SEC000 و همچنین میکروکنترلرهای MC68302 و MC68306 و نسخههای بعدی خانواده DragonBall . نوادگان معماری 68000، خانواده های 680x0 ، CPU32 و Coldfire نیز هنوز در حال تولید بودند. اخیراً، با بسته شدن Fab Sendai، تمام قطعات 68HC000، 68020، 68030 و 68882 متوقف شده اند و تنها 68SEC000 در حال تولید باقی مانده است. [36]
از آنجایی که ریزپردازنده های 32 بیتی "واقعی" جایگزین شدند، 68000 به عنوان هسته بسیاری از میکروکنترلرها استفاده می شود . در سال 1989، موتورولا پردازنده ارتباطی MC68302 را معرفی کرد . [37]
IBM 68000 را برای کامپیوتر IBM در نظر گرفت اما Intel 8088 را انتخاب کرد . با این حال، IBM Instruments به طور خلاصه سیستم های کامپیوتری آزمایشگاهی IBM System 9000 مبتنی بر 68000 را فروخت . مجموعه دستورالعمل های 68k به ویژه برای پیاده سازی یونیکس مناسب است، [38] و 68000 و جانشینان آن به CPU های غالب برای ایستگاه های کاری مبتنی بر یونیکس از جمله ایستگاه های کاری Sun و ایستگاه های کاری Apollo/Domain تبدیل شدند .
در سال 1981، موتورولا برد کامپیوتر آموزشی موتورولا 68000 را معرفی کرد ، یک کامپیوتر تک برد برای اهداف آموزشی و آموزشی که علاوه بر خود 68000 حاوی حافظه، دستگاه های ورودی/خروجی، تایمر قابل برنامه ریزی و ناحیه سیم پیچی برای مدارهای سفارشی بود. این برد تا اوایل دهه 1990 در کالج های ایالات متحده به عنوان ابزاری برای یادگیری برنامه نویسی اسمبلی مورد استفاده قرار گرفت. [39]
در زمان معرفی، 68000 برای اولین بار در سیستم های گران قیمت، از جمله ریز کامپیوترهای چند کاربره مانند WICAT 150، [40] کامپیوترهای Alpha Microsystems اولیه ، Sage II / IV ، Tandy 6000 / TRS-80 Model 16 و Fortune 32:16 استفاده شد. ; ایستگاه های کاری تک کاربره مانند سیستم های HP 9000 سری 200 هیولت پاکارد ، اولین سیستم های Apollo/Domain ، Sun Microsystems Sun -1 و Corvus Concept . و پایانه های گرافیکی مانند Digital Equipment Corporation 's VAXstation 100 و Silicon Graphics ' IRIS 1000 و 1200. سیستم های یونیکس به سرعت به نسل های بعدی توانمندتر خط 68k منتقل شدند که در طول دهه 1980 در آن بازار محبوب ماندند.
در اواسط دهه 1980، کاهش هزینه تولید، 68000 را برای استفاده در کامپیوترهای شخصی که با اپل لیزا و مکینتاش شروع شد ، و سپس آمیگا ، آتاری ST و X68000 قابل استفاده بود .
میکروکامپیوتر QL Sinclair ، همراه با مشتقات آن، مانند پایانه تجاری ICL One Per Desk ، مهمترین کاربرد تجاری 68008 بود. Helix Systems (در میسوری، ایالات متحده) توسعهای برای گذرگاه SWTPC SS-50 طراحی کرد . SS-64، و سیستم هایی را تولید کرد که در اطراف پردازنده 68008 ساخته شده بودند.
در حالی که پذیرش RISC و x86 جایگزین سری 68000 به عنوان CPU دسکتاپ/ایستگاه کاری شد، این پردازنده کاربرد قابل توجهی در برنامه های کاربردی تعبیه شده پیدا کرد . در اوایل دهه 1990، تعداد 68000 CPU با قیمت کمتر از 30 دلار برای هر قطعه قابل خریداری بود. [ نیازمند منبع ]
68000 همچنین به عنوان یک کنترلر تعبیه شده موفقیت زیادی کسب کرد. در اوایل سال 1981، چاپگرهای لیزری مانند Imagen Imprint-10 توسط بردهای خارجی مجهز به 68000 کنترل می شدند. اولین HP LaserJet که در سال 1984 معرفی شد، با فرکانس 8 مگاهرتز داخلی 68000 عرضه شد. از جمله اپل با معرفی LaserWriter در سال 1985، اولین چاپگر لیزری PostScript . 68000 به طور گسترده در بقیه دهه 1980 در چاپگرها مورد استفاده قرار گرفت و تا دهه 1990 در چاپگرهای ارزان قیمت ادامه یافت.
68000 در زمینه سیستم های کنترل صنعتی موفق بود. در میان سیستم هایی که از داشتن یک 68000 یا مشتق به عنوان ریزپردازنده خود بهره مند شدند، خانواده هایی از کنترل کننده های منطقی قابل برنامه ریزی (PLC) ساخته شده توسط آلن برادلی ، تگزاس اینسترومنتز و متعاقباً، پس از کسب آن بخش از TI، توسط زیمنس بودند . کاربران چنین سیستمهایی منسوخ شدن محصول را به همان میزان کاربران داخلی نمیپذیرند، و کاملاً محتمل است که با وجود نصب بیش از 20 سال پیش، بسیاری از کنترلکنندههای مبتنی بر 68000 تا قرن بیست و یکم به خدمات قابل اعتماد خود ادامه دهند.
در تعدادی از اسیلوسکوپ های دیجیتال از دهه 80، [41] 68000 به عنوان یک پردازشگر نمایش شکل موج استفاده شده است. برخی از مدلها از جمله LeCroy 9400/9400A [42] همچنین از 68000 به عنوان یک پردازشگر ریاضی شکل موج (شامل جمع، تفریق، ضرب و تقسیم دو شکل موج/مرجع/حافظههای شکل موج) و برخی از اسیلوسکوپهای دیجیتال با استفاده از 68000 استفاده میکنند. 9400/9400A) همچنین می تواند توابع تبدیل فوریه سریع را روی یک شکل موج انجام دهد.
میکروکنترلرهای 683XX بر اساس معماری 68000 در تجهیزات شبکه و مخابرات، ستاپ باکس تلویزیون، ابزارآلات آزمایشگاهی و پزشکی و حتی ماشین حساب های دستی استفاده می شوند. MC68302 و مشتقات آن در بسیاری از محصولات مخابراتی از Cisco، 3com، Ascend، Marconi، Cyclades و دیگران استفاده شده است. مدلهای قبلی PDA Palm و Handspring Visor از DragonBall ، مشتق شده از 68000 استفاده میکردند . AlphaSmart از خانواده DragonBall در نسخههای بعدی واژهپردازهای قابل حمل خود استفاده میکرد. تگزاس اینسترومنتز از 68000 در ماشین حساب های نموداری پیشرفته خود، سری TI-89 و TI-92 و Voyage 200 استفاده کرد .
نسخه اصلاح شده 68000 اساس شبیه ساز سخت افزاری IBM XT/370 پردازنده System 370 را تشکیل داد.
سازندگان بازی های ویدیویی از 68000 به عنوان ستون فقرات بسیاری از بازی های آرکید و کنسول های بازی خانگی استفاده کردند : Atari's Food Fight ، از سال 1982، یکی از اولین بازی های آرکید مبتنی بر 68000 بود. سایرین شامل سیستم 16 سگا ، سیستم CP و CPS-2 Capcom و Neo Geo از SNK بودند . در اواخر دهه 1980، 68000 به اندازه کافی ارزان بود تا کنسول های بازی خانگی، مانند کنسول جنسیس سگا و همچنین ضمیمه سی دی سگا برای آن را تامین کند (سیستم سی دی سگا دارای سه CPU است که دو تای آنها 68000 هستند). کنسول چند پردازنده ای آتاری جگوار از سال 1993 از 68000 به عنوان تراشه پشتیبانی استفاده می کرد، اگرچه برخی از توسعه دهندگان به دلیل آشنایی از آن به عنوان پردازنده اصلی استفاده کردند. کنسول سگا ساترن در سال 1994 از 68000 به عنوان یک پردازشگر صدا استفاده کرد. در اکتبر 1995، 68000 آن را به یک کنسول بازی دستی ، جنسیس نومد سگا ، به عنوان CPU تبدیل کرد. [43]
بازیهای آرکید خاصی (مانند Steel Gunner و سایر بازیهای مبتنی بر سیستم Namco 2 ) از یک پیکربندی CPU دوگانه 68000 استفاده میکنند، [44] و سیستمهایی با پیکربندی سهگانه CPU 68000 نیز وجود دارند (مانند Galaxy Force و سایرین بر اساس Sega Y Board). ، [45] همراه با یک پیکربندی چهارگانه 68000 CPU که توسط Jaleco استفاده شده است (یکی از 68000 برای صدا در مقایسه با 68000 CPU دیگر نرخ کلاک کمتری دارد) [46] برای بازی هایی مانند Big Run و Cisco Heat . دیگری، پنجمین 68000 (با نرخ ساعت متفاوت از 68000 CPU دیگر) در بازی آرکید Jaleco Wild Pilot برای پردازش ورودی/خروجی (I/O) استفاده شد. [47]
68000 دارای یک گذرگاه آدرس خارجی 24 بیتی و دو سیگنال انتخاب بایتی است که جایگزین A0 شده است. بنابراین این 24 خط می توانند 16 مگابایت حافظه فیزیکی را با وضوح بایت آدرس دهی کنند. ذخیره سازی آدرس و محاسبه از 32 بیت داخلی استفاده می کند. با این حال، 8 بیت آدرس با مرتبه بالا به دلیل فقدان فیزیکی پین های دستگاه نادیده گرفته می شوند. این به آن اجازه می دهد تا نرم افزار نوشته شده برای یک فضای آدرس منطقی مسطح 32 بیتی را اجرا کند ، در حالی که فقط به یک فضای آدرس فیزیکی 24 بیتی دسترسی دارد. هدف موتورولا از فضای آدرس داخلی 32 بیتی سازگاری رو به جلو بود، که نوشتن نرم افزار 68000 را امکان پذیر می کرد که از پیاده سازی های بعدی 32 بیتی مجموعه دستورالعمل های 68000 نهایت استفاده را ببرد. [4]
با این حال، این مانع از نوشتن نرم افزارهای ناسازگار توسط برنامه نویسان نشد. نرم افزار "24 بیتی" که بایت آدرس بالایی را دور انداخته یا از آن برای مقاصدی غیر از آدرس دهی استفاده می کند، ممکن است در پیاده سازی های 68000 32 بیتی با شکست مواجه شود. برای مثال، نسخههای اولیه (قبل از ۷.۰) سیستمعامل مک اپل از بایت بالای نشانگرهای اصلی بلوک حافظه برای نگه داشتن پرچمهایی مانند قفل و قابل پاکسازی استفاده میکردند . نسخههای بعدی سیستمعامل پرچمها را به مکان نزدیک منتقل کردند و اپل شروع به ارسال رایانههایی کرد که دارای رامهای پاک ۳۲ بیتی بودند که با انتشار Mac IIci در سال ۱۹۸۹ آغاز شد.
خانواده 68000 اعداد صحیح چند بایتی را به ترتیب بزرگ در حافظه ذخیره می کند .
CPU دارای هشت رجیستر داده 32 بیتی همه منظوره (D0-D7) و هشت رجیستر آدرس (A0-A7) است . آخرین ثبت آدرس نشانگر پشته است و اسمبلرها برچسب SP را معادل A7 میپذیرند. این تعداد ثبت نام در آن زمان از بسیاری جهات بسیار خوب بود. به اندازهای کوچک بود که به 68000 اجازه میداد تا به وقفهها به سرعت پاسخ دهد (حتی در بدترین حالت که هر 8 رجیستر داده D0-D7 و 7 رجیستر آدرس A0-A6 باید ذخیره شوند، در مجموع 15 ثبات) و در عین حال به اندازه کافی بزرگ بود تا بسیاری از محاسبات را سریع انجام دهید، زیرا میتوان آنها را به طور کامل در پردازنده و بدون حفظ نتایج جزئی در حافظه انجام داد. (توجه داشته باشید که یک روال استثنا در حالت سرپرست نیز می تواند نشانگر پشته کاربر A7 را ذخیره کند، که در مجموع 8 آدرس آدرس را شامل می شود. با این حال، طراحی نشانگر پشته دوگانه (A7 و حالت سرپرست A7') 68000 این کار را معمولاً غیر ضروری می کند، به جز هنگامی که یک سوئیچ وظیفه در یک سیستم چند وظیفه ای انجام می شود.)
داشتن دو نوع رجیستر اجازه می دهد تا یک آدرس 32 بیتی و یک محاسبه داده 16 بیتی به طور همزمان انجام شود. این منجر به کاهش زمان اجرای دستورالعمل می شود زیرا آدرس ها و داده ها می توانند به صورت موازی پردازش شوند. [4]
68000 دارای یک رجیستر وضعیت 16 بیتی است. 8 بیت بالایی بایت سیستم است و اصلاح آن ممتاز است. 8 بیت پایین تر، بایت کاربر است که به عنوان ثبت کد شرط (CCR) نیز شناخته می شود، و تغییر آن امتیازی ندارد. 68000 عملیات مقایسه، حساب و منطق، کدهای شرایط را تغییر می دهند تا نتایج آنها را برای استفاده در پرش های شرطی بعدی ثبت کنند. بیت های کد شرط عبارتند از "حمل" (C)، "سرریز" (V)، "صفر" (Z)، "منفی" (N) و "extend" (X). پرچم "extend" (X) شایسته ذکر ویژه است، زیرا جدا از پرچم حمل است . این اجازه می دهد بیت اضافی از عملیات حسابی، منطقی و شیفت از محاسبات چند دقیق حمل جدا شود . [48]
طراحان سعی کردند زبان اسمبلی را متعامد کنند . یعنی دستورالعمل ها به عملیات و حالت های آدرس تقسیم می شوند و تقریباً همه حالت های آدرس تقریباً برای همه دستورالعمل ها در دسترس هستند. 56 دستورالعمل و حداقل اندازه دستورالعمل 16 بیت وجود دارد. بسیاری از دستورالعمل ها و حالت های آدرس دهی برای گنجاندن بیت های آدرس یا حالت بیشتر طولانی تر هستند.
CPU و بعداً کل خانواده، دو سطح از امتیازات را پیاده سازی می کنند. حالت کاربر به همه چیز به جز دستورالعمل های ممتاز مانند کنترل های سطح وقفه دسترسی می دهد. [49] امتیاز سرپرست دسترسی به همه چیز را می دهد. یک وقفه همیشه نظارتی می شود. بیت سرپرست در ثبت وضعیت ذخیره می شود و برای برنامه های کاربر قابل مشاهده است. [49]
مزیت این سیستم این است که سطح سرپرست دارای نشانگر پشته جداگانه است. این به یک سیستم چندوظیفه ای اجازه می دهد تا از پشته های بسیار کوچک برای کارها استفاده کند، زیرا طراحان مجبور نیستند حافظه مورد نیاز را برای نگهداری فریم های پشته ای از حداکثر وقفه ها اختصاص دهند.
CPU هفت سطح وقفه را تشخیص می دهد . سطوح 1 تا 5 به شدت اولویت بندی شده اند. یعنی یک وقفه با شماره بالاتر همیشه می تواند یک وقفه با شماره پایین تر را قطع کند. در ثبت وضعیت، یک دستورالعمل ممتاز اجازه می دهد تا حداقل سطح وقفه فعلی را تنظیم کنید، وقفه های با اولویت کمتر یا برابر را مسدود کنید. به عنوان مثال، اگر سطح وقفه در ثبات وضعیت روی 3 تنظیم شود، سطوح بالاتر از 4 تا 7 می تواند باعث استثنا شود. سطح 7 یک وقفه غیرقابل پوشش (NMI) با راه اندازی سطحی است. سطح 1 می تواند توسط هر سطح بالاتر قطع شود. سطح 0 به معنای بدون وقفه است. سطح در ثبت وضعیت ذخیره می شود و برای برنامه های سطح کاربر قابل مشاهده است.
وقفه های سخت افزاری با استفاده از سه ورودی که بالاترین اولویت وقفه معلق را رمزگذاری می کنند به CPU سیگنال می دهند. معمولاً برای رمزگذاری وقفهها به یک رمزگذار جداگانه نیاز است، اگرچه برای سیستمهایی که به بیش از سه وقفه سختافزاری نیاز ندارند، میتوان سیگنالهای وقفه را مستقیماً به ورودیهای کدگذاری شده وصل کرد و به قیمت پیچیدگی نرمافزار بیشتر شد. کنترل کننده وقفه می تواند به سادگی یک رمزگذار اولویت 74LS148 باشد ، یا ممکن است بخشی از یک تراشه جانبی یکپارچه در مقیاس بسیار بزرگ (VLSI) مانند دستگاه جانبی چند منظوره MC68901 (مورد استفاده در رایانه های Atari ST و X68000 ) باشد. که همچنین یک UART ، تایمر و I/O موازی را ارائه می دهد.
"جدول استثنا" ( آدرس های بردار وقفه جدول بردار وقفه) در آدرس های 0 تا 1023 ثابت است و اجازه 256 بردار 32 بیتی را می دهد. بردار اول (RESET) از دو بردار، یعنی آدرس پشته شروع و آدرس کد شروع تشکیل شده است. بردارهای 3 تا 15 برای گزارش خطاهای مختلف استفاده میشوند: خطای گذرگاه ، خطای آدرس، دستورالعمل غیرقانونی ، تقسیم صفر ، بردار CHK و CHK2، نقض امتیاز (برای جلوگیری از افزایش امتیاز )، و برخی بردارهای رزرو شده که شبیهساز خط 1010 شدند، شبیهساز خط 1111 و نقطه شکست سخت افزاری . بردار 24 وقفه های واقعی را شروع می کند : وقفه کاذب (بدون تایید سخت افزاری)، و سطح 1 تا بردارهای خودکار سطح 7، سپس 16 بردار TRAP، سپس چند بردار رزرو شده دیگر، سپس بردارهای تعریف شده توسط کاربر.
از آنجایی که بردار آدرس کد شروع باید همیشه در هنگام تنظیم مجدد معتبر باشد، سیستمها معمولاً شامل مقداری حافظه غیرفرار (مثلا ROM ) میشوند که از آدرس صفر شروع میشود تا حاوی بردارها و کد بوت استرپ باشد . با این حال، برای یک سیستم هدف عمومی، مطلوب است که سیستم عامل بتواند بردارها را در زمان اجرا تغییر دهد. این اغلب با نشان دادن بردارهای ROM به یک جدول پرش در RAM یا با استفاده از سوئیچینگ بانک برای اجازه دادن به جایگزینی ROM با RAM در زمان اجرا انجام میشود.
68000 الزامات مجازی سازی Popek و Goldberg را برای مجازی سازی کامل پردازنده برآورده نمی کند، زیرا دارای یک دستورالعمل غیرمجاز، "MOVE from SR" است، که به نرم افزار حالت کاربر اجازه دسترسی فقط خواندنی به مقدار کمی از حالت ممتاز را می دهد. 68EC000 و 68SEC000 که مشتقات بعدی 68000 هستند، الزامات را برآورده می کنند زیرا دستورالعمل "MOVE from SR" دارای امتیاز است. همین تغییر در CPUهای 68010 و بعد از آن اعمال شد.
68000 همچنین نمی تواند به راحتی از حافظه مجازی پشتیبانی کند ، که نیاز به توانایی به دام انداختن و بازیابی از یک دسترسی ناموفق به حافظه دارد. 68000 یک استثنا خطای گذرگاهی را ارائه میکند که میتوان از آن برای به دام انداختن استفاده کرد، اما به اندازه کافی وضعیت پردازنده را ذخیره نمیکند تا دستورات خطا را پس از اینکه سیستم عامل این استثنا را مدیریت کرد، از سر بگیرد. چندین شرکت موفق به ساخت ایستگاه های کاری یونیکس مبتنی بر 68000 با حافظه مجازی شدند که با استفاده از دو تراشه 68000 که به صورت موازی بر روی ساعت های فازی مختلف کار می کردند، کار می کردند. هنگامی که 68000 "پیشرو" با دسترسی بد به حافظه روبرو می شود، سخت افزار اضافی 68000 "اصلی" را قطع می کند تا از دسترسی آن به حافظه بد جلوگیری کند. این روال وقفه عملکردهای حافظه مجازی را کنترل می کند و 68000 "پیشرو" را مجدداً در حالت صحیح راه اندازی می کند تا زمانی که 68000 "اصلی" از وقفه باز می گردد به عملیات همگام سازی مناسب ادامه دهد.
این مشکلات در نسخه اصلی بعدی معماری 68k با انتشار MC68010 برطرف شد. استثناهای خطای اتوبوس و خطای آدرس، مقدار زیادی از حالت داخلی را به پشته ناظر فشار می دهند تا بازیابی را تسهیل کنند، و دستورالعمل "MOVE from SR" ممتاز شد. یک دستورالعمل جدید غیرمجاز "MOVE from CCR" برای استفاده در جای خود توسط نرم افزار حالت کاربر ارائه شده است. یک سیستم عامل می تواند در صورت تمایل دستورالعمل های حالت کاربر "MOVE from SR" را به دام انداخته و شبیه سازی کند.
حالت های آدرس دهی استاندارد عبارتند از:
بعلاوه: دسترسی به ثبت وضعیت ، و در مدل های بعدی، سایر رجیسترهای ویژه.
بیشتر دستورالعمل ها دارای انواعی هستند که بر روی بایت های 8 بیتی، کلمات 16 بیتی و طول های 32 بیتی کار می کنند. زبانهای اسمبلر از پسوندهای نقطهای ".b"، ".w" و ".l" بعد از دستورالعمل یادگاری برای نشان دادن نوع استفاده میکنند.
مانند بسیاری از CPU های عصر خود، زمان بندی چرخه برخی دستورالعمل ها بسته به عملوند(های) منبع متفاوت بود. به عنوان مثال، دستور ضرب بدون علامت، چرخه های ساعتی (38+2n) را طی می کند تا در جایی که 'n' برابر با تعداد بیت های تنظیم شده در عملوند است. [50] برای ایجاد تابعی که تعداد چرخه ثابتی داشته باشد نیاز به اضافه کردن کد اضافی پس از دستور ضرب دارد. این معمولاً چرخه های اضافی را برای هر بیتی که در عملوند ضرب اصلی تنظیم نشده است مصرف می کند.
بیشتر دستورالعملها دوتایی هستند ، یعنی عملیات یک منبع و یک مقصد دارد و مقصد تغییر میکند. دستورالعمل های قابل توجه عبارتند از:
68EC000 یک نسخه ارزان قیمت از 68000 با پین اوت کمی متفاوت است که برای برنامه های کنترل کننده تعبیه شده طراحی شده است. 68EC000 می تواند یک گذرگاه داده 8 بیتی یا 16 بیتی داشته باشد که در حالت تنظیم مجدد قابل تعویض است. [51]
این پردازنده ها در سرعت های مختلف از جمله پیکربندی های 8 و 16 مگاهرتز در دسترس هستند و هر کدام 2100 و 4376 درایستون تولید می کنند . این پردازندهها واحد ممیز شناور ندارند و پیادهسازی یک پردازنده مشترک FPU ( MC68881/2 ) با یکی مشکل است، زیرا سری EC فاقد دستورالعملهای لازم برای همپردازنده است.
68EC000 بهعنوان کنترلکننده در بسیاری از برنامههای صوتی، از جمله آلات موسیقی و کارتهای صوتی Ensoniq ، جایی که بخشی از سینت سایزر MIDI بود ، استفاده شد . [52] در بردهای صوتی Ensoniq، کنترلر در مقایسه با رقبای بدون CPU روی برد، چندین مزیت را ارائه کرد. پردازنده به برد اجازه میدهد تا برای انجام کارهای صوتی مختلف، مانند سنتز MPU-401 MIDI یا شبیهسازی MT-32 ، بدون استفاده از برنامه پایان و اقامت، پیکربندی شود . این سازگاری نرم افزار را بهبود بخشید، استفاده از CPU را کاهش داد و استفاده از حافظه سیستم میزبان را حذف کرد.
هسته موتورولا 68EC000 بعداً در پردازندههای DragonBall مبتنی بر m68k از Motorola/ Freescale استفاده شد .
همچنین به عنوان یک کنترل کننده صدا در کنسول بازی Sega Saturn و به عنوان کنترل کننده برای بردهای کنترلر اترنت HP JetDirect برای پرینترهای HP LaserJet اواسط دهه 1990 استفاده شد .
کد اسمبلی 68000 زیر برای زیربرنامه ای به نام است strtolower
که یک رشته تهی از کاراکترهای 8 بیتی را به رشته مقصد کپی می کند و همه کاراکترهای حروف الفبا را به حروف کوچک تبدیل می کند.
زیرروال یک فریم تماس را با استفاده از ثبات A6 به عنوان نشانگر فریم ایجاد می کند. این نوع کنوانسیون فراخوانی از کدهای ورودی مجدد و بازگشتی پشتیبانی میکند و معمولاً توسط زبانهایی مانند C و C++ استفاده میشود . سپس زیر روال پارامترهای ارسال شده به آن ( src
و dst
) را از پشته بازیابی می کند. سپس حلقه میشود، یک کاراکتر ASCII (یک بایت) را از src
رشته میخواند، بررسی میکند که آیا یک کاراکتر حروف الفبای بزرگ است یا نه، و اگر چنین است، آن را به یک کاراکتر کوچک تبدیل میکند، در غیر این صورت آن را به همان صورت باقی میگذارد، سپس کاراکتر را در رشته dst
در نهایت، بررسی می کند که آیا کاراکتر یک کاراکتر تهی است یا خیر . اگر نه، حلقه را تکرار می کند، در غیر این صورت قاب پشته قبلی (و رجیستر A6) را بازیابی می کند و برمی گردد. توجه داشته باشید که نشانگرهای رشته ای (رجیسترهای A0 و A1) در هر تکرار حلقه به طور خودکار افزایش می یابند.
در مقابل، کد زیر برای یک عملکرد مستقل است، حتی در محدودترین نسخه AMS برای ماشینحسابهای سری TI-89 ، مستقل از هسته است و هیچ مقداری در جداول، فایلها یا کتابخانهها در هنگام اجرا جستجو نمیشود. هیچ فراخوانی سیستمی، بدون پردازش استثنایی، حداقل رجیسترهایی که باید استفاده شوند، و نه نیازی به ذخیره هیچ کدام. این برای تاریخ های تاریخی جولیان از 1 مارس 1 پس از میلاد یا برای تاریخ های میلادی معتبر است . در کمتر از دوجین عملیات، یک عدد روز سازگار با ISO 8601 را هنگام فراخوانی با سه ورودی ذخیره شده در LOCATIONS مربوطه محاسبه می کند:
;; WDN، یک آدرس - برای ذخیره نتیجه d0; FLAG، 0 یا 2 - به ترتیب بین جولیان یا گریگوری انتخاب کنید; DATE، year0mda - مهر تاریخ به عنوان کلمه دودویی و بایت و بایت در قالب ISO پایه;(YEAR، سال ~ YEAR=DATE به دلیل بزرگ بودن );move.l DATE,d0
move.l d0,d1
;; مرحله 1 - همخوانی لاچمن را اعمال کنیدandi.l #$f00,d0
divu #100,d0
addi.w #193,d0
andi.l #$ff,d0
divu #100,d0 ; d0 has the month index i in the upper word (mod 100)
;; مرحله 2 را اعمال کنید - یافتن spqr به عنوان سال روز کبیسه جولیان قبل از DATEswap d0
andi.l #$ffff,d0
add.b d1,d0
add.w YEAR,d0
subi.l #$300,d1
lsr #2,d1
swap d1
add.w d1,d0 ; spqr/4 + year + i + da
;; (اعمال مرحله 0 - تنظیم گریگوری)mulu FLAG,d1
divu #50,d1
mulu #25,d1
lsr #2,d1
add.w d1,d0
add.w FLAG,d0 ; (sp32div16) + spqr/4 + year + i + da
;divu #7,d0
swap d0 ; d0.w becomes the day number
;move.w d0,WDN ; returns the day number to address WDN
rts
;; روزهای هفته با اعداد روزهای هفته مطابقت دارد:; یکشنبه = 0 دوشنبه = 1 سه شنبه = 2 چهارشنبه = 3 پنجشنبه = 4 جمعه = 5 شنبه = 6;
{{cite web}}
: CS1 maint: URL نامناسب ( پیوند )