2 puan yazan GN⁺ 2023-11-06 | 1 yorum | WhatsApp'ta paylaş
  • Intel 80386, x86 ailesinin ilk 32 bit CPU'su olmanın ötesinde, 4GiB düz bellek ve mevcut x86 uyumluluğunu birlikte sunarak PC'ler için modern işletim sistemlerinin temelini attı
  • Intel başlangıçta iAPX 432 ve P7 gibi başka mimarilere daha fazla ağırlık verse de, PC pazarının büyümesi ve x86 yazılım uyumluluğu nedeniyle 386'nın tamamlanmasını en yüksek önceliğe aldı
  • 386 ile birlikte Intel, IBM ve AMD'nin second source üretimine izin vermedi ve tek tedarikçi oldu; Compaq Deskpro 386 ise IBM merkezli PC standardı akışını sarstı
  • Performansı aynı dönemin RISC çiplerine karşı ezici olmasa da, tüm 386 modellerine dahil edilen MMU ve Virtual 8086 modu; UNIX, OS/2, Windows, NT ve Linux'a geçişte kilit rol oynadı
  • 386 tabanlı PC'ler kitlesel üretime geçince MMU, son kullanıcı PC'lerine kadar yayıldı; Windows'un yaygınlaşması ve Linux'un doğuşu da 386'nın benimsenmesiyle güçlü biçimde bağlantılıydı

Intel'in aslında istemediği 32 bit x86

  • Intel 80386, x86 ailesinin ilk 32 bit CPU'suydu, ancak başlangıçta Intel'in ana planının merkezinde değildi
  • 1970'lerin sonunda Intel'in en önemli projesi, 1980'lerin ana tasarımı olarak düşünülen iAPX 432 idi
    • iAPX 432, ADA gibi yüksek seviyeli dillere uygun biçimde nesne yönelimli programlama ve depolama tahsisini donanımda sunmayı hedefleyen iddialı bir CPU'ydu
    • Tasarımın olgunlaşmasının uzun süreceği görülünce Intel, 1976'da geçici bir tasarım olarak 8086'yı başlattı
  • 8086 ailesi IBM PC sözleşmesini kazandı; iAPX 432 ise 1981'de geç çıkmasına rağmen hayal kırıklığı yaratan bir performans sundu
    • Aynı frekanstaki çok daha ucuz 80286'ya karşı benchmark'larda yaklaşık dörtte bir hızda kaldı
  • 1982'de bile Intel, PC platformunun ve yazılım ikili uyumluluğunun önemini tam olarak kabul etmiş değildi; 80286 da yine geçici bir CPU'ya yakındı
  • Intel mühendisleri 432 ailesinin başarısızlığını fark ettikten sonra, P7 adlı yeni bir 32 bit RISC mimarisi hazırlamaya başladı

80386 tasarım yönünün netleşmesi

  • 286 tasarımcılarından biri olan Bob Childs, 286'nın 32 bit genişletilmesine dair fikirleri gayriresmî olarak toparladı
  • Yaklaşık 6 ay sonra Intel, P7 hazır olmadan önce x86 ailesinde bir yineleme daha gerektiğine karar verdi ve 386 geliştirmesini onayladı
    • İlk ekip küçüktü ve bütçesi sınırlıydı
    • x86 müşterilerinin ihtiyaçları incelendiğinde, 8086'nın segmentli bellek yaklaşımının yaygın biçimde eleştirildiği ve 80286'nın da bunu ortadan kaldıramadığı görüldü
  • UNIX daha ucuz workstation'larda önem kazandıkça, 386 ekibi UNIX'e uygun bir CPU'yu hedefledi
  • En önemli gereksinim düz bellek adreslemesiydi
    • Mevcut x86 uyumluluğunu korumak için 386 da segment yapısını korudu
    • Ancak her segmentin 4GiB'e kadar çıkabilmesi sayesinde segmentlerin önemi fiilen azaldı
    • Paging ve sanal bellek desteğinin eklenmesine de bu dönemde karar verildi
  • Mevcut komut seti ve register'lar 32 bit'e genişletilerek ikili uyumluluk korundu
    • Ayrı bir “mode header” arkasına tamamen farklı bir komut seti koyma yaklaşımı tercih edilmedi
    • Bunun karşılığında x86'nın zayıf yönlerinden biri olan az sayıda register sorunu çözülemedi
  • Bir ara P7 için hazırlanan yeni veri yolu da değerlendirildi, ancak 286 veri yolundan fazla farklı olduğu ve anakart ile destek çiplerinin yeniden tasarlanmasını gerektireceği için bundan vazgeçildi
    • Bunun yerine mevcut veri yolunun 32 bit'e genişletildiği daha az iddialı bir yaklaşım benimsendi
  • 1984 civarında PC pazarı büyürken Intel, x86 ailesinin önemini anlamaya başladı ve 80386'nın tamamlanması en yüksek öncelik oldu
    • P7 projesi 1988'de i960'a dönüştü ve 386 satışlarını baltalamamak için hedefi embedded pazara kaydırıldı

