나는 항상 튜링 머신과 같은 추상 머신과 가상 머신의 아키텍처, 폰 뉴만의 아키텍처를 포함한 컴퓨터 아키텍처 사이에서 단절된 느낌이 듭니다. 그래서 나는 그들이 어떻게 관련되어 있는지 알고 싶습니다. 한 사람이 다른 사람에게 어떤 영향을 미칩니 까? 참조도 감사합니다. 감사.
나는 항상 튜링 머신과 같은 추상 머신과 가상 머신의 아키텍처, 폰 뉴만의 아키텍처를 포함한 컴퓨터 아키텍처 사이에서 단절된 느낌이 듭니다. 그래서 나는 그들이 어떻게 관련되어 있는지 알고 싶습니다. 한 사람이 다른 사람에게 어떤 영향을 미칩니 까? 참조도 감사합니다. 감사.
답변:
튜링 머신 및 이와 유사한 "머신"은 계산 모델이며 다음과 같은 문제를 조사하기위한 것입니다.
이를 위해서는 기계 자체가 가능한 단순해야합니다. 프로그래머의 편의성이나 성가신 구현 문제는 중요하지 않습니다. 왜냐하면 수학적 대상이며 직접 작성된 프로그램은 거의 없기 때문입니다.
반대로, 가상 머신 아키텍처와 실제 실리콘 기반 머신 아키텍처는 주어진 프로그램 을 실행하는 데 중점을 둡니다 . 기계는 위의 문제에 대해 필요한 것보다 더 복잡하게 만들어졌으며, 흥미로운 일을하기 위해 더 적은 (그리고 더 명백한) 지시가 필요합니다. 아니 너무 그들은 여전히 이해 (효율적으로 구현 가능한) 일 필요로 복잡하지만, 더 복잡.
따라서 두 가지 접근 방식은 근본적으로 상충됩니다. 둘 다 컴퓨터 과학 분야에있는 것 외에도 서로 관련이 없습니다.
주요 관계는 물리적 구성에서 이론적 구성을 시뮬레이션 할 수 있다는 것입니다.
물리적 인 것이 이론적 인 것의 모든 것을 할 수 있다는 사실은 이론적 인 기계의 이론적 인 테스트와 분석이 현실 세계에서 구현 가능한 것으로 인식 될 수있는 능력을 낳습니다.
정지 문제는 튜링 머신에서 해결할 수없는 것으로 보여진 것의 완벽한 예이며, 튜링 머신의 증거에 의해 튜링 머신의 법칙을 위반하는 실제 머신에서는 해결할 수없는 것으로 알려져 있습니다.
종이에 기록하여 계산하고 계산하여 물건을 합산하는 것의 차이점은, 계산의 현실이 종이에 대한 합산을 수행하는 것과 동일한 규칙을 충족한다는 것이 입증되었습니다. 따라서 물건의 물리적 계산을 시뮬레이션하면 결과가 실제 세계에 적용 가능한 것으로 인식되므로 결과를 내기 위해 물리적 돈을 계산할 필요없이 계산을 정신적으로 시뮬레이션하여 사탕 막대 2 개가 얼마나 많은지 알 수 있습니다.
사람들은 현재 "Quantum Turing Machine"으로 알려진 이론적 모델의 분석 및 테스트를 수행하여 양자 컴퓨팅 머신에서 어떤 기능을 사용할 수 있는지 확인하고 있습니다. 모델의 실제 버전이 지나치게 비싸고, 드문 경우이며, 현재 구현이 여전히 부족한 경우 사람들이 이러한 모델로 작업하는 것이 좋습니다. 이론적 모델은 물리적 구현이 개선 될 때 수행 할 수있는 작업을 보여주기 위해 사용됩니다.
계산 의 정의 가 "컴퓨터가하는 일"이 아님 을 아는 것이 중요합니다 . 계산은 컴퓨터보다 이전 버전입니다. 컴퓨터는 컴퓨터 를 정의하기 때문이 아니라 계산 작업을 돕기 위해 만들어 졌기 때문에 이름이 부여되었습니다 .
따라서 튜링 머신은 컴퓨터 작동 방식이 아닙니다. 문제가 계산 가능한지 여부 , 즉 공식적인 논리 / 수학적 프로세스로 해결할 수 있는지 여부 입니다. 그 프로세스가 어떻게 구현 될 수 있는지에 대해서는 아무 것도 말하지 않습니다. 계산 가능한 경우 충분한 시간이 주어지면 연필이나 종이로 컴퓨터를 사용하거나 튜링 완료 로 표시 될 수있는 모든 시스템을 사용하여 (중요한 사항) 연필로 종이로 해결 해야합니다 .
따라서 튜링 머신은 두 가지 중요한 작업을 수행합니다.
첫 번째 요점은 실제 구현에 방해가되지 않고 문제에 대해 생각할 수있게합니다. 실제 하드웨어는 종종 튜링 머신이 무한한 자원을 가지고 있기 때문에 메모리 나 저장 공간이 부족하면 어떻게됩니까? 튜링 머신을 위해 입증 가능한 이론적 솔루션을 개발 한 다음 누군가가해야 할 일은 주어진 아키텍처에서 작동하는 것으로 변환하는 것입니다.
두 번째 요점은 다양한 테스트를 수행하지 않고도 구현 기능을 확인할 수 있습니다. Turing Machine을 시뮬레이션 할 수 있으면 Turing Machine이 수행 할 수있는 모든 작업을 수행 할 수 있습니다. 튜링 머신은 계산 가능한 모든 것을 계산할 수 있으므로 그렇게 할 수 있습니다.
즉, 튜링 머신과 실제 컴퓨터 아키텍처 (가상 가상 아키텍처) 사이의 관계는 계산할 수있는 한 가지 일뿐입니다.
Von Neumann의 아키텍처는 효과적인 범용 전자 디지털 컴퓨터를 위한 디자인 템플릿을 만들려는 시도였습니다 . 튜링의 연구는 타당성의 증거를 제공했다
생각해 보면, 아키텍처는 추상적 인 기계입니다. 그들은 신중하게 만들어진 실리콘 덩어리가 어떻게 동작해야하는지 설명한다. 아키텍처와 튜링 머신의 차이점은 근본적인 접근 방식의 변화보다 규모의 문제입니다.
튜링 기계의 장점은 튜링 기계를 사용하여 매우 쉽게 사용할 수있는 유용한 증거가 있다는 것입니다. 튜링 머신을 시뮬레이션 할 수있을만큼 강력한 모든 머신이 튜링 머신 (duh)으로 발생할 수있는 모든 문제를 해결할 수 있음을 증명하는 것은 간단합니다. 그러나 Computable 함수 를 정의하면 더욱 흥미로워집니다 . 계산 가능한 함수에 대한 많은 호환 가능한 정의가 있음이 밝혀졌습니다. 모든 동작을 계산 가능한 함수로 정의 할 수 있으면 튜링 머신에서 시뮬레이션 할 수 있습니다.
LISP 스타일 프로그램을 직접 지원하는 아키텍처와보다 절차적인 x86과 같은 아키텍처가 있다고 가정하겠습니다. 친구는 "LISP가보다 표현력이 뛰어 나기 때문에이 컴퓨터에서 x86으로 작성할 수없는 프로그램을 작성할 수 있습니다"라고 말합니다. 이것은 반대하기에 잔인합니다 (특히 LISP를 충분히 알지 못하기 때문에). 그러나 튜링 머신과 같은 여러 추상 머신을 남용 할 수 있습니다.
물론 다른 많은 예들이 있습니다. Conway의 Game of Life는 Turing이 완료된 것으로 입증되었으며 이론적으로 컴퓨터가 할 수있는 모든 것을 할 수 있습니다. 가장 쉬운 방법 은 Life에서 Turing 기계 를 만드는 것 입니다 . 나는 이것이 당신이 리터럴 아키텍처로 취급되는 추상 기계라고 부르는 경우이기 때문에 이것을 제기합니다! Life에서 컴퓨팅에 대한 주장이 추상적 모델의 도움없이 얼마나 어려울 지 상상할 수 있습니다 (x64를 모델링하지 않고 캐시 엿보기로 완성한 것은 Life가 컴퓨팅 가능하다는 것을 증명하기 위해 확실합니다!)
결국 아키텍처와 추상 머신의 큰 차이점은 아키텍처가 일반적으로 성능과 관련이 있다는 것입니다. 아키텍처는 무언가를 얼마나 빨리 할 수 있는지 알고 싶어합니다. 추상 기계는 가능한지 아는 것으로 만족하는 경향이 있습니다. von Neuman 상태 머신 용으로 개발 된 Universal Constructor를 고려하십시오 . UC 가 작동 할 수 있다는 것을 증명하는 것으로 충분했으며 , 저자가 실제로 그것을 볼 수있는 충분한 컴퓨팅 능력을 가지고 있지 않다는 것을 신경 쓰지 마십시오.
가격 아키텍처는 그들이 얼마나 빨리 작동 할 수 있는지를 보여주기 위해 비용을 지불 한다 . 모든 것을 계산할 수 있다는 것을 증명하는 것은 굉장히 어렵다는 것이다 . 이를 위해 아키텍처는 다시 돌아가서 추상 머신을 사용하기 시작합니다.