역사상 가장 영향력 있는 미니컴퓨터 PDP-11에 대한 간략한 소개
컴퓨팅 기술의 역사는 크게 메인프레임, 미니컴퓨터, 마이크로컴퓨터의 세 시대로 나눌 수 있습니다. 미니컴퓨터는 최초의 메인프레임과 오늘날 유비쿼터스 마이크로컴퓨터 사이의 중요한 연결 고리가 되었습니다. 가장 영향력 있고 성공적인 미니 컴퓨터인 PDP-11의 이야기입니다.
한때 미니컴퓨터는 다양한 애플리케이션에 사용되었습니다. 통신 컨트롤러, 기기 컨트롤러, 대형 시스템 전처리기, 데스크톱 계산기 및 실시간 데이터 수집 프로세서 역할을 했습니다. 그러나 그들은 또한 하드웨어 아키텍처의 상당한 발전을 위한 토대를 마련했으며 오늘날 우리가 알고 있는 최신 운영 체제, 프로그래밍 언어 및 대화형 컴퓨팅에 크게 기여했습니다.
모든 컴퓨터가 특정 버전의 Windows, Mac 또는 Linux를 실행하는 오늘날의 컴퓨팅 세계에서는 운영 체제의 기반이 되는 CPU를 구별하기가 어렵습니다. 그러나 CPU 아키텍처의 차이가 매우 중요했던 때가 있었습니다. PDP-11은 이것이 왜 그런지 설명하는 데 도움이 됩니다.
PDP-11은 1970년에 도입되었는데, 당시 대부분의 컴퓨팅은 거의 접근할 수 없었던 값비싼 GE, CDC 및 IBM 메인프레임에서 수행되었습니다. 노트북도, 데스크탑도, 개인용 컴퓨터도 없었습니다. 대부분 어셈블리 언어, COBOL 및 FORTRAN에서 프로그래밍에 참여하는 회사는 소수에 불과했습니다. 천공 카드로 입력이 이루어졌고 프로그램은 비대화식 배치 실행으로 시작되었습니다.
최초의 PDP-11은 겸손했지만, 차세대 컴퓨터를 더 저렴하게 만들고 본질적으로 컴퓨팅에 혁명을 일으킨 미니 컴퓨터 침공의 무대를 마련했습니다. PDP-11은 UNIX 운영 체제와 C 프로그래밍 언어를 만드는 데 도움이 되었습니다. 또한 차세대 컴퓨터 아키텍처에 큰 영향을 미칠 것입니다. PDP-11이 출시된 22년 동안(오늘날 기준으로는 전례 없는 시간) 600,000개 이상의 PDP-11이 판매되었습니다.
초기 PDP-11은 그다지 인상적이지 않았습니다. 최초의 11/20 PDP-11은 $20,000의 비용이 들었지만 4KB의 RAM만 제공되었습니다. 종이 테이프를 저장 장치로 사용했고 초당 10자를 인쇄하는 ASR-33 텔레타이프 콘솔을 사용했습니다. 그러나 그것은 또한 놀라운 직교 16비트 아키텍처, 8개의 레지스터, 65KB의 주소 공간, 1.25MHz 주기 시간 및 미래의 하드웨어 주변 장치를 지원하는 유연한 UNIBUS 하드웨어 버스를 가졌습니다. 제작자인 Digital Equipment Corporation에게는 성공적인 조합이었습니다.
PDP-11의 초기 애플리케이션에는 실시간 하드웨어 제어, 공장 자동화 및 데이터 처리가 포함되었습니다. PDP-11은 유연성, 프로그래밍 가능성 및 경제성으로 명성을 얻었고 신호등 제어 시스템, Nike의 미사일 방어 시스템, 항공 교통 관제, 원자력 발전소, 해군 조종사 훈련 시스템 및 통신 분야에서 사용되었습니다. 그는 또한 우리가 지금 당연하게 여기는 워드 프로세싱과 데이터 프로세싱을 개척했습니다.
그리고 PDP-11의 영향은 장치 조립 프로그래밍에서 가장 분명합니다.
어셈블리 프로그래밍 기초
Python, Java, Fortran과 같은 고급 언어가 발명되기 전에는 어셈블리 언어로 프로그래밍이 이루어졌습니다. 어셈블리 언어 프로그래밍은 매우 적은 RAM과 디스크 공간으로 수행할 수 있으므로 초기 컴퓨팅에 이상적입니다.
어셈블리 언어는 컴퓨터에서 직접 실행할 수 있는 기계어로 변환되는 저수준 중간 형식입니다. 컴퓨터 아키텍처의 측면을 직접 제어하기 때문에 낮은 수준입니다. 간단히 말해서 어셈블리 언어 프로그래밍은 하드웨어 레지스터와 메모리를 통해 데이터를 바이트 단위로 이동합니다. PDP-11 프로그래밍을 차별화하는 것은 미니컴퓨터의 우아한 디자인이었습니다. 각 명령에는 고유한 위치가 있었고 각 명령에는 의미가 있었습니다.
16비트 주소 공간은 각 레지스터가 최대 64KB의 RAM에 직접 주소를 지정할 수 있으며 상위 4KB는 메모리 매핑된 입력 및 출력용으로 예약되어 있음을 의미합니다. PDP-11은 레지스터 세그먼트를 사용하여 총 128KB의 RAM 주소를 지정할 수 있습니다(자세한 내용은 잠시 후). 따라서 PDP-11 시스템은 4KB의 RAM만 탑재하고 있었지만 초기 프로그래밍 기술을 영리하게 사용했기 때문에 여전히 생산적이었습니다.
조립 프로그램
이 개념을 이해하는 가장 쉬운 방법은 아래에서 살펴볼 간단한 PDP-11 어셈블리 언어 프로그램을 사용하는 것입니다. “.”로 시작하는 키워드는 어셈블러에 대한 지시어입니다. .globl
운영 체제에서 사용할 수 있도록 링커에 레이블을 기호로 내보냅니다. .text
코드 세그먼트의 시작을 정의합니다. .data
단일 데이터 세그먼트의 시작을 정의합니다. “:”으로 끝나는 키워드는 태그입니다. 어셈블리 언어 프로그래밍은 레이블을 사용하여 기호로 메모리 주소를 지정합니다. (참고: 전문 용어 및 PDP-11 코딩의 출현으로 / 이후의 모든 텍스트는 주석입니다.)
키워드 | 번역 |
.globl_main | 운영 체제에서 사용할 진입점으로 _main 레이블을 내보냅니다. |
.텍스트 | 읽기 전용 코드를 포함하는 명령 세그먼트의 시작 |
_main: 엔진 값1, R0 | 메모리 위치 VAL1에서 레지스터 0으로 워드 값을 복사합니다. |
추가 $10, R0 | 레지스터 0의 값에 10을 더합니다. |
모터 R0 값1 | 레지스터 0의 값을 메모리 위치 VAL1에 복사합니다. |
_.데이터 | 읽기/쓰기 데이터를 포함하는 데이터 세그먼트의 시작. |
발1:. 단어 $100 | 100으로 초기화된 Val1을 유지하기 위해 2바이트의 메모리를 예약합니다. |
메모리 주소에 숫자 값을 사용할 수 있지만 하드코딩된 주소 대신 레이블을 사용하면 프로그래밍이 간소화되고 메모리에서 코드를 이동할 수 있습니다. 이것은 운영 체제에 코드를 실행할 수 있는 유연성을 제공하여 각 프로그램을 빠르고 효율적으로 만듭니다.
어셈블러 지시어 데이터는 읽고 쓸 수 있는 메모리 세그먼트에 데이터를 배치합니다. 코드 메모리 세그먼트는 프로그래밍 오류로 인해 프로그램이 손상되고 충돌이 발생하는 것을 방지하기 위해 읽기 전용입니다. PDP-11의 데이터에서 명령을 분리하는 것을 “명령과 데이터의 분리”라고 합니다. 안정성 향상 외에도 이 기능은 주소 공간을 두 배로 늘려 코드용으로 64KB, 데이터용으로 64KB를 제공하여 당시 혁신으로 여겨졌습니다. 따라서 Intel X86 마이크로컴퓨터는 나중에 세그먼트를 광범위하게 사용했습니다.
답글 남기기