프로그램은 논리적 주소 지정을 사용하여 물리적 주소 공간에 있는 피연산자의 주소를 지정합니다. 프로세서는 자동으로 논리적 주소를 물리적 주소로 변환한 다음 시스템 버스로 발행합니다.

컴퓨터의 아키텍처는 PHA(물리적 주소 공간)와 LAP(논리적 주소 공간)를 구분합니다. 물리적 주소 공간마이크로프로세서 시스템의 주소 버스에 있는 주소에서 메모리 하드웨어에 의해 액세스되는 단순한 1차원 바이트 배열입니다. 논리적 주소 공간특정 요구 사항에 따라 프로그래머가 구성합니다. 논리적 주소를 물리적 주소로 변환하는 작업은 MMU 메모리 관리 장치에 의해 수행됩니다.

최신 마이크로프로세서 아키텍처에서 LAP는 바이트, 세그먼트 및 페이지와 같은 기본 구조 집합으로 표시됩니다. 마이크로프로세서 사용 다음 옵션조직 논리 주소 공간:

  • 평면(선형) LAP:정의된 구조가 없는 바이트 배열로 구성됩니다. 논리적 주소가 물리적 주소와 동일하기 때문에 주소 변환이 필요하지 않습니다.
  • 분할된 LAP:세그먼트로 구성됨 - 일반적인 경우 가변 바이트 수를 포함하는 메모리의 연속 영역. 논리 주소는 세그먼트 ID와 세그먼트 내 오프셋의 두 부분으로 구성됩니다. 주소 변환은 MMU 분할 장치에 의해 수행됩니다.
  • 페이지 PA:페이지로 구성됩니다. 각 메모리에는 고정된 수의 바이트가 들어 있습니다. 논리 주소는 페이지 번호(식별자)와 페이지 내의 오프셋으로 구성됩니다. 논리 주소를 물리 주소로 변환하는 작업은 MMU 페이징 장치에 의해 수행됩니다.
  • 세그먼트 페이지 LAP:구성 세그먼트,차례로 페이지로 구성됩니다. 논리 주소는 세그먼트 식별자와 세그먼트 내의 오프셋으로 구성됩니다. 세그먼트 매퍼 MMU는 논리적 주소를 페이지 번호 및 페이지 오프셋으로 변환한 다음 페이지 매퍼 MMU에 의해 물리적 주소로 변환됩니다.

마이크로프로세서는 실제 모드와 보호 모드의 두 가지 모드에서 작동할 수 있습니다.

에서 일할 때 리얼 모드프로세서 기능은 제한적입니다. 주소 지정 가능한 메모리 용량은 1MB이고 메모리 페이징이 없습니다. 세그먼트고정 길이는 216바이트입니다.

이 모드는 일반적으로 컴퓨터를 부팅하는 초기 단계에서 사용하여 보호 모드.

리얼 모드프로세서 세그먼트 레지스터는 시작 부분의 물리적 주소의 상위 16비트를 포함합니다. 분절.왼쪽으로 4비트 이동 선택자세그먼트의 20비트 기본 주소를 제공합니다. 물리적 주소는 이 주소를 세그먼트의 16비트 오프셋 값에 추가하여 얻습니다. 피연산자에 대해 지정된 주소 지정 모드에 따라 형성되거나 명령어에 대한 EIP 레지스터에서 추출됩니다(그림 3.1). 수신된 주소에서 메모리에서 정보를 가져옵니다.



쌀. 3.1.물리적 주소를 얻기 위한 체계

마이크로프로세서의 메모리 주소 지정 기능은 작업할 때 가장 완벽하게 실현됩니다. 보호 모드.주소 지정 가능한 메모리 양이 4GB로 증가하면 페이지 주소 지정 모드 가능성이 나타납니다. 세그먼트 1바이트에서 4GB까지 가변 길이를 가질 수 있습니다.

에서 동작하는 마이크로프로세서에 의한 물리적 주소의 형성을 위한 일반적인 계획 보호 모드, 그림에 나와 있습니다. 3.2.

이미 언급했듯이 물리적 주소 형성의 기초는 논리적 주소입니다. 두 부분으로 구성됩니다. 선택자그리고 세그먼트의 오프셋.

선택자마이크로프로세서의 세그먼트 레지스터에 포함되어 있으며 세그먼트에 대한 설명을 찾을 수 있습니다. (기술자)특수 설명자 테이블에서. 설명자세그먼트는 특수 시스템 개체 전역(GDT) 및 로컬(LDT) 설명자 테이블에 저장됩니다. 기술자주소 공간의 다양한 구성과 함께 물리적 주소의 형성과 다중 프로그램 작동 모드의 구성에 이르기까지 마이크로프로세서의 기능에 매우 중요한 역할을 합니다. 따라서 구조를 더 자세히 살펴 보겠습니다.

세그먼트에서 실행되는 마이크로프로세서 보호 모드, 많은 매개변수가 특징입니다. 따라서 범용 32비트 마이크로프로세서에서 세그먼트 정보는

쌀. 3.2.메모리의 세그먼트 페이지 구성에서 물리적 주소의 형성

라는 특수한 8바이트 데이터 구조 기술자, 그리고 주요 기능은 세그먼트 레지스터에 할당되어 디스크립터의 위치를 ​​결정합니다.

구조 세그먼트 기술자그림에 나와 있습니다. 3.3.

쌀. 3.3.세그먼트 디스크립터 구조

i286 마이크로프로세서에서 32비트 MP로 전환하는 동안 개별 디스크립터 필드의 배열이 조화를 잃고 부분적으로 "패치"처럼 보이기 시작했기 때문에 디스크립터의 형식이 아닌 구조를 고려할 것입니다. 이러한 필드의 비트 깊이를 기계적으로 증가시킵니다.

32비트 기본 주소 필드를 사용하면 232바이트(4GB) 주소 공간에서 세그먼트의 시작 주소를 지정할 수 있습니다.

제한 필드(limit)는 세그먼트의 길이(더 정확하게는 세그먼트의 길이에서 1을 뺀 값: 이 필드가 0이면 세그먼트의 길이가 1임을 의미함)를 주소 지정 가능한 단위로 나타냅니다. 최대 크기세그먼트는 2 20 요소입니다.

요소의 값은 설명자 비트 G(세분성 - 세분성 또는 분수)의 속성 중 하나에 의해 결정됩니다.

따라서 세그먼트는 1바이트에서 1MB(G = 0일 때) 범위에서 1바이트의 정확도를 가진 크기를 가질 수 있습니다. 페이지 크기가 2 12 = 4KB인 경우 세그먼트 크기를 4GB로 설정할 수 있습니다(G = l).

IA-32 아키텍처에서 세그먼트는 주소 공간의 임의의 지점에서 시작하고 임의의 길이를 가질 수 있으므로 메모리의 세그먼트는 부분적으로 또는 완전히 겹칠 수 있습니다.

치수 비트(기본 크기)는 기본적으로 명령어에 사용되는 주소 및 피연산자의 길이를 결정합니다.

당신의 재량에. 물론 이 비트는 일반 사용자, 그리고 시스템 프로그래머, 예를 들어 가비지 수집을 위한 세그먼트 또는 기본 주소를 수정할 수 없는 세그먼트를 표시하는 데 사용합니다. 이 비트는 가장 높은 권한 수준에서 실행되는 프로그램에서만 사용할 수 있습니다. 마이크로프로세서는 작업에서 이를 변경하거나 사용하지 않습니다.

액세스 바이트세그먼트를 처리하기 위한 기본 규칙을 정의합니다.

존재 비트 P(현재)는 세그먼트에 액세스할 수 있는 능력을 나타냅니다. 운영 체제(OS)는 설명자를 P = 0으로 설정하여 RAM에서 외부 메모리로 전송된 세그먼트를 일시적으로 없는 것으로 표시합니다. P = 1일 때 세그먼트는 물리적 메모리에 있습니다. P = 0인 설명자가 선택되면(세그먼트가 RAM에 없음) 기본 주소 및 제한 필드는 무시됩니다. 이것은 자연스러운 일입니다. 예를 들어 세그먼트 자체가 랜덤 액세스 메모리? 이 상황에서 프로세서는 사용하려는 모든 후속 시도를 거부합니다. 기술자팀에서 정의 기술자주소 공간이 "사라지는" 것 같습니다.

세그먼트가 없는 특수한 경우가 있습니다. 동시에 운영 체제는 요청된 세그먼트를 디스크에서 메모리로 복사하고(다른 세그먼트를 삭제하는 동안) 이를 로드합니다. 기술자세그먼트의 기본 주소는 P = 1로 설정하고 RAM에 없는 세그먼트에 액세스한 명령을 다시 시작합니다.

두 자리 DPL(Descriptor Privilege Level) 필드는 가능한 네 가지 중 하나를 나타냅니다(0에서 3까지). 권한 수준 처리, 특정 프로그램이 세그먼트에 액세스할 가능성을 결정합니다(레벨 0은 가장 높은 권한 수준에 해당).

반전 비트 A(Accessed)는 세그먼트에 대한 모든 액세스에서 "1"로 설정됩니다. 운영 체제에서 가장 오랫동안 액세스되지 않은 세그먼트를 추적하는 데 사용됩니다.

예를 들어, 운영 체제가 초당 한 번씩 모든 세그먼트의 디스크립터에서 비트 A를 재설정한다고 가정합니다.시간이 지난 후 공간이 충분하지 않은 새 세그먼트를 RAM에 로드해야 하는 경우 운영 체제는 의 세그먼트 중에서 RAM의 일부를 지우기 위해 "후보"를 결정합니다. 기술자어떤 비트 A가 지금까지 "1"로 설정되지 않았는지, 즉 최근에 액세스되지 않은 것입니다.

유형 필드액세스 바이트에서 세그먼트의 목적과 용도를 정의합니다. 비트 S(시스템 - 액세스 바이트의 비트 4)가 1이면 이것은 기술자실제 메모리 세그먼트를 설명합니다. S = 0이면 이 설명자는 작업 스위치에 사용되는 호출 게이트웨이 또는 로컬 LDT 설명자 테이블에 대한 핸들과 같은 메모리 세그먼트가 아닐 수 있는 특수 시스템 개체를 설명합니다. 비트 할당<3...0>액세스 바이트는 세그먼트 유형에 따라 결정됩니다(그림 3.4).

쌀. 3.4.바이트 유형 필드 형식에 액세스

코드 세그먼트에서: C(적합) 종속 비트는 프로그램 세그먼트를 보호하는 추가 처리 규칙을 정의합니다. C = 1의 경우 이 세그먼트하위 코드 세그먼트입니다. 이 경우 그는 의도적으로 권한 보호를 박탈당합니다. 이러한 도구는 예를 들어 시스템에서 실행 중인 모든 작업에 사용할 수 있어야 하는 서브루틴을 구성하는 데 편리합니다. C = 0일 때 이것은 일반 코드 세그먼트입니다. R(읽기 가능) 읽기 비트는 세그먼트가 실행을 위해서만 액세스될 수 있는지 또는 세그먼트 교체 접두사를 사용하여 데이터로 상수와 같은 실행 및 읽기를 위해서만 액세스할 수 있는지 설정합니다. R = 0일 때 실행을 위한 명령 세그먼트에서 선택만 허용됩니다. R = 1일 때 세그먼트에서 데이터 읽기도 허용됩니다.

코드 세그먼트에 쓰는 것은 금지되어 있습니다. 쓰기를 시도하면 소프트웨어 인터럽트가 발생합니다.

데이터 세그먼트에서:

  • ED(아래로 확장) - 확장 방향 비트. ED = 1일 때 이 세그먼트는 스택 세그먼트이고 세그먼트의 오프셋은 세그먼트 크기보다 커야 합니다. ED = 0이면 실제 데이터 세그먼트입니다(오프셋은 세그먼트 크기보다 작거나 같아야 함).
  • 쓰기 가능 비트 W(쓰기 가능). W = 1일 때 세그먼트 수정이 허용됩니다. W = 0이면 세그먼트에 쓰기가 금지되고 세그먼트에 쓰려고 하면 소프트웨어 인터럽트가 발생합니다.

피연산자 요청의 경우 세그먼트 오프셋명령에 지정된 피연산자 주소 지정 모드에 따라 마이크로프로세서에 의해 형성됩니다. 코드 세그먼트의 오프셋은 다음에서 추출됩니다. 레지스터 - 명령어 포인터 EIP.

디스크립터에서 검색된 세그먼트 시작 주소와 세그먼트에서 생성된 오프셋의 합은 다음을 제공합니다. 선형 주소(라).