Intel'in 386 için tek tedarikçi stratejisi

  • 80386, Ekim 1985'te duyuruldu
  • O dönemde Intel gibi çip tasarım şirketlerinin, CPU'ların başka şirketler tarafından da üretilebilmesi için lisans vererek second source oluşturması yaygındı
    • Böylece müşteriler, ana tedarikçide verim sorunu çıksa bile CPU kıtlığı yaşamıyordu
    • Intel ile AMD, 8085 döneminden beri uzun bir iş birliği içindeydi ve ürünlerini karşılıklı lisanslıyordu
    • IBM de 1983'ten itibaren 808x ve 80286'yı doğrudan üretebilme lisansına sahipti
  • 80386 ile bu uygulama değişti
    • Intel, PC'nin en değerli bileşeni olan CPU'yu doğrudan kontrol etmek için tek tedarikçi olmanın önemli olduğunu düşündü
    • IBM, gelecekteki 386'dan çok 286'ya büyük yatırım yapmaya daha ilgiliydi
    • Intel ile IBM arasındaki anlaşma, 286 konusunda IBM'i memnun edecek şekilde yeniden müzakere edildi; ancak IBM 386 üretemedi
  • AMD de 386 üretimine büyük ilgi göstermedi ve AMD ile olan second source anlaşması 386'ya genişletilmedi
  • Benzer dönemde görülen NEC v. Intel davasında, mikro kodun telif hakkıyla korunduğuna ve Intel'in özel lisansı olmadan kopyalanamayacağına hükmedildi
    • NEC 8086 mikro kodunu tersine mühendislikle yeniden oluşturabilmiş olsa bile, 386 karmaşıklığı nedeniyle neredeyse imkânsız bir hedef olarak görülüyordu
  • Bu sürecin ardından Intel, Microsoft ile birlikte PC pazarının geleceğini kontrol edebilecek bir konuma geldi

Compaq Deskpro 386 ve klon PC'lerin zaferi

  • IBM PC, pazara hızlı çıkabilmek için hazır bileşenler kullandı; bunun sonucu olarak başka şirketler de aynı parçaları satın alıp uyumlu sistemler üretebildi
  • En başarılı ve en iddialı klon üreticisi Compaq idi
    • O dönemde Compaq, 100 milyon dolar gelire en hızlı ulaşan şirketti
  • Compaq, Intel 80386'yı çıkardıktan neredeyse 1 yıl sonra, Eylül 1986'da Deskpro 386'yı duyurdu
    • Deskpro 386, ilk 386 bilgisayardı
    • Ayrıca IBM'in 286 tabanlı PC/AT ile PC pazarındaki kontrolü geri almaya çalıştığı çizgiyi izlemeyen ilk PC oldu
  • Bill Gates, IBM'in 386'ya güvenmediğini ve Microsoft'un Compaq'ı 386 tabanlı bir makine yapmaya teşvik ettiğini söyledi
    • Bu olay, standartları yalnızca IBM'in belirlemediğini; Compaq ve Intel gibi şirketlerin de yeni yönler açabildiğini gösteren bir dönüm noktasıydı
  • Compaq Deskpro 386 başlangıçta çok pahalıydı, ancak satışları makuldü ve IBM'in artık tartışmasız lider olmadığını gösterdi
  • IBM, kendi ilk 386 bilgisayarı olan PS/2 model 80'i ancak neredeyse 1 yıl sonra çıkardı
    • PS/2 serisi, kontrolü geri almak için o dönem oldukça ileri bir tescilli veri yolu tanıttı
    • Ancak IBM artık kendi yaklaşımını dayatabilecek konumda değildi ve PS/2 serisi bu hedefe ulaşamadı

386'nın rekabet ortamı ve performansı

  • 1985'te Intel x86 ailesinin başlıca rakibi Motorola 680x0 ailesiydi
    • Pek çok kişi 68000'i, 8086'dan çok daha üstün bir çip olarak görüyordu; 80286'nın ise daha temiz bir mimariye evrilme fırsatını kaçırdığı düşünülüyordu
    • 68020, Motorola CPU'larının doğal 32 bit evrimiydi
  • 80386 ile Intel ilk kez ciddi rakiplerle karşı karşıya kaldı
    • Entegre MMU ve 4GiB düz adres alanı sayesinde, yüksek kârlı workstation pazarını da hedefleyebildi
  • Workstation pazarında pek çok şirket RISC tasarımlarını benimsiyordu
    • RISC'nin cazibesi daha hızlı ve daha ucuz üretilebilmesiydi
    • 386, karmaşık x86 komut setini ve 80286 adresleme modlarını işlemek için yoğun mikro koda dayanan bir CISC tasarımıydı
  • Benchmark'larda 386 ortalama bir performans sergiledi
    • 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
  • Performans çığır açıcı değildi, ancak rekabet etmek için gerekli özelliklere sahipti

