Donanım / yazılım arayüzü ve işletim sistemleri hakkında yeni başlayanlar için eğitim almak, çoğu zaman bazı donanım parçalarını yazılımla değiştirmenin daha iyi olup olmadığı konusunu gündeme getirmiştir. Bağlantıyı kuramıyorum.
Donanım / yazılım arayüzü ve işletim sistemleri hakkında yeni başlayanlar için eğitim almak, çoğu zaman bazı donanım parçalarını yazılımla değiştirmenin daha iyi olup olmadığı konusunu gündeme getirmiştir. Bağlantıyı kuramıyorum.
Yanıtlar:
Bence diğer cevapların eksik olduğu temel bağlantı şudur:
Genel amaçlı bir bilgisayar (örneğin bir CPU) göz önüne alındığında, bir kişi onu tanımladığımız hemen hemen her hesaplamayı yapacak şekilde programlayabilir. Bununla birlikte, özel donanım daha iyi performans gösterebilir veya herhangi bir değer sağlayamayabilir.
(bu cevap masaüstü işlemeye odaklanır ve bu alandan örnekler kullanır)
1990'lı yılların ortalarında PC oyunlarını hatırlayacak kadar büyükseniz, muhtemelen Quake gibi FPS oyunlarını hatırlarsınız . İşlemcinin grafikleri oluşturmak için gerekli hesaplamaları yaptığı anlamına gelen “yazılım oluşturma” başlamıştır. Bu arada, işlemci giriş işlemesi, ses işlemesi, AI işlemesi vb. İşlemleri de yapmak zorunda kaldı. Ek olarak, grafik işleme bir ana işlem CPU'suna (o zaman veya şimdi) uygun değildir. Modern bir high-end işlemciden bile çok daha fazla çekirdek gerektiren, oldukça paralel bir görev olma eğilimindedir (8).
Grafik işlemeyi yazılımdan donanıma taşıdık : 3dfx Voodoo ve Nvidia TNT'ye (şimdi GeForce ) girin. Bunlar, işlemciyi işlemciden GPU'ya yükleyen özel grafik kartlarıydı. Bu sadece iş yükünü yaymakla kalmadı, aynı miktarda iş yapmak için daha fazla bilgi işlem kaynağı sağladı, grafik kartları da 3B grafikleri CPU'nun yapabileceğinden daha hızlı ve daha fazla özelliğe sahip olacak özel bir donanıma sahipti.
Modern çağa hızlı ileri ve masaüstünde CPU olmayan grafikler gerekir . İşletim sistemi bile bir GPU olmadan çalışamaz. İşlemcilerin şimdi GPU'ları entegre etmeleri çok önemlidir. 1
DVD yepyeni olduğunda, masaüstü bilgisayarınıza bir DVD sürücüsü takabilirsiniz. Ancak, günün işlemcileri, DVD video ve ses akışlarını kekemelik olmadan çözmek için yeterince güçlü değildi. İlk önce, kod çözme işlemini gerçekleştirmek için özel bir PCI kartı gerekiyordu. Bu, özellikle DVD formatını ve başka bir şeyi çözmek için özel olarak geliştirilmiş bir donanımdı. 3D grafiklerde olduğu gibi, sadece daha fazla bilgi işlem kaynağı sağlamakla kalmadı, aynı zamanda DVD oynatmayı sorunsuz hale getirmek için özel olarak tasarlandı.
CPU'lar çok daha güçlendikçe, DVD'leri "genel amaçlı bir bilgisayarda" anlamına gelen "yazılımda" çözmek mümkün hale geldi. Daha az verimli bir işlemciyle bile DVD oynatımını kullanıcıların beklentilerine göre yapmak için yeterli ham hıza ve boru hattı optimizasyonuna sahipti.
Biz şimdi güçlü olarak kez CPU'lar yüzlerce hatta binlerce var 2 DVD'ler tanıtıldı biz vardı. Blu-ray ortaya çıktığında, hiçbir zaman özel bir donanıma ihtiyacımız olmadı, çünkü genel amaçlı donanım, görevi yerine getirmek için yeterince güçlüydü.
Modern Intel CPU'ları H.264 kodlama ve kod çözme için özel talimatlara sahiptir . Bu, genel amaçlı CPU'ların hepsi aynı çipte özel işlevler kazandığı bir eğilimin parçası. İşlemcilerde benzer devreler bulunduğundan H.264'ü DVD'lerin başında olduğu gibi etkin bir şekilde çözmek için ayrı bir PCI Express anakartına ihtiyacımız yok.
1 GPU, özellikle grafik hesaplamaları gerçekleştirmek için tasarlanmış bir işlemciyi ifade eder. Daha eski 2D grafik kartları GPU'lar değildi : sadece DAC'lerin monitörle konuşması için çerçevelendiler. Aradaki fark, GPU'ların belirli hesaplama türlerinde üstün olan ve zaman geçtikçe şu anda aslında programlanabilir olan özel işlemciler içermesidir (gölgelendiriciler). Grafik donanımı her zaman bir çerçevedeki veriyi bir kablodan (VGA, DVI, HDMI, DisplayPort) çıkarıp bir monitör tarafından anlaşılabilecek bir formata dönüştürmek için gereken özel devreyi içermiştir. Bu, hesaplamaların özel donanıma boşaltılmasının tartışılması ile ilgili değildir .
2 DVD-Video, Pentium 2'nin yeni piyasaya sürüldüğü bir zamanda 1997 yılında piyasaya sürüldü. CPU'ların gücü hızla arttığı bir zamandı: DVD kod çözücülü yeni bir P2 bilgisayarı ya da biraz daha eski bir P1'e takmak bir tane düşünebilirdi. Bunu Wikipedia'nın MIPS listesini kullanarak modern bir nesil 6 Core i7 ile karşılaştırın ve modern bir CPU 590 ile 1.690 kat daha hızlıdır. Bu, kısmen saat hızına bağlı olarak, aynı zamanda standart olarak çoklu çekirdeğe geçmenin yanı sıra, saat başına tik başına çekirdek başına çok daha fazla iş yapan modern CPU'ların taşınmasından kaynaklanıyor. Ayrıca, teknoloji ilerledikçe, Intel'in (masaüstüne ve x86 sunucu pazarına hakim olan), masaüstü kullanıcılarının yapmak istediği işlemleri hızlandırmaya yardımcı olacak özel talimatlar (örneğin video kod çözme) eklemesi de geçerlidir.
Yazılım tanımlı radyo: Hiç kimsenin bahsetmediğine, en göze batan örneklerden birinin bahsettiğine şaşırdım.
Bugünün akıllı telefonunu 50 yıl içinde geri aldıysanız ve 1960'ların ortasından itibaren yetkin bir mühendise göstermiş olsaydı, çoğunu anlayabilecekti. Bir süper bilgisayarın cebinize sığacak bir şeye indirgenebileceğini mi? Kontrol. Paketteki ultra yüksek kaliteli renkli televizyon eşdeğeri olabilir mi? Kontrol. O kadar hızlı olduğu, dönemin bilgisayarlarından çok daha fazla depolama alanı vb. Olduğu? Kontrol. Bu yazılım, bu tür karmaşık işlevleri yerine getirebilecek şekilde yazıldı mı? Kontrol.
Ancak bu mühendisin, bu paketin bir dizi son derece verimli verici ve hassas alıcılar içerdiğini söyleyin: aynı anda birden fazla kanalda iletebilen ve alan, mil ötedeki bir altyapı kulesi ile iletişim kuran dijital bir yayılı spektrum alıcı-verici. ; yüksek hızlı veriyi binanın herhangi bir yerinde bir baz istasyonuyla ileten başka bir dijital alıcı verici; düşük güçlü giyilebilir cihazlarla iletişim kuran bir başka dijital alıcı-verici; ve orta yörüngede bir uydudan zayıf bir sinyal alan başka bir alıcı ... sana yalancı derdi.
Sana yalancı diyecekti, çünkü böyle yüksek hassasiyete sahip alıcıların, komşu istasyonları filtreleyen ve ilgi sinyalini seçen çok sayıda ayarlanmış devre olmadan yapılamayacağını biliyor. Ve bu tür devrelerin kapasitörler ve indüktörler gibi teknolojiden ziyade fizik tarafından daha fazla tanımlanmış boyutlara sahip parçalar gerektirdiğini.
Daha sonra modern bir radyoda çoğunun yazılımda yapıldığını açıklamanız gerekir. Antenden gelen sinyal ara frekansa dönüştürüldükten ve biraz yükseltildikten sonra analog-dijital dönüştürücü tarafından örneklenir; ve sonraki işlemler bir dijital sinyal işlemcisinde gerçekleşir. Tüm bu ayarlamalar, eski okul high-end bir radyoda tonlarca donanım gerektirmek için kullanılan bu filtreleme, matematiksel denklemler şeklinde tanımlanabilir; ve eğer bu yapılabilirse, bu denklemler DSP tarafından gerçek zamanlı olarak gerçekleştirilebilir.
Bu bence donanım yerine en çok göze çarpan yazılımlardan biri. Sonuç olarak, 1960'larda yetkin bir mühendis için bile sihir numarasına benzeyen ceplerimizde akıllı telefonlar taşıyoruz.
Bununla karşılaştırıldığında, günümüzde garaj kapısı açıcı, elektronik banyo skalası veya TV uzaktan kumandasının basit mantığı, özel donanım yerine genel amaçlı bir mikrodenetleyici ve yazılım kullanılarak gerçekleştirilmekte olduğu fikri oldukça önemsiz görünüyor (ve kesinlikle çok fazla olurdu. varsayımsal 1960'lı mühendisimiz için yazılım tanımlı radyodan daha anlaşılır.)
Bu devreyi göz önünde bulundurun:
Bu bir Flip Flop, yani Bistable Multivibrator. Bu kodla değiştirilebilir:
static bool toggle;
if (toggle == true)
{
lblTop.BackColor = Color.Black;
lblBottom.back Color = Color.Red;
}
else
{
lblTop.BackColor = Color.Red;
lblBottom.BackColor = Color.Black;
}
toggle = !toggle;
Kulağa tam olarak neye benzediği anlamına geliyor.
Özellikle ünlü bir örnek, Apple II için Steve Wozniak tarafından tasarlanan Disk II Sürücüsü :
Baş yenilik, rakipler donanıma güvenirken yazılımı kullanarak denetleyiciyi kompakt hale getirmekti. O zaman Apple'da bir elektronik teknisyeni olan Bill Fernandez'in hatırladığı gibi, "[Wozniak's] tasarımının [en] avantajı, normal 60 ila 70 yerine altı fiş kullanmasıydı
Muhtemelen aşina olduğunuz başka bir örnek: Emülatörler. Tamamen yazılımdaki tüm donanım setlerini (ve yazılımı) değiştirirler. İşlemciler, çeşitli kontrol yongaları, hatta depolama aygıtları.
Artık tüm donanımı ortadan kaldıramazsınız, sonunda yazılımı çalıştırmak için bir şeye ihtiyacınız vardır . Ancak genel olarak, donanımda uygulayabileceğiniz herhangi bir mantık görevi de yazılımda da uygulanabilir (performans aynı olmayabilir, temel donanıma ve uygulamaya bağlı olarak daha yavaş, daha hızlı veya farklı durumlarda olabilir).
Bunun doğru olduğu bir başka alan sentezleyicilerdir.
İlk sentezleyiciler, doğrudan dalga formları üreten daha sonra devreler (filtreler, amplifikatörler, vb.) İle değiştirilen % 100 analog donanımdı . Sesi dijital olarak sentezlemek mümkündü, ancak ortalama bir insanın karşılayamayacağı bilgisayar kaynaklarına ihtiyaç duyuyordu (gerçek bir ana bilgisayar ve özel dijital-analog dönüştürücü donanımı).
Talaş üretimi arttıkça, sentezleyiciler saf analogdan dijital sinyaller tarafından kontrol edilen, ancak yine de analog sinyaller üreten sentezleyici yongalara ve daha sonra saf dijital senteze (örnek oynatma, FM sentezi , gerçek katkı sentezi vb.) Geçtiler.
Bugün, programcıların klasik analog sentezleyicilerin bilgisayar versiyonlarını, orijinal devrelerin davranışını gerçek zamanlı olarak simüle ederek tam olarak çoğaltan bilgisayar versiyonları oluşturmalarına izin verecek kadar ucuz ve yeterince hızlı işlemciler - aslında, telefonlar ve tabletler artık yeterince hızlı çalışabiliyor bu yeniden yaratımları yürütün; Korg IMS-20 bir örnektir.
Hem klasik sentezleyiciler hem de yenileri, Ableton Live, Logic veya Cubase gibi dijital ses programları için VST veya AU eklentileri olarak mevcuttur ve bunlar, başka türlü kullanabilecekleri alan veya paraya sahip olmayan kişilere sentezleyicilere erişim sağlar. onlar.
Düzenleme: Bu noktada , gerçek zamanlı olarak analog modüler sentezi simüle eden VCVRack'ten de bahsetmeliyim . Birkaç saatlik müzik için çok saatlik oluşturma sürelerinden bir adım öne çıkın.
>:*3
.
Eski zamanlarda, kesim oldukça açıktı. Hızlı uygulama gerektiren çoğu şeyin donanımda uygulanması gerekiyordu. Örneğin, bir frekans üreten bir multivibratör alın. Çok uzun zaman önce (sabit) bir frekans oluşturmak için birkaç transistör, kapasitör ve nihayetinde bir kuvars gerekliydi. Şimdi sadece birkaç kuruşa mal olan ucuz mikro kontrolörler var. Çok hızlı olduklarından, bir multivibratör oluşturmak için bunları kolayca kullanabilirsiniz. Dahası, yazılımları kullanarak, eski zamanlarda farklı donanımları lehimlemek için ihtiyaç duyduğunuz yerde hangi frekansı oluşturacağınızı kolayca kontrol edebilirsiniz. Yine de, kesin (ama şimdi oldukça yüksek) bir frekanstan geçmek, hala saf donanıma ihtiyacınız olacaktır. Görüyorsunuz, ikisi arasında bir çizgi var, ancak yazılımla çözebileceğiniz kısım büyüyor (katlanarak).
Düzenleme Aslında “Yazılım donanımı değiştirebilir” gerçekten doğru değil. Donanım o kadar güçlü bir hale geldi ki, donanımı taklit eden yazılımı çalıştırmak için kullanabilirsiniz. Bu yüzden birkaç basit fakat statik olarak lehimlenmiş transistör yerine, yazılımı anlayan milyonlarca transistör kullanırsınız. Bu nedenle, bunun yerine "Donanım artık yazılımı anlayabilir" terimi olmalıdır.
Oyun salonu Tankı (yaklaşık 1976) ve ev konsolu oyunu Combat (1977) arasında yapılan bir karşılaştırma, yazılımın 40 yıl önce bile donanımın yerini alabileceğinin güzel bir örneğini verir.
Oyun salonu Tank (yaklaşık 1976), iki oyuncunun tankların etrafında dolaşmasına ve birbirlerine ateş etmesine izin verdi. Herhangi bir işlemciyi içermiyordu; bunun yerine elektron ışınının, tankların ve atışların, ayrıca oyuncunun puanlarının, dönme açılarının, geçen zamanın yatay ve dikey konumlarını takip etmek için donanım sayaçlarına sahipti. Skorlar, oyuncuların tank şekilleri ve arka planla ilgili bitmap verilerini çıktısını almak için kablolu mantık vardı.
Atari 2600 Video Bilgisayar Sistemi (1977 dolaylarında bir ev oyun konsolu), iki bitmap nesnesinin ve dört değişken genişlikte puls üretecinin yatay (fakat dikey değil!) Konumlarını takip etmek, 20 bit genişliğinde düşük tutmak ve saatlemek için donanım içeriyordu. Çözünürlüklü oyun alanı grafik desen yanı sıra iki yüksek çözünürlüklü 8 bit desen, oyuncular için mandal renkleri, arka plan ve oyun alanı ve çeşitli nesneler arasında çarpışmalar algılar. Aynı zamanda genel amaçlı bir programlanabilir zamanlayıcı içermekteydi, ancak donanım yukarıdakilerden daha azdı. Yine de, donanım oyun tankından çok daha basit olmasına rağmen, 2K ROM kartuşu Combat 2600'ün aynı temel oyunu oynamasına izin veriyor, ancak diğer birçok özelliğe sahip (çeşitli araçlar ve arka planlar, zıplayan atışlar, vs.). arcade makinesinin çoğunun yerini alabilir ' yazılımı olan donanım. İlginçtir ki, Atari 2600 muhtemelen ticari olarak satılan herhangi bir mikroişlemci tabanlı ev video oyun sisteminin ikinci en basit donanım platformu olsa da, doğru programlandığında birçok yerde çemberler çalıştırabilen yazılımların yerine donanımın değiştirilmesini kolaylaştıracak şekilde tasarlanmıştır. rakipleri.
"Yazılım donanımı değiştirebilir" ifadesi, çok açık avantajlar olmadıkça, donanımla ilgili sorunları denememek ve çözmek için bir uyarıdır. Yazılım geliştirmek için 10x-50x daha ucuzdur ve donanım başına bir birim başına neredeyse sonsuz ucuza üretilir. X'i donanımda yapmak, X yazılımda gerçekten verimli bir şekilde yapılamadığı sürece kazanılmış bir çözüm olmaz.
Nüans iyi bir şekilde ele alındı, ancak OP için tökezleyen bloğun mümkün olduğunu düşünüyorum, bunun donanımla yazılımı değiştirmesinin mümkün olmadığıdır. 'Donanım' her zaman 'yazılım' çözümünden önemli ölçüde daha az 'donanım' içerir.
Fark, bir işlem / algoritma / hesaplama mantığının donanım ve yazılım arasında hareket ettirilebilmesidir. Pek çok örnek verildi, bu yüzden detaylandırmayacağım.
Sanal belleğe sahip ilk bilgisayarlarda, yeni bir sayfa girişi yüklemek için bir TLB özeti üzerine bir görev değişikliği yapmanız gerekiyordu. Bir işletim sistemi yazılımı doğru işlemi bulur ve sayfa tablolarında dolaşarak doğru girişi bulur ve TLB'ye geri yazar. Devam etmek için orijinal işleme geri dönmeden önce.
Artık çoğu CPU, işlemi yapmak, sayfa tablosu okumak, sayfa tablolarını yürümek ve TLB'yi güncellemek için donanım kullanıyor.
Her iki yöntemin de sayfa hatalarını işlemek için yazılım kullanması gerekir, ancak TLB'nin sayfa sayfa hatalarından çok daha fazla özlediği için donanım yürüyüşü yine de iyi performans gösterir.
Genel olarak, tekrar tekrar ele almanız gereken basit bir prosedür varsa, bir donanım değişimi bulacaksınız. Karmaşık bir kontrol akışına sahip karmaşık bir donanım çözümünüz varsa, yazılımı kullanarak donanımı basitleştirebilirsiniz.
Yazılımın donanımı değiştirebileceği birçok durum vardır ve bunun tersi de geçerlidir.
Bunun klasik bir örneği matematik arama tablodur. Sonuçları her seferinde genel ifadelere göre hesaplamak yerine, matematik işlemcinizde dahili olarak saklanır ve gerektiğinde basitçe ifade edilir.
Çoğu muhtemelen zaten ses filtrelerine ve pedal veya amplifikatörler gibi gerçek aletleri ve cihazları taklit edebilecek yazılımlara aşinadır.
Fiziksel eşdeğerden daha hızlı ve / veya daha ucuzsa, hemen hemen oluşturulabilecek herhangi bir donanım kullanılacaktır.
Muhasebede, faturanın basılı bir kopyası (örneğin) artık elektronik olarak gönderilebilir ve yazılım bu tür evrakların alınmasını ve işlenmesini gittikçe daha fazla işlemeye başlamaya başlar. Yazılım tarafından değiştirilen mükemmel bir donanım örneğidir.