주소 공간의 세그먼트 표현만 마이크로프로세서에서 사용되는 경우 결과 선형 주소도 물리적 주소입니다.

세그먼트 1에 추가하여 메모리 구성을 위한 페이징 메커니즘이 사용되는 경우 선형 주소두 개의 필드로 표현됨: 가장 높은 자리에 숫자가 포함됨 가상 페이지, 그리고 페이지에서 가장 낮은 오프셋. 가상 페이지 번호를 물리적 페이지 번호로 변환하는 작업은 다음과 같은 특수 시스템 테이블을 사용하여 수행됩니다. 페이지 테이블 디렉토리(KTS) 및 페이지 테이블(TS). 메모리에서 페이지 테이블 디렉토리의 위치는 시스템 레지스터 CR3에 의해 결정됩니다. 물리적 주소는 페이지 테이블에서 얻은 물리적 페이지 주소와 선형 주소에서 얻은 페이지 오프셋의 합으로 계산됩니다.

이제 논리적 주소를 물리적 주소로 변환하는 모든 단계를 더 자세히 살펴보겠습니다.

80386 마이크로프로세서는 이전 16비트 8086/80286 마이크로프로세서의 전체 32비트 버전이며 16비트에서 32비트 아키텍처로 프로세서 아키텍처의 주요 발전을 나타냅니다. 비트 심도의 증가와 함께 많은 개선 사항이 있습니다. 추가 기능. 80386 마이크로프로세서는 작업 전환, 향상된 메모리 관리, 페이징 유무에 관계없이 가상 메모리 관리, 소프트웨어 보호 및 대용량 저장 기능을 제공합니다. 모두 소프트웨어, 이전 8086/8088 및 80286 마이크로프로세서용으로 작성된 것은 상향식 호환 가능하며 80386 마이크로프로세서용입니다. 프로세서에 의해 주소 지정 가능한 메모리 양이 1MB(8086/8088 마이크로프로세서용) 또는 16MB(80286용 마이크로프로세서) ~ 4GB는 보호 모드에서 80386 프로세서에 사용할 수 있습니다. 80386 마이크로프로세서는 보호 모드에서 실제 모드로 변경할 수 있습니다. 하드 리셋시간이 많이 걸리고 80286 프로세서를 사용하는 경우 필요했던 마이크로 프로세서.

80486 마이크로프로세서는 80386 마이크로프로세서의 개선된 버전이며 단일 클록 주기에서 많은 명령을 실행합니다. 80486 마이크로프로세서에는 내부 8KB L1 캐시와 80387 보조 프로세서와 소프트웨어 호환되는 통합 고성능 수학 보조 프로세서도 있습니다.80486DX4 프로세서에는 16KB 캐시가 있습니다. 80386 마이크로프로세서와 동일한 클럭 속도로 실행되는 80486 마이크로프로세서는 생산성이 50% 더 높습니다.

마이크로프로세서 80386

80386 마이크로프로세서의 두 가지 버전이 가장 일반적이었습니다. 80386DX 프로세서와 내부적으로 32비트 버스를 사용했지만 외부 16비트 데이터 버스가 있는 단순화된 80386SX 프로세서입니다.

80386DX 프로세서는 132핀 PGA(핀 그리드 어레이) 패키지에 배치되었습니다. 더 새 버전마이크로프로세서 80386 - 80386EX 포함: AT 버스 제어 장치, 동적 RAM 재생 제어 장치, 프로그래밍 가능한 수정 선택 장치, 인터럽트 컨트롤러, DMA 컨트롤러, 타이머 장치, 직렬 데이터 전송 장치, 주소 버스 핀 26개, 데이터 16개 버스 핀.

32비트 데이터 버스와 32비트 주소 버스가 있는 80386DX 마이크로프로세서는 4GB의 물리적 메모리를 지정할 수 있습니다. 80386SX 마이크로프로세서는 80286 마이크로프로세서와 같이 16MB의 메모리 주소를 지정하며 24비트 주소 버스와 16비트 데이터 버스만 있습니다. 80386SX 마이크로프로세서는 80386DX 마이크로프로세서 이후에 개발되었습니다. 풀 버전 32비트 버스. 80386SX 마이크로프로세서는 많은 분야에서 사용되었습니다. 개인용 컴퓨터누가 같은 것을 사용 시스템 보드 Windows를 비롯한 대부분의 응용 프로그램이 16MB 미만의 메모리를 필요로 하던 시기에 80386SX 프로세서는 80386 마이크로프로세서의 대중적이고 저렴한 버전이었습니다. 어쨌든 새로운 컴퓨팅 시스템을 구축하는 데 더 저렴합니다. 80386 프로세서 오랫동안많은 응용 프로그램에 대한 수요가 남아 있습니다. 예를 들어, 80386EX 마이크로프로세서는 개인용 컴퓨터에는 사용되지 않았지만 임베디드 시스템에서 매우 인기가 있었습니다.

인텔 마이크로프로세서 제품군의 이전 버전과 마찬가지로 80386 마이크로프로세서는 작동하는 데 하나의 +5.0V 전원 공급 장치만 있으면 됩니다.80386 프로세서의 평균 전류 소비는 16MHz에서 실행되는 프로세서의 경우 20MHz 및 450mA입니다. 또한 600mA의 전류 소비를 가진 33MHz의 클록 속도를 가진 프로세서 버전이 있었습니다. 80386EX 마이크로프로세서의 전류 소비는 33MHz에서 작동할 때 320mA입니다.

프로세서는 특정 작동 모드에서 최대 1.0A의 전류를 소비하므로 전원 공급 장치와 전원 배선이 이러한 전류 스파이크를 처리할 수 있어야 합니다. 프로세서에는 V CC 및 V SS 핀이 많이 있습니다. 올바른 작동마이크로프로세서는 모두 소스에 연결되어야 합니다. 직류+5.0V(V CC) 및 접지(V SS). 일부 프로세서 핀은 N/C(연결 없음)로 표시되며 아무데도 연결하면 안 됩니다. 언급된 것 외에도 +3.3V의 감소된 공급 전압을 가진 80386SX 및 80386EX 마이크로프로세서의 몇 가지 다른 버전이 있었습니다. 이러한 프로세서는 휴대용 노트북 컴퓨터(노트북) 또는 노트북 컴퓨터(랩탑).

메모리 시스템

80386DX 마이크로프로세서가 액세스할 수 있는 물리적 메모리 시스템의 용량은 4GB입니다. 또한 프로세서는 다음을 지원합니다. 가상 메모리 MCU 및 설명자를 사용하여 최대 64TB를 물리적 메모리에 매핑합니다. 가상 주소 지정을 사용하면 스와핑 방식(스와핑)이 있는 상태에서 하드 드라이브의 대용량으로 4GB 이상의 프로그램을 사용할 수 있습니다. 무화과에. 그림 6.4는 80386DX 마이크로프로세서의 물리적 메모리 시스템의 구성을 보여줍니다.

메모리는 각각 최대 1GB의 용량을 가진 4개의 8비트 메모리 뱅크로 나뉩니다. 이 32비트 메모리 구성은 바이트, 워드 또는 더블 워드에 대한 액세스를 허용합니다. 80386DX 마이크로프로세서는 하나의 메모리 주기에서 32비트 데이터를 전송할 수 있는 반면 8088 마이크로프로세서는 4주기가 필요하고 80286 및 80386SX 마이크로프로세서는 2주기가 필요합니다. 큰 데이터 너비는 특히 32비트를 차지하는 단정밀도 부동 소수점 숫자의 경우 매우 중요합니다. 충분히 고급 소프트웨어는 부동 소수점 숫자를 사용하여 데이터를 저장하므로 32비트 메모리 위치는 메모리를 염두에 두고 작성된 경우 프로그램 실행 속도를 높입니다.

메모리의 각 바이트 주소는 다음과 같이 16진수 표기법으로 표시됩니다. 이전 버전프로세서. 차이점은 80386DX 마이크로프로세서는 00000000H-FFFFFFFFH 범위에서 주소 지정이 가능한 메모리가 있는 32비트 주소 버스를 사용한다는 것입니다.

마이크로프로세서 8086, 80286 및 80386SX에 구축된 시스템의 두 메모리 뱅크에 대한 액세스는 BLE(8086 및 80286의 A0) 및 OUT 신호를 통해 수행됩니다. 80386DX 마이크로프로세서는 4개의 BE3-BE0 신호를 사용하여 메모리 뱅크에 액세스합니다. 이 메모리 구성을 통해 마이크로프로세서가 하나의 활성화 신호를 활성화할 때 1바이트에 액세스할 수 있습니다.

두 개의 활성화 신호가 활성화되면 프로세서는 워드로 주소가 지정됩니다. 대부분의 경우 단어 주소 지정은 뱅크 0과 1 또는 뱅크 2와 3을 참조합니다. 메모리 위치 00000000H는 뱅크 0, 위치 00000001H는 뱅크 1, 위치 00000002H는 뱅크 2, 위치 00000003은 뱅크 3에 있습니다. 80386DX 마이크로프로세서에는 내부적으로 바이트 활성화 신호로 디코딩되기 때문에 주소 핀 A0 및 A1이 없습니다. 마찬가지로 16비트 80386SX 마이크로프로세서에는 BLE 및 OUT 신호로 디코딩되기 때문에 주소 핀 A0이 없습니다. 80386EX 마이크로프로세서는 BS8 신호가 수동(논리 높음)일 때 16비트 메모리 시스템의 두 뱅크에 있는 데이터 워드를 지정하거나 이 신호가 활성화될 때 8비트 시스템의 한 바이트를 지정합니다.

제어 레지스터

80386 마이크로프로세서에는 EFLAGS 플래그 레지스터 및 EIP 명령 포인터 외에 다른 제어 레지스터가 있습니다. 제어 레지스터 CR0(제어 레지스터)은 기계 상태 레지스터와 동일합니다. MSW(머신 상태 워드) 80286 마이크로프로세서의 16비트 레지스터가 아니라 32비트 레지스터라는 점만 다릅니다. 추가 제어 레지스터는 CR1, CR2 및 CR3입니다.

무화과에. 6.5. 마이크로 프로세서 80386의 제어 레지스터 구조를 보여줍니다.

CR1 제어 레지스터는 80386 마이크로프로세서에서 사용되지 않지만 향후 제품을 위해 예약되어 있습니다. 제어 레지스터 CR2는 마지막 메모리 페이지 오류가 수신된 선형 주소를 캡처합니다. 마지막으로 제어 레지스터 CR3은 페이지 테이블의 기본 주소를 수정합니다. 32비트 레지스터의 하위 12비트 0에서 11은 0을 포함하고 나머지 레지스터 비트와 결합되어 4K 페이지 테이블의 시작을 결정합니다.

CR0 레지스터에는 다음과 같이 80386 마이크로프로세서에 정의된 여러 특수 제어 비트가 있습니다.

PG(페이징 활성화) 비트는 PG = 1일 때 페이지 테이블의 선형 주소에서 물리적 주소로의 변환을 선택하기 위한 것입니다. 메모리 페이징을 사용하면 물리적 메모리 위치를 선형 주소에 할당할 수 있습니다.

동부 표준시

ET(확장 유형) 비트는 수학 보조 프로세서 명령에 대한 지원 표시기입니다. ET가 0이면 80287 보조 프로세서가 선택되고 ET = 1이면 80387 보조 프로세서가 선택됩니다.이 비트는 시스템에 80387 보조 프로세서가 있다는 사실을 반영하기 위해 추가되었습니다.

TS(작업 전환) 비트는 마이크로프로세서가 작업 전환을 수행했음을 나타냅니다(보호 모드에서 TR 작업 레지스터의 내용을 변경하면 TS 비트가 설정됨). TS 비트가 설정되면 디지털 보조 프로세서 명령으로 인해 유형 7 인터럽트가 발생합니다(보조 프로세서는 사용할 수 없음).

먹다

EM(코프로세서 에뮬레이트) 비트는 각 ESC 명령, 즉 코프로세서와 관련된 명령을 실행하려고 할 때마다 유형 7 인터럽트를 트리거하도록 설정됩니다. 이것은 종종 보조 프로세서의 소프트웨어 에뮬레이션에 사용됩니다. 에뮬레이션은 시스템 비용을 줄이지만 에뮬레이트된 보조 프로세서 명령은 실행하는 데 종종 100배 정도 더 오래 걸립니다.