386SX ve 32 bit yazılımın yayılması

  • Intel, 386'ya tamamen odaklandıktan sonra 1988'de 386SX'i tanıttı
  • 386SX iç yapıda orijinal 386 ile aynıydı; orijinal modelin adı da 386DX olarak değiştirildi
    • Haricî veri yolu 16 bittir
    • Daha ucuz plastik paketle sunuldu
    • Ucuz 16 bit anakartlara takılabiliyordu
  • 386SX'in temel hedefi, benzer fiyat aralığındaki 286'nın yerini almaktı
    • 286 için hâlâ second source tedarikçileri vardı
  • 1990'ların başında 386 kurulu tabanı yeterince büyüdü ve daha fazla yazılım üreticisi 32 bit ve modern özelliklerden yararlanabilir hâle geldi
  • Belirleyici unsur, düşük maliyetli modeller dâhil tüm 386'larda entegre MMU bulunmasıydı

MMU'nun bellek yönetimini nasıl değiştirdiği

  • MMU, Memory Management Unit'in kısaltmasıdır; sanal adresleri fiziksel adreslere otomatik dönüştüren donanımdır
  • İlk programlar makinenin tüm adres alanını görebiliyordu
    • Adres alanı küçükken bu yönetilebilirdi, ancak birden fazla program aynı anda çalışmaya başlayıp işletim sistemi artık ROM'da kalamaz hâle gelince izolasyon sorunu büyüdü
  • İlk çözümlerden biri segmentasyon idi
    • Segment register'ları temel adres görevi görürdü
    • Program bir adrese eriştiğinde, segment register'ına eklenen 16 bit değerle fiziksel adres oluşturulurdu
    • Segment boyutu sınırı aşılırsa fault oluşur ve programlar arası izolasyon sağlanabilirdi
    • 8086, bellek erişimi için segment yöntemini kullanıyordu
  • 80286, daha karmaşık bellek yönetimini destekleyen özellik zengini bir segment MMU'ya sahipti ve en fazla 16MiB belleğe erişebiliyordu
    • OS/2 1.x, daha modern bir deneyim sunmak için bu MMU'dan yararlanıyordu
  • PC programcıları için segmentli bellek kısıtlayıcı ve kullanımı zor bir yapıydı
  • Daha modern MMU tasarımı ise paging etrafında şekillendi
    • MMU, sanal adres alanını sabit boyutlu sayfalara böler
    • Bir sayfaya erişildiğinde, fiziksel adres dönüşüm bilgisi için page descriptor okunur
    • Page descriptor'lar genellikle bellekte bulunduğundan, performans için yakın zamanda erişilen descriptor'ları tutan TLB cache kullanılır
  • Birçok modern işletim sistemi, özellikle UNIX port'ları, paging ile daha uyumluydu
    • 68000 tabanlı workstation'lar bazen MC68451 yerine kendi paging tabanlı haricî MMU'larını kullanıyordu
    • Motorola da 68020 için haricî MMU olan 68851'i tanıttı

