İşlevsel bir bilgisayar yapabilir miyiz?


12

FP'nin yaptığı gibi, sonuçta tüm programlarımız yapılandırılmıştır. Yani, onları ne kadar saf ya da işlevsel yaptığımız önemli değil - her zaman meclise çevrilirler, bu yüzden aslında davlumbazların arkasında yatan şey talimatlar, durumlar ve döngülerdir. FP'yi taklit ediyoruz.

Bir donanım noob olarak, sorum şu: neden şeyleri işlevsel bir tarzda hesaplayan bilgisayar mimarilerini kullanmıyoruz? Örneğin, bir bilgisayar "concat", "map" ve "reduce" gibi ilkel "fonksiyonel yongalardan" oluşabilir ve bir program bilgisayara istenen sonucu hesaplamak için verileri yalnızca bu yongalar arasında nasıl aktıracağını söyler , birleştirilmiş diller gibi.

saçma kroki

Bu gerçekten mantıklı değil ama ne düşündüğümü gösterebilir.


5
Bağlantıyı elden kaçırmayın, ancak bir Haskell çipi yapıldı, uzman sistemler de özel lisp donanımına sahipti. Haritaya daha yakın olabileceğinizi / donanımdaki paradigmayı azaltabileceğinizi düşünüyorum. FP'nin tek mükemmel yararı paralelliğe ölçeklenebilirliktir. Diğer tüm açılardan, fp daha düşük performans gösterir, çünkü daha yüksek bir soyutlama seviyesi nedeniyle talimatlarında daha az ince tanelidir. Metal seviyesinde performans kraldır ve matematiğin soyutlama düzeyinde bile, uygulamada her şey zorunludur. İki sıralı adım atmadan 2 * 3 + 5 hesaplayın. Her şey zorunlu
Jimmy Hoffa

3
@ JimmyHoffa'nın kapalı el haskell çip bağlantısı: Reduceron .
Dan D.

1
Ayrıca , VHDL üzerinden statik donanıma zorunlu yerel etkileri olan daha yüksek dereceli ve afin özyineleme özellikli bir Call-by-Lambda hesabı için bir derleyici olan Verity ile de ilgilenebilirsiniz .
Dan D.

5
@Dokkat: if we could make a specialized chip for Filter, for example, it would need just a single clock for a Filter operation. Pek değil, çünkü Filtre "bir işlem" değil; bir listeye isteğe bağlı bir harici işlem uygulayan daha üst düzey bir işlevdir. Sen azaltamaz o tek saat döngüsü.
Mason Wheeler

2
@Dokkat Girdi işlevi olarak aldığından daha yüksek bir sıra işlevidir. Saçma özgüllük, örneğinizi "tek bir işlemde" yapılabilecek bir şey yapan şeydir. Spesifik yüklem fonksiyonu sabittir ve bu nedenle gerçek bir filtre değildir. Rasgele bir yüklem işlevi alan bir filtre yapmak, giriş işlevinin kaç saat döngüsünün gerçekleşeceği konusunda hiçbir denetiminiz olmadığından tek bir saat döngüsüne indirgenemez.
Chewy Gumball

Yanıtlar:


11

Bilgisayarları böyle yapıyorlar. Buna FPGA deniyor . Elbette, FPGA'lar hem sıralı hem de kombinasyonel mantığı destekler, ancak önerdiğiniz gibi sadece kombinasyonel kısmı kullanmanızı engelleyen hiçbir şey yoktur.

Bununla birlikte, uygulamada, sıralı mantık (durumlu tür) çip düzeyinde bile son derece yararlıdır. Bir kere, bir problemi çözmek için gereken mantık kapılarının sayısını önemli ölçüde azaltır. Bir diğeri için, farklı yayılma gecikmeleri olan sinyallerle ilgili birçok tasarım problemini çözer.

Bu tür bir şeyle ilgileniyorsanız, FPGA'lar kontrol etmeye değer. Yeni başlayanlar için harika olan papilio adı verilen ucuz bir arduino benzeri tahta var. İnsanlar robot kontrolünden bitcoin madenciliğine kadar her şey için kullanıyorlar.


Cevabınız için teşekkürler, Wikipedia'nın bu sayfasını okuyorum - ancak FPGA, çizimimdeki gibi Fonksiyonel Programlama için uzmanlaşmış bir donanım yerine genel programlanabilir bir donanım değil mi?
MaiaVictor

1
Nasıl yapıldığını görmek istiyorsanız Google "fpga sıralama algoritması". Çektiğiniz şey, bir FPGA'nın tam olarak tasarlandığı programlanabilir bir kombinasyonel mantık devresidir.
Karl Bielefeldt

Görkemli, araştırmamı yapacağım!
MaiaVictor

Eğer hiç sıralama yoksa o zaman gerçekten analog elektronik
jk.

2
@jk Bu gerçekten doğru değil; örneğin, dijital ve (saf) kombinasyonel olan basit bir CPU'daki aritemik-mantıksal birimi ele alalım.
m3th0dman

8

Essentiall, evet, analog bilgisayarlar bu şekilde çalıştı: parametreleri değiştiriyordunuz ve bir elektrik akımı buna göre değiştirildi. Onları 1950'lerde "daha hızlı" yapan şey buydu - eski dijital devler gibi ayrı "devletlerin" yavaş yaratılması ve değiştirilmesiyle ilgilenmediniz.

Ve tartışmalı olarak, kuantum bilgisayarlar da bu şekilde çalışabilir: eğer bazı kuantum olaylarının durumu başkalarının durumuna bağlıysa, o zaman bazı "başlangıç" durumlarını değiştirmek aynı anda aşağıdaki durumları değiştirir - aralarında "durum" olmaz.


3
Kuantum bilgisayarlardan bahsettiğim için +1, OP'nin öne sürdüğü şeyleri yapma yeteneğinin, aslında gerçekleştiklerinde bunların ana yararı olacağını düşünüyorum
Jimmy Hoffa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.