क्रांतिकारी CPU, Intel 80386
(xtof.info)- Intel 80386 x86 का पहला 32-bit CPU होने से आगे बढ़कर 4GiB flat memory और मौजूदा x86 compatibility दोनों देता था, जिससे यह PC के लिए आधुनिक operating systems की नींव बना
- Intel ने शुरुआत में iAPX 432 और P7 जैसे दूसरे architectures को ज्यादा महत्व दिया था, लेकिन PC market की बढ़त और x86 software compatibility के कारण 386 को पूरा करना सर्वोच्च प्राथमिकता बन गया
- 386 में Intel ने IBM और AMD को second-source production की अनुमति नहीं दी और sole supplier बन गया; Compaq Deskpro 386 ने IBM-केंद्रित PC standard के प्रवाह को हिला दिया
- प्रदर्शन अपने समय के RISC chips से बहुत ज्यादा बेहतर नहीं था, लेकिन हर 386 model में शामिल MMU और Virtual 8086 mode UNIX, OS/2, Windows, NT और Linux की ओर बदलाव की कुंजी बने
- 386-based PCs के mass production से MMU आम users के PCs तक फैल गया, और Windows के लोकप्रिय होने तथा Linux के जन्म का 386 के प्रसार से गहरा संबंध रहा
वह 32-bit x86 जिसे Intel नहीं चाहता था
- Intel 80386 x86 family का पहला 32-bit CPU था, लेकिन शुरुआती Intel की मुख्य योजना का हिस्सा नहीं था
- 1970 के दशक के अंत में Intel का सबसे महत्वपूर्ण project iAPX 432 था, जिसे 1980 के दशक का मुख्य design बनाने का इरादा था
- iAPX 432 एक ambitious CPU था, जो ADA जैसी high-level languages के लिए object-oriented programming और storage allocation को hardware में उपलब्ध कराना चाहता था
- Design के mature होने में लंबा समय लगने की संभावना देखकर Intel ने 1976 में अस्थायी design के रूप में 8086 शुरू किया
- 8086 family ने IBM PC contract हासिल किया, और iAPX 432 1981 में देर से आया, लेकिन उसका performance निराशाजनक था
- समान frequency वाले, कहीं सस्ते 80286 की तुलना में benchmark में इसकी गति लगभग 1/4 ही रही
- 1982 में भी Intel ने PC platform और software binary compatibility के महत्व को पूरी तरह नहीं माना था, और 80286 भी एक और अस्थायी CPU जैसा ही था
- 432 family की विफलता पहचानने के बाद Intel engineers ने P7 नामक 32-bit RISC architecture की नई तैयारी शुरू की
80386 की design दिशा तय होना
- 286 designers में से एक Bob Childs ने अनौपचारिक रूप से 286 के 32-bit extension का idea整理 किया
- करीब 6 महीने बाद Intel ने तय किया कि P7 तैयार होने से पहले x86 family का एक और iteration जरूरी है, और 386 development को मंजूरी दी
- शुरुआती team छोटी थी और budget भी सीमित था
- x86 customers की जरूरतों की जांच में पाया गया कि 8086 का segmented memory model व्यापक रूप से नापसंद था, और 80286 भी उसे खत्म नहीं कर पाया था
- UNIX सस्ते workstations पर महत्वपूर्ण होता जा रहा था, इसलिए 386 team ने UNIX के लिए उपयुक्त CPU को लक्ष्य बनाया
- सबसे महत्वपूर्ण requirement flat memory addressing थी
- मौजूदा x86 compatibility बनाए रखने के लिए 386 ने भी segment structure बनाए रखा
- हर segment 4GiB तक हो सकता था, जिससे segments की मौजूदगी व्यवहार में लगभग कम हो गई
- Paging और virtual memory देने का फैसला भी इसी समय हुआ
- मौजूदा instruction set और registers को 32-bit तक बढ़ाकर binary compatibility बनाए रखी गई
- अलग “mode header” के बाद पूरी तरह अलग instruction set रखने का तरीका नहीं चुना गया
- इसके बजाय x86 की कमजोरी, यानी कम registers की संख्या, बढ़ाई नहीं जा सकी
- एक समय P7 के लिए नए bus के उपयोग पर भी विचार हुआ, लेकिन वह 286 bus से बहुत अलग था और motherboard व support chips के redesign की जरूरत पड़ती, इसलिए इसे छोड़ दिया गया
- मौजूदा bus को 32-bit तक extend करने वाला कम ambitious तरीका चुना गया
- 1984 के आसपास PC market बढ़ने पर Intel ने x86 family का महत्व समझा, और 80386 को पूरा करना सर्वोच्च प्राथमिकता बन गया
- P7 project 1988 में i960 बना, और 386 sales को cannibalize न करे इसलिए इसका target embedded market कर दिया गया
Intel की 386 sole-supplier strategy
- 80386 की घोषणा October 1985 में हुई
- उस समय Intel जैसी chip design companies के लिए CPU को दूसरी कंपनियों को भी बनाने के लिए license कर second source तैयार करना आम बात थी
- Customers primary supplier की yield problems होने पर भी CPU shortage से बच सकते थे
- Intel और AMD ने 8085 के समय से लंबा सहयोग बनाए रखा था और एक-दूसरे के products को cross-license किया था
- IBM के पास भी 1983 से 808x और 80286 को खुद बनाने का license था
- 80386 में यह परंपरा बदल गई
- Intel ने माना कि PC का सबसे मूल्यवान component, CPU, सीधे control करने के लिए sole supplier बनना महत्वपूर्ण है
- IBM की रुचि भविष्य के 386 से अधिक 286 में बड़े निवेश में थी
- Intel और IBM का agreement 286 पर IBM को संतुष्ट करने की दिशा में renegotiate हुआ, लेकिन IBM 386 नहीं बना सकता था
- AMD की भी 386 production में ज्यादा रुचि नहीं थी, और AMD के साथ second-source agreement 386 तक extend नहीं हुआ
- लगभग इसी समय NEC बनाम Intel मामले में फैसला आया कि microcode पर copyright होता है और Intel के specific license के बिना उसे copy नहीं किया जा सकता
- भले ही NEC 8086 microcode को reverse कर सकता था, 386 को complexity के कारण लगभग असंभव target माना गया
- इस प्रवाह के बाद Intel, Microsoft के साथ, PC market के भविष्य को control करने की स्थिति में आ गया
Compaq Deskpro 386 और clone PC की जीत
- IBM PC ने market में जल्दी आने के लिए off-the-shelf components इस्तेमाल किए, और नतीजे में दूसरी companies भी वही components खरीदकर compatible machines बना सकती थीं
- सबसे सफल और ambitious clone company Compaq थी
- उस समय Compaq 100 million dollar revenue तक सबसे तेजी से पहुंचने वाली company थी
- Compaq ने Intel द्वारा 80386 launch करने के लगभग 1 साल बाद, September 1986 में Deskpro 386 की घोषणा की
- Deskpro 386 पहला 386 computer था
- यह पहला PC भी था जिसने IBM के 286-based PC/AT से PC market control वापस पाने की दिशा का पालन नहीं किया
- Bill Gates ने कहा कि IBM 386 पर भरोसा नहीं करता था, और Microsoft ने Compaq को 386 machine बनाने के लिए प्रोत्साहित किया
- यह घटना turning point बनी, जिसने दिखाया कि standards केवल IBM ही तय नहीं करेगा; Compaq और Intel जैसी companies भी नया काम कर सकती हैं
- Compaq Deskpro 386 शुरुआत में बहुत महंगा था, लेकिन sales ठीक रहीं, और उसने दिखाया कि IBM अब leader की position में नहीं है
- IBM ने लगभग 1 साल बाद अपना पहला 386 computer, PS/2 model 80, पेश किया
- PS/2 line ने उस समय का बहुत advanced proprietary bus अपनाकर control वापस पाने की कोशिश की
- लेकिन IBM अब अपनी पद्धति थोपने की स्थिति में नहीं था, और PS/2 line यह mission पूरा नहीं कर पाई
386 का competitive landscape और performance
- 1985 में Intel x86 family का मुख्य competitor Motorola 680x0 family थी
- कई लोग 68000 को 8086 से कहीं बेहतर chip मानते थे, और सोचते थे कि 80286 ने साफ architecture में evolve होने का मौका गंवा दिया
- 68020 Motorola CPU का natural 32-bit evolution था
- 80386 के साथ Intel पहली बार गंभीर competitor लेकर आया
- Integrated MMU और 4GiB flat address space के जरिए वह lucrative workstation market को भी target कर सकता था
- Workstation market में कई companies RISC designs अपना रही थीं
- RISC को तेज और सस्ता बनाने का आकर्षण था
- 386 एक CISC design था, जो complex x86 instruction set और 80286 addressing mode संभालने के लिए heavy microcode पर निर्भर था
- Benchmarks में 386 ने औसत performance दिखाया
- Intel 80386 16MHz 4 MIPS था, 25MHz 6 MIPS था
- Motorola 68030 25MHz भी 6 MIPS था
- Mips R2000 16MHz 16 MIPS, Motorola 88000 16MHz 17 MIPS, और Intel i960CA 33MHz 66 MIPS था
- Performance revolutionary नहीं था, लेकिन competition के लिए जरूरी features मौजूद थे
386SX और 32-bit software का प्रसार
- Intel ने 386 के प्रति पूरी तरह commit होने के बाद 1988 में 386SX पेश किया
- 386SX internally original 386 जैसा ही था, और original 386 का नाम बदलकर 386DX कर दिया गया
- External data bus 16-bit था
- यह सस्ते plastic package में उपलब्ध था
- इसे सस्ते 16-bit motherboards में लगाया जा सकता था
- 386SX का मुख्य लक्ष्य समान price range वाले 286 को replace करना था
- 286 के पास अभी भी second-source suppliers थे
- 1990s की शुरुआत तक 386 installed base इतना बड़ा हो गया कि अधिक software vendors 32-bit features और modern features का उपयोग कर सकें
- Low-end सहित सभी 386 models में integrated MMU होना निर्णायक था
MMU ने memory management कैसे बदला
- MMU Memory Management Unit का संक्षिप्त रूप है, यानी hardware जो virtual addresses को physical addresses में automatic translate करता है
- शुरुआती programs machine के पूरे address space को देख सकते थे
- Address space छोटा हो तो यह manageable था, लेकिन कई programs के साथ-साथ चलने और operating system के ROM में न रह पाने पर isolation की समस्या बढ़ी
- शुरुआती solutions में से एक segmentation था
- Segment register base address की तरह काम करता है
- जब program address access करता है, तो 16-bit value segment register में जोड़ी जाती है और physical address बनता है
- Segment size limit पार होने पर fault होता है, जिससे programs के बीच isolation संभव होता है
- 8086 memory access के लिए segment method इस्तेमाल करता है
- 80286 में अधिक complex memory management support करने वाला feature-rich segment MMU था, और यह अधिकतम 16MiB memory access कर सकता था
- OS/2 1.x ने इस MMU का उपयोग कर अधिक modern experience दिया
- PC programmers के लिए segmented memory बहुत restrictive और संभालने में कठिन थी
- अधिक modern MMU design paging पर केंद्रित है
- MMU virtual address space को fixed-size pages में बांटता है
- Page access के समय page descriptor पढ़कर physical address translation information मिलती है
- Page descriptors आमतौर पर memory में होते हैं, इसलिए performance के लिए हाल में access किए गए descriptors रखने वाला TLB cache इस्तेमाल होता है
- कई modern OS, खासकर UNIX ports, paging के साथ बेहतर fit होते थे
- 68000-based workstations कभी-कभी MC68451 के बजाय अपनी paging external MMU इस्तेमाल करते थे
- Motorola ने 68020 के लिए external MMU 68851 पेश किया
80386 MMU की structure और खास अंतर
- 386 को modern OS के लिए उपयुक्त होना था, साथ ही 8086, 80286 और existing x86 software के साथ compatible भी रहना था
- इसके लिए 386 MMU लगभग दो अलग devices जैसा बनाया गया
- एक segment mode के लिए device
- दूसरा paging mode के लिए device
- दोनों devices chained तरीके से काम करते हैं
- Logical address पहले segment device से होकर linear address के रूप में calculate होता है
- अगर paging बंद है, तो यही linear address physical address बन जाता है
- अगर paging चालू है, तो TLB या memory से page descriptor लाकर वास्तविक physical address बनाया जाता है
- Segment device को disable नहीं किया जा सकता, लेकिन address 0 से शुरू होने वाले 4GiB segment से पूरे memory space को represent कर flat memory की तरह इस्तेमाल किया जा सकता है
- Paging device segments को 4KiB pages में बांटता है
- 80386 ने चार privilege levels, यानी rings, introduce किए
- इनका उपयोग privileged memory को unprivileged read/write से protect करने में होता है
- यह modern protected OS के base elements में से एक था
- MMU Virtual 8086 mode में भी शामिल होता है
- 8086 program ऐसे चलता है मानो वह अधिकतम 1MiB memory वाले पूरे 8086 को control कर रहा हो
- कई V86 virtual machines साथ-साथ चल सकती हैं
- Protected resources access जैसी actions interrupt generate करती हैं, जिन्हें privileged software handle करता है
- 386 MMU को CPU का integrated और साफ-सुथरा हिस्सा बनाकर design किया गया
- Ideal conditions में यह memory access performance को प्रभावित नहीं करता
- MC68851 हमेशा कम से कम 1-cycle delay जोड़ता था
- 68000 family में MMU हमेशा मौजूद नहीं था
- 68020 को external MMU चाहिए था
- 68030 और 68040 के low-cost EC versions में integrated MMU नहीं था
- 80386 में low-cost 386SX तक सभी models में MMU शामिल था
- MMU और advanced operating modes का उपयोग करने वाले programs किसी भी 386 पर चल सकते थे
386 ने जो operating-system transition खोला
- 386 का असली impact raw performance से ज्यादा PC पर modern operating systems को संभव बनाने में था
-
Xenix
- Xenix Microsoft और SCO के collaboration से शुरू हुए microcomputers के लिए शुरुआती UNIX ports में से एक था
- 1980 में 8086 port की घोषणा हुई, लेकिन असली MMU न होने से memory protection और user space/kernel space separation संभव नहीं था
- 286 version ने protected mode का उपयोग कर workstation UNIX के ज्यादा करीब पहुंचा
- 1987 का 386 port paging इस्तेमाल कर gap कम करता था, और x86 पर चलने वाला पहला modern 32-bit OS बना
-
OS/2
- OS/2 शुरुआत में Microsoft और IBM का joint development था, बाद में Microsoft Windows पर focus करने के लिए अलग हो गया
- यह 1987 में release हुआ, लेकिन शुरुआती version 286 को target करता था
- कारण यह था कि IBM PS/2 line के कई machines में 286 लगा था
- इसने protected mode का अच्छा उपयोग किया और उस समय advanced OS माना गया
- OS/2 1992 के version 2.0 से 32-bit OS बना
- उससे पहले segmented memory model और Virtual 8086 mode की कमी के कारण DOS application support अच्छा नहीं था और यह Windows/386 से भी पीछे था
- OS/2 2.0 personal computers पर व्यापक रूप से इस्तेमाल हुआ पहला 32-bit OS था
-
Windows
- Windows ने 1987 के Windows/386 से 80386-only operating environment दिया
- Windows/386 अभी भी 16-bit OS था और 32-bit flat memory space expose नहीं करता था
- इसके बजाय उसने DOS sessions को Virtual 8086 mode में virtualize करने के लिए 386 features इस्तेमाल किए
- कई DOS sessions एक-दूसरे से अनजान रहते हुए parallel चल सकते थे
- यह उन कई businesses के लिए महत्वपूर्ण था जो DOS software पर निर्भर थे
- MMU के कारण protected-mode driver के जरिए expanded memory भी मिली, जो EMS emulate करता था
- Windows 3.0 और Windows 3.1 में यह प्रवाह बेहतर हुआ, और Windows 3.1 बड़ी success बना
- 1993 के Windows for Workgroups 3.11 ने 386 से कम CPU support बंद कर दिया, और file access व कई drivers 32-bit हो गए
- Windows 95 ने 386 MMU का पूरी तरह उपयोग किया
- Flat memory space expose किया
- Paging और virtual memory का उपयोग किया
- कुछ code अब भी 16-bit था, लेकिन DOS की भूमिका लगभग bootloader जैसी रह गई
-
Windows NT
- पहला Windows NT July 1993 में release हुआ
- Windows 95 जहां Windows 3.11 से evolve हुआ और कुछ 16-bit legacy code बनाए रखा, वहीं NT को शुरू से “pure” 32-bit Windows के लक्ष्य से नया develop किया गया
- NT की मुख्य विशेषताओं में से एक hardware independence थी, लेकिन सबसे महत्वपूर्ण port 80386 के लिए था
- Paging, supervisor mode और memory protection का full use किया गया
- NT ने Windows 95 के लगभग समान API share किए, इसलिए यह कई Win32 applications चला सकता था
- NT4 ने 1990s के mid में Workstation UNIX market पर असर डालना शुरू किया
- Windows 11 NT kernel का direct descendant है
-
Linux
- 386 से सबसे नजदीकी संबंध वाला operating system Linux है
- Linus Torvalds ने लगभग January 1991 में नया 386 PC खरीदा
- Linus ने कहा कि 68008 chip पर पले-बढ़े computer purist के रूप में उन्हें PC पसंद नहीं था, लेकिन 386 आने के साथ PC आकर्षक लगने लगा
- 386 वही काम कर सकता था जो 68020 करता था
- 1990 तक mass production और सस्ते clones के आने से यह काफी सस्ता हो गया था
- यह 386 PC operating-system internals सिखाने के लिए बने छोटे UNIX clone Minix को चलाने के लिए उपयुक्त था
- Linus Minix के terminal emulator से संतुष्ट नहीं थे, इसलिए खुद लिखना शुरू किया
- University computer से connect करने के लिए अच्छा terminal important था
- 386 hardware सीखने के लिए इसे bare-metal तरीके से लिखा
- Keyboard input और screen output functions बनाए
- दो independent threads के इर्द-गिर्द design करते हुए छोटा task switcher लिखा
- Program download करने के लिए storage वाला disk driver चाहिए था, और features एक-एक कर जुड़ते गए, जिससे वह operating system बना जिसे Linux के नाम से जाना गया
- 1991 के mid में Linus ने POSIX specification की copy मांगी, और 25 August 1991 को comp.os.minix newsgroup पर बताया कि वे नए operating system पर काम कर रहे हैं
- उस समय का expression था “just a hobby, won’t be big and professional like gnu”
80386 का दीर्घकालिक impact
- 80386 को x86 family का सबसे महत्वपूर्ण CPU माना जाता है
- तकनीकी रूप से 80386 अच्छा chip था, लेकिन performance के मामले में revolutionary नहीं था और अपने समय के RISC chips से पीछे था
- असली बात modern और fast MMU और कई operating modes थे
- यह 4GiB flat memory access कर सकता था
- Existing x86 software के साथ compatibility बनाए रखता था
- Windows को धीरे-धीरे modernize होने दिया
- 386 की memory handling क्षमता इतनी अच्छी थी कि बाद के CPUs अधिक शक्तिशाली हुए, लेकिन लगभग 20 साल तक इस क्षेत्र में बड़ा addition नहीं हुआ
- Linux mainline ने 2013 में ही i386 support बंद किया
- Commercially भी 386 का महत्व बहुत बड़ा था
- Intel शुरुआत में 32-bit x86 demand पर विश्वास नहीं करता था, लेकिन उसने समझा कि x86 ही भविष्य है
- इस बदलाव ने market को signal दिया कि x86 जारी रहेगा
- प्रमुख clone makers द्वारा 386 adoption ने IBM को पीछे धकेला और दिखाया कि भरोसेमंद open alternative मौजूद है
- Intel सबसे powerful x86 CPU का एकमात्र supplier बना और CPU market dominance की ओर एक महत्वपूर्ण कदम उठाया
- 386-based machines mass-produced हुईं, prices तेजी से गिरे, और MMU access आम हो गया
- Windows ने करोड़ों users को modern computing से परिचित कराया
- NT kernel ने दिखाया कि सस्ते “beige” PCs पर भी robust OS चल सकता है
- Linux 386 से इतना गहराई से जुड़ा है कि कहा जा सकता है, 386 के बिना Linux मौजूद नहीं होता
1 टिप्पणियां
Hacker News की राय
मुझे लगता है कि 80386 के अंतिम डिजाइन को Motorola 68000 और उसके बाद आए m68020 से बहुत फायदा मिला
अगर Motorola ने बिना समझौते वाला, सही मायने में 32-bit CPU न निकाला होता, तो संभव था कि Intel 80286 के बाद भी एक और अस्थायी उपाय जैसा चिप निकालता। 80286 खुद भी 8086/8088 का सही उत्तराधिकारी बनने के इरादे से नहीं बनाया गया था
असली 80386 में भी बहुत समझौते थे। 16-byte instruction prefetch queue के अलावा कोई cache बिल्कुल नहीं था, जबकि m68020 में 256-byte instruction cache था। atomic instructions भी नहीं थे, और
LOCKयहां बहुत उपयोगी नहीं था, इसलिए आजकल कई OS 80486 को सपोर्ट करते हैं लेकिन 80386 को नहीं। 8086 compatibility के कारण real mode या VM86 की जरूरत थी, इसलिए software को 80386 की नई खूबियों का फायदा उठाने में काफी समय लगाफिर भी यह एक महत्वपूर्ण chip था, और इसने आगे Intel में परिचित हो जाने वाले pattern के शुरुआती संकेत भी दिखाए। जैसे x86 से मुकाबला न करने या x86 की कीमत पर दूसरा market बनाने की कोशिशें (iAPX 432, 20 साल बाद Itanic), 80286 में लगी सुविधाओं की तरह जल्दबाजी में जोड़ी गई और फिर हमेशा legacy support के रूप में ढोनी पड़ीं सुविधाएं, और जब दूसरे vendors के पास वह feature हो जिसे सब चाहते हैं, तब देर से catch up करना (उस समय flat 32-bit support, 20 साल बाद 64-bit support)
उस समय Intel बड़े संकट में था, और पूरी कंपनी इस chip के शानदार बनने पर टिकी हुई थी
Data General, Honeywell, CDC, AST, Tandy, Olivetti, Xerox, DEC Rainbow, AT&T Hobbit, Wang 2200, Unisys की तरह यह आसानी से पटरी से उतर सकता था। यहां मजबूत survivorship bias है। SDS, SDC, Fairchild जैसे कभी के ज्यादातर दिग्गज आज लगभग भुला दिए गए हैं
Intel का इतिहास मूल रूप से memory manufacturer के ज्यादा करीब था। आज भी उसे कुछ वैसी ही मुश्किल स्थिति में माना जा सकता है। mobile और consumer electronics market share प्रभावी रूप से 0% है, और बचे हुए मुख्य गढ़ों में भी NVIDIA, AMD, ARM किले को लूटने की तरह धक्का दे रहे हैं। उम्मीद है इस बार भी वह निकल आएगा
“Business की success अपने भीतर self-destruction के बीज रखती है। success complacency पैदा करती है, complacency failure पैदा करती है। केवल paranoid ही survive करते हैं”
2010s की Intel leadership ने इस बात पर पर्याप्त ध्यान नहीं दिया
DEC को LSI-11 को consumer machine के रूप में package करना चाहिए था। software भी सब था और quality भी बहुत ऊंची थी। मेरे पास H-11 था और वह शानदार machine थी
Switch का अब भी 2015-era Tegra chipset इस्तेमाल करना भी शायद इसलिए है कि Nintendo जितनी बड़ी company भी NVIDIA पर दबाव डालकर नया design नहीं निकलवा सकी। ARM आम तौर पर खरीदने योग्य server CPU नहीं बनाता, और जो products मौजूद हैं उन्हें cloud companies उठा लेती हैं। Mac के बाहर इस्तेमाल लायक ARM desktop/laptop CPU भी नहीं है। क्योंकि Qualcomm ने उस market को कई साल तक खराब किया है
जब तक ARM, Rosetta से मुकाबला करने लायक solution नहीं लाता, और Qualcomm “बस मुश्किल से चल जाए तो release कर दो” वाली सोच से बाहर नहीं निकलता—जो smartphone vendors पर भले चल जाए, पर PC/desktop market के लिए सही नहीं है—तब तक उस market में ARM adoption मुश्किल दिखता है
आखिरकार Intel के लिए बचा एकमात्र खतरा AMD है, लेकिन AMD के पास Intel की खाई को पर्याप्त रूप से खतरे में डालने जितनी fab production capacity नहीं है। general-purpose computing competition की स्थिति बहुत निराशाजनक हो सकती है, या शायद नहीं भी
386 पर “flat 32-bit” वाली बाद की व्याख्या थोपना बंद करना चाहिए। वह इसका स्पष्ट लक्ष्य नहीं था; यह उस समय भविष्य मानी जाने वाली महत्वपूर्ण capability-based architecture सुविधाओं को अपनाने के ज्यादा करीब था
यह उस संदर्भ की बात है जब Unix/C/RISC/एकल supervisor model जैसे विचारों ने security जैसे क्षेत्रों में पिछले 30 साल के mainframe और minicomputer OS research को पीछे नहीं धकेला था
यह लेख जिस बात को ठीक से स्पष्ट नहीं करता, वह यह है कि segment registers अब मूलतः base address + length (page या byte units में) fields और execute permission control वाली table के selector index बन गए थे। और ऐसे selectors और GDT/LDT/IDT/TSS/call gates/task gates आदि सभी 4-level privilege hierarchy, जैसे user/library/driver/kernel, को support करने के लिए design किए गए थे
access selectors को पास करके data structure size limits जैसी चीजें enforce की जा सकती थीं, और इसी के लिए FS/GS जोड़े गए ताकि हर general-purpose register के पास अपना permission mask हो सके
जरा फिर सोचें: pointers (capabilities, यानी selectors) में सिर्फ base address ही नहीं, बल्कि hardware-enforced limits भी हो सकती थीं, और permission model की वजह से
strcpy()जैसे function को target buffer या अपने workspace के अलावा memory में लिखने से रोका जा सकता था। language और OS, called function को caller के stack में लिखने से रोक सकते थे, या उसे पूरी तरह अलग stack पर चलने के लिए भी मजबूर कर सकते थे। यह तो बस शुरुआत थीलगभग 40 साल बाद भी industry flat memory model और साधारण user/supervisor privilege model के इर्द-गिर्द OS और programming languages design करने की गलती से उबरने की कोशिश कर रही है। 386 ने ऐसी OS capabilities लिखने के लिए hardware support दिया था जो आज भी आम नहीं हैं। उदाहरण के लिए CHERI को देखें
https://forums.grsecurity.net/viewtopic.php?f=7&t=3046
https://pax.grsecurity.net/docs/PaXTeam-H2HC12-PaX-kernel-se...
मैं जोर देना चाहता हूं कि 386SX कितना महत्वपूर्ण था। मेरे पिता मेरा PC चाहते थे, इसलिए उन्होंने एक दोस्त से 286 clone assemble करने को कहा, लेकिन उस दोस्त ने उसके बजाय 386SX दे दिया
उसने कहा, “286 के लगभग उसी दाम पर है, लेकिन जो आपको मिल रहा है वह निश्चित रूप से 32-bit CPU है,” और वह सही था। उस पर Win 3.11 चला सकता था। 286 की कीमत में खरीदा जा सकने वाला 32-bit CPU था, यानी काफी affordable—वाकई brilliant product था
यहां 286 को भी कुछ credit मिलना चाहिए। 286 previous generation की तुलना में instructions per clock में काफी बेहतर था, इसलिए यह काफी underrated chip था, और यही बात 386 की एक मुख्य कमजोरी बनी
मौजूदा 16-bit code चलाते समय 386 की instructions per clock मूलतः 286 जैसी ही थी, और शुरुआती clock भी 12MHz था, इसलिए यह काफी फीका लगा। जब तक clocks सच में ऊपर नहीं गए और लोग 32-bit features इस्तेमाल करना शुरू नहीं किए, तब तक यह महंगे DOS/286 competitor से ज्यादा मायने नहीं रखता था
386 release होने के कुछ ही समय बाद, किशोर उम्र में मैंने अपना पहला computer खरीदा। उस समय market में 286 और 386 PC दोनों थे, लेकिन 386 पर बड़ा price premium था
उस समय मुझे फर्क ठीक से पता नहीं था, इसलिए मैंने 286 system खरीदा, और कुछ सालों के भीतर फर्क समझ आने के बाद ज्यादा पैसे बचाकर 386 न खरीदने का मुझे बहुत पछतावा हुआ। कुछ समय बाद मैंने toy OS के system bootstrap जैसी low-level assembly लिखना शुरू किया, लेकिन 32-bit protected mode इस्तेमाल नहीं कर सकता था। ऊपर से किसी समय से 386-only games भी आने लगे, इसलिए पहला 486 खरीदने तक काफी बाहर-सा महसूस हुआ
Intel ने x86 line को 386 के बाद Pentium Pro और amd64 तक विकसित किया, लेकिन Motorola ने 68k के साथ ऐसा क्यों नहीं किया, यह जानना चाहता हूं
मैंने ऐसी चर्चाएं देखी हैं जो जैसे यह मानकर चलती हैं कि 68k obsolete हो गया था और उसे PowerPC से replace करना ही था, लेकिन यह अनुमान जैसा लगता है। कोई technical argument मैंने नहीं देखा, और 68k, 286 के बाद के x86 की तुलना में आगे ले जाने के लिए ज्यादा साफ-सुथरी architecture लगता है
Intel ने भी कम से कम दो बार i860 या Itanic पर move करने की कोशिश की, लेकिन fail हुआ। इसलिए x86 को improve करना winning choice बन गया
https://news.ycombinator.com/item?id=37796469
यह कई vendors के बीच काम करने वाला और 88k CPU के लिए भी suitable standards-based bus बनाने की कोशिश थी। यह जबरदस्त सफल नहीं हुआ, लेकिन कुछ हद तक सफल जरूर हुआ
“सबसे महत्वपूर्ण था” वाली अभिव्यक्ति में थोड़ी बाद की व्याख्या जैसी लगती है। अगर 8086/8088 IBM PC के जरिए संयोग से universal न हो गए होते, तो शायद 80286 तो दूर, 80386 भी नहीं होता
फिर भी 386 दुनिया बदल देने वाली engineering achievement थी। मुझे लगता है कि किसी ज्यादा न्यायपूर्ण और fair timeline में 68030 दुनिया पर छा गया होता, लेकिन Intel ने जो किया उसे कमतर नहीं आंक सकते
386 ने उस line में पहली बार demand-paged virtual memory support किया, जिसकी वजह से OS क्या कर सकता है, यह बहुत खुल गया। व्यक्तिगत रूप से मुझे लगता है कि 386 की दी हुई सबसे महत्वपूर्ण capability यही थी
मेरा दूसरा PC एक 386 था जिस पर SCO UNIX चलता था। पहला PC 8080-based Heathkit H-8 था, जिस पर CP/M चलता था
यह बात हैरान करती है कि Bob Childs 286 के designers में से एक थे, और उन्होंने अनौपचारिक रूप से लगभग 6 महीनों तक 286 के 32-bit extension के idea पर सोचा था
आखिर ऐसा संभव कैसे है? 30 साल काम करने के दौरान मुझे कभी ऐसी नौकरी नहीं मिली जहाँ हर कुछ दिनों में कोई गला पकड़कर कोई दिखने वाला output देने को न कहता हो