80386 MMU'nun yapısı ve farkları

  • 386 hem modern işletim sistemlerine uygun olmalı hem de 8086, 80286 ve mevcut x86 yazılımlarıyla uyumlu kalmalıydı
  • Bunun için 386 MMU, neredeyse iki ayrı aygıt gibi yapılandırıldı
    • Biri segment mode için
    • Diğeri paging mode için
  • Bu iki aygıt zincirleme çalışıyordu
    • Mantıksal adres önce segment aygıtından geçip doğrusal adrese dönüştürülürdü
    • Paging kapalıysa bu doğrusal adres doğrudan fiziksel adres olurdu
    • Paging açıksa, gerçek fiziksel adresi üretmek için TLB'den ya da bellekten page descriptor alınırdı
  • Segment aygıtı devre dışı bırakılamazdı; ancak 0 adresinden başlayan 4GiB segmentler kullanılarak tüm bellek alanı düz bellek gibi temsil edilebilirdi
  • Paging aygıtı segmentleri 4KiB sayfalara bölerdi
  • 80386, dört ayrı ayrıcalık seviyesi olan rings yapısını getirdi
    • Bu yapı, ayrıcalıklı belleği ayrıcalıksız okuma-yazmalardan korumakta kullanıldı
    • Modern korumalı işletim sistemlerinin dayandığı temel unsurlardan biriydi
  • MMU, Virtual 8086 modunda da rol oynuyordu
    • 8086 programı, 1MiB belleğe sahip tam bir 8086'yı kontrol ediyormuş gibi çalıştırılabiliyordu
    • Birden çok V86 sanal makine aynı anda çalışabiliyordu
    • Korumalı kaynaklara erişim gibi işlemler interrupt üretir, bunu ayrıcalıklı yazılım işlerdi
  • 386 MMU, CPU'nun entegre ve düzenli bir parçası olarak tasarlandı
    • İdeal koşullarda bellek erişim performansını etkilemiyordu
    • MC68851 ise her zaman en az 1 cycle gecikme ekliyordu
  • 68000 ailesinde MMU her zaman mevcut değildi
    • 68020 haricî MMU gerektiriyordu
    • 68030 ve 68040'ın düşük maliyetli EC sürümlerinde entegre MMU yoktu
  • 80386'da ise düşük maliyetli 386SX dâhil tüm modellerde MMU bulunuyordu
    • MMU ve gelişmiş çalışma modlarını kullanan programlar her 386'da çalışabiliyordu

386'nın başlattığı işletim sistemi geçişi

  • 386'nın asıl etkisi ham performansından çok, PC'de modern işletim sistemlerini mümkün kılmasındaydı
  • Xenix

    • Xenix, Microsoft ile SCO iş birliğiyle ortaya çıkan mikro bilgisayarlar için ilk UNIX port'larından biriydi
    • 1980'de 8086 port'u duyuruldu, ancak gerçek bir MMU olmadığı için bellek koruması ile kullanıcı alanı/çekirdek alanı ayrımı mümkün değildi
    • 286 sürümü, korumalı modu kullanarak workstation UNIX'ine daha çok yaklaştı
    • 1987'deki 386 port'u paging kullanarak farkı kapattı ve x86 üzerinde çalışan ilk modern 32 bit işletim sistemi oldu
  • OS/2

    • OS/2, başlangıçta Microsoft ile IBM'in ortak geliştirmesiydi; daha sonra Microsoft Windows'a odaklanmak için projeden ayrıldı
    • 1987'de çıktı, ancak ilk sürümler 286'yı hedefliyordu
    • Bunun nedeni, IBM PS/2 serisinin büyük bölümünün 286 ile gelmesiydi
    • Korumalı modu iyi kullandı ve dönemin gelişmiş işletim sistemlerinden biri sayıldı
    • OS/2'nin 32 bit işletim sistemi hâline gelişi 1992 tarihli sürüm 2.0 ile oldu
    • O zamana kadar segmentli bellek yaklaşımı ve Virtual 8086 modunun yokluğu nedeniyle DOS uygulaması desteği zayıftı ve Windows/386'nın gerisinde kalıyordu
    • OS/2 2.0, kişisel bilgisayarlarda yaygın kullanılan ilk 32 bit işletim sistemi oldu
  • Windows

    • Windows, 1987'de çıkan Windows/386 ile 80386'ya özel bir çalışma ortamı sundu
    • Windows/386 hâlâ 16 bit bir işletim sistemiydi ve 32 bit düz bellek alanını açığa çıkarmıyordu
    • Bunun yerine 386 özelliklerini kullanarak DOS oturumlarını Virtual 8086 modunda sanallaştırıyordu
    • Birden fazla DOS oturumu birbirinden habersiz biçimde paralel çalışabiliyordu
    • Bu durum, DOS yazılımına bağımlı pek çok şirket için önemliydi
    • MMU sayesinde EMS, korumalı mod sürücüleri üzerinden emüle edilerek genişletilmiş bellek de sağlandı
    • Bu çizgi Windows 3.0 ve Windows 3.1'de geliştirildi; Windows 3.1 büyük başarı kazandı
    • 1993 tarihli Windows for Workgroups 3.11, 386 altı CPU desteğini bıraktı; dosya erişimi ve birçok sürücü 32 bit oldu
    • Windows 95, 386 MMU'dan ciddi biçimde yararlandı
      • Düz bellek alanı sundu
      • Paging ve sanal bellek kullandı
      • Kodun bir kısmı hâlâ 16 bit olsa da DOS neredeyse yalnızca bootloader benzeri bir role indirgenmişti
  • Windows NT

    • İlk Windows NT, Temmuz 1993'te yayımlandı
    • Windows 95, Windows 3.11'in üzerine gelişirken kısmen 16 bit eski kod taşımaya devam etti; buna karşılık NT en baştan “saf” 32 bit Windows olarak geliştirildi
    • NT'nin önemli özelliklerinden biri donanımdan bağımsızlık olsa da, en kritik port 80386 içindi
    • Paging, supervisor mode ve bellek korumasını tam anlamıyla kullandı
    • NT, Windows 95 ile neredeyse aynı API'yi paylaşarak birçok Win32 uygulamasını çalıştırabiliyordu
    • NT4, 1990'ların ortasında Workstation UNIX pazarını etkilemeye başladı
    • Windows 11, NT çekirdeğinin doğrudan soyundan gelir
  • Linux

    • 386 ile en yakından bağlantılı işletim sistemi Linux'tur
    • Linus Torvalds, 1991 Ocak civarında yeni bir 386 PC satın aldı
    • Linus, 68008 çipiyle büyümüş bir bilgisayar safçısı olarak PC'den hoşlanmıyordu; ancak 386 ortaya çıkınca PC'lerin cazip görünmeye başladığını söyledi
    • 386, 68020'nin yaptıklarını yapabiliyordu
    • 1990'a gelindiğinde kitlesel üretim ve ucuz klonlar sayesinde çok daha ucuz hâle gelmişti
    • Bu 386 PC, işletim sistemi iç yapısını öğretmek için hazırlanmış küçük bir UNIX klonu olan Minix'i çalıştırmak için uygundu
    • Linus, Minix'in terminal emülatöründen memnun kalmadı ve kendisi yazmaya başladı
    • Üniversite bilgisayarlarına bağlanabilmek için iyi bir terminal önemliydi
    • 386 donanımını öğrenmek amacıyla bunu bare metal biçimde yazdı
    • Klavye girdisi ve ekran çıktısı işlevlerini oluşturdu
    • İki bağımsız thread etrafında tasarlayarak küçük bir task switcher yazdı
    • Program indirebilmek için veriyi kaydedecek bir disk sürücüsüne ihtiyaç duydu ve özellikler birer birer eklenerek sonunda Linux adıyla bilinen işletim sistemi şekillendi
    • 1991 ortasında Linus, POSIX spesifikasyonunun bir kopyasını istedi ve 25 Ağustos 1991'de comp.os.minix haber grubunda yeni bir işletim sistemi üzerinde çalıştığını duyurdu
    • O dönemde kullandığı ifade şuydu: “just a hobby, won’t be big and professional like gnu”

