เราสามารถสร้างคอมพิวเตอร์ที่ใช้งานได้หรือไม่?


12

ในท้ายที่สุดแล้วโปรแกรมทั้งหมดของเรามีโครงสร้าง นั่นคือมันไม่สำคัญว่าเราจะสร้างมันให้บริสุทธิ์หรือใช้ประโยชน์ได้อย่างไร - พวกมันถูกแปลเป็นชุดประกอบเสมอดังนั้นสิ่งที่จริง ๆ แล้วสิ่งที่วิ่งอยู่หลังหมวกคือคำแนะนำรัฐและลูป พวกเราเลียนแบบ FP

ในฐานะที่เป็นฮาร์ดแวร์ noob คำถามของฉันคือ: ทำไมเราไม่ใช้สถาปัตยกรรมคอมพิวเตอร์ที่คำนวณสิ่งต่าง ๆ ในรูปแบบที่ใช้งานได้จริง? ตัวอย่างเช่นคอมพิวเตอร์อาจประกอบด้วย "functional chips" ดั้งเดิมเช่น "concat", "map" และ "ลด" และโปรแกรมจะบอกคอมพิวเตอร์ว่าจะไหลของข้อมูลระหว่างชิปเหล่านั้นอย่างไรเพื่อคำนวณผลลัพธ์ที่ต้องการ เช่นในภาษาที่ต่อกัน

ร่างไร้สาระ

สิ่งนี้ไม่สมเหตุสมผล แต่อาจแสดงสิ่งที่ฉันคิด


5
ไม่มีลิงก์ปิดมือ แต่ทำชิป Haskell แล้วระบบผู้เชี่ยวชาญก็มีฮาร์ดแวร์เสียงกระเพื่อมเป็นพิเศษเช่นกัน ฉันคิดว่าคุณอาจเข้าใกล้แผนที่มากขึ้น / ลดกระบวนทัศน์ในฮาร์ดแวร์มากกว่าสิ่งอื่นใด ข้อดีอย่างเดียวของ FP คือความยืดหยุ่นในการขนาน ในทางอื่น fp นั้นมีประสิทธิภาพน้อยกว่าเพราะมันละเอียดน้อยกว่าในคำแนะนำเนื่องจากเป็นระดับที่สูงกว่าของนามธรรม ที่ระดับประสิทธิภาพโลหะนั้นเป็นราชาและยิ่งไปกว่านั้นในระดับที่เป็นนามธรรมของคณิตศาสตร์ในการดำเนินการทุกอย่างมีความจำเป็น คำนวณ 2 * 3 + 5 โดยไม่ต้องทำตามสองขั้นตอน ทุกอย่างจำเป็น
Jimmy Hoffa

3
@ ลิงค์ชิป Haskell ออกจากมือของ JimmyHoffa ของ: Reduceron
Dan D.

1
นอกจากนี้คุณอาจสนใจVerityซึ่งเป็นคอมไพเลอร์สำหรับแคลคูลัสแลมบ์ดาแบบเรียกชื่อโดยมีลำดับสูงกว่าและการเรียกซ้ำแบบซ้ำซึ่งมีผลกระทบในท้องถิ่นต่อฮาร์ดแวร์แบบคงที่ผ่าน 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. ไม่ใช่เพราะตัวกรองไม่ใช่ "การดำเนินการ"; มันเป็นฟังก์ชั่นที่มีลำดับสูงกว่าซึ่งใช้การดำเนินงานภายนอกโดยพลการกับรายการ คุณไม่สามารถลดสิ่งนั้นลงในหนึ่งรอบนาฬิกาได้
Mason Wheeler

2
@Dokkat มันเป็นฟังก์ชั่นการสั่งซื้อที่สูงขึ้นเพราะมันจะใช้เป็นฟังก์ชั่นการป้อนข้อมูล ความไร้สาระเฉพาะคือสิ่งที่ทำให้ตัวอย่างของคุณเป็นสิ่งที่สามารถทำได้ "ในการทำงานครั้งเดียว" ฟังก์ชันเพรดิเคตที่ระบุนั้นเป็นค่าคงที่และไม่ใช่ตัวกรองที่แท้จริง การสร้างตัวกรองที่ใช้ฟังก์ชันเพรดิเคตตามอำเภอใจไม่สามารถลดลงเป็นรอบสัญญาณนาฬิกาเดียวได้เนื่องจากคุณไม่สามารถควบคุมจำนวนรอบสัญญาณนาฬิกาที่ฟังก์ชันอินพุตใช้
Chewy Gumball