MP(모니터 보조 프로세서) 비트는 TS 비트가 설정되는 동안 모든 대기 명령에서 유형 7 인터럽트를 트리거하도록 설정됩니다.

답장

PE(보호 활성화) 비트는 80386 마이크로프로세서를 보호 모드로 전환하도록 설정됩니다. 리얼 모드로 전환하기 위해 다소 긴 명령 시퀀스를 시작하도록 재설정될 수도 있습니다. 80286 마이크로프로세서에서는 이 비트만 설정할 수 있습니다. 80286 마이크로프로세서는 대부분의 보호 모드 시스템에서 사용할 수 없는 하드 리셋을 수행하지 않고는 리얼 모드로 다시 전환할 수 없습니다.

설명자와 선택자

페이징 블록에 대해 논의하기 전에 80386 마이크로프로세서의 설명자와 선택자를 살펴보겠습니다.80386 마이크로프로세서는 80286 마이크로프로세서와 거의 동일한 방식으로 설명자를 사용합니다. 기술자두 마이크로프로세서에서 메모리 세그먼트와 그 위치에 대한 정보를 포함하는 8바이트 시퀀스입니다. 선택자(세그먼트 레지스터의 내용)은 설명자 테이블에 지정된 설명자를 식별하는 데 사용됩니다. 80286과 80386 마이크로프로세서의 주요 차이점은 후자에는 두 개의 추가 선택기(FS 및 GS)가 있고 설명자의 가장 중요한 두 바이트가 80386 마이크로프로세서에 대해 정의된다는 것입니다. 또 다른 차이점은 80386 마이크로프로세서 설명자가 80286 마이크로프로세서에서 볼 수 있는 24비트 기본 주소 및 16비트 세그먼트 제한 필드 대신 32비트 세그먼트 기본 주소와 20비트 세그먼트 제한 필드를 사용한다는 것입니다.

80286 마이크로프로세서는 24비트 기본 주소로 16MB 메모리 영역을 지정하고 16비트 제한 필드가 있는 64KB 세그먼트 길이를 갖습니다. 80386 마이크로프로세서는 32비트 기본 주소를 사용하여 4GB 메모리 영역을 지정하고 세그먼트 크기는 20비트 제한 필드에 의해 결정됩니다. 다른 방법들. 설명자의 세분성 비트 G(세분성) 또는 그렇지 않은 경우 분수 비트는 세그먼트 크기에 대한 측정 단위를 결정합니다. G = 0이면 크기가 바이트로 지정되고 G = 1이면 4K 페이지로 지정됩니다. 따라서 20비트 제한 필드가 있는 세그먼트 크기는 각각 1MB 또는 4GB가 될 수 있습니다.

G 입도 비트는 80386 마이크로프로세서로 시작하는 디스크립터에 나타납니다. G 비트 = 0이면 제한 필드에 저장된 값이 직접 세그먼트 크기 제한으로 처리되어 1MB의 모든 00000H-FFFFFG 세그먼트에 액세스할 수 있습니다. 분절. G 비트 = 1이면 제한 필드에 저장된 숫자는 00000XXXH-FFFFFXXXH로 해석되며, 여기서 XXX는 000H와 FFFH 사이의 값입니다. 이것은 4KB 청크에서 0바이트에서 4GB까지의 세그먼트 크기에 대한 액세스를 제공합니다. 제한 값 00001H는 섹터 크기 제한이 G 비트가 1일 때 4KB이고 G 비트가 0일 때 1바이트임을 나타냅니다. 예를 들어 물리적 주소 10000000H에서 시작하는 세그먼트가 있습니다. 한계 값이 00001H이고 G 비트 = 0인 경우 이 세그먼트는 10000000H에서 시작하여 10000001H에서 끝납니다. 동일한 한계 값(00001H)으로 G 비트 = 1이면 세그먼트는 위치 100000000H에서 시작하여 10001FFFH에서 끝납니다.

무화과에. 그림 6.6은 80386 마이크로프로세서가 선택기와 설명자를 사용하여 보호 모드에서 메모리 세그먼트를 지정하는 방법을 보여줍니다. 표시된 주소 지정은 80286 마이크로프로세서가 세그먼트를 지정하는 방식과 동일하며 차이점은 80386 마이크로프로세서에서 사용할 수 있는 세그먼트의 크기입니다. 선택기의 상위 13비트(비트 15-3)는 설명자 테이블에서 설명자를 선택하는 데 사용됩니다. 테이블 표시기 비트 TI(테이블 표시자)(선택기의 비트 2)는 디스크립터 테이블의 유형을 나타냅니다. TI 비트 = 1이면 로컬, TI 비트 = 0이면 전역입니다. RPL(요청된 권한 수준)의 하위 2비트( 선택기의 비트 1-0)은 섹터에 액세스하기 위해 요청된 권한 수준을 결정합니다.

선택기는 13비트 코드를 사용하여 설명자에 액세스하기 때문에 각 테이블(로컬 또는 전역)에는 8192개 이하의 설명자가 포함됩니다. 80386 마이크로프로세서의 가능한 세그먼트 크기가 4GB에 도달하기 때문에 두 개의 설명자 테이블을 사용하여 한 번에 16,384 세그먼트에 액세스할 수 있습니다. 이 모든 것을 통해 80386 마이크로프로세서는 최대 64TB(1TB = 1024MB)의 가상 메모리를 지원할 수 있습니다. 물론 최대 4GB 용량의 메모리 시스템이 실제로 존재할 수 있습니다. 프로그램이 특정 시점에 4GB 이상의 메모리를 필요로 하는 경우 디스크 드라이브 또는 기타 대형 저장 장치에서 필요한 데이터를 메모리 시스템으로 펌핑할 수 있습니다.

80386 마이크로프로세서는 전역( GDT) 및 지역 (LDT)설명자. 세 번째 디스크립터 테이블은 인터럽트 디스크립터( 갖다) 또는 밸브(게이트). 80386 마이크로프로세서 디스크립터의 처음 6바이트는 80286 마이크로프로세서의 것과 동일하므로 아래에서 위로 소프트웨어 호환성을 보장합니다. 80286 마이크로프로세서 설명자의 상위 2바이트는 예약되어 있으며 값 00H를 포함하고 있습니다. 마이크로 프로세서 80286 및 80386에 대한 설명자는 그림 1에 나와 있습니다. 6.7.

80386 마이크로프로세서 설명자는 32비트 기본 주소, 20비트 세그먼트 제한 필드, 세그먼트 제한 승수(1 또는 4K 배) 또는 제한이 설정되는 단위를 결정하는 세분성 비트 G를 포함합니다. 바이트(G = 0) 또는 각각 4K 페이지(G = 1). 다음은 80386 마이크로프로세서 설명자 필드의 목적입니다.

베이스(B31-B0)

Base 필드는 80386 마이크로프로세서의 물리적 4GB 주소 공간에 있는 세그먼트의 기본(시작) 32비트 주소를 지정합니다.

한계(L19-L0)

제한 필드는 세분성 비트가 지 = 0또는 G = 1인 경우 4K 페이지에서. G 비트 = 0인 경우 1바이트에서 1MB까지 또는 G 비트 = 1인 경우 4KB에서 1GB까지의 모든 세그먼트 크기를 허용합니다. 분절.

액세스 권한

액세스 권한 필드는 권한 수준 및 세그먼트에 대한 기타 정보를 정의합니다. 이 바이트는 다음과 다릅니다. 다른 유형설명자이며 각각에 대해 지정됩니다.

세분성 비트 G(세분성)는 세그먼트 제한 필드에 대해 1 또는 4K의 승수를 선택합니다. G 비트 = 0이면 승수는 1이고 G 비트 = 0이면 승수는 4K입니다.

D(기본 크기) 비트는 사용되는 피연산자와 레지스터의 기본 크기를 결정합니다. D = 0이면 80286 마이크로프로세서에서와 ​​같이 16비트입니다. D = 1이면 80386 마이크로프로세서에서와 ​​같이 32비트 이 비트는 32비트 데이터 및 인덱스 레지스터에 접두사가 필요한지 여부를 결정합니다. D = 0이면 32비트 레지스터에 액세스하고 32비트 포인터를 사용하려면 접두사가 필요합니다. D = 1이면 16비트 레지스터와 16비트 포인터에 액세스하려면 접두사가 필요합니다. 어셈블리 언어에서 세그먼트 지시문과 함께 사용되는 use16 및 use32 속성은 D 비트 설정을 제어합니다. 리얼 모드연산은 항상 레지스터가 16비트라고 가정하므로 32비트 레지스터 또는 포인터로 주소가 지정된 모든 명령어에는 접두사를 붙여야 합니다.

AVL(사용 가능) 비트를 사용할 수 있습니다. 운영 체제필요에 따라 사용할 수 있습니다. 프로세서에 의해 적용되거나 구문 분석되지 않으며 응용 프로그램에서 사용하기 위한 것입니다.

두 종류의 디스크립터가 있습니다: 코드 및 데이터 세그먼트 디스크립터와 시스템 세그먼트 디스크립터. 첫 번째 설명자는 데이터, 스택 및 코드 세그먼트를 정의합니다. 시스템 세그먼트 설명자는 시스템 테이블, 작업 및 게이트에 대한 정보를 저장하기 위한 것입니다.

슈퍼컴퓨터는 항상 특별한 종류의 컴퓨팅 기술로 간주되어 왔습니다. 그런 기계는 특이한 문제를 해결하기 위해 만들어졌기 때문에 예산이 비정상적이었고, 결과적으로 무한한 가능성을 느꼈습니다. 문제는 항상 돈에만 있는 것처럼 보였고, 또 다른 수천만 또는 이백만을 부으면, 생산성을 끝없이 높일 수 있습니다. 최근 몇 개월과 몇 년 사이에 일어난 일과 지구를 위협하는 가장 강력한 500명의 새로운 목록(당신이 알고 있는 TOP500.org)은 그러나 "무한"이 끝났다고 주장할 이유를 제공합니다. 슈퍼컴퓨터는 현대 최초의 컴퓨터 시스템반도체 전자 장치의 가능성의 물리적 한계에 부딪혔습니다. 그리고 무엇보다도 이제 그 난국에서 벗어날 방법을 찾아야 합니다. 새로운 기술컴퓨팅.