80386'nın uzun vadeli etkisi

  • 80386, x86 ailesinin en önemli CPU'larından biri olarak değerlendirilir
  • Teknik olarak 80386 iyi bir çipti, ancak performans açısından çığır açıcı değildi ve aynı dönemin RISC çiplerinin gerisinde kalıyordu
  • Esas nokta, modern ve hızlı MMU'su ile çoklu çalışma modlarıydı
    • 4GiB düz belleğe erişebiliyordu
    • Mevcut x86 yazılımlarıyla uyumluluğu koruyordu
    • Windows'un kademeli biçimde modernleşmesini mümkün kıldı
  • 386'nın bellek işleme yetenekleri yeterince iyi olduğundan, sonraki CPU'lar çok daha güçlü hâle gelse de yaklaşık 20 yıl boyunca bu alanda büyük bir ekleme yapılmadı
  • Linux ana dalı, ancak 2013'te i386 desteğini bıraktı
  • Ticari açıdan da 386'nın önemi büyüktü
    • Intel başlangıçta 32 bit x86 talebine inanmıyordu, ancak x86'nın gelecek olduğunu fark etti
    • Bu değişim, pazara x86'nın süreceği yönünde bir sinyal verdi
    • Başlıca klon üreticilerinin 386'yı benimsemesi, IBM'i geri plana iterek güvenilir bir açık alternatif bulunduğunu gösterdi
    • Intel, en güçlü x86 CPU'nun tek tedarikçisi olarak CPU pazarındaki hâkimiyetine giden yolda kritik bir adım attı
  • 386 tabanlı makineler kitlesel üretime girince fiyatlar hızla düştü ve MMU erişimi yaygınlaştı
    • Windows, milyonlarca insana modern bilişimi tanıttı
    • NT çekirdeği, ucuz “bej” PC'lerde bile sağlam bir işletim sisteminin çalışabileceğini gösterdi
    • Linux, 386 olmadan var olamaz denecek kadar 386 ile güçlü biçimde bağlantılıdır

