IBM 801 - IBM 801

801 deneysel oldu merkezi işlem birimi tarafından geliştirilen (CPU) tasarım IBM 1970'lerde. Tüm hesaplamalar için işlemci kayıtlarına dayanan ve CISC tasarımlarında bulunan birçok değişken adresleme modunu ortadan kaldıran ilk modern RISC tasarımı olarak kabul edilir . Başlangıçta bir telefon anahtarı için işlemci olarak geliştirilmiş , daha sonra bir mini bilgisayarın temeli ve ana bilgisayar hatları için bir dizi ürün olarak kullanılmıştır . İlk tasarım 24 bitlik bir işlemciydi; bunun yerini kısa süre sonra aynı kavramların 32-bit uygulamaları aldı ve orijinal 24-bit 801 sadece 1980'lerin başında kullanıldı.

801, bilgisayar pazarında son derece etkiliydi. Devasa miktarda performans verisiyle donanmış olan IBM, basit tasarımın en güçlü klasik CPU tasarımlarından bile kolayca daha iyi performans gösterebildiğini ve aynı zamanda yoğun şekilde optimize edilmiş CISC yönergelerinden yalnızca marjinal olarak daha büyük olan makine kodu ürettiğini gösterebildi . Aynı teknikleri System/370 gibi mevcut işlemcilere bile uygulamak , bu sistemlerin performansını da genellikle iki katına çıkardı. Bu, RISC kavramının değerini gösterdi ve IBM'in gelecekteki tüm sistemleri, 801 projesi sırasında geliştirilen ilkelere dayanıyordu.

801 üzerinde yaptığı çalışmalarla, John Cocke verildi Turing Ödülü , 1987 yılında, Ulusal Teknoloji Madalyası 1991 yılında ve Ulusal Bilim Madalyası 1994 yılında.

Tarih

1974'te IBM, saatte bir milyon çağrıyı veya saniyede yaklaşık 300 çağrıyı idare edecek bir telefon anahtarı inşa etme olasılığını incelemeye başladı . Her çağrının tamamlanması için 20.000 talimat gerektireceğini ve bir zamanlama ek yükü ve diğer hususlar eklendiğinde, böyle bir makinenin yaklaşık 12 MIPS performans gerektirdiğini hesapladılar. Bu, performansta önemli bir ilerleme gerektirecektir; 1972'nin sonlarına ait IBM System/370 Model 168 , şu anki en iyi makineleri, yaklaşık 3 MIPS sundu.

Thomas J. Watson Araştırma Merkezi'nde bu proje üzerinde çalışan John Cocke'un da aralarında bulunduğu grup , bu amaç için bir işlemci tasarladı. İstenen performansa ulaşmak için, böyle bir makinenin ne tür işlemlere ihtiyaç duyduğunu düşündüler ve uygun olmayanları kaldırdılar. Bu , örneğin bu uygulamada gerekmeyen bir kayan nokta biriminin kaldırılmasına yol açtı . Daha da önemlisi, ana bellekteki veriler üzerinde çalışan talimatların çoğunu kaldırdılar ve yalnızca dahili işlemci kayıtlarında çalışan talimatları bıraktılar , çünkü bunların kullanımı çok daha hızlıydı ve bir telefon anahtarındaki basit kod kullanmak için yazılabilirdi. sadece bu tür talimatlar. Bu çalışmanın sonucu, gerekli performansa sahip basitleştirilmiş bir işlemci için kavramsal bir tasarımdı.

Telefon anahtarı projesi 1975'te iptal edildi, ancak ekip konsept üzerinde önemli ilerleme kaydetti ve Ekim ayında IBM, genel amaçlı bir tasarım olarak sürdürmeye karar verdi. Eklenecek belirgin bir proje olmadığı için ekip, çalıştıkları binadan sonra "801" adını vermeye karar verdi. Genel amaçlı rol için ekip, tipik bir mini bilgisayarda çalıştırılacak gerçek dünya programlarını düşünmeye başladı. . IBM, makinelerinde gerçek dünya iş yüklerinin performansına ilişkin çok büyük miktarda istatistiksel veri toplamıştı ve bu veriler, tipik bir programdaki zamanın yarısından fazlasının yalnızca beş yönergeyi gerçekleştirmek için harcandığını gösterdi: bellekten yük değeri, belleğe depolama değeri, şube , sabit noktalı sayıları karşılaştırın ve sabit noktalı sayıları ekleyin. Bu, aynı basitleştirilmiş işlemci tasarımının, özel amaçlı bir anahtar olarak genel amaçlı bir mini bilgisayar için de işe yarayacağını ileri sürdü.

