Chúng ta có thể xây dựng một máy tính chức năng?


12

Giống như FP đã làm, cuối cùng, tất cả các chương trình của chúng tôi đều được cấu trúc. Đó là, không quan trọng chúng ta tạo ra chúng thuần túy hay chức năng như thế nào - chúng luôn được dịch sang lắp ráp, vì vậy những gì thực sự chạy phía sau mũ trùm là hướng dẫn, trạng thái và vòng lặp. Chúng tôi là loại thi đua của FP.

Là một người mới về phần cứng, câu hỏi của tôi là: tại sao chúng ta không sử dụng các kiến ​​trúc máy tính thực sự tính toán mọi thứ theo kiểu chức năng? Ví dụ, một máy tính có thể bao gồm các "chip chức năng" nguyên thủy như "concat", "map" và "less" và một chương trình sẽ chỉ cho máy tính biết cách truyền dữ liệu giữa các chip đó để tính kết quả mong muốn , chẳng hạn như trong các ngôn ngữ nối.

phác họa vô nghĩa

Điều này không thực sự có ý nghĩa nhưng có thể minh họa những gì tôi đang nghĩ.


5
Không có liên kết, nhưng một con chip Haskell đã được tạo ra, các hệ thống chuyên gia cũng có phần cứng chuyên dụng. Tôi nghĩ rằng bạn có thể gần với bản đồ / giảm mô hình phần cứng hơn bất kỳ thứ gì khác. Lợi ích hoàn hảo duy nhất cho FP là khả năng mở rộng để song song. Trong tất cả các cách khác, fp ít hoạt động hơn vì nó kém chi tiết hơn trong các hướng dẫn của nó do mức độ trừu tượng cao hơn. Ở cấp độ kim loại là hiệu suất, và bên cạnh ngay cả ở mức độ trừu tượng của toán học, trong thực thi, mọi thứ đều bắt buộc. Tính 2 * 3 + 5 mà không cần thực hiện hai bước. Đó là tất cả bắt buộc
Jimmy Hoffa

3
@ JimmyHoffa ra tay liên kết chip haskell : Reduceron .
Dan D.

1
Ngoài ra, bạn có thể quan tâm đến Verity , trình biên dịch cho phép tính Lambda theo tên gọi với phép đệ quy affine bậc cao và cũng có các hiệu ứng cục bộ bắt buộc đối với phần cứng tĩnh thông qua VHDL.
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. Không thực sự, vì Bộ lọc không phải là "một hoạt động"; đó là một hàm bậc cao hơn áp dụng một hoạt động bên ngoài tùy ý vào một danh sách. Bạn không thể giảm xuống một chu kỳ đồng hồ duy nhất.
Mason Wheeler

2
@Dokkat Đây là một hàm bậc cao hơn, vì nó lấy đầu vào là một hàm. Tính cụ thể nực cười là những gì làm cho ví dụ của bạn một cái gì đó có thể được thực hiện "trong một hoạt động". Hàm vị ngữ cụ thể là hằng số, và do đó nó không thực sự là một bộ lọc thực sự. Việc tạo bộ lọc có chức năng vị ngữ tùy ý không thể giảm xuống một chu kỳ đồng hồ duy nhất vì bạn không kiểm soát được bao nhiêu chu kỳ đồng hồ mà chức năng đầu vào mất.
Chewy Gumball

Câu trả lời:


11

Họ làm máy tính như vậy. Nó được gọi là một FPGA . Tất nhiên, các GPU hỗ trợ cả logic tuần tự và logic tổ hợp, nhưng không có gì ngăn cản bạn chỉ sử dụng phần tổ hợp như bạn đề xuất.

Tuy nhiên, trong thực tế, logic tuần tự (loại có trạng thái) cực kỳ hữu ích ngay cả ở cấp độ chip. Đối với một điều, nó làm giảm đáng kể số lượng cổng logic cần thiết để giải quyết vấn đề. Mặt khác, nó giải quyết rất nhiều vấn đề thiết kế liên quan đến các tín hiệu có độ trễ lan truyền khác nhau.

Nếu bạn quan tâm đến loại điều đó, thì các GPU rất đáng để kiểm tra. Có một bảng giống như arduino rẻ tiền được gọi là papilio rất tốt cho người mới bắt đầu. Mọi người sử dụng nó cho mọi thứ, từ điều khiển robot đến khai thác bitcoin.


Cảm ơn câu trả lời, tôi đang đọc qua trang Wikipedia trên đó - nhưng không phải là một phần cứng lập trình chung chung chứ không phải là một phần cứng chuyên dụng cho Lập trình chức năng, như trong bản phác thảo của tôi?
MaiaVictor

1
Google "thuật toán sắp xếp fpga" nếu bạn muốn xem nó đã được thực hiện như thế nào. Những gì bạn đã vẽ là một mạch logic tổ hợp có thể lập trình, đó chính xác là những gì một đồ họa được thiết kế cho.
Karl Bielefeldt

Tuyệt vời, tôi sẽ làm nghiên cứu của tôi!
MaiaVictor

nếu bạn không có trình tự nào cả thì bạn thực sự đang xem điện tử tương tự
jk.

2
@jk Điều đó không thực sự đúng; lấy ví dụ đơn vị logic arithemtic trong một CPU đơn giản là kỹ thuật số và tổ hợp (thuần túy).
m3th0dman

8

Essentiall, vâng, các máy tính tương tự hoạt động theo cách đó: bạn đang thay đổi các tham số và một dòng điện đã được sửa đổi cho phù hợp. Đó là những gì làm cho chúng "nhanh hơn", trong một thời gian, vào những năm 1950 - bạn không quan tâm đến việc tạo ra và sửa đổi chậm các "trạng thái" riêng biệt như trong các chế độ kỹ thuật số cũ.

Và có thể nói, máy tính lượng tử cũng có thể hoạt động theo cách đó: nếu trạng thái của một số hiện tượng lượng tử phụ thuộc vào trạng thái của người khác, thì việc thay đổi một số trạng thái "ban đầu" sẽ thay đổi đồng thời các trạng thái sau - không có "trạng thái" nào ở giữa.


3
+1 khi đề cập đến máy tính lượng tử, tôi nghĩ rằng khả năng làm những việc như OP đang đề xuất sẽ là lợi ích chính cho những thứ này khi chúng thực sự thành hiện thực
Jimmy Hoffa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.