1 yorum

 
GN⁺ 2023-11-06
Hacker News yorumları
  • 80386’nın nihai tasarımının Motorola 68000 ve ardından gelen m68020’den büyük ölçüde faydalandığını düşünüyorum
    Motorola tavizsiz, gerçek bir 32 bit CPU çıkarmamış olsaydı Intel’in 80286’dan sonra da bir geçici çözüm daha çıkarması muhtemeldi. 80286’nın kendisi de 8086/8088’in düzgün bir halefi olarak tasarlanmamıştı
    Gerçek 80386’da da pek çok taviz vardı. 16 baytlık komut önden getirme kuyruğu dışında hiç önbellek yoktu; m68020’de ise 256 baytlık komut önbelleği vardı. Atomik komutlar da yoktu ve LOCK bunun için pek işe yaramadığından bugün birçok OS, 80486’yı desteklese de 80386’yı desteklemiyor. 8086 uyumluluğu nedeniyle gerçek mod veya VM86 gerektiği için, yazılımların 80386’nın yeni özelliklerinden yararlanması epey zaman aldı
    Yine de önemli bir çipti ve sonrasında Intel’de aşina olduğumuz kalıpların erken işaretlerini de gösterdi. x86 ile rekabet etmeyen ya da x86’yı feda ederek başka pazarlar yaratmaya çalışan girişimler (iAPX 432, 20 yıl sonra Itanic), 80286’ya eklenen özellikler gibi aceleyle iliştirilip sonsuza kadar eski uyumluluk desteği olarak taşınmak zorunda kalan özellikler, diğer herkesin istediği özelliğe sahip olduğunda geç de olsa yetişme hali (o dönemde düz 32 bit desteği, 20 yıl sonra 64 bit desteği) gibi şeyler

    • Linus Torvalds’ın ilk Linux kernel’ını yazdığı makine 386’ydı ve Linux’un baştan itibaren 386’nın yeni özelliklerini desteklemesi, hızla öne çıkmasının nedenlerinden biriydi
    • 386’da atomik komutların olmamasının gerçekten önemli olup olmadığından emin değilim. Bildiğim kadarıyla 386’da simetrik çoklu işlem (SMP) yoktu ve tek işlemcili bir ortamda kesmeleri kapatırsanız işlemleri atomik hale getirebilirsiniz
  • O dönemde Intel büyük bir krizin içindeydi ve tüm şirket bu çipin harika çıkmasına bağlıydı
    Data General, Honeywell, CDC, AST, Tandy, Olivetti, Xerox, DEC Rainbow, AT&T Hobbit, Wang 2200, Unisys gibi kolayca yanlış yola sapabilirdi. Burada güçlü bir hayatta kalan yanlılığı var. SDS, SDC, Fairchild gibi bir zamanların devlerinin çoğu bugün neredeyse unutulmuş durumda
    Intel’in geçmişi aslında daha çok bir bellek üreticisine yakındı. Bugün de benzer şekilde zor bir konumda olduğu söylenebilir. Mobil ve tüketici elektroniği pazar payı fiilen %0; geriye kalan temel kalelerinde de NVIDIA, AMD ve ARM kaleyi yağmalar gibi bastırıyor. Umarım bu sefer de sıyrılmayı başarır

    • Andy Grove’un Intel’i bellekten mikroişlemcilere taşıması mükemmel bir stratejik karardı
      “Bir işin başarısı, kendi yıkımının tohumlarını içinde taşır. Başarı rehaveti doğurur, rehavet başarısızlığı doğurur. Yalnızca paranoyaklar hayatta kalır”
      2010’lardaki Intel yönetimi bu söze yeterince kulak vermedi
    • DEC Rainbow, insanlara özel flopi diskleri tanesi 5 dolardan aldırma işine kalkışmasaydı gayet iyi olabilirdi
      DEC’in LSI-11’i tüketiciye yönelik bir makine olarak paketlemesi gerekirdi. Yazılımı da vardı ve düzeyi çok yüksekti. H-11’im vardı; harika bir makineydi
    • NVIDIA iyi CPU yapamıyor; SoC’lerinin bile güncel seviyede olduğunu söylemek zor. Otomotiv sektörü gibi yalnızca uzun vadeli parça tedarikini önemseyen yerler ve Nintendo Switch dışında kitlesel pazarda benimsenmesi de neredeyse yok
      Switch’in hâlâ 2015 dönemi Tegra yonga setini kullanması da, Nintendo kadar büyük bir şirketin bile NVIDIA’yı zorlayıp yeni bir tasarım çıkaramamış olmasından kaynaklanıyor olabilir. ARM, herkesin kolayca satın alabileceği sunucu CPU’ları yapmıyor; var olan ürünleri de bulut şirketleri kapıyor. Mac dışında işe yarar ARM masaüstü/dizüstü CPU’su da yok. Çünkü Qualcomm o pazarı yıllarca berbat etti
      ARM, Rosetta ile rekabet edebilecek bir çözüm ortaya koymadıkça ve Qualcomm, akıllı telefon üreticilerinde işe yarasa da PC/masaüstü pazarına uymayan “zar zor çalışıyorsa piyasaya sür” zihniyetinden çıkmadıkça, o pazarda ARM’nin benimsenmesi zor görünüyor
      Sonuçta Intel’e kalan tek tehdit AMD, ama AMD’nin Intel’in hendeğini yeterince tehdit edecek fab üretim kapasitesi yok. Genel amaçlı bilişimdeki rekabet durumu çok can sıkıcı olabilir de olmayabilir de
    • Bugün Intel’in umudu ne? Dothan tarzı bir Quark türevi masaüstü CPU falan mı var?
  • 386’ya “düz 32 bit” şeklinde sonraki dönemden bir yorum giydirmeyi bırakmak gerek. Bu açık bir hedef değildi; o dönemde geleceğin yönü sayılan önemli yetenek tabanlı mimari özelliklerini benimsemeye daha yakındı.
    Unix/C/RISC/tek denetçi modeli gibi fikirlerin, güvenlik gibi alanlarda önceki 30 yılın mainframe ve mini bilgisayar OS araştırmalarını kenara itmesinden önceki bağlamdan söz ediyoruz.
    Bu yazının yeterince netleştirmediği nokta, segment register’larının artık temelde tablolardaki; taban adresi + uzunluk (sayfa ya da bayt cinsinden) alanı ve yürütme yetkisi denetimi bulunan girdiler için seçici indeksi hâline gelmiş olması. Ayrıca bu seçiciler ve GDT/LDT/IDT/TSS/çağrı kapıları/görev kapıları vb. hepsi, örneğin kullanıcı/kütüphane/sürücü/çekirdek gibi 4 aşamalı bir yetki hiyerarşisini desteklemek üzere tasarlanmıştı.
    Erişim seçicilerini alıp vererek veri yapısı boyutu sınırı gibi şeyleri zorunlu kılmak da mümkündü; bunun için FS/GS eklenerek her genel amaçlı register’ın kendi yetki maskesine sahip olabilmesi sağlandı.
    Bir an yeniden düşünürsek, pointer’lar (yetenekler, yani seçiciler) yalnızca taban adrese değil, donanımın zorunlu kıldığı sınırlara da sahip olabiliyordu; yetki modeli sayesinde strcpy() gibi bir fonksiyonun hedef tamponu ya da kendi çalışma alanı dışındaki belleğe yazması engellenebiliyordu. Dil ve OS, çağrılan fonksiyonun çağıranın stack’ine yazmasını engelleyebilir, hatta tamamen ayrı bir stack üzerinde çalışmasını bile zorunlu kılabilirdi. Bu sadece başlangıçtı.
    Neredeyse 40 yıl sonra sektör hâlâ OS’leri ve programlama dillerini düz bellek modeli ile basit kullanıcı/denetçi yetki modeli etrafında tasarlama hatasından toparlanmaya çalışıyor. 386, bugün bile pek yaygın olmayan OS özellikleri yazmak için donanım desteği sunuyordu. Örneğin CHERI’ye bakılabilir.

    • “Pointer’lar (yetenekler, yani seçiciler) yalnızca taban adrese değil, donanımın zorunlu kıldığı sınırlara da sahip olabilir” dense de LDT’de olası pointer sayısı yalnızca 8 bin, GDT’de de 8 bin. x86’nın segment modeli, yetenek gerçekleştirmek için pek uygun değil.
    • grsecurity’yi takip etmeyi bırakalı uzun zaman oldu ama segment register’ları hâlâ kullanılıyorsa şaşırmam. Örneğin PaX UDEREF gibi.
      https://forums.grsecurity.net/viewtopic.php?f=7&t=3046
      https://pax.grsecurity.net/docs/PaXTeam-H2HC12-PaX-kernel-se...
    • Segment tabanlı korumalı mod genel olarak zaten 286’da tanıtılmıştı. 386’nin yaptığı daha çok FS/GS eklemek ve segmentleri 32 bit’e çıkarmaktı.
  • 386SX’in ne kadar önemli olduğunu vurgulamak isterim. Babam PC’mi istediği için bir arkadaşından 286 klonu toplamasını istemişti; o arkadaş ise bunun yerine 386SX verdi.
    “286 ile neredeyse aynı fiyat ama aldığın şey kesinlikle 32 bit bir CPU” demişti ve haklıydı. Onunla Win 3.11 çalıştırabiliyordum. 286 fiyatına alınabilen 32 bit bir CPU olarak epey erişilebilirdi; dâhiyane bir üründü.

  • Burada 286’nın da bir miktar takdir edilmesi iyi olur. 286, önceki nesle kıyasla saat çevrimi başına komut işleme açısından çok daha iyiydi ve oldukça hafife alınmış bir yongaydı; bu da 386’ya yönelik başlıca kusurlardan birine bağlanıyor.
    Mevcut 16 bit kodu çalıştırırken 386’nın saat çevrimi başına komut işleme kapasitesi temelde 286 ile aynıydı; ilk saat hızı da 12 MHz olduğu için oldukça sönük kalıyordu. Saat hızları ciddi biçimde yükselip insanlar 32 bit özellikleri kullanmaya başlayana kadar pahalı bir DOS/286 rakibinden çok daha fazlası değildi.

  • 386 piyasaya çıktıktan kısa süre sonra, genç biriyken ilk bilgisayarımı aldım. O zaman pazarda hem 286 hem de 386 PC’ler vardı ama 386’nın ciddi bir fiyat primi bulunuyordu.
    O sırada farkı pek bilmediğim için 286 sistem aldım; birkaç yıl içinde farkı anladıktan sonra biraz daha para biriktirip 386 almadığıma çok pişman oldum. Kısa süre sonra oyuncak bir OS’in sistem bootstrap’i gibi düşük seviyeli assembly yazmaya başladım ama 32 bit korumalı modu kullanamıyordum. Üstelik bir noktadan sonra 386’ya özel oyunlar da çıkmaya başladı; ilk 486’mı alana kadar kendimi epey dışarıda kalmış hissettim.

  • Intel x86 ailesini 386’dan sonra Pentium Pro ve amd64’e kadar geliştirdi; Motorola’nın neden 68k için bunu yapmadığını merak ediyorum.
    68k’nın eskidiği ve PowerPC ile değiştirilmesi gerektiği varsayım gibi ele alınan tartışmalar gördüm ama bunlar spekülasyon gibi duruyor. Teknik bir gerekçe görmedim; 68k, 286 sonrası x86’ya kıyasla ileriye taşınması daha temiz bir mimari gibi görünüyor.

    • 68k kullanan yeterince bilgisayar satılmadığı için yonga talebi yetersizdi; bu yüzden Intel ile fiyat rekabeti yapılamıyor, büyük ölçekli Ar-Ge yatırımı da haklı çıkarılamıyordu. Intel’in PC uyumlu pazarı vardı ve bu da yongalara yönelik devasa bir talep yaratıyordu.
    • Sorun teknik değildi; Intel’in erişebildiği “para yığını” yoktu ve aynı anda müşteriler geriye dönük uyumluluk istiyordu.
      Intel de en az iki kez i860 veya Itanic’e geçmeye çalıştı ama başarısız oldu. Bu yüzden x86’yı iyileştirmek kazanan tercih hâline geldi.
      https://news.ycombinator.com/item?id=37796469
    • 68k işlemciler temelinde IDE, VESA, PCI sistemleri yapmaya yönelik ticari girişimler var mıydı derseniz, bir ölçüde vardı. VME veri yolu vardı.
      Birden fazla üretici arasında çalışacak ve 88k CPU’ya da uyacak standart tabanlı bir veri yolu oluşturma girişimiydi. Muazzam bir başarı değildi ama bir ölçüde başarılı oldu.
  • “En önemlisiydi” ifadesi kulağa biraz sonradan yapılmış bir yorum gibi geliyor. 8086/8088, IBM PC aracılığıyla tesadüfen yaygınlaşmasaydı muhtemelen 80286 bir yana, 80386 da olmazdı.
    Yine de 386 dünyayı değiştiren bir mühendislik başarısıydı. Daha adil ve hakkaniyetli bir zaman çizgisinde dünyayı 68030’un ele geçireceğini düşünüyorum ama Intel’in başardığını küçümseyemeyiz.

    • 386 için bu doğru olabilir ama 286 muhtemelen IBM PC piyasaya çıktığı sıralarda, hatta ondan önce zaten tamamlanmıştı.
  • 386, bu ailede isteğe bağlı sayfalama sanal belleği ilk destekleyen modeldi; bu da OS’in yapabileceklerinin önünü ciddi biçimde açtı. Kişisel olarak bunun 386’nın sunduğu en önemli özellik olduğunu düşünüyorum.
    İkinci PC’m SCO UNIX çalıştıran bir 386’ydı. İlk PC’m ise CP/M çalıştıran 8080 tabanlı bir Heathkit H-8’di.

  • Bob Childs’ın 286 tasarımcılarından biri olduğu ve gayriresmî olarak 286’nın 32 bit genişletme fikri üzerinde yaklaşık 6 ay kafa yorduğu kısım şaşırtıcı
    Böyle bir şey nasıl mümkün olabilir? 30 yıl çalıştım; birkaç günde bir gözle görülür bir çıktı ortaya koymam için tepeme binmeyen bir işim hiç olmadı