실용적인 컴퓨터를 만들 수 있을까요?


12

FP가했던 것처럼, 결국 우리의 모든 프로그램은 구조화되어 있습니다. 즉, 우리가 그것들을 얼마나 순수하거나 기능적으로 만드는지는 중요하지 않습니다. 그것들은 항상 어셈블리로 변환되므로 실제로 후드 뒤에서 실행되는 것은 명령, 상태 및 루프입니다. 우리는 FP를 모방하고 있습니다.

하드웨어 멍청한 놈으로서, 제 질문은 : 실제로 기능적인 스타일로 물건을 계산하는 컴퓨터 아키텍처를 사용하지 않는 이유는 무엇입니까? 예를 들어, 컴퓨터는 "concat", "map"및 "reduce"와 같은 기본 "기능성 칩"으로 구성 될 수 있으며, 프로그램은 원하는 결과를 계산하기 위해 해당 칩간에 데이터를 이동시키는 방법을 컴퓨터에 알려줍니다. 연결 언어와 같은

넌센스 스케치

이것은 실제로 의미가 없지만 내가 생각하는 것을 설명 할 수 있습니다.


5
링크를 손에 넣지 않아도 Haskell 칩이 만들어졌고 전문가 시스템에는 특수한 리스프 하드웨어도있었습니다. 하드웨어보다 맵 / 리 듀스 패러다임에 더 가깝다고 생각합니다. FP의 유일한 성능 이점은 병렬 처리로의 확장 성입니다. 다른 모든 방법으로 fp는 추상화 수준이 높기 때문에 지침에 포함되지 않으므로 성능이 떨어집니다. 금속 수준에서는 성능이 뛰어나고 추상화 수준에서도 수학적으로 모든 것이 필수적입니다. 두 단계를 거치지 않고 2 * 3 + 5를 계산합니다. 모든 것이 필수입니다
Jimmy Hoffa

3
@JimmyHoffa의 오프 핸드 haskell 칩 링크 : Reduceron .
Dan D.

1
또한 VHDL을 통해 정적 하드웨어에 필수적인 로컬 효과갖는 고차 및 아핀 재귀를 가진 이름 별 호출 Lambda 미적분 의 컴파일러 인 Verity에 관심이있을 수 있습니다 .
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. 필터가 "작동"하지 않기 때문에 실제로는 아닙니다. 임의의 외부 연산을 목록에 적용하는 고차 함수입니다. 당신은 줄일 수 없습니다 것을 하나의 클럭 사이클에.
메이슨 휠러

2
@Dokkat 그것은 입력 함수로서 걸리기 때문에 고차 함수입니다. 어리석은 특이성은 "단일 조작으로"수행 할 수있는 예를 만드는 것입니다. 특정 술어 함수는 일정하므로 실제로 실제 필터는 아닙니다. 입력 함수에 걸리는 클록주기 수를 제어 할 수 없으므로 임의의 술어 함수를 사용하는 필터를 단일 클록 주기로 줄일 수 없습니다.
질긴 검볼

답변:


11

그들은 그런 컴퓨터를 만듭니다. 이것을 FPGA 라고합니다 . 물론 FPGA는 순차 논리와 조합 논리를 모두 지원하지만 제안한대로 조합 부분을 사용하는 것을 막을 수있는 것은 없습니다.

그러나 실제로는 순차 논리 (상태에 따른 종류)는 칩 수준에서도 매우 유용합니다. 우선 문제를 해결하는 데 필요한 로직 게이트의 수를 크게 줄입니다. 다른 방법으로는 전파 지연이 다른 신호와 관련된 많은 설계 문제를 해결합니다.

그런 종류의 것들에 관심이 있다면 FPGA를 살펴볼 가치가 있습니다. 초보자에게는 훌륭한 papilio 라는 저렴한 arduino와 같은 보드 가 있습니다. 사람들은 로봇 제어에서 비트 코인 채굴에 이르기까지 모든 것에 사용합니다.


답을 주셔서 감사합니다. Wikipedia의 페이지를 읽고 있습니다. 그러나 스케치와 같이 기능 프로그래밍에 특화된 하드웨어가 아닌 일반적인 프로그래밍 가능한 하드웨어가 아닌 FPGA입니까?
MaiaVictor

1
어떻게 수행되는지 보려면 Google "fpga 정렬 알고리즘"을 참조하십시오. 당신이 그린 것은 프로그래밍 가능한 조합 논리 회로이며, 이것은 FPGA가 설계된 것입니다.
Karl Bielefeldt

훌륭하다, 나는 나의 연구를 할 것이다!
MaiaVictor

시퀀싱이 전혀 없다면 아날로그 전자 장치
jk를

2
@jk 그것은 사실이 아닙니다. 예를 들어 디지털과 (순수한) 조합 인 간단한 CPU에서 arithemtic-logical 단위를 사용하십시오.
m3th0dman 16:13에

8

본질적으로 아날로그 컴퓨터는 그런 식으로 작동했습니다. 매개 변수를 변경하고 전류를 적절히 수정했습니다. 그것이 1950 년대에 한동안 그것들을 "빠르게"만든 것입니다. 당신은 오래된 디지털 베헤모스 에서처럼 분리 된 "상태"의 느린 생성과 수정에 신경 쓰지 않았습니다.

그리고 양자 컴퓨터도 그런 식으로 작동 할 수 있습니다. 만약 어떤 양자 현상의 상태가 다른 양자의 상태에 의존한다면, 어떤 "초기"상태를 바꾸면 다음과 같은 상태가 동시에 바뀌게됩니다.


3
양자 컴퓨터를 언급 한 것에 대해 +1, 저는 OP와 같은 일을 할 수있는 능력이 실제로 실현 될 때 이것들에 대한 주요 혜택이 될 것이라고 생각합니다
Jimmy Hoffa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.