그러한 광범위한 진술에 대한 공식적인 단서는 위 목록의 컴파일러가 알아차린 이상한 패턴이었습니다. 상위 500위는 1년에 두 번 업데이트되며, 최고 위치그의 최신 버전, 지난 주에 게시되었으며 거의 ​​변경 사항이 없었습니다(1개만 상위 10개에 추가됨 새로운 회원, 모든 500개 기계의 총 성능이 0.223에서 0.250엑사플롭으로 약간 증가했습니다. 그러나 질적인 일반적인 변화가 있었습니다. 목록의 "무게 중심"이 목록의 맨 위로 이동했거나 더 간단히 말해서 주요 컴퓨팅 성능은 이제 상대적으로 작은(역사적으로 - 기록 - 속보) 가장 빠른 기계의 수. 다음과 같습니다. 상위 450대 누적 전력의 절반은 목록의 처음 17대 컴퓨터에서만 제공됩니다. 이 추세는 어제 나타난 것이 아니라 지난 6년 동안 생각해볼 필요가 있을 정도로 많이 형성되었습니다.

단 하나의 명확한 설명은 없습니다. 가장 강력한 것 중 하나는 재정적 문제입니다. 최근 몇 년 동안 슈퍼컴퓨터는 훨씬 더 비싸졌고(예를 들어 0 중반의 비트 수에 비해 약 4배) 이제 비교적 소수의 정부에서만 사용할 수 있습니다. 대행사 및 대기업. 또한 너무 강력하지 않은 새 기계의 설계자와 구매자는 이미지를 손상시키지 않기 위해 등급에 포함되지 않습니다. 따라서 더 멀어 질수록 추세가 더 밝아집니다. 강한 것은 더 강해지고 약한 것은 비선형적으로 빠르게 뒤쳐집니다.

중요한 결론은 슈퍼컴퓨터가 더 이상 필요하지 않다는 것입니다. 그러나 무어의 불변의 법칙은 어떻습니까? 더 단단한 포장과 더 높은 성능으로 가격 상승을 보상해야 하지 않습니까? 여기서 가장 큰 의혹이 나온다. 무어의 법칙은 여전히 ​​유효하지만 대부분의 플레이어가 사용하기에는 이미 너무 비싸다는 결승점에 도달한 것 같습니다.

과학자들은 결과를 다음과 같이 공식화합니다. 이전에는 달성할 수 없었던 컴퓨팅 속도를 한 번에 제공할 획기적인 기술이 없는 경우 슈퍼컴퓨터 산업은 광대한 경로를 따라 이동해야 합니다. 더군다나 이 방법은 사용자의 욕구를 만족시킬 수 없기 때문에(그리고 바이터의 수는 전통적으로 데이터 처리를 위한 도구일 뿐만 아니라 기업 및 국가 권위를 확립하는 방법이기도 함) 디자이너는 그래픽에 의존했습니다. 액셀러레이터는 어떤 작업도 해결하는 데 적합하지 않습니다. GPU를 적극적으로 사용하는 슈퍼컴퓨터의 수는 지난 5년 동안 10배나 증가했습니다!

그리고 여기에서 20년 전 상위 500위권의 출판 초기부터 슈퍼컴퓨터 시스템의 성능을 측정하는 주요 척도였던 유명한 Linpack 테스트의 향후 교체를 상기하는 것이 매우 편리합니다. 이를 새로 개발한 HPCG(High Performance Conjugate Gradient) 테스트로 대체할 것을 제안합니다. 이유: 1979년에 "Fortran"으로 작성된 Linpack은 측정 중인 시스템의 실제 성능이 불만족스럽고 불일치가 커지고 있음을 반영합니다.

일반적으로 공동 저자인 Jack Dongarra도 Linpack과 HPCG의 차이점을 명확하게 설명할 수 없습니다. 그러나 크게 단순화하면 차이점을 다음과 같이 줄일 수 있습니다. Linpack은 주로 순수 계산을 수행하는 슈퍼컴퓨터의 능력(GPU 가속기가 잘 함)을 평가하는 반면 HPCG는 내부 통신 성능도 고려합니다. 실용적인 과학 및 기술 문제(즉, 빈번한 불규칙 메모리 액세스, 예를 들어)를 해결합니다.

HPCG가 대체되지 않으면 몇 년의 "실행" 후에 Linpack을 보완할 것입니다(관심 있는 사람들을 위해 소스 코드는 Sandia Labs 웹사이트에서 BSD 라이선스로 제공됩니다). 그리고 이것은 전체 상위 500대 목록의 상당한 재편성, 더 이상 Linpack에 최적화되지 않은 슈퍼컴퓨터 아키텍처에 대한 조정, 더 높은 공정한 평가를 받기 시작할 소규모 참가자의 복귀로 이어질 수 있습니다. 물론 후자를 특별히 기대해서는 안 되지만, 결국 획기적인 컴퓨팅 기술은 아직 없습니다!

그리고 돌파구가 없으면 지루함이 Numberbiters의 세계를 지배했습니다. 더 강력한 기계를 만드는 방법은 무엇입니까? 더 많은 프로세서를 배치하십시오. 더 많은 돈. 그러나 현실은 특정(그리고 이미 달성된) 수준 이상의 실제 작업을 병렬화해도 속도 향상을 가져오지 않으며 심지어 가장 강력한 슈퍼컴퓨터이미 너무 비싸서 위에서 논의한 대로 건설 및 운영을 단위별로 감당할 수 있습니다. 결과적으로 슈퍼컴퓨터 스트림이 고갈됩니다. 이것은 기술 시대의 끝, 우리가 지난 50년 동안 알고 있던 반도체의 종말입니다. 그리고 컴퓨터 성능을 새로운 수준으로 끌어올릴 수 있는 기술이 있을 때까지 우리는 정체되어 있고 매년 몇 퍼센트씩 증가할 것입니다.

무엇이 그러한 돌파구를 제공할 수 있습니까? 서양 언론은 Stanford의 사람들이 1차원 극성 트랜지스터(CNFET)를 구축할 수 있었던 나노튜브를 응시하고 있으며, 기능이 보장된 미세 회로를 만드는 방법을 배웁니다(주요 문제: 여전히 피하기 어렵습니다. 큰 수잘못 배치된 나노튜브) 및 MIPS 호환 컴퓨터를 구축할 수도 있습니다. 이는 지난주 ACM/IEEE SC13 슈퍼컴퓨팅 컨퍼런스에서 시연되었습니다("Computerra"는 이 프로젝트에 대해 썼습니다: "" 참조). 앞으로 이 기술은 반도체 칩에 단위 전력소모량당 13배의 성능을 제공할 수 있게 된다. 여기 나노튜브를 다루는 사람이 있는지 궁금합니다.

많은 매니아 컴퓨터 기술그들은 프로세서 주파수가 메가헤르츠로 측정된 시간을 경험으로 기억하고 제조업체(즉, Intel과 AMD)가 이 지표에서 서로 앞서려고 노력했습니다. 그런 다음 프로세서의 전력 소비 및 방열 수준이 너무 높아져서 이 경쟁을 계속할 수 없게 되었습니다. 최근 몇 년 동안 프로세서 코어 수를 늘리기 시작했지만 결과적으로 이러한 성장이 수익성이 없으면 한계에 도달했습니다. 이제 최대 와트당 전력을 얻는 것이 성능의 주요 요소가 되었습니다.

이러한 모든 변화는 개발자들이 기존 프로세서의 추가 개발의 물리적 한계에 직면했기 때문에 발생하지 않았습니다. 오히려 일부 영역(주로 에너지 효율성)의 진행이 기능 및 명령 세트 확장과 같은 다른 영역의 진행보다 느리다는 사실로 인해 성능이 제한되었습니다. 그러나 이제는 프로세서의 물리적 한계와 컴퓨팅 파워이미 가까이? University of Michigan의 Igor Markov는 Nature 저널의 기사에서 이 문제를 다루었습니다.

장애물 고려

Markov는 순수한 물리적 한계에 기초하여 일부 과학자들이 무어의 법칙이 앞으로 100년 동안 지속될 것이라고 계산했다고 지적합니다. 반면에 ITRS(International Technology Roadmap for Semiconductors) 그룹에서는 수십 년의 수명을 제공합니다. 그러나 ITRS 예측에 의문이 제기될 수 있습니다. 이 그룹은 Core2 칩 시대에 주파수가 10GHz인 프로세서를 예측하는 데 사용되었습니다. 이러한 불일치의 이유는 많은 심각한 신체적 제한이 작동하지 않았기 때문입니다.

예를 들어, 기능 단위의 크기에 대한 극한 한계는 원자 1개이며, 이는 궁극적인 물리적 한계입니다. 그러나 그 한계에 도달하기 훨씬 전에 물리학은 전자의 흐름을 정확하게 제어하는 ​​능력을 제한합니다. 다시 말해서, 회로는 잠재적으로 하나의 원자만큼 얇을 수 있지만 그 동작은 훨씬 더 빨리 신뢰할 수 없게 될 것입니다. 더 얇은 제조 프로세스(더 작은 트랜지스터)로 이동하기 위한 인텔의 지속적인 작업의 대부분은 구조화 방법을 파악하는 것입니다. 개별 구성 요소계속해서 예상대로 작동할 수 있습니다.

마르코프 주장의 핵심은 다음과 같이 이해할 수 있습니다. 물리적 한계가 있지만 현대 반도체 발전을 가로막는 문제와 관련이 없는 경우가 많습니다. 대신 우리는 종종 우회할 수 있는 더 부드러운 제한에 직면해 있습니다. 그는 “진행을 방해하는 어떤 한계가 닥쳤을 때 그 본질을 이해하는 것이 그것을 극복하는 열쇠”라고 씁니다. "일부 제한 사항은 단순히 무시할 수 있지만 다른 제한 사항은 가상으로 남아 있고 경험적 데이터에만 기초합니다. 그들은 설치하기 어렵다 높은 학위확실성."

결과적으로 개발의 장벽으로 보이는 것은 종종 창의적인 사고와 향상된 기술의 결합으로 극복됩니다. Markov의 예는 회절 한계입니다. 처음에는 아르곤-불소 레이저가 65나노미터보다 얇은 구조를 식각하는 것을 방지해야 했습니다. 그러나 하위 파장 회절을 사용하여 현재 동일한 레이저를 사용하여 14nm 구조를 연구하고 있습니다.

현대의 한계는 어디입니까?

Markov는 가장 큰 한계라고 생각하는 두 가지 문제, 즉 에너지와 통신에 주의를 기울입니다. 에너지 소비 문제는 현대 회로에서 사용하는 에너지 양이 물리적 크기의 감소에 비례하여 감소하지 않는다는 사실에서 비롯됩니다. 이것의 주요 결과: 사용하지 않을 때 칩의 일부를 차단하려는 노력. 그러나 현재의 발전 속도에 따라 이 접근법주어진 시간에 대부분의 칩은 비활성 상태이므로 "다크 실리콘"이라는 용어가 사용됩니다.

에너지 사용량은 칩의 작동 전압에 비례하며 트랜지스터는 단순히 200mV 미만에서 작동할 수 없습니다. 이제 전압이 5배 더 높으므로 감소의 여지가 있습니다. 그러나 작동 전압을 낮추는 과정이 더디게 진행되어 물리적 한계보다 기술적 한계에 다시 도달할 수 있습니다.

에너지 사용 문제는 통신 문제와 관련이 있습니다. 칩의 물리적 볼륨의 대부분과 전력 소비의 대부분은 다른 블록 또는 나머지 컴퓨터 간의 상호 작용에 사용됩니다. 여기서 우리는 물리적 한계에 도달합니다. 칩의 신호가 빛의 속도로 이동하더라도 5GHz 이상의 칩은 칩의 한쪽에서 다른 쪽으로 정보를 전송할 수 없습니다. 오늘날의 기술로 우리가 할 수 있는 최선은 서로 자주 통신하는 블록이 물리적으로 가까운 곳에 칩을 설계하는 것입니다. 방정식에 3차원(즉, 3차원 사슬)을 포함하면 도움이 될 수 있지만 미미합니다.

무엇 향후 계획?

Markov는 다가오는 변화에 대해 특별히 낙관적이지 않습니다. 그는 가까운 장래에 배선용 탄소 나노튜브와 통신용 광학 상호 연결의 사용이 물리적 한계를 피하는 데 도움이 되는 추세를 계속할 것으로 기대합니다. 그러나 그는 이러한 두 기술 모두 고유한 한계가 있다고 지적합니다. 탄소 나노튜브는 직경이 나노미터까지 작을 수 있지만 크기 제한도 있습니다. 그리고 광자가 통신에 사용된다면 하드웨어그리고 에너지.

많은 사람들이 양자 컴퓨터에 희망을 걸고 있지만 Markov는 그들의 팬이 아닙니다. " 양자 컴퓨터, 디지털 및 아날로그 모두 틈새 응용 프로그램에서만 유망하며 분류 및 기타 특정 작업을 신속하게 수행할 수 없기 때문에 일반 컴퓨팅에서는 상당한 성능을 제공하지 않습니다.”라고 그는 말합니다. 문제는 이 장비가 절대 영도에 가까운 온도에서 가장 잘 작동하지만 실온에서는 성능이 매우 낮다는 것입니다.

그러나 모든 계산은 어느 정도 양자 효과에 의존하며 Markov는 양자 시스템에서 배울 수 있는 유용한 것이 있다고 믿습니다. "개별 양자 장치는 스위칭을 위한 에너지 한계에 접근하고 있는 반면, 비양자 장치는 10배 뒤쳐지고 있습니다." 분명히, 양자 시스템의 작은 정도의 효율성을 얻는 것이 전체 칩 내에서 에너지 소비의 큰 시작을 만들 수 있습니다.

또 다른 Markovian 물리적 한계: 약간의 정보를 지우는 것은 피할 수 없는 열역학적 비용이 있습니다. 계산은 항상 에너지를 소모합니다. 이 제한을 피하기 위한 한 가지 아이디어는 구성 요소가 초기 상태계산 후. 이 방법을 사용하면 적어도 이론상으로는 사용된 에너지의 일부를 회수할 수 있습니다.

이 아이디어는 완전히 이론적인 것은 아닙니다. Markov는 열역학적 한계 아래에서 가역적 동작과 에너지 소산을 제공하기 위해 초전도 회로(그는 "매우 이국적"이라고 부름)를 사용한 작업을 인용합니다. 물론 여기에는 4마이크로켈빈만 사용되므로 실제 작동보다 회로의 기능을 확인하는 데 더 많은 에너지가 소비됩니다.

물리학 너머

물리학과 재료 과학은 하드웨어에 많은 제한을 두지만 수학은 하드웨어로 할 수 있는 일에 한계를 둡니다. 정확한 과학이라는 명성에도 불구하고 수학적 한계는 물리적 한계보다 훨씬 모호합니다. 예를 들어, 수년간의 노력에도 불구하고 복잡성 클래스 P와 NP의 평등에 대한 답은 여전히 ​​없습니다. 그리고 일부 알고리즘이 일반적인 경우에 가장 효율적이라는 것을 증명할 수 있지만, 대안적인 계산 접근 방식이 더 잘 수행되는 문제 범위를 찾는 것도 쉽습니다.

Markov가 여기서 보는 가장 큰 문제는 코드에서 더 많은 병렬 처리를 추출하기 위한 투쟁입니다. 조차 저렴한 스마트폰지금 작업 중입니다 멀티 코어 프로세서, 그러나 지금까지 그들의 사용은 최적이 아닙니다.

일반적으로 가장 큰 한계는 인간의 마음인 것 같다. Markov는 환상적인 신기술이 등장할 것으로 보지는 않지만 현재의 장애물이 다른 영역의 발전을 통해 제거되거나 우회될 것이라고 낙관합니다.

편집자로부터. 우리의 단골 독자들은 때때로 가장 유명하고 고전적인 기사와 컴퓨터 과학 분야의 작품이 우리 신문에 나온다는 것을 알고 있습니다. 약 15년 ​​동안 우리가 인쇄하고자 했던 "물리적 컴퓨팅의 한계"입니다. 그러나이 멋진 기사는 어떻게 든 다른 자료의 구성 측면에서 장소를 찾지 못했고 "그냥"인쇄되어 신문에서 너무 이상하게 보일 것입니다. 그리고 그런 행운! 이 기사는 고급 교육 과정의 마지막 강의에서 러시아어로 이 주제에 대한 몇 안 되는 정보 출처 중 하나로 언급되었습니다. 물론 기회를 놓칠 수는 없었다. 이 멋진 인기 있는 자료를 탐색하는 것을 즐기시기 바랍니다. 결국, 출판된 지 24년(!)이 지났지만, 물론 기술이 파섹에 의해 발전했지만 "구식"이 되지는 않았습니다! 그러나 기본법은 기술에도 너무 가혹합니다!

계산 과정을 제한하는 물리적 요인은 무엇입니까? 예를 들어 하나의 논리적 단계를 수행하는 데 필요한 제한적인 최소 에너지가 있습니까? 분명히 그러한 최소값은 존재하지 않지만 여전히 열려 있는 다른 질문이 있습니다.

수행 여부에 관계없이 계산 전자 기기, 일반적인 계정이나 뇌와 같은 생물학적 시스템에서 물리적 과정입니다. 다른 물리적 프로세스와 동일한 개념이 적용됩니다. 주어진 계산을 수행하는 데 얼마나 많은 에너지가 필요합니까? 얼마나 걸릴까요? 컴퓨팅 장치는 어떤 크기여야 합니까? 즉, 계산 프로세스의 물리적 한계는 무엇입니까?

물론 이러한 질문을 하는 것이 대답하는 것보다 훨씬 쉽습니다. 우리가 관심을 갖고 있는 제약 조건은 우리가 다루고 있는 실제 제약 조건과 다소 거리가 있습니다. 현대 기술. 따라서 우리의 연구가 엔지니어나 기술자의 작업에 도움이 된다고 주장할 수 없습니다. 이러한 연구는 본질적으로 더 이론적입니다. 우리의 목표는 이 처리의 수단과 방법에 관계없이 모든 유형의 정보 처리를 규율하는 일반 법률을 식별하는 것입니다. 우리가 발견한 모든 한계는 현재 사용 중인 기술이 아니라 기본적인 물리적 원리에만 기초해야 합니다.

근본적인 한계에 대한 이러한 탐색은 이미 선례가 있습니다. 1940년대에 Bell Telephone Laboratories의 직원이었던 K. Shannon은 소음이 있는 상태에서 통신 채널을 통해 전송할 수 있는 정보의 양에 제한이 있음을 확인했습니다. 이러한 제한 사항은 메시지 인코딩 방식에 관계없이 적용됩니다. Shannon의 작업은 현대 정보 이론의 탄생을 표시했습니다. 훨씬 이전인 지난 세기 중반과 말에 물리학자들은 증기 기관의 효율성에 대한 근본적인 한계를 결정하기 위해 "열역학"이라는 과학을 만들었습니다. 1960년경 Landauer(이 기사의 저자 중 한 명)는 J. Swanson과 함께 IBM에서 일하는 동안 이러한 종류의 분석을 계산 프로세스에 적용하려고 했습니다. 1970년대 중반부터 점점 더 많은 다른 조직의 과학자 그룹이 이 연구에 참여하기 시작했습니다.

계산에 대한 물리적 제약을 분석할 때 정보 이론에서 정의된 의미로 "정보"라는 용어를 사용합니다. 이 정의에 따르면 정보는 이전에 구별되었던 두 가지 상황을 구별할 수 없게 될 때마다 사라집니다. 에 물리적 시스템, 마찰력이 없는 것이 특징인 정보는 파괴될 수 없습니다. 정보가 파괴될 때 일정량의 에너지가 열로 전달되어야 하기 때문입니다. 예를 들어 쉽게 구별할 수 있는 두 가지 물리적 상황을 고려하십시오. 그 중 하나는 바닥에서 1m 높이, 다른 하나는 2m 높이에서 고무 공을 받치고 있는데, 공을 놓으면 바닥에서 떨어지며 튀어 오르게 됩니다. 마찰이 없고 공이 완벽하게 탄성이 있는 경우 관찰자는 항상 공의 초기 상태(이 경우에는 초기 순간에 높이가 얼마였는지)를 알 수 있습니다. 2m 높이에서 떨어진 공은 1m 높이에서 떨어졌을 때보다 더 높이 튀게 됩니다.

그러나 마찰력이 있는 경우 공이 바닥에서 튕겨 나올 때마다 약간의 에너지가 소산되고 결국 공은 튀는 것을 멈추고 바닥에 남아 있게 됩니다. 그런 다음 공의 초기 상태를 결정하는 것은 불가능합니다. 2m 높이에서 떨어진 공은 1m 높이에서 떨어진 공과 완전히 동일합니다. 정보는 다음 결과로 손실됩니다. 에너지 분산.

기존의 컴퓨팅 장치, 주판 및 마이크로프로세서는 작동 중에 에너지를 발산합니다. 마이크로프로세서의 논리 게이트에 의한 에너지 소실은 정보의 소멸로 인한 것입니다. 다른 이유도 있습니다. 마이크로프로세서 전자 회로는 정보를 처리하지 않고 단순히 저장하는 경우에도 에너지를 소비합니다. 제거할 수 없는 마찰력으로 인해 계정이 소산됩니다. 정적 마찰이 없는 경우 "뼈"는 분자의 임의적인 열 운동의 영향으로 위치가 변경됩니다. 정적 마찰은 "뼈"의 속도에 의존하지 않는 특정 최소 힘을 나타내므로 주판은 아무리 천천히 작동하더라도 최소한의 에너지가 필요합니다.

정보의 소멸에 대한 또 다른 예를 들어보겠습니다. "2 + 2" 표현식은 "= 4" 표현식보다 더 많은 정보를 포함합니다. 숫자 4가 두 개의 숫자를 더하여 얻은 것이라는 사실만 알고 있다면 1 + 3, 2 + 2, 0 + 4 또는 다른 숫자 쌍 중 어떤 숫자가 추가되었는지 확인할 수 없습니다. 출력 정보는 이미 입력에 암시적으로 포함되어 있으므로 정보를 생성하는 계산이 없다고 가정할 수 있습니다.

기존 논리 게이트는 불필요한 정보를 버리기 때문에 에너지를 발산합니다. 예를 들어 AND 게이트의 출력이 0이면 입력에 무엇이 있었는지 확인할 수 없습니다.

실제로 현대에서 수행된 계산은 컴퓨터, 정보를 파괴하는 많은 작업의 도움으로 수행됩니다. 이른바 밸브 그리고 "는 각각 1 또는 0과 같은 신호로 설정할 수 있는 두 개의 입력 라인과 하나의 출력 라인이 있는 장치입니다. 신호 값은 입력 값에 의해 결정됩니다. 두 입력이 모두 1이면 출력도 1이 됩니다. 하나 또는 두 입력이 모두 0이면 출력은 0이 됩니다. 게이트의 출력이 0일 때마다 우리는 정보를 잃습니다. 세 가지 가능한 상태는 입력 라인(0과 1, 1과 0 또는 0과 0)이었습니다. 실제로 출력보다 입력이 많은 논리 게이트는 출력 상태에서 입력 상태를 결정할 수 없기 때문에 필연적으로 정보를 잃게 됩니다. 따라서 이러한 "논리적으로 되돌릴 수 없는" 밸브를 사용할 때마다 우리는 에너지를 환경. 컴퓨터 메모리에서 데이터 1비트를 지우는 것은 컴퓨팅에서 자주 사용되는 또 다른 작업으로, 본질적으로 소산입니다. 한 비트의 데이터를 지울 때 이 비트의 이전 상태에 대한 모든 정보를 잃게 됩니다.

그러나 컴퓨팅에서 비가역 논리 게이트와 지우기 작업의 사용을 피할 수 없는지에 대한 질문을 하는 것이 공정합니다. 그렇다면, 우리가 하는 모든 계산은 특정 최소량의 에너지를 소산해야 합니다.

Benne(이 기사의 저자 중 한 명)이 1973년에 보여주듯이 되돌릴 수 없는 논리적 요소 없이 계산에서 정보를 지우지 않고 할 수 있습니다. 그 이후로 이 조항의 유효성은 여러 모델에서 입증되었습니다. MIT의 Edward Fredkin의 이름을 따서 명명된 Fredkin 게이트와 같은 소위 "가역 논리 게이트"에 기반한 모델을 설명하는 것이 가장 쉽습니다. 밸브에는 3개의 입력 라인과 3개의 출력 라인이 있습니다. "제어 채널"이라고 하는 한 입력 라인의 신호는 게이트를 통과할 때 변경되지 않습니다. 제어 채널의 신호가 0으로 설정되면 다른 두 라인의 입력 신호도 변경 없이 통과합니다. 그러나 제어 라인이 1이면 다른 두 출력 라인이 전환됩니다. 한 라인의 입력 신호가 다른 라인의 출력이 되고 그 반대의 경우도 마찬가지입니다. 입력 상태는 항상 출력 상태에서 결정할 수 있기 때문에 Fredkin 게이트는 정보를 잃지 않습니다.

Fredkin은 컴퓨터 작동에 필요한 모든 논리적 장치가 Fredkin 게이트의 적절한 조합의 형태로 구축될 수 있음을 보여주었습니다. 계산을 수행하기 위해 일부 게이트의 특정 입력 라인은 특정 값으로 미리 설정되어야 합니다(왼쪽 아래 그림 참조).

가역적인 Fredkin 논리 게이트는 에너지를 소산하지 않을 수 있습니다. 입력의 상태는 출력의 상태에서 결정할 수 있습니다. 밸브에는 밸브에 의해 상태가 변경되지 않는 "제어"라인이 있습니다. 제어 라인이 0이면 다른 두 라인의 신호 값도 변경되지 않지만 제어 라인이 1이면 라인 A의 입력이 라인 S의 출력이되고 그 반대의 경우도 마찬가지입니다. 가역 밸브가 제대로 연결되면 기존의 비가역 장치가 수행하는 모든 기능을 실현할 수 있습니다. AND 연산(오른쪽)을 구현하기 위해 하나의 입력은 0으로 설정되고 "가비지"라고 하는 두 개의 출력 비트는 일시적으로 무시됩니다. 계산이 완료되면 이 비트를 사용하여 게이트를 반대 방향으로 작동하여 컴퓨터를 원래 상태로 되돌립니다.

Fredkin 게이트는 그들이 모델링하는 것보다 더 많은 출력 라인을 가지고 있습니다. 따라서 계산 과정에서 "쓰레기 비트"가 형성되는 것처럼 보입니다. 결과를 생성하는 데 필요하지 않은 정보 비트. 다른 계산을 시작하기 전에 컴퓨터에서 이러한 비트를 지워야 합니다. 그러나 그것들을 지우면 우리가 피하고 싶었던 바로 그 에너지의 소멸이 일어나게 될 것입니다.

사실, 이 비트는 매우 중요한 역할을 합니다. 계산 결과를 받아 일반적인 출력 라인에서 기계에서 복사한 후에는 반대 방향으로 프로세스를 실행해야 합니다. 즉, "정크 비트"와 계산 중에 컴퓨터가 받는 출력 비트를 기계의 "뒷면"에서 "입력"으로 사용합니다. 이것은 모든 컴퓨터 논리 게이트가 가역적이기 때문에 가능합니다. 역방향으로 계산하는 과정에서 정보의 손실이 없으므로 에너지를 낭비할 필요가 없습니다. 결국 컴퓨터는 계산이 시작되기 전의 상태로 돌아갑니다. 따라서 "계산 주기"를 완료하는 것이 가능합니다. 즉, 컴퓨터를 앞으로 구동한 다음 에너지 손실 없이 원래 상태로 돌아갈 수 있습니다.

지금까지 우리는 이러한 작업을 수행하는 물리적 장치를 건드리지 않고 추상적인 논리적 작업에 대해 이야기했습니다. 그러나 Fredkin 원리에 따라 작동하는 물리적 장치를 상상하는 것은 어렵지 않습니다. 이러한 장치에서 정보를 전송하기 위한 채널은 튜브 형태로 제공됩니다. 차례로, 약간의 정보는 튜브의 특정 부분에 볼의 유무로 표시됩니다. 볼의 존재는 1로, 부재는 0으로 해석됩니다.

제어선은 길이 방향으로 중간에 분할된 튜브의 좁은 부분으로 표시됩니다. 볼이 튜브의 분할 부분에 들어갈 때 튜브의 측벽을 밀어서 전환 장치를 작동시킵니다. 이 스위칭 장치는 두 개의 다른 튜브에 있을 수 있는 입력 비드를 안내합니다. 컨트롤 튜브에 볼이 있으면 입력 라인을 통해 들어오는 볼은 자동으로 다른 튜브로 전송됩니다. 제어 튜브에 볼이 없을 때 스위칭 장치가 꺼지도록 하기 위해 제어 튜브의 분할 반쪽이 스프링으로 서로 눌립니다. 볼이 컨트롤 튜브에 들어가 스프링을 압축할 때 그렇게 하기 위해 약간의 에너지를 소비해야 합니다. 그러나 이 에너지는 손실되지 않습니다. 컨트롤 볼이 분할 튜브를 떠나고 스프링이 해제될 때 다시 제공됩니다.

모든 공은 말하자면 서로 연결되어 있고 하나의 메커니즘에 의해 앞으로 밀려서 동기식으로 움직입니다. 그렇지 않으면 다양한 입력 및 제어 볼이 동시에 논리 게이트에 도달하도록 보장할 수 없습니다. 어떤 의미에서 계산 과정은 같은 축에 단단히 고정되어 있는 두 바퀴의 움직임과 같이 1자유도의 움직임과 유사합니다. 계산이 완료되면 모든 볼을 반대 방향으로 밀어 앞으로 진행하는 모든 작업을 제거하고 컴퓨터를 원래 상태로 되돌립니다.

장치가 이상적인 점성 유체에 완전히 잠겨 있으면 볼에 작용하는 마찰력은 속도에 비례하지만 정적 마찰은 없습니다. 따라서 볼의 느린 움직임에 만족하면 마찰력이 매우 작아집니다. 모든 기계 시스템에서 마찰력을 극복하기 위한 일은 마찰력과 신체가 이동한 거리의 곱과 같습니다. (따라서 수영하는 사람의 속도에 관계없이 거리가 동일하게 유지된다는 사실에도 불구하고 수영자가 특정 거리를 더 빨리 수영할수록 더 많은 에너지를 소비합니다.) 공이 저속으로 Fredkin 밸브를 통과하면 마찰력은 공의 속도에 정비례하기 때문에 이동 중에 수행된 일(힘 거리의 곱)은 매우 작습니다. 사실, 단순히 계산 프로세스의 해당 속도 저하로 인해 임의적으로 적은 에너지를 소비할 수 있습니다. 따라서 우리는 주어진 계산을 수행하기 위해 소비되어야 하는 최소한의 에너지 요구량이 없다는 결론에 도달합니다.

Fredkin 밸브의 이상적인 물리적 모델: 튜브는 도체의 역할을 하며 볼의 유무는 1 또는 0으로 해석됩니다. 튜브의 좁은 분할 부분은 제어 채널입니다. 공이 공을 치면 튜브의 벽이 측면으로 분기되어 스위칭 메커니즘이 작동합니다. 후자는 차례로 도착하는 공을 A 라인에서 B 라인으로 또는 그 반대로 전송합니다. 볼이 없을 때 두 개의 스프링이 제어 채널을 차단합니다. 이러한 밸브는 작동을 수행하기 위해 정지 마찰이 필요하지 않습니다. 점성 액체에 잠길 수 있으며 마찰력은 볼의 속도에만 의존합니다. 이 경우 소산되는 에너지는 임의로 작을 수 있습니다. 소산되는 에너지의 양을 줄이려면 밸브를 통과하는 볼의 속도를 줄이기만 하면 됩니다.

컴퓨팅 장치의 고려된 모델에서 마찰로 손실되는 에너지는 이 장치가 충분히 천천히 작동하면 매우 작습니다. 마찰 없이 계산할 수 있는 훨씬 더 이상적인 기계의 모델을 구축할 수 있습니까? 아니면 마찰이 계산 과정의 필수 속성입니까? Fredkin은 T. Tofffoli 및 MIT의 다른 전문가와 함께 마찰이 필요하지 않음을 보여주었습니다.

그들은 마찰력이 없는 상태에서 서로를 향해 이상적인 당구공을 쏘아 계산이 수행되는 컴퓨팅 장치 모델에서 이를 시연했습니다. 당구 모델에서 이상적으로 반사되는 "거울"(공의 방향을 변경하는 표면)은 테이블 위의 공의 움직임이 논리 게이트를 통한 정보 비트의 통과를 시뮬레이션하는 방식으로 위치합니다(그림 참조). 이전과 마찬가지로 "컴퓨터"의 특정 부분에 공의 존재는 1로 해석되고 부재는 0으로 해석됩니다. 두 개의 공이 동시에 논리 게이트에 도달하면 충돌하고 궤적이 변경됩니다. 새 경로는 게이트의 출력을 나타냅니다. Fredkin, Tofffoli 및 다른 사람들은 다른 유형의 논리 게이트에 해당하는 거울 배열을 개발하고 모든 유형의 당구 모델을 구축할 수 있음을 증명했습니다. 논리 요소계산에 필요합니다.

당구 컴퓨터 모델: 테이블 표면에서 당구공의 움직임은 논리 게이트를 통한 정보 비트의 통과를 시뮬레이션합니다. 당구 논리 게이트(왼쪽)에서는 공이 서로 충돌하거나 "거울"과 충돌할 때 공의 궤적이 바뀝니다. 밸브의 기능 외에도 미러는 공의 궤적 각도를 변경하거나(a), 측면으로 이동하거나(b), 최종 방향이나 속도를 변경하지 않고 공을 지연시키거나(c), 궤적을 교차하게 할 수 있습니다. (디). 결과 "컴퓨터"가 모든 논리 장치의 기능을 수행하도록 미러를 정렬할 수 있습니다. 예를 들어, 당구 컴퓨터를 만들어 소수를 인식할 수 있습니다. 이러한 컴퓨터(오른쪽)는 임의의 5자리 숫자를 허용합니다. 이진수(이 경우 01101 또는 13) 및 01의 고정 입력 시퀀스. Fredkin 게이트와 마찬가지로 당구 컴퓨터는 사용자가 필요로 하는 것보다 더 많은 출력 비트를 반환합니다. 이 경우 원래 숫자 자체("추가" 출력을 나타냄)와 "답변"을 반환합니다. 입력이 소수이면 시퀀스 10, 합성이면 01입니다.

계산 프로세스를 시작하기 위해 단위를 입력해야 하는 경우 컴퓨터 입력에서 당구공을 쏘습니다. 볼은 동시에 기계에 들어가야 합니다. 공은 완벽하게 탄성이 있기 때문에 서로 충돌할 때 에너지를 잃지 않습니다. 그들은 차에 들어갈 때와 같은 양의 운동 에너지를 가지고 차에서 나올 것입니다.

작동 과정에서 당구 컴퓨터는 Fredkin 게이트에 구축된 컴퓨터와 마찬가지로 "정크 비트"를 생성합니다. 컴퓨터가 작업 실행을 완료한 후 당구 공을 반대 방향으로 반사하여 계산 프로세스를 반대로 합니다. 공은 우리가 차에 보낸 곳과 정확히 같은 차에서 나올 것이며 동시에 같은 속도로 움직일 것입니다. 따라서 공을 자동차로 발사하는 메커니즘은 이제 운동 에너지를 되돌릴 수 있습니다. 이 경우 계산을 수행하여 에너지를 낭비하지 않고 컴퓨터를 원래 상태로 되돌릴 수 있습니다.

당구 컴퓨터에는 한 가지 중요한 단점이 있습니다. 바로 사소한 부정확성에도 매우 민감합니다. 공이 올바른 방향에서 약간 벗어난 상태로 보내지거나 거울이 계산된 것과 약간 다른 각도로 회전하면 공이 원하는 궤적에서 벗어납니다. 하나 이상의 공이 계산된 경로에서 벗어나고 얼마 후 이러한 오류의 결합 효과로 전체 계산 프로세스가 중단됩니다. 완벽하게 탄성이 있고 마찰이 없는 공을 만들 수 있다 하더라도 공을 구성하는 분자의 무작위 열 운동은 수십 번의 충돌 후에 오류를 일으킬 만큼 충분할 수 있습니다.

물론 잘못 움직이는 공을 원하는 궤적으로 되돌리는 수정 장비를 설치하는 것도 가능하겠지만 이 경우 공의 이전 상태에 대한 정보는 파기해야 한다. 예를 들어 거울이 올바른 위치에서 얼마나 벗어났는지에 대한 정보를 파기해야 합니다. 그러나 오류를 수정하기 위해 정보를 제거하는 것은 마찰력이 존재하고 에너지 손실이 가능한 시스템에서만 가능합니다. 따라서 교정 장비는 일정량의 에너지를 발산해야 합니다.

당구 컴퓨터 모델을 사용할 때 직면하는 많은 어려움은 당구공 대신 전자와 같은 초미세 입자를 사용하면 피할 수 있거나 최소한 줄일 수 있습니다. Los Alamos 국립 연구소의 W. Zurek이 지적했듯이 기본 입자의 상태에 제한을 가하는 양자 역학의 법칙 덕분에 입자 운동의 작은 편차 가능성을 제거할 수 있습니다.

지금까지 우리의 추론은 주로 고전 역학에 기초했지만, 몇몇 연구자들은 양자 역학의 원리에 기초한 가역 컴퓨터의 다른 모델을 제안했습니다. 프랑스 Argonne 국립 연구소의 P. Benioff가 처음 제안하고 다른 사람들, 특히 California Institute of Technology의 R. Feynman이 개선한 이러한 기계는 지금까지 가장 일반적인 용어로만 설명되었습니다. 본질적으로 이러한 컴퓨터 모델의 입자는 상호 작용을 제어하는 ​​양자 역학의 규칙이 가역 논리 게이트의 출력에서 ​​신호 값을 예측하는 규칙과 정확히 동일한 방식으로 배열되어야 합니다. 예를 들어 입자의 스핀이 두 개만 가질 수 있다고 가정합니다. 가능한 값: 위쪽(2진수 1에 해당) 및 아래쪽(2진수 0에 해당) 방향. 입자의 스핀 값 사이의 상호 작용은 근처에 있는 입자의 스핀에 따라 주어진 입자의 스핀 값이 변경되는 방식으로 발생해야 합니다. 이 경우 입자의 스핀은 논리 게이트의 출력 중 하나에 해당합니다.

이상에서는 주로 정보 처리에 대해 이야기했습니다. 그러나 컴퓨터는 데이터를 처리할 뿐만 아니라 저장해야 합니다. 정보 저장과 처리 사이의 상호 작용은 아마도 "튜링 기계"(1936년에 그러한 기계를 처음 제안한 Alan M. Turing의 이름을 따서)라는 장치로 가장 잘 설명될 것입니다. 튜링 기계는 현대 컴퓨터가 수행하는 모든 계산을 수행할 수 있습니다. S. Benne(이 기사의 저자 중 한 명)은 Turing 기계, 즉 정보를 잃지 않으므로 작업 과정에서 미리 결정된 소량의 에너지를 소비 할 수 있습니다.

튜링 기계는 컴퓨터가 할 수 있는 모든 계산을 수행할 수 있습니다. 무한히 긴 테이프는 각각 0 또는 1을 포함하는 개별 세그먼트로 나뉩니다. 내부 상태(여기에는 A와 B의 두 가지 상태만 있음) 테이프를 따라 움직입니다. 각 주기는 헤드가 테이프 세그먼트에서 1비트를 읽는 것으로 시작됩니다. 그런 다음 고정된 전환 규칙 집합에 따라 테이프 세그먼트에 약간의 데이터를 쓰고 내부 상태를 변경하고 왼쪽 또는 오른쪽으로 한 위치 이동합니다. 이 Turing 기계는 내부 상태가 두 개뿐이므로 그 기능은 사소한 계산으로 제한됩니다. 많은 수의 상태를 가진 더 복잡한 시스템은 자신보다 훨씬 더 복잡한 시스템을 포함하여 모든 컴퓨터의 동작을 시뮬레이션할 수 있습니다. 이것은 더 큰 기계의 논리적 상태에 대한 완전한 표현을 무한 테이프에 저장하고 각 계산 주기를 많은 수로 나누기 때문에 가능합니다. 간단한 단계. 여기에 표시된 기계는 논리적으로 가역적입니다. 우리는 항상 기계의 이전 상태를 결정할 수 있습니다. 전환 규칙이 다른 튜링 기계는 논리적으로 되돌릴 수 없습니다.

튜링 기계는 여러 구성 요소로 구성됩니다. 그 중 하나는 입력 데이터인 0 또는 1을 포함하는 별도의 섹션 또는 세그먼트로 분할된 테이프입니다. "읽기 및 쓰기 헤드"는 테이프를 따라 움직입니다. 헤드는 테이프에서 데이터 1비트 읽기, 테이프에 1비트 쓰기, 세그먼트 1개를 왼쪽이나 오른쪽으로 이동하는 등 여러 기능을 수행할 수 있습니다. 다음 사이클이 이전 사이클에서 수행된 작업에 대한 정보를 유지하기 위해 헤드 메커니즘에는 다수의 소위 "상태"가 있습니다. 각 상태는 머리 내부 부품의 약간 다른 구성을 나타냅니다.

각 주기에서 헤드는 반대쪽 테이프 세그먼트에서 비트를 읽습니다. 이 순간위치. 그런 다음 새 비트 값을 테이프에 쓰고 내부 상태를 변경하고 한 세그먼트를 왼쪽이나 오른쪽으로 이동합니다. 기록하는 비트의 값, 전환 상태 및 이동 방향은 고정된 전환 규칙 집합에 의해 결정됩니다. 각 규칙은 특정 작업을 설명합니다. 머신이 현재 어떤 규칙을 따르고 있는지는 헤드의 상태와 테이프에서 방금 읽은 비트 값에 의해 결정됩니다. 예를 들어, 규칙은 다음과 같습니다. "헤드가 상태 A에 있고 0이 쓰여진 세그먼트 맞은편에 있으면 이 비트의 값을 1로 변경하고 상태 B로 이동한 다음 한 세그먼트를 다음으로 이동해야 합니다. 오른쪽." 다른 규칙에 따르면 기계는 상태를 변경하거나 테이프에 새 비트를 쓰지 않아야 합니다. 그렇지 않으면 기계가 중지되어야 합니다. 모든 튜링 기계가 가역적인 것은 아니지만 모든 계산을 수행할 수 있는 가역적인 튜링 기계를 구축하는 것은 가능합니다.

가역 튜링 기계를 기반으로 한 모델은 마찰이 없는 당구 컴퓨터와 같은 기계에 비해 이점이 있습니다. 당구 컴퓨터에서 분자의 무작위 열 운동은 불가피한 오류를 초래합니다. 가역 튜링 기계는 실제로 임의의 열 운동을 사용합니다. 약한 구동력의 도움을 받아 기계를 한 상태에서 다른 상태로 이동시키는 열 운동 방식으로 설계되었습니다. 계산 과정의 발전은 약한 전기장에서 용액에서 이온(하전 입자)의 움직임과 유사합니다. 짧은 시간 동안 이온의 거동을 관찰하면 무작위로 보일 것입니다. 한 방향으로 움직일 확률은 다른 방향에서와 거의 같습니다. 그러나 전기장의 작용으로 인한 구동력은 이동에 선호되는 방향을 제공합니다. 이온이 이 방향으로 이동할 확률은 다소 높습니다. 언뜻 보면 계산 과정에 내재된 의도적인 일련의 작업이 어떤 순간의 이동 방향이 거의 무작위로 간주될 수 있는 장치에 의해 실현될 수 있다는 것이 믿기지 않을 수 있습니다. 그러나 이러한 유형의 작업은 본질적으로 매우 일반적입니다. 특히 화학 반응의 미시 세계에서 관찰할 수 있습니다. 시행 착오 브라운 운동 또는 무작위 열 운동은 반응하는 분자가 접촉하고, 이 반응에 필요한 대로 서로에 대해 적절하게 배열되고, 반응 생성물인 새로운 분자를 형성하기에 충분히 효율적입니다. 원칙적으로 모든 화학 반응은 가역적입니다. 반응을 순방향으로 진행시키는 동일한 브라운 운동은 때때로 반응 생성물이 역전이를 거치게 합니다. 평형 상태에서 반응의 역방향은 직접 반응과 마찬가지로 가능합니다. 반응이 순방향으로 진행되도록 하려면 반응에 들어가는 분자를 지속적으로 추가하고 반응의 산물인 분자를 제거해야 합니다. 즉, 작은 추진력을 가해야 합니다. 이 힘이 매우 작으면 반작용이 앞뒤로 모두 진행되지만 평균적으로는 정방향으로 진행됩니다. 구동력을 제공하려면 에너지를 소비해야 하지만 튜브와 볼의 Fredkin 밸브 모델에서와 같이 에너지 양이 임의로 작을 수 있습니다. 매우 느린 작업 실행에 만족한다면 이러한 작업에 소비해야 하는 최소한의 에너지가 필요하지 않습니다. 소산되는 에너지의 총량은 순방향의 단계 수를 역방향의 단계 수로 나눈 값에 따라 달라집니다. (실제로는 이 비율의 대수에 비례합니다. 비율 자체가 증가하거나 감소할 때 그 대수는 같은 방향으로 변합니다.) 반응이 순방향으로 느리게 진행될수록 비율은 작아집니다. (빠르고 느린 수영 선수의 비유는 여기서 다시 관련이 있습니다. 반응이 더 느리게 진행되면 중간 붕괴 및 연결 수가 동일하게 유지된다는 사실에도 불구하고 소비되는 총 에너지 양은 더 적습니다.)

RNA 중합효소는 가역적인 테이프 복사기 역할을 하는 효소입니다. 그것은 DNA의 사본인 RNA 합성을 위한 촉매입니다. DNA 사슬을 따라 이동하면서 효소는 주변 용액에서 뉴클레오사이드 삼인산 분자(각 뉴클레오사이드 삼인산은 일부 RNA 염기, 당 분자 및 3개의 인산기로 구성됨)를 선택합니다. 복사됩니다. 그것은 건설 중인 RNA 사슬의 끝에 새로운 염기를 붙이고 피로인산 이온을 방출합니다. 반응은 가역적입니다. 때때로 효소는 피로인산을 마지막 RNA 연결에 부착하고(생성된 뉴클레오사이드 삼인산이 용액으로 되돌아옴) DNA 사슬을 따라 한 위치 뒤로 이동합니다. 반응이 화학적 평형에 가까울 때 효소는 앞으로 가는 것만큼 많은 단계를 뒤로 이동하고 DNA의 한 부분을 복사하는 데 필요한 총 에너지는 매우 적습니다. 에너지 소실이 작을수록 반응이 느리게 진행됩니다. 따라서 DNA 조각을 복사하는 데 필요한 최소 에너지는 없습니다.

테이프 복사를 위한 브라운 머신의 예를 사용하여 브라운 튜링 머신이 어떻게 작동하는지 봅시다. 그러한 기계는 이미 자연에 존재합니다. 이것은 RNA 중합효소 - 유전자를 구성하는 DNA의 사본인 RNA 합성에 관여하는 효소입니다. 단일 가닥 DNA는 튜링 기계의 테이프와 매우 유사합니다. 각 요소에서, 즉. 사슬의 각 위치에는 아데닌, 구아닌, 시토신 또는 티민(줄여서 A, G, C, T)과 같은 4개의 뉴클레오티드 또는 염기 중 하나가 있습니다. RNA의 구조는 DNA와 매우 유사합니다. 또한 아데닌, 구아닌, 시토신 및 우라실(각각 A, G, C 및 U)의 4가지 유형의 염기로 구성된 장쇄형 분자입니다. RNA 염기는 상보적인 DNA 염기에 결합할 수 있습니다.

RNA 중합효소는 DNA 상의 상보적 사본인 RNA의 형성을 촉매합니다. 일반적으로 나선으로 꼬인 DNA 이중 가닥은 리보뉴클레오타이드(RNA 염기), 당, 3개의 인산염 그룹이 연결된 꼬리로 구성된 다수의 리보뉴클레오사이드 삼인산 분자를 포함하는 용액으로 둘러싸여 있습니다. 시리즈. RNA 중합효소는 현재 DNA 가닥에서 복제하려는 염기와 상보적인 RNA 염기 중 하나를 용액에서 선택하고 이를 성장하는 RNA 가닥 끝에 부착하여 2개의 포스페이트를 주위 용액에 형태의 형태로 방출합니다. 피로인산 이온. 그런 다음 효소는 DNA 가닥을 따라 한 위치 앞으로 이동하여 RNA 가닥에 다음 염기를 추가할 준비를 합니다. 결과적으로 주형, 즉 DNA 사슬에 상보적인 RNA 사슬이 형성됩니다. RNA 중합효소가 없으면 이러한 반응은 매우 느려지고 생성된 RNA가 DNA와 정확히 상보적이라는 보장도 없습니다.

설명된 반응은 가역적입니다. 때로는 효소가 성장하는 RNA 사슬의 마지막 염기에 유리 피로인산 이온을 부착하고 리보뉴클레오시드 삼인산 분자가 환경으로 방출되고 효소 자체가 DNA 사슬을 따라 한 위치로 되돌아갑니다. 평형 상태에서 전진 및 후진 단계는 동일한 빈도로 발생하지만, 살아있는 세포에서는 피로인산의 제거 및 과량의 리보뉴클레오사이드 삼인산 생성으로 인해 다른 대사 과정이 평형을 직접 반응으로 이동시킵니다. 실험실 조건에서 초기 시약의 농도를 변경하여 RNA 중합효소 반응 속도를 제어하는 ​​것이 가능합니다(이는 버클리 캘리포니아 대학의 J. Levin과 M. Chamberlain에 의해 입증되었습니다). 농도가 평형에 가까워짐에 따라 효소는 더 느리게 작동하고 주어진 DNA 조각을 복사하는 데 소모되는 에너지는 전진 및 후진 수의 비율이 작아짐에 따라 줄어듭니다.

RNA 중합효소는 정보를 처리하지 않고 단순히 복사하므로 가상의 튜링 화학 기계가 어떻게 작동할 수 있는지 상상하는 것은 어렵지 않습니다. 테이프는 두 가지 유형의 염기가 일정한 간격으로 부착되어 있는 하나의 긴 골격 분자로 비트 0과 1로 해석됩니다. 또 다른 작은 분자는 0과 1 체인의 위치 중 하나에 부착됩니다. 이 분자가 부착된 위치는 튜링 기계의 머리가 위치한 테이프의 한 부분에 불과합니다. "머리 분자"에는 몇 가지 다른 유형이 있습니다. 각 유형은 기계의 가능한 내부 상태 중 하나를 나타냅니다.

기계의 전이 규칙은 효소로 표현됩니다. 각 효소는 특정 반응의 촉매입니다. 이러한 효소가 어떻게 작동하는지 더 잘 이해하려면 예를 고려하십시오.

머리 분자가 다음과 같다고 가정합시다. 하지만 (기계가 상태에 있음을 의미 하지만 ) 및 제로베이스에 부착됩니다. 또한 다음과 같은 전환 규칙이 적용된다고 가정합니다. "헤드가 상태에 있을 때 하지만 0을 읽고 0을 1로 바꾸고 상태로 이동 그리고 오른쪽으로 이동합니다. 이 규칙을 나타내는 효소 분자는 다음 유형의 머리 분자의 부착에 적합한 부위를 가지고 있습니다. 하지만 베이스 1에 연결됩니다. 베이스 0을 부착하기에 적합한 위치와 헤드형에 적합한 위치도 있습니다. (그림 참조).

필요한 전환을 수행하기 위해 효소 분자는 먼저 현재 활자 머리가 부착되어 있는 베이스의 바로 오른쪽에 있는 테이프의 위치에 접근합니다. 하지만 . 그런 다음 머리 분자와 머리가 붙어 있는 염기 0을 테이프에서 분리하고 염기 1을 제자리에 놓습니다. 테이프에 부착된 단일 베이스의 오른쪽 베이스에 이것으로 전환이 완료됩니다. 원래 테이프 세그먼트에서 0은 1로 바뀌었고 헤드 분자는 이제 다음 유형입니다. 원본의 오른쪽 한 위치에 있는 베이스에 부착됩니다.

가상의 튜링 효소 기계는 임의로 적은 양의 에너지로 계산을 수행할 수 있습니다. 비트 0과 1을 나타내는 분자는 백본 분자에 부착됩니다. 튜링 기계의 머리를 나타내는 분자는 사슬의 위치 중 하나에 부착됩니다(7). 다른 유형머리 분자는 기계의 다른 상태를 나타냅니다. 전이 규칙은 효소로 표시됩니다. 각 주기에서 효소는 머리와 머리와 연결된 비트 분자(2)를 연결하고 사슬에서 분리하고 원하는 비트 분자를 제자리에 놓습니다(3). 그렇게 하면 회전하면서 방금 변경된 것의 오른쪽이나 왼쪽에 있는 다음 비트에 적절한 머리 분자를 붙입니다. 이제 루프가 완료되었습니다(4): 비트 값이 변경되었으며 헤드가 상태를 변경하고 이동했습니다. RNA 합성과 같은 반응은 임의로 적은 양의 에너지를 소산할 수 있습니다.

Turing의 Brownian 기계는 서로 단단히 맞지 않고 마찰에 의해가 아니라 홈과 톱니 시스템에 의해 원하는 위치에서 지지되는 단단하고 매끄러운 부품으로 구성된 시계 메커니즘입니다. 부품의 자유로운 연결에도 불구하고 정방향 또는 역방향의 계산 단계에 해당하는 대규모 이동만 할 수 있습니다. 즉, 하나의 "계산 경로"만 따를 수 있습니다. 메커니즘은 매우 약한 외력에 의해 약간 밀려서 앞으로 이동할 확률은 뒤로 이동할 확률과 거의 같습니다. 그러나 평균적으로 기계는 앞으로 나아가고 결국에는 계산이 완료될 것입니다. 기계는 구동력의 상응하는 감소에 의해 임의로 적은 양의 에너지를 소비하도록 만들 수 있습니다.

테이프 세그먼트는 홈이 있는 디스크로 표시되고 비트는 위쪽(7) 또는 아래쪽(0) 위치에서 디스크에 부착된 E자형 블록으로 표시됩니다. 헤드는 복잡한 메커니즘으로 연결된 단단한 부품으로 구성됩니다(대부분은 여기에 표시되지 않음). 판독 요소, 조작기 및 드라이버 모양의 막대가 매달려 있습니다. 기계는 축음기에서 레코드를 재생하기 위한 롤러와 유사하게 표면에 홈이 있는 롤러로 제어됩니다(왼쪽 상단, 오른쪽 깊은 곳). 다른 홈은 머리의 다른 상태에 해당합니다.

사이클이 시작될 때 헤드는 디스크 중 하나 위에 있고 "바늘"은 머신 헤드의 현재 상태에 해당하는 제어 롤러 홈의 "읽기" 세그먼트에 있습니다. 루프(7)의 "읽기" 단계에서 리더는 "장애물 읽기" 절차(중앙 오른쪽)를 수행하여 비트를 나타내는 블록이 위 또는 아래로 회전되는지 여부를 결정합니다. 판독기 요소는 위쪽 또는 아래쪽 경로를 따라 블록을 따라 전달됩니다. 이 경로 중 하나에서 그는 블록 끝에서 난간 형태의 장애물을 만나야 하므로 오직 하나의 경로만 남게 됩니다. 이 "결정"에 해당하는 제어 롤러 지점에서 홈이 분기되고 바늘이 비트(2)의 값에 해당하는 홈으로 안내됩니다. 그런 다음 바늘이 "쓰기" 부분(3)에 도달할 때까지 제어 롤러가 회전합니다. 여기에서 각 홈에는 바늘과 나머지 메커니즘 간의 복잡한 연결을 사용하여 기계에 전송되는 고유한 "지시" 세트가 포함되어 있습니다.

명령이 비트 값을 변경해야 하는 경우 조작기가 작동되어 블록의 러그에 연결됩니다. 그런 다음 드라이버가 블록이 풀릴 때까지 디스크를 돌리고 조작기가 블록을 위 또는 아래로 돌리고 드라이버를 다시 돌립니다. 블록이 제자리에 있도록 디스크. 제어 롤러의 "쓰기" 부분을 통과한 후 바늘이 "이동" 부분(4)으로 들어갑니다. 이 세그먼트의 각 홈에는 헤드를 왼쪽 또는 오른쪽으로 한 위치 이동하라는 명령이 포함되어 있습니다. 다음으로 바늘은 머리의 다음 상태를 나타내는 홈에 들어가도록 홈이 합쳐지는 "상태 변경" 부분(5)에 들어갑니다. 이제 루프가 완료되었습니다(6). 현재 읽고 있는 디스크에 인접한 디스크는 헤드에 의해 제자리에 고정됩니다. 더 멀리 있는 디스크는 특수 "잠금"으로 잠겨 있습니다. 각 디스크의 잠금은 인접 디스크의 Q비트라고 하는 특수 비트와 연결됩니다. 이 연결의 배열은 현재 읽고 있는 디스크가 해제되어 이동할 수 있는 반면 왼쪽과 오른쪽으로 더 멀리 있는 디스크는 정지 상태를 유지하는 방식입니다.

브라운 튜링 기계가 작동하려면 테이프를 많은 효소 분자와 "0", "1" 및 "머리"와 같은 충분한 공급량을 포함하는 용액에 담가야 합니다. 하지만 그리고 . 반응이 순방향으로 진행되기 위해서는 테이프에서 분리된 머리와 염기에서 효소 분자를 정화하는 몇 가지 다른 반응이 필요합니다. 효소 분자를 정화하는 물질의 농도는 튜링 기계를 정방향으로 작동시키는 원동력입니다. 다시 말하지만, 기계가 충분히 천천히 작업을 수행하면 임의로 적은 양의 에너지를 소비할 수 있습니다.

효소 기반 튜링 기계에는 오류가 없습니다. 때때로 효소에 의한 촉매 작용 없이 일어나는 반응이 일어날 수 있습니다. 예를 들어 염기 0은 골격 분자에서 자발적으로 분리될 수 있으며 염기 1이 그 자리를 차지할 수 있습니다. 실제로 이러한 오류는 RNA 합성 중에 발생합니다.

원칙적으로, 견고하고 절대적으로 부드러운 시계 장치를 기반으로 브라운 튜링 기계를 구축하여 이러한 오류를 제거할 수 있습니다. 그러한 튜링 기계는 당구 컴퓨터보다 덜 이상화되지만 효소 기계보다 더 이상화됩니다. 한편, 당구공에 필요한 것처럼 부품은 절대적으로 정밀한 기계가공을 필요로 하지 않으며 시계 장치 부품에는 약간의 공차가 있을 수 있으며 기계는 상당한 열 소음이 있는 경우에도 작동할 수 있습니다. 그러나 기계는 절대적으로 단단하고 정적 마찰이 없어야 하며 거시적인 물체는 이러한 특성을 가지고 있지 않습니다.

기계의 부품이 서로 단단히 맞지 않기 때문에 마찰이 아니라 홈 시스템인 홈과 톱니에 의해 제자리에 고정됩니다(그림 참조). 기계의 각 부분은 나무 직소 퍼즐 조각처럼 약간의 자유 놀이가 있지만 일반적으로 메커니즘은 하나의 "계산 경로"만 따를 수 있습니다. 즉, 주어진 시간에 기계가 두 가지 유형의 대규모 이동만 수행할 수 있도록 부품이 서로 연동되어 있습니다. 반대 방향.

컴퓨터는 약한 외력의 영향으로 인해 부품의 무작위 열 운동의 결과로만 이러한 두 가지 유형의 운동 사이를 전환합니다. 마지막 작업의 결과를 제거하고 반대 방향으로 이동할 확률은 정방향으로 이동할 확률과 거의 같습니다. 외부에서 가해지는 작은 힘은 계산을 앞으로 밀어냅니다. 그리고 다시 이 힘을 임의로 작게 만들 수 있습니다. 따라서 튜링 기계가 시계 장치로 작동하도록 유지하는 데 필요한 최소 에너지가 없습니다.

따라서 고전적인 열역학의 이유로 계산에 필요한 최소 에너지는 없습니다. 그러면 열역학적 해석이 양자역학과 충돌하지 않습니까? 결국 양자역학적 불확정성의 원리에 따르면, 그 과정에 소요되는 시간에 대한 불확실성의 정도와 이 과정에서 소비되는 에너지의 양에 대한 불확실성의 정도 사이에는 역의 관계가 있어야 한다. 따라서 일부 조사자들은 매우 짧은 기간에 발생하는 모든 스위칭 프로세스에서 최소한의 에너지가 소비되어야 한다고 생각합니다.

사실, 불확정성 원리는 빠른 스위칭 이벤트에 대해 유한 에너지 최소값을 요구하지 않습니다. 불확정성 원리는 사건이 발생한 정확한 순간을 측정하려고 할 때만 적용됩니다. 양자 역학의 법칙에 따르면 에너지 손실 없이 매우 빠른 사건이 발생할 수 있습니다. 양자 역학이 임의의 작은 양의 에너지로 계산을 가능하게 한다는 우리의 믿음은 Benioff et al.에 의해 개발된 가역 양자 역학 컴퓨터 모델에 의해 확인됩니다. 이 모델은 에너지를 소산하지 않으며 양자 역학의 법칙을 따릅니다.

따라서 불확정성 원리는 계산 과정에 근본적인 제약을 가하지 않는 것 같다. 고전적인 열역학도 그것들을 강요하지 않습니다. 이것은 컴퓨팅에 물리적 제한이 전혀 없다는 것을 의미합니까? 아니요, 이것은 사실과 거리가 멉니다. 실제 제한 사항은 이 기사에서 제기하고 고려한 질문보다 훨씬 더 대답하기 어려운 질문과 관련이 있습니다. 예를 들어 초등학교 논리 연산최소 종료 시간? 그러한 작업을 수행할 수 있는 장치의 최소 치수는 얼마입니까? 크기와 시간의 척도는 유한한 빛의 속도와 관련되어 있기 때문에 이러한 질문에 대한 답은 어떻게든 상호 연결되어 있는 것 같습니다. 그러나 우리는 길이와 시간의 보편적 척도에 어떤 기본적인 불연속성이 있는지에 대한 질문이 해결되지 않을 때까지 어떤 경우에도 이러한 답을 찾을 수 없을 것입니다.

문제의 다른 극단에는 컴퓨터 메모리를 얼마나 크게 만들 수 있는지에 대한 질문이 있습니다. 이러한 목적을 위해 우주에서 얼마나 많은 입자를 수집하고 결합할 수 있습니까? 사실 컴퓨터 메모리의 가능한 최대 크기는 계산을 수행할 수 있는 정확도에 제한을 가합니다. 예를 들어 계산된 p 값의 소수 자릿수는 제한됩니다. 후자와 관련이 있을 수 있는 또 다른 질문은 실제 컴퓨터가 노후화됨에 따라 발생하는 불가피한 성능 저하 프로세스에 관한 것입니다. 파괴 및 오류 누적 비율을 임의로 작은 값으로 줄일 수 있습니까? 아니면 이 비율이 최대 계산 기간에 제한을 가합니까? 즉, 컴퓨터의 물질적인 부분을 사용할 수 없게 되기 전에 완료할 수 없는 계산 작업이 있습니까?

사실, 그러한 질문은 수학 연산의 물리적 실행에 대한 제한과 관련이 있습니다. 답이 궁극적으로 기초해야 하는 물리 법칙은 그러한 수학적 연산을 통해 그 자체로 표현됩니다. 따라서 우리는 우주의 속성에 의해 부과된 제한 아래에서 물리 법칙이 어떤 형태로 적용될 수 있는지 스스로에게 질문을 던집니다.