Bu sonuç, mikrokod kullanma konseptine dayanan çağdaş işlemci tasarımı karşısında uçtu . IBM, System/360 serisinin bir parçası olarak bu tekniği yaygın olarak kullanan ilk kişiler arasındaydı . 360'lar ve 370'ler, hepsi aynı makine dili kodunu çalıştıran çeşitli performans seviyelerinde geldi . Üst düzey makinelerde, bu talimatların çoğu, bir kayan nokta birimi gibi doğrudan donanımda uygulandı, düşük kaliteli makineler ise bu talimatları bir dizi başka talimat kullanarak simüle edebilirdi. Bu, tek bir uygulama ikili arabiriminin tüm hat boyunca çalışmasına izin verdi ve müşterilerin daha fazla performansa ihtiyaç duyulursa başka hiçbir değişiklik yapmadan daha hızlı bir makineye geçebileceklerinden emin olmalarını sağladı.

Mikrokod, basit bir işlemcinin, tasarımcılar tarafından çok çeşitli adresleme modlarını uygulamak için kullanılmış olan birçok talimat sunmasına izin verdi . Örneğin, bir komutun ADDbir düzine versiyonu olabilir, biri dahili kayıtlara iki sayı ekleyen, diğeri bellekteki bir değere bir kayıt ekleyen, diğeri bellekten iki değer ekleyen, vb. Bu, programcının tam olarak seçmesine izin verdi. belirli bir görev için ihtiyaç duydukları varyasyon. İşlemci bu talimatı okur ve onu bir dizi dahili talimata bölmek için mikro kodu kullanır. Örneğin, belleğe iki sayı eklemek, bu iki sayıyı yazmaçlara yükleyerek, ekleyerek ve sonra tekrar kaydederek uygulanabilir.

Ekip, bu konseptin bir yan etkisini fark etti; Belirli bir talimatın olası sürümlerinin bolluğu ile karşı karşıya kaldıklarında, derleyici yazarları neredeyse her zaman tek bir sürüm seçerdi. Bu, neredeyse her zaman düşük kaliteli makinelerde donanımda uygulanan şeydi. Bu, derleyici tarafından oluşturulan makine kodunun tüm dizilimde olabildiğince hızlı çalışmasını sağladı. Talimatların diğer versiyonlarını kullanmak, donanımda talimatın diğer versiyonlarını uygulayan bir makinede daha hızlı çalışabilirken, sürekli değişen bir makine listesinden hangisini seçeceğini bilmenin karmaşıklığı bunu son derece çekici kıldı ve derleyici yazarları bunları büyük ölçüde görmezden geldi. olasılıklar.

Sonuç olarak, talimat setinde bulunan talimatların çoğu, derlenmiş programlarda hiçbir zaman kullanılmamıştır. Ve ekibin 801 projesinin anahtar gerçekleştirmesini yaptığı yer burasıydı:

Bir bilgisayar ve kullanıcıları arasında mikrokod uygulamak, en sık yürütülen talimatların gerçekleştirilmesinde pahalı bir ek yük getirir.

Mikrokod, gerçekleştirilmeden önce talimatı incelemek için sıfırdan farklı bir zaman alır. Mikro kodun kaldırıldığı aynı temel işlemci, bu ek yükü ortadan kaldıracak ve bu talimatları daha hızlı çalıştıracaktır. Mikrokod esasen belirli bir donanım uygulamasına adanmış küçük alt rutinler çalıştırdığından , sonuçta derleyicinin yaptığı aynı temel görevi yerine getiriyordu, makineye özel talimatlar dizisi olarak daha yüksek seviyeli talimatlar uyguluyordu. Basitçe mikro kodu kaldırmak ve bunu derleyiciye uygulamak daha hızlı bir makineyle sonuçlanabilir.

