معماری x86 چهلوششساله شد؛ میراث تاریخساز اینتل ۸۰۸۶
یکشنبه ۲۰ خرداد ۱۴۰۳ - ۱۶:۵۷مطالعه 9 دقیقههنگامیکه از تاریخچهی محاسبات شخصی صحبت میکنیم، نمیتوانیم تأثیر ریزپردازندهی اینتل ۸۰۸۶ را نادیده بگیریم. اینتل ۸۰۸۶ بیش از هر قطعهی سیلیکونی که میشناسیم، صنعت تراشهها را تغییر داد و پایه و اساس معماری x86 را که هنوز هم در اکثر کامپیوترهای شخصی استفاده میشود، بنا نهاد.
این پردازنده ۹ ژوئن ۱۹۷۸ (۱۹ خرداد ۱۳۵۷) معرفی شد و امروز با گذشت ۴۶ سال، همچنان بهعنوان یکی از مهمترین نوآوریهای تاریخ ریزپردازندهها شناخته میشود.
میراث ماندگار اولین پردازندهی x86
اینتل ۸۰۸۶ توسط تیمی به رهبری استیون مورس (Stephen Morse) طراحی و توسعه داده شد. در آن زمان اینتل با رقابت شدید شرکتهایی مانند موتورولا مواجه بود که با ریزپردازندهی ۶۸۰۰ طوفان سهمگینی در بازار تراشهها بهپا کرده بود. هرچند محصول موتورولا از یک فضای آدرس یکپارچه بهجای بخشبندیشده استفاده میکرد، درنتیجه اینتل ۸۰۸۶ پاسخی به نیازهای محاسباتی قدرتمندتر، سریعتر و همهکارهتر بود.
معماری پیچیده محاسباتی پردازندهی ۸۰۸۶ هنوز در پردازندههای اینتل استفاده میشود
پردازندهی ۸۰۸۶ با معماری ۱۶ بیتی و حداکثر سرعت کلاک ۱۰ مگاهرتزی جهش و پیشرفت بزرگی نسبت به پیشینیان خود محسوب میشد. این تراشه که با نام iAPX 86 نیز شناخته میشود، از معماری پیچیدهی محاسباتی مجموعه دستورالعمل CISC پیروی میکرد که همچنان در پردازندههای اینتل استفاده میشود. قابلیتهای عمیق تطبیقپذیری iAPX 86 هم این پردازنده را به گزینهای محبوب برای برنامههای محاسباتی تجاری و شخصی تبدیل میکرد. ۸۰۸۶ با بهرهگیری از ۲۹ هزار ترانزیستور و لیتوگرافی سه میکرومتر (سه هزار نانومتر) به قدرت پردازشی ۰٫۷۵ میپس میرسید.
تراشهی مورس در مقایسه با پردازندههای ۱۶ بیتی دیگر در آن زمان، هزینهی تولید کمتری داشت و باعث شد سازندگان کامپیوترهای شخصی بتوانند محصولاتی با کاربری عمومی را در اختیار مردم بگذارند. این امر بهنوبهی خود به دوران شکوفایی نرمافزارها منجر شد و برنامهنویسان و توسعهدهندگان نرمافزار نیز بر توسعهی برنامههای جدید و خلاقانهتر برای سیستمهای کامپیوتری متمرکز شدند.
عدد ۸۶ یا درواقع دو رقم آخر ۸۰۸۶ بهصورت تصادفی انتخاب نشد، بلکه علت این نامگذاری این بود که این پردازنده پایه و اساس پردازندههای x86 را که از آن زمان به بعد در خط تولید اینتل به شهرت رسید، فرموله کرد. بهعلاوه این محصول مبنایی شد بر تعهد اینتل به معماری CISC، آنهم درحالیکه شرکتهایی مانند آرم (Arm) محصولاتشان را با معماری مشهور RISC توسعه میدادند.
۸۰۸۶ چندین قابلیت مهم را به دنیای پردازندهها آورد که برای سالها جزو کاربردیترین ویژگیها محسوب میشدند؛ ازجمله فضای آدرس بخشبندیشده که با تقسیم یک مگابایت فضای حافظه به بخشهایی با اندازه ۶۴ کیلوبایت، به پردازنده اجازه میداد نسبت به پردازندههای ۸ بیتی قبلی، به فضای حافظهی بیشتری دسترسی داشته باشد.
اینتل با پردازندهی ۸۰۸۶ به معماری CISC متعهد شد
بهرهمندی از فضای آدرس بخشبندیشده برای اجرای برنامهها و سیستمعاملهای پیچیدهتر ضروری بود. بهعلاوه، معماری ۸۰۸۶ راه را برای توسعهی پردازندهی اینتل ۸۰۸۸ هموار کرد که بعداً در اولین کامپیوترهای شخصی IBM بهکار گرفته شد.
مسیر بلندمدت ۸۰۸۶
پردازندهی اینتل ۸۰۸۶ آغازگر خط تولید بلندمدت ریزپردازندههایی نظیر ۸۰۲۸۶، ۸۰۳۸۶، ۸۰۴۸۶ و همچنین تراشههای جانشین ۸۰۴۸۶ در سری افسانهای پنتیوم بود. تمامی این پردازندهها بر پایهی فناوریهایی توسعه پیدا کردند که ۸۰۸۶ بنیان نهاده بود.
در واقع، یکی از قابلتوجهترین جنبههای افق تاریخی ۸۰۸۶، معماری مجموعه دستورات یا ISA آن است که در طول دههها حفظ شده و گسترشیافته است. حتی میتوان ریشههای معماری اصلی پردازندههای مدرن، نظیر سری Core اینتل را در x86 تراشهی ۸۰۸۶ جستجو کرد.
اگر کارایی تراشههای امروزی را مرور کنیم، درمییابیم پردازندههای مدرن اینتل با معماری x86 همچنان دارند مرزهای محاسباتی را پشت سر میگذارند و میتوانند از ۸۰۸۶ بهخاطر تأثیرات زودهنگامش تشکر کنند. شرکت اینتل نیز اهمیت این موضوع را بهخوبی درک میکند و به همین دلیل در سال ۲۰۱۸ چهلمین سالگرد ۸۰۸۶ را با عرضهی نسخه ویژهی Core i7-8086K جشن گرفت.
داستان توسعهی یک پردازندهی انقلابی
موفقیت فوقالعادهی ۸۰۸۶ از زوایای مخالفی تأملبرانگیز است: زمانیکه این پردازنده توسعه داده شد، مردم تصویر واضحی درمورد اتفاقی که در شرف وقوع بود، نداشتند.
تاریخچهی این پردازنده بیشباهت به داستانهای کلاسیک نوآوری نیست؛ چراکه بهروشنی میبینیم وقتی به تیم کوچکی از مهندسان نخبه آزادی عمل داده میشود تا کارهایشان را به روشهای نوآورانهی خودشان پیش ببرند، به چه دستاوردهایی میرسند.
ماه می سال ۱۹۷۶، یعنی زمانیکه توسعهی ۸۰۸۶ آغاز شد، مدیران اینتل آن را بهعنوان یک پروژهی موقت کوچک تلقی میکردند. چشم امید آنها به پردازندهی کاملاً متفاوت و پیچیدهی ۸۸۰۰ بود که بعدها با نام iAPX 432 عرضه شد.
مدیران اینتل توسعهی پردازنده ۸۰۸۶ را یک پروژهی موقت میدانستند
چشمانداز ذهنی آنها بیعلت نبود؛ زیرا در دورانی که بیشتر تراشهها هنوز از مسیرهای دادهی ۸ بیتی استفاده میکردند، ۸۸۰۰ قرار بود تا ۳۲بیت صعود کند. قابلیتهای چندوظیفهای پیشرفته و مدارهای مدیریت حافظه این پردازنده دقیقاً در CPU تعبیه میشد و به سیستمعاملها اجازه میداد با کدهای بسیار کمتری اجرا شوند.
اما برخلاف انتظار، پروژهی ۸۸۰۰ با مشکل مواجه شد. فرایندها و برنامهها بارها دچار تأخیر و وقفههای طولانی شد و مهندسان اینتل دریافتند اجرای چنین طرح پیچیدهای با فناوریهای تراشههای آن زمان بسیار دشوار است. البته مشکلات اینتل به همین نقطه ختم نشد.
شرکت Zilog که توسط مهندسان سابق اینتل تأسیس شده بود، با عرضهی پردازندهی Z80 بهسرعت بازار ریزپردازندههای میانرده را در دست گرفت. Z80 که نسخهی پیشرفتهتر پردازندهی موفق ۸۰۸۰ اینتل بود، جولای ۱۹۷۶ وارد بازار شد و اینتل پاسخی برای آن نداشت.
ورود نخبگان حوزهی نرمافزار
مدیران اینتل امید خود را به پردازندهی ۸۸۰۰ حفظ کردند، اما میدانستند که باید به تهدید پردازندهی Zilog بهنوعی پاسخ دهند. در نتیجه به استیون مورس، مهندس برق ۳۶ سالهای مراجعه کردند که با بررسی انتقادی، نقصهای طراحی پردازنده ۸۸۰۰ را تشریح کرده بود.
مدیران اجرایی ردهبالای شرکت، مورس را بهعنوان تنها طراح پردازندهی ۸۰۸۶ منصوب کردند. او بعدها در مصاحبهای گفت:
اگر مدیریت اینتل تصور یا پیشبینی میکرد که این معماری در طول نسلها و در پردازندههای امروزی بقا خواهد یافت، هرگز این وظیفه را به یک نفر محول نمیکرد.
البته انتخاب مورس از جهت دیگری نیز تعجبآور و غیرمنتظره بود: او مهندس نرمافزار بود و تا پیشازاین اینتل طراحی CPUها را حوزهی کار مهندسان سختافزار میدانست. مورس یادآوری میکند:
برای اولینبار، قرار بود ویژگیهای پردازنده را از منظر نرمافزاری بررسی کنیم. حالا دیگر سؤال این نبود که «ما برای چه ویژگیهایی فضا داریم؟» بلکه باید به این مسئله میپرداختیم که «چه ویژگیهایی لازم داریم تا نرمافزار را کارآمدتر کنیم؟» این رویکرد نرمافزار محور، روندی انقلابی در صنعت ما بود.
اگرچه ۸۰۸۶ بهعنوان پروژهی شخصی برای مورس تعیین شده بود، او بهتنهایی کار توسعهی پردازنده را پیش نبرد. دیگر کارمندان اینتل از جمله بیل پولمن، جیم مک کویت و بروس راونل نیز به تیم مورس پیوستند. عرضهی محصول نهایی در تابستان ۱۹۷۸ بدون حضور و تلاش تمام این افراد ممکن نبود.
تیم مدیریت اینتل فقط دو شرط برای پروژهی مورس تعیین کرده بود: اینکه پردازندهی او با نرمافزارهایی که برای تراشهی محبوب ۸۰۸۰ توسعه مییابد، سازگار باشد و دوم اینکه بتواند ۱۲۸ کیلوبایت حافظه را آدرسدهی کند. مورس در این زمینه میگوید:
ازآنجا که هیچکس انتظار نداشت این طرح عمری طولانی داشته باشد، هیچ مانعی بر سر راه من قرار نگرفت. من کاملاً آزاد بودم کاری را که میخواستم، انجام دهم.
عرضهی محصول در تاریکی
هنگامیکه دستاورد مورس به مرحلهی تولید رسید، چندان دنیای محاسبات را تحتتأثیر قرار نداد. بازار کامپیوترهای شخصی میانرده پر بود از سیستمهایی که بر پایهی تراشهی Z80 و سیستمعامل اواخر دههی هفتاد، یعنی CP/M کار میکردند. پردازندهی ۸۰۸۶ ابتدا در چند ترمینال و پیسی معدود و غیرقابلتوجه ظاهر شد و پس از آن به بازار کامپیوترهای پرتابل راه یافت.
برنامهی شاتل فضایی ناسا هنوز از تراشههای ۸۰۸۶ برای کنترل تستهای تشخیصی استفاده میکند
درنهایت این پردازنده در بازار میکروکنترلرها و امبدد اپلیکیشنها مقبولیت یافت که یکی از مهمترین دلایل آن، برنامهی شاتل فضایی ناسا بود. این برنامه تا به امروز از تراشههای ۸۰۸۶ برای کنترل تستهای تشخیصی روی بوسترهای موشک خود استفاده میکند.
مورس ماه مارس ۱۹۷۹ در حالی شرکت اینتل را ترک کرد که نمیدانست مجموعهای از اتفاقات عادی و روزمره در انتظارند تا ۸۰۸۶ را به یک استاندارد صنعتی تبدیل کنند.
ساخت اولین پیسی شخصی شرکت IBM
چند هفته پس از خروج مورس از اینتل، این شرکت پردازندهی ۸۰۸۸ را عرضه کرد که بهعقیدهی مورس نسخهی عقیمشدهی ۸۰۸۶ بود؛ زیرا از یکی از قابلیتهای اصلاحشدهی نسخهی ۱۶ بیتی پردازندهی او استفاده میکرد. ازآنجاییکه هنوز اغلب سیستمها ۸ بیتی بودند، ۸۰۸۸ دادههای ۱۶ بیتی را در دو چرخهی ۸ بیتی ارسال و آن را با سیستمهای ۸ بیتی سازگار کرد.
دوسال بعد IBM کار روی مدل ۵۱۵۰ را آغاز کرد: اولین پیسی یا کامپیوتر شخصی که قرار بود فقط از قطعات ارزان و آماده ساخته شود. فرایند مذکور برای آیبیام روند جدیدی بود؛ چراکه این شرکت همیشه برای ساخت سیستمهایش از قطعات و فناوریهای اختصاصی خود استفاده میکرد.
پردازندههایی که به این منظور مدنظر متخصصان آیبیام قرار گرفتند، عبارت بودند از موتورولا ۶۸۰۰۰ (پردازندهای که بعداً در قلب سیستمهای مکینتاش جای گرفت)، اینتل ۸۰۸۶ و اینتل ۸۰۸۸.
پردازندهی ۸۰۸۰ که در ساخت IBM ۵۱۵۰ به کار رفت، نسخهی اصلاحشدهی ۸۰۸۶ بود
آیبیام ابتدا تراشهی موتورولا را از فهرست خود خط زد و سپس متوجه شد مایکروسافت یک مفسر بیسیک آماده و کارآمد برای پردازندهی ۸۰۸۶ در دسترس دارد. ازآنجاییکه این دو کد پایه یکسانی داشتند، انتخاب آیبیام به ۸۰۸۰ محدود شد. این تصمیم به غول بزرگ فناوری کمک کرد سیستمهای ارزانتری تولید کند، زیرا حالا قادر بود از ماژولهای ROM معدودتر و RAM کمتری استفاده کند.
اما در جهان واقعی فناوری تفاوتی نداشت آیبیام کدامیک از دو تراشهی اینتل را انتخاب کند؛ چراکه هر دو گزینه براساس همان کدی که استیون مورس برای ۸۰۸۶ نوشته بود، ساخته شدند.
از تراشه تا استاندارد
اما چگونه کد ۸۰۸۶ به یک استاندارد صنعتی تبدیل شد؟ پاسخ این سؤال به نقش پردازنده در سیستم ۵۱۵۰ آیبیام برمیگردد. واقعیت این بود که اوایل دههی هشتاد میلادی، بازار کامپیوترهای شخصی بسیار ازهمگسیخته بود و شرکتهای زیادی در این دریا مشغول پارو زدن در جهتهای مخالف بودند.
به بیان ساده، دهها سیستم متفاوت از دهها شرکت تولیدکننده دردسترس مردم قرار گرفته بود که هیچکدام با یکدیگر سازگاری نداشتند. این موضوع کاربرانی را که مشتاق بودند از نرمافزار، سختافزار و تجهیزات جانبی یک سیستم روی دستگاههای دیگر استفاده کنند، ناامید کرده بود.
بااینحال بهتدریج، بخشهای متفاوت دنیای پیسیها در مدار ۵۱۵۰ قرار گرفتند. یکی از مهمترین دلایل موفقیت بزرگ این سیستم، اعتبار برند IBM بود که درآن زمان بهعنوان یکی از برترین شرکتهای ماشینهای تجاری شناخته میشد.
آیبیام خیلی سریع بر بازار کامپیوترهای شخصی تسلط یافت و ازآنجاییکه در تولید اولین پیسی خود از قطعات سایر شرکتها استفاده کرده بود، دیگر تولیدکنندگان هم بهراحتی روند کار این برند را تقلید کردند.
پس از موفقیت ۸۰۸۶، شرکتهای AMD، Cyrix، NEC و IBM پردازندههای سازگار با x86 خود را تولید کردند
همزمان اینتل با توسعهی نسخههای بهبودیافتهی ۸۰۸۶ که از ۸۰۱۸۶ شروع شد و تا ۸۰۴۸۶ و سری پنتیومها ادامه یافت، به نیازهای مشتریان پاسخ گفت. به لطف اعداد پایانی رایج در اکثر نامگذاریهای CPU، این خط تولید با نام x86 شناخته شد؛ حتی پس از اینکه اینتل به نامهای تجاری دیگری مانند Pentium، Celeron و Centrino روی آورد.
بسیاری دیگر از تولیدکنندگان CPU به گروه اینتل ملحق شدند و شرکتهایی مانند AMD، Cyrix، NEC و حتی IBM پردازندههای سازگار با x86 خود را عرضه کردند. بهاینترتیب x86 به یک استاندارد جهانی کامپیوترهای شخصی تبدیل شد. استیون مورس سالها بعد با فروتنی گفت:
من بهاندازهی کافی خوششانس بودم که در زمان مناسب، در جای مناسب قرار بگیرم. هر مهندس باهوشی میتوانست این پردازنده را طراحی کند. البته درآن صورت پردازنده مجموعه دستورالعملهای کاملاً متفاوتی داشت، اما تمام کامپیوترهای شخصی امروزی بر اساس آن معماری توسعه مییافتند.
قدرت واقعی x86 نه به کدهای عملیاتی خاصی که باعث میشود CPUهای ما کار کنند، بلکه به شتاب استانداردهای رایج کامپیوترها بستگی دارد. اما تردیدی نیست که پردازندهی ۸۰۸۶ راه را برای پیشرفت سریع و تصاعدی ظرفیت، سرعت و کارایی سیستمهای کامپیوتری هموار کرد.
مجموعه دستورات تراشهی مورس هنوز در قلب اکثر پیسیهای مدرن اجرا میشود. برای درک عملی قدرت استاندارد x86 کافی است به این نکته توجه کنیم که هر برنامهای که به زبان اسمبلی در سال ۱۹۷۸ برای ریزپردازندهی اینتل ۸۰۸۶ نوشته شده بود، بدون تغییر روی آخرین نسخهی سیپییو Core2 اجرا میشد، ولی ۱۸۰ هزار برابر سریعتر.
واقعیت این است که اینتل ۸۰۸۶ چیزی بیش از یک پردازنده بود: توسعهی این تراشه لحظهی شکوهمندی را در تاریخ محاسبات مدرن رقم زد. معرفی این قطعه آغاز یک دورهی جدید فناوری بود، بهگونهای که ما بعد از ۴۶ سال هنوز تأثیرات آن را احساس میکنیم.
همانطور که تلاش میکنیم محدودیتهای بار کاری کامپیوترها را پشت سر بگذاریم، تاریخچهی ۸۰۸۶ به ما یادآوری میکند که چقدر پیشرفت کردهایم و چه نتایج شگفتانگیزی ممکن است از معماریهای جدید امروز به دست آید.