คำตอบ:


11

พวกเขาทำคอมพิวเตอร์แบบนั้น มันเรียกว่าFPGA แน่นอน FPGAs รองรับทั้งแบบต่อเนื่องและเชิงตรรกะ แต่ไม่มีอะไรจะขัดขวางคุณจากการใช้ส่วนผสมตามที่คุณแนะนำ

อย่างไรก็ตามในทางปฏิบัติตรรกะตามลำดับ (ชนิดที่มีสถานะ) มีประโยชน์อย่างยิ่งแม้ในระดับชิป สำหรับสิ่งหนึ่งมันช่วยลดจำนวนของตรรกะประตูที่จำเป็นในการแก้ปัญหา อีกวิธีหนึ่งมันแก้ปัญหาการออกแบบจำนวนมากที่เกี่ยวข้องกับสัญญาณที่มีความล่าช้าในการแพร่กระจายที่แตกต่างกัน

หากคุณสนใจสิ่งนั้น FPGA นั้นคุ้มค่าที่จะไปลองใช้ดู มีบอร์ดคล้ายอาร์ดิโนราคาไม่แพงที่เรียกว่าpapilioซึ่งเหมาะสำหรับผู้เริ่มต้น ผู้คนใช้ทุกอย่างตั้งแต่การควบคุมหุ่นยนต์ไปจนถึงการขุด bitcoin


ขอบคุณสำหรับคำตอบฉันอ่านหน้าของ Wikipedia ที่อยู่ในนั้น - แต่ FPGA ไม่ใช่ฮาร์ดแวร์ที่ตั้งโปรแกรมได้ทั่วไปไม่ใช่ฮาร์ดแวร์ที่ใช้สำหรับการเขียนโปรแกรมใช้งานเฉพาะเช่นบนร่างของฉันหรือไม่
MaiaVictor

1
Google "อัลกอริทึมการจัดเรียง fpga" ถ้าคุณต้องการดูว่ามันทำอย่างไร สิ่งที่คุณวาดคือวงจรลอจิกแบบผสมผสานที่สามารถตั้งโปรแกรมได้ซึ่งเป็นสิ่งที่ FPGA ออกแบบมาอย่างแม่นยำ
Karl Bielefeldt

ยอดเยี่ยมฉันจะทำวิจัยของฉัน!
MaiaVictor

หากคุณไม่มีการจัดลำดับเลยคุณก็กำลังมองหาอุปกรณ์อิเล็กทรอนิกส์แบบอนาลอก
jk

2
@jk ไม่เป็นความจริงเลย ยกตัวอย่างหน่วย arithemtic-logical ใน CPU อย่างง่ายซึ่งเป็นดิจิตอลและ (บริสุทธิ์)
m3th0dman

8

ที่สำคัญใช่คอมพิวเตอร์อะนาล็อกทำงานอย่างนั้น: คุณกำลังเปลี่ยนพารามิเตอร์และกระแสไฟฟ้าถูกแก้ไขตามนั้น นั่นคือสิ่งที่ทำให้พวกเขา "เร็วขึ้น" ในช่วงเวลาในปี 1950 - คุณไม่ได้สนใจเกี่ยวกับการสร้างที่ช้าและการปรับเปลี่ยน "สถานะ" ที่แยกจากกันเช่นเดียวกับในยุคดิจิตอลยุคเก่า

คอมพิวเตอร์ควอนตัมอาจใช้วิธีนั้นเช่นกัน: หากสถานะของปรากฏการณ์ควอนตัมบางอย่างขึ้นอยู่กับสถานะของผู้อื่นการเปลี่ยนสถานะ "เริ่มต้น" บางอย่างจะเปลี่ยนสถานะต่อไปนี้พร้อมกัน - ไม่มี "สถานะ" ในระหว่างนั้น


3
+1 สำหรับการกล่าวถึงคอมพิวเตอร์ควอนตัมฉันคิดว่าความสามารถในการทำสิ่งต่าง ๆ เช่น OP เป็นการแนะนำจะเป็นประโยชน์หลักสำหรับสิ่งเหล่านี้เมื่อพวกเขาเกิดขึ้นจริง
จิมมี่ฮอฟฟา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.