Bir endişe, böyle bir makine için yazılan programların daha fazla bellekte yer kaplamasıydı; 370'de tek bir komutla gerçekleştirilebilecek bazı görevlerin 801'de birden fazla talimat olarak ifade edilmesi gerekir. Örneğin, bellekten iki sayı eklemek iki kayıt için yükleme talimatı gerektirir, bir kayıttan kayda ekleme ve ardından bir mağazadan belleğe. Bu, daha önce kodlarını çözmek için harcadığından daha fazla zaman harcamak zorunda kalırsa, bellekten talimatları okumak için daha fazla zaman harcamak zorunda kalırsa, bu potansiyel olarak sistemi genel olarak yavaşlatabilir. Tasarım üzerinde çalışmaya devam edip derleyicilerini geliştirdikçe, toplam program uzunluğunun azalmaya devam ettiğini ve sonunda kabaca 370 için yazılanlarla aynı uzunluğa geldiğini gördüler.

Başlangıçta önerilen mimari, on altı adet 24 bitlik kaydı olan ve sanal belleği olmayan bir makineydi . Talimatta iki işlenen formatı kullandı, böylece talimatlar genellikle A = A + Büç işlenen formatının aksine , şeklindeydi A = B + C. Ortaya çıkan CPU, 1980 yazında faaliyete geçti ve Motorola MECL-10K ayrı bileşen teknolojisi kullanılarak büyük kablolu özel kartlarda uygulandı. CPU, 66 ns döngüde (yaklaşık 15.15 MHz) saat hızına sahipti ve yaklaşık 15 MIPS gibi hızlı bir hızda hesaplayabiliyordu  .

801 mimarisi, S/370 anabilgisayarları ( IBM 3090 gibi ) için kanal denetleyicileri , çeşitli ağ aygıtları ve nihayetinde IBM 9370 anabilgisayar çekirdeğinin kendisi de dahil olmak üzere çeşitli IBM aygıtlarında kullanıldı . 801 mimarisinin orijinal versiyonu , IBM RT PC iş istasyonu bilgisayarında kullanılan IBM ROMP mikroişlemcisinin mimarisinin ve IBM Research'ün çeşitli deneysel bilgisayarlarının temelini oluşturdu .

Daha sonraki değişiklikler

Başlangıçta sınırlı işlevli bir sistem için tasarlanmış olan 801 tasarımı, daha büyük makinelerde görülen bir dizi özellikten yoksundu. Bunlar arasında göze çarpan , denetleyici rolü için gerekli olmayan ve buna ihtiyaç duyan erken 801 sistemlerinde yazılımda uygulanan sanal bellek için donanım desteğinin olmamasıydı . Daha yaygın kullanım için donanım desteği olmazsa olmaz bir özellikti. Ek olarak, 1980'lerde bilgisayar dünyası bir bütün olarak 32 bit sistemlere doğru ilerliyordu ve 801 ile aynı şeyi yapma arzusu vardı.

32 bit biçime geçmenin bir başka önemli avantajı daha vardı. Pratikte, iki işlenen biçiminin tipik matematik kodunda kullanılmasının zor olduğu bulundu. İdeal olarak, her iki giriş işleneni, sonraki işlemlerde yeniden kullanılabilecekleri kayıtlarda kalır, ancak işlemin çıktısı bunlardan birinin üzerine yazdığı için, genellikle değerlerden birinin bellekten yeniden yüklenmesi gerekiyordu. . 32 bitlik bir biçime geçilerek, talimat sözcüklerindeki fazladan bitler, bu tür işlemlerin çıktısının ayrı bir kayıt defterine yönlendirilebilmesi için ek bir kaydın belirtilmesine izin verdi. Daha büyük talimat kelimesi ayrıca, 801 kodunun incelenmesiyle açıkça önerilen bir değişiklik olan kayıt sayısının on altıdan otuz ikiye çıkarılmasına izin verdi. Komut kelimelerinin 24 bitten 32 bit'e genişletilmesine rağmen, bu iki değişiklikten dolayı önlenen yükler ve tasarruflar nedeniyle programlar buna karşılık gelen %33 oranında büyümedi.

Diğer istenen eklemeler, tek bir bellek sözcüğünde birkaç ASCII karakteriyle "paketlenmiş" biçimde kodlanmış dize verileriyle çalışma talimatlarını ve dört bitlik ondalık sayıları taşıyabilen bir toplayıcı dahil olmak üzere ikili kodlu ondalık sayıyla çalışmaya yönelik eklemeleri içerir. .

801'in yeni sürümü 370'de bir simülatör olarak çalıştırıldığında, ekip, 801'e derlenen ve simülatörde çalıştırılan kodun , genellikle doğrudan 370 makine koduna derlenen aynı kaynak kodundan daha hızlı çalıştığını görünce şaşırdı . 370'in PL/1 derleyicisi. Deneysel "PL.8" dillerini 370'e geri taşıdıklarında ve bunu kullanarak uygulamaları derlediklerinde, aynı zamanda mevcut PL/1 kodundan üç kat daha hızlı çalıştılar. Bunun nedeni, derleyicinin kodun dahili kayıtlara nasıl derleneceği konusunda RISC benzeri kararlar vermesi ve böylece mümkün olduğu kadar çok bellek erişimini optimize etmesiydi. Bunlar 370'de 801 kadar pahalıydı, ancak bu maliyet normalde tek bir CISC kodu satırının basitliği ile gizleniyordu. PL.8 derleyicisi, yüklerden ve tasarruflardan kaçınma konusunda çok daha agresifti ve bu nedenle bir CISC işlemcisinde bile daha yüksek performans sağladı.

Amerika Projesi

1980'lerin başında, 801'den öğrenilen dersler yeni "Amerika" tasarımına geri konuldu. Bu, talimatları getiren ve çözen bir talimat işlemcisi, talimat işlemcisiyle görevi paylaşan sabit noktalı bir işlemci ve bunu gerektiren sistemler için bir kayan nokta işlemcisi içeren üç çipli bir işlemci setiydi. 801 ekibi tarafından tasarlanan nihai tasarım, IBM'in Austin ofisine gönderildi ve bu tasarım onu IBM RS/6000 sistemine dönüştürdü. 25 MHz'de çalışan RS/6000, çağının en hızlı makinelerinden biriydi. Genel testlerde diğer RISC makinelerinden iki ila üç kat daha iyi performans gösterdi ve eski CISC sistemlerinden önemsiz derecede daha iyi performans gösterdi.

RS/6000'den sonra şirket, dikkatini 801 konseptlerinin çeşitli ölçeklerde verimli bir şekilde üretilebilen bir versiyonuna çevirdi. Sonuç, IBM POWER komut seti mimarisi ve PowerPC yan ürünüydü. 801 üzerinde yaptığı çalışmalarla, John Cocke verildi Turing Ödülü , 1987 yılında, Ulusal Teknoloji Madalyası 1991 yılında ve Ulusal Bilim Madalyası 1994 yılında.

Michael J. Flynn , IBM 801 tasarımını ilk indirgenmiş komut seti bilgisayar (RISC) sistemi olarak görüyor .

Referanslar

alıntılar

bibliyografya

daha fazla okuma

  • "Bilgisayar Mimarisini Değiştirmek Verimi Artırmanın Yoludur, IBM Araştırmacılarını Öneriyor". Electronics V. 49, N. 25 (23 Aralık 1976), s. 30–31.
  • V. McLellan: "IBM Mini Bir Radikal Ayrılış". Datamation V. 25, N. 11 (Ekim 1979), s. 53–55.
  • Dewar, Robert BK; Smosna, Matta (1990). Mikroişlemciler: Bir Programcının Görüşü . McGraw-Hill. s. 258–264.
  • Tabak, Daniel (1987). RISC Mimarisi . Araştırma Çalışmaları Basın. s. 69-72.

Dış bağlantılar