PDP-11
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
PDP-11은 1970년 디지털 이큅먼트 코퍼레이션(DEC)에서 출시한 16비트 미니컴퓨터 제품군이다. PDP-8의 후속 모델로 개발되었으며, 향상된 아키텍처와 성능을 제공했다. PDP-11은 유연한 설계와 다양한 주변 장치 지원으로 인해 시분할 시스템, 과학, 교육, 공정 제어 등 다양한 분야에서 활용되었다. 명령어 집합은 직교성을 특징으로 하며, 메모리 맵 I/O를 사용했다. PDP-11 시리즈는 유니버스, Q-버스 등 다양한 버스 방식을 사용했으며, LSI-11과 같은 소형 모델도 출시되었다. 1980년대 개인용 컴퓨터의 등장과 32비트 마이크로프로세서의 발전으로 인해 PDP-11의 시장 점유율은 감소했으며, 1997년 생산이 중단되었다. PDP-11은 다양한 운영 체제를 지원했으며, 에뮬레이터를 통해 현재에도 사용되고 있다.
더 읽어볼만한 페이지
- 16비트 컴퓨터 - IBM PC XT
IBM PC XT는 IBM PC의 하드 디스크 드라이브 탑재 모델로, 확장 슬롯 증가와 하드 디스크 기본 탑재를 통해 확장성을 강화한 것이 특징이다. - 16비트 컴퓨터 - IBM 1130
IBM 1130은 1965년 IBM에서 출시한 16비트 소형 컴퓨터 시스템으로, 과학 및 엔지니어링 분야를 주 대상으로 솔리드 로직 기술을 적용하여 개발되었으며, 다양한 프로그래밍 언어를 지원하고 여러 박물관 및 교육 기관에서 소장하고 있다. - DEC의 하드웨어 - 프로그램 데이터 프로세서
프로그램 데이터 프로세서(PDP)는 디지털 이큅먼트 코퍼레이션(DEC)에서 개발한 다양한 모델의 컴퓨터 시리즈로, 각 모델은 고유한 특징을 가지며 미니컴퓨터 혁명을 이끌고 컴퓨터 역사에 큰 영향을 미쳤다. - DEC의 하드웨어 - PDP-10
PDP-10은 디지털 이큅먼트 코퍼레이션에서 개발한 36비트 명령어 집합 아키텍처를 가진 컴퓨터 시스템으로, 다양한 모델과 운영체제를 지원하며 시분할 시스템 구축 및 해커 문화, 초기 컴퓨터 게임 개발에 영향을 미쳤으나 VAX 시스템 전략으로 인해 단종되었다. - 미니컴퓨터 - 프로그램 데이터 프로세서
프로그램 데이터 프로세서(PDP)는 디지털 이큅먼트 코퍼레이션(DEC)에서 개발한 다양한 모델의 컴퓨터 시리즈로, 각 모델은 고유한 특징을 가지며 미니컴퓨터 혁명을 이끌고 컴퓨터 역사에 큰 영향을 미쳤다. - 미니컴퓨터 - VAX
VAX는 DEC에서 개발한 가상 메모리를 지원하는 32비트 CISC 컴퓨터 아키텍처 및 컴퓨터 시리즈로, PDP-11의 확장이며, 다양한 모델과 운영 체제를 지원하며 슈퍼미니컴퓨터 시장에서 인기를 얻었으나 RISC 아키텍처의 등장으로 대체되었다.
| PDP-11 | |
|---|---|
| 기본 정보 | |
![]() | |
| 개발사 | DEC |
| 계열 | 프로그램 데이터 프로세서 |
| 유형 | 미니컴퓨터 |
| 발표일 | 1970년 |
| 단종일 | 1997년 |
| 판매 대수 | 약 60만 대 |
| 운영 체제 | BATCH-11/DOS-11 DSM-11 IAS P/OS RSTS/E RSX-11 RT-11 Ultrix-11 제7판 유닉스 SVR1 2BSD |
| 플랫폼 | DEC 16비트 |
| 후속 기종 | VAX-11 |
| 역사 | |
| 출시 | 1970년 |
| 단종 | 1997년 |
| 판매량 | 약 600,000대 |
| 기술 사양 | |
| 기타 | |
2. 역사
PDP-11은 데이터 제너럴의 노바에 대한 경쟁 기종으로 개발되었다.[7] 당시 DEC의 주력 미니컴퓨터였던 12비트 PDP-8보다 발전된 16비트 아키텍처를 채택하여 성능과 기능을 향상시켰다.[7] 1967~1968년 DEC 엔지니어들은 16비트 머신인 PDP-X를 설계했지만, 경영진은 기존의 12비트 및 18비트 플랫폼에 비해 뚜렷한 이점을 제공하지 못한다는 판단하에 프로젝트를 취소했다. 이로 인해 PDP-X 프로그램의 여러 엔지니어들이 DEC를 떠나 데이터 제너럴을 설립, 이듬해 16비트 데이터 제너럴 노바를 출시하여 DEC의 주요 경쟁사가 되었다.[7]
DEC(Digital Equipment Corporation)의 사장이자 창립자인 켄 올슨은 더 큰 16비트 시스템보다 작은 8비트 머신에 더 관심이 많았고, "데스크 계산기" 프로젝트를 진행했다. 그러나 전체 시장이 16비트로 이동하고 있다는 것이 분명해졌고, "데스크 계산기"는 16비트 설계를 시작했다.[7]
팀은 새로운 아키텍처에 대한 최선의 접근 방식은 명령을 실행하는 데 필요한 메모리 대역폭을 최소화하는 것이라고 결정했다. 래리 맥고완과 해롤드 맥팔랜드는 다양한 기존 플랫폼의 명령어 세트를 사용하여 일련의 어셈블리 언어 프로그램을 코딩하고 실행하는 데 얼마나 많은 메모리가 교환될지 조사하여, 최종적으로 PDP-11의 기반을 형성할 더 간단한 두 번째 명령어 세트를 만들었다.[7]
PDP-11 제품군은 1970년 1월에 발표되었고, 그 해 초부터 출하가 시작되었다.[8] DEC는 1970년대에 170,000대 이상의 PDP-11을 판매했다.[8] 처음에는 소규모 트랜지스터-트랜지스터 로직으로 제조되었으며, 1975년에는 대규모 집적 회로 버전의 프로세서가 개발되었다. 1979년에는 멀티 칩 모듈화된 프로세서 J-11이 개발되었다.
1975년 2월에 출시된 LSI-11(PDP-11/03)[9]은 대규모 집적 회로(LSI)를 사용하여 생산된 최초의 PDP-11 모델이다. CPU는 웨스턴 디지털에서 제작한 4개의 LSI 칩(MCP-1600 칩셋)으로 구성되며, Q-Bus를 사용한다. 이후 Q-Bus 기반 시스템은 DEC 자체 설계 칩셋을 사용했다.
PDP-11의 기본 설계는 유연했고, 최신 기술을 사용하여 지속적으로 업데이트되었다. 그러나 Unibus와 Q-Bus의 제한된 처리량은 시스템 성능 병목 현상이 되기 시작했고, 16비트 논리 주소 제한은 더 큰 소프트웨어 응용 프로그램의 개발을 방해했다. DEC의 PDP-11의 32비트 후속 제품인 VAX-11은 16비트 제한을 극복했지만, 초창기에는 고급 시분할 시장을 목표로 했다.
1980년대에는 IBM PC와 그 클론이 소형 컴퓨터 시장을 대부분 장악했다.[12] 모토로라 68000 (1979) 및 인텔 80386 (1985)과 같은 새로운 마이크로프로세서도 32비트 논리 주소를 포함했다. 이러한 칩의 대량 생산은 16비트 PDP-11의 모든 가격 이점을 없앴다.
1994년에 DEC[13]는 PDP-11 시스템 소프트웨어 권리를 Mentec Inc.에 판매했으며, 1997년 PDP-11 생산을 중단했다. 1990년대 후반까지 DEC뿐만 아니라 PDP-11과 유사한 미니컴퓨터를 중심으로 구축된 대부분의 뉴잉글랜드 컴퓨터 산업이 마이크로컴퓨터 기반 워크스테이션 및 서버에 직면하여 붕괴되었다. PDP-11 라인의 마지막 모델은 1990년에 출시된 단일 보드 PDP-11/94 및 PDP-11/93이었다.[9]
2. 1. 한국에서의 역사
3. PDP-11 시리즈의 특징
다음은 DEC의 PDP-11 프로세서 핸드북에 있다.[61]
=== 명령어 집합 ===
PDP-11 프로세서 아키텍처는 대부분 직교 명령어 집합을 갖추고 있다.[10] 예를 들어, ''로드'' 및 ''저장''과 같은 명령어가 아닌, 피연산자(소스 및 대상)가 메모리 또는 레지스터가 될 수 있는 ''이동'' 명령어가 있다.[10] 특정 ''입력'' 또는 ''출력'' 명령어가 없다. PDP-11은 메모리 맵 I/O를 사용하므로 동일한 ''이동'' 명령어가 사용된다.[10] 직교성은 입력 장치에서 출력 장치로 데이터를 직접 이동하는 것까지 가능하게 한다.[10] ''더하기''와 같은 더 복잡한 명령어 역시 메모리, 레지스터, 입력 또는 출력을 소스 또는 대상으로 가질 수 있다.[10]
대부분의 피연산자는 8개의 레지스터에 8가지 주소 지정 모드를 적용할 수 있다.[10] 주소 지정 모드는 레지스터, 즉시, 절대, 상대, 지연(간접), 인덱스 주소 지정을 제공하며, 한 개(바이트 명령어) 또는 두 개(워드 명령어)씩 레지스터의 자동 증가 및 자동 감소를 지정할 수 있다.[10] 상대 주소 지정을 사용하면 기계어 프로그램이 위치 독립 코드가 될 수 있다.[10]
높은 직교성을 가진 명령 집합 때문에 명령 종류와 메모리 접근 방식을 분리하여 생각할 수 있기 때문이다.[54] 임의의 메모리 접근 방식(어드레싱 모드)을 임의의 명령에 사용할 수 있으며, 다른 명령 집합처럼 예외 사항을 기억할 필요가 없다.[54] 예를 들어, 많은 명령 집합에는 `load`와 `store`가 있지만, PDP-11에는 `move` 명령만 있으며, 전송 원본과 전송 대상 모두 오퍼랜드로 메모리나 레지스터를 지정할 수 있다.[54] 또한, 입출력 전용 명령이 없으며, 직교성을 통해 입력 장치에서 출력 장치로 직접 데이터 전송도 가능하다.[54] 마찬가지로 덧셈 명령도 임의의 오퍼랜드(메모리, 레지스터, 장치)를 더하는 숫자로도, 계산 결과의 저장 위치로도 사용할 수 있다.[54]
PDP-11의 명령 집합 아키텍처가 B 언어의 관습적인 구문에 영향을 미쳤다는 설이 있지만, 이는 잘못된 것이다.[57] 레지스터 증가 또는 감소를 수행하는 어드레싱 모드가 C 언어의 −−i 또는 i++와 같은 식에 대응한다고 한다.[57] 만약 i와 j가 모두 레지스터 변수라면, *(−−i) = *(j++)와 같은 식은 하나의 기계어 명령으로 컴파일할 수 있다.[57] 데니스 리치는 B 언어 설계 당시 PDP-11은 존재하지 않았으므로 이 전설은 틀렸다고 명확히 부정했다.[57] 단, PDP-7의 자동 증가 셀이 PDP-11의 어드레싱 모드에 영향을 미쳤을 가능성은 있지만, B 언어 자체는 PDP-7의 해당 기능도 사용하지 않았다고 언급했다[57]。그럼에도, C 언어는 PDP-11에서 구현할 때 PDP-11이 가진 세부적인 장점을 활용했으며, 그로 인해 이후 프로세서 설계에 영향을 미쳤을 가능성이 있다[54]。
논리적으로, 어드레싱 모드와 명령 집합에 의해 기반이 제공된다고 할 수 있다.[61] 2오퍼랜드 명령은 두 개의 6 비트 필드로 오퍼랜드를 지정하고(3비트가 레지스터 지정, 3비트가 어드레싱 모드 지정), 4비트로 명령 코드를 지정한다.[61] 1오퍼랜드 명령은 6비트로 오퍼랜드를 지정하고, 10비트로 명령 코드를 지정한다.[61] 어떤 명령에서도 오퍼랜드 지정 필드에 임의의 어드레싱 모드를 지정할 수 있다.[61] 8개의 레지스터(0번부터 7번까지)가 있으며, 7개의 레지스터는 임의의 용도로 사용할 수 있지만, 6번 레지스터는 몇몇 명령에서 스택포인터로 인식되며, 7번 레지스터는 프로그램 카운터이다.[61] 프로그램 카운터가 프로그래머에게 보인다는 발명과 어드레싱 모드의 조합으로, 절대 주소 지정과 상대 주소 지정을 사용할 수 있게 되었다.[61] 어드레싱 모드로는 레지스터, 즉시 값, 절대 주소 지정, 상대 주소 지정, 간접 주소 지정, 인덱스 기반 어드레싱이 있으며, 레지스터의 자동 증가/자동 감소(바이트 연산이면 1, 워드 연산이면 2)를 지정할 수 있다.[61] 상대 주소 지정을 사용하면 기계어 프로그램을 위치 독립 코드로 만들 수 있다.[61]
PDP-11의 주소는 16비트이며, 64KB까지의 주소 범위를 지정할 수 있다.[61] PDP-11에서 VAX로 이행할 무렵, 8비트 바이트와 16진 표기가 일반적이었지만, PDP-11에서는 팔진 표기가 일반적이었고, 탑재 메모리 용량은 워드 수로 표기되는 것이 보통이었다.[61] 따라서, 기본 논리 주소 공간은 32K워드이지만, 상위 4K워드(주소 160000부터 177777까지)는 주변 기기의 레지스터 매핑용으로 예약되어 있어, 메모리는 매핑되지 않았다.[61] 따라서, 초기 PDP-11의 최대 메모리 용량은 28K워드였다.[61]
임의의 범용 레지스터에 적용할 수 있는 8종류의 어드레싱 모드를 아래 표에 나타낸다. R6(스택 포인터)과 R7(프로그램 카운터)에 대해서는 별도로 해설한다.
| 코드 | 명칭 | 예 | 설명 |
|---|---|---|---|
| 0n | 레지스터 | OPR Rn | Rn에 오퍼랜드가 있다. |
| 1n | 레지스터 간접 | OPR (Rn) | Rn에 오퍼랜드의 주소가 있다. |
| 2n | 자동 증가 | OPR (Rn)+ | Rn에 오퍼랜드의 주소가 있으며, 명령 실행 후에 Rn의 내용을 증가시킨다. |
| 3n | 자동 증가 간접 | OPR @(Rn)+ | Rn에 오퍼랜드에 대한 포인터의 주소가 있으며, 명령 실행 후에 Rn의 내용을 2만큼 증가시킨다. |
| 4n | 자동 감소 | OPR −(Rn) | 명령 실행 전에 Rn을 감소시키고, 그것을 오퍼랜드의 주소로 사용한다. |
| 5n | 자동 감소 간접 | OPR @−(Rn) | 명령 실행 전에 Rn을 2만큼 감소시키고, 그것을 오퍼랜드에 대한 포인터의 주소로 사용한다. |
| 6n | 인덱스 | OPR X(Rn) | Rn+X가 오퍼랜드의 주소. X는 이 명령에 이어지는 워드. |
| 7n | 인덱스 간접 | OPR @X(Rn) | Rn+X가 오퍼랜드에 대한 포인터의 주소. X는 이 명령에 이어지는 워드. |
2 오퍼랜드 명령에서는 양쪽 오퍼랜드에서 이러한 모드를 사용할 수 있다.[61] 인덱스 및 인덱스 간접 모드는 명령에 이어지는 워드도 명령의 일부로 사용하므로, 2 오퍼랜드 명령은 3 워드가 되는 경우가 있다.[61]
자동 증가와 자동 감소는 바이트 명령이면 1씩, 워드 명령이면 2씩 증가/감소한다.[61] 간접 모드의 경우, 포인터 1개 분의 증가/감소가 되므로, 2씩이 된다.[61]
R7(프로그램 카운터)를 사용하는 경우, 다음 4가지 어드레싱 모드가 의미 있는 효과를 발휘한다.
| 코드 | 명칭 | 예 | 설명 |
|---|---|---|---|
| 27 | 즉시 | OPR #n | 오퍼랜드는 명령어 내에 있다. |
| 37 | 절대 | OPR @#a | 오퍼랜드의 절대 주소가 명령어 내에 있다. |
| 67 | 상대 | OPR a | 명령어에 이어진 워드의 내용 a를 PC+2에 더한 것을 주소로 사용한다. |
| 77 | 상대 간접 | OPR @a | 명령어에 이어진 워드의 내용 a를 PC+2에 더한 것을 주소의 주소로 사용한다. |
절대 모드는 예를 들어, 고정된 주소에 매핑된 I/O 레지스터의 액세스에 사용한다.[61] 상대 모드는 프로그램의 변수를 참조하는 경우나 분기 대상을 지정하는 경우에 사용한다.[61] 상대 모드나 상대 간접 모드만을 사용한 프로그램은 위치 독립이 된다.[61] 즉, 프로그램을 배치하는 주소가 가정되지 않으므로 임의의 위치에 로드할 수 있으며, 이동시키는 것도 가능하다(재배치 가능한 바이너리).[61]
R6는 SP로 표기되기도 하며, 트랩이나 인터럽트 시 하드웨어 스택의 스택 포인터로 사용된다.[61] 이 스택은 주소가 작은 방향으로 증가한다.[61] SP 또는 프로그래머가 소프트웨어 스택의 스택 포인터로 선택한 임의의 레지스터에는 다음과 같은 어드레싱 모드가 있다.[61]
| 코드 | 명칭 | 예 | 설명 |
|---|---|---|---|
| 16 | 간접 | (SP) | 피연산자는 스택의 최상단에 있다. |
| 26 | 자동 증가 | (SP)+ | 피연산자는 스택의 최상단에 있으며, 사용 후 팝(pop)한다. |
| 36 | 자동 증가 간접 | @(SP)+ | 피연산자에 대한 포인터가 스택의 최상단에 있다. 사용 후 팝(pop)한다. |
| 46 | 자동 감소 | −(SP) | 값을 스택에 푸시(push)한다. |
| 66 | 인덱스 | X(SP) | 스택의 최상단으로부터의 상대적인 위치로 스택 내의 임의의 항목을 참조한다. |
| 76 | 인덱스 간접 | @X(SP) | 스택의 최상단으로부터의 상대적인 위치로 스택 내의 임의의 포인터가 가리키는 항목을 참조한다. |
PDP-11은 바이트(군) 및 워드(군)를 조작한다.[61] 바이트(군)는 레지스터 번호로 지정되며, 해당 레지스터의 하위 바이트를 직접 조작하거나, 해당 레지스터로 메모리 위치를 가리킨다.[61] 워드(군) 역시 레지스터 번호로 지정되며, 해당 레지스터의 내용을 직접 조작하거나, 해당 레지스터로 메모리 위치를 가리킨다.[61] 워드는 짝수 번지 경계에 위치해야 한다.[61] 오퍼랜드가 있는 대부분의 명령에서 비트 15가 설정되어 있으면 바이트 어드레싱이고, 비트 15가 지워져 있으면 워드 어드레싱이다.[61] 다음 표에서 나타낸 바와 같이, 니모닉의 마지막에 "B"를 붙이면 바이트 조작을 의미한다 (예: MOV와 MOVB).[61]
명령어의 처음 4비트가 명령어 코드이다(특히 비트 15에서 워드 어드레싱인지 바이트 어드레싱인지를 나타냄).[61] 6비트가 1 오퍼랜드가 되며, 2개의 오퍼랜드가 있다.[61] 오퍼랜드 내용에 관해서는 위에 언급한 어드레싱 모드를 참조.[61]
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| opcode영어 | mode영어 | source영어 | mode영어 | destination영어 | |||||||||||
| 명령어 코드 | 니모닉 | 설명 |
|---|---|---|
| 01 | `MOV` | 전송: dest = src |
| 11 | `MOVB` | |
| 02 | `CMP` | 비교: src − dest 를 계산하고 플래그만 설정한다. |
| 12 | `CMPB` | |
| 03 | `BIT` | 비트 테스트: dest & src 를 계산하고 플래그만 설정한다. |
| 13 | `BITB` | |
| 04 | `BIC` | 비트 클리어: dest &= ~src |
| 14 | `BICB` | |
| 05 | `BIS` | 비트 세트(논리합): dest |= src |
| 15 | `BISB` | |
| 06 | `ADD` | 덧셈: dest += src |
| 16 | `SUB` | 뺄셈: dest −= src |
`ADD` 명령어와 `SUB` 명령어는 워드 어드레싱이며, 바이트를 대상으로 하는 버전은 존재하지 않는다.[61]
일부 2 오퍼랜드 명령어는 한쪽 오퍼랜드에 레지스터만 지정할 수 있다.[61]
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 0 | |
| opcode영어 | register영어 | mode영어 | source/destination영어 | ||||||||||||
여기서, 레지스터 쌍이 사용된다.[61] "`(R,R+1)`"과 같이 표기하며, R 레지스터가 상위 워드이고 짝수여야 한다.[61] 두 번째 레지스터는 하위 워드(또는 나머지)이다.[61] 곱셈에서는 R이 홀수 레지스터여도 되지만, 이 경우의 곱의 상위 워드는 레지스터에 보존되지 않는다.[61]
| 명령어 코드 | 니모닉 | 설명 |
|---|---|---|
| 070 | `MUL` | 곱셈: (R,R+1) = R × src |
| 071 | `DIV` | 나눗셈: (R,R+1) ÷ src 를 계산. 몫을 R, 나머지를 R+1로 |
| 072 | `ASH` | 산술 시프트: R <<= src 를 수행한다. 시프트할 비트 수는 −32에서 31까지 지정 가능. |
| 073 | `ASHC` | 연쇄 산술 시프트: (R,R+1) <<= src 를 수행하며, 시프트할 비트 수는 −32에서 31까지 지정 가능 |
| 074 | `XOR` | 배타적 논리합: dest ^= reg (워드만) |
| 075 | (부동 소수점 연산) | |
| 076 | (시스템 명령어) | |
| 077 | `SOB` | 데크리먼트하고 분기: 레지스터를 데크리먼트하고, 결과가 0이 아니면 PC 상대적으로 뒤로 분기한다. 분기할 수 있는 범위는 0에서 63 워드까지. |
명령의 처음 10비트는 명령 코드이며, 특히 비트 15는 워드 어드레싱인지 바이트 어드레싱인지를 나타낸다.[61] 처음 4비트 조합의 대부분이 2 오퍼랜드 명령에 사용되므로 명령 코드가 9비트여도 명령 종류가 그렇게 많지는 않다.[61] 나머지 6비트는 1 오퍼랜드 명령을 나타낸다.[61]
| 15 | style="width:15px;"| | style="width:15px;"| | style="width:15px;"| | 11 | 10 | style="width:15px;"| | style="width:15px;"| | style="width:15px;"| | 6 | 5 | style="width:15px;"| | 3 | 2 | style="width:15px;"| | 0 |
| B | 0 | 0 | 0 | 1 | Opcode | Mode | Register | ||||||||
| 명령 코드 | 니모닉 | 설명 |
|---|---|---|
| 0003 | SWAB | 바이트 스왑: 워드를 8비트 로테이트 |
| 004r | (서브루틴 호출) | |
| 104x | (에뮬레이터 트랩) | |
| 0050 | CLR | 클리어: dest = 0 |
| 1050 | CLRB | |
| 0051 | COM | 보수: dest = ~dest |
| 1051 | COMB | |
| 0052 | INC | 증가: dest += 1 |
| 1052 | INCB | |
| 0053 | DEC | 감소: dest −= 1 |
| 1053 | DECB | |
| 0054 | NEG | 부호 반전: dest = −dest |
| 1054 | NEGB | |
| 0055 | ADC | 캐리 덧셈: dest += C |
| 1055 | ADCB | |
| 0056 | SBC | 캐리 뺄셈: dest −= C |
| 1056 | SBCB | |
| 0057 | TST | 테스트: src를 로드하고, 플래그만 설정 |
| 1057 | TSTB | |
| 0060 | ROR | 1비트 오른쪽 로테이트 |
| 1060 | RORB | |
| 0061 | ROL | 1비트 왼쪽 로테이트 |
| 1061 | ROLB | |
| 0062 | ASR | 오른쪽 시프트: dest >>= 1 |
| 1062 | ASRB | |
| 0063 | ASL | 왼쪽 시프트: dest |
| 1063 | ASLB | |
| 0064 | MARK | 서브루틴에서 복귀. 0부터 63개의 명령 워드 건너뛰기 |
| 1064 | MTPS | 상태 레지스터로 전송: PS = src |
| 0065 | MFPI | 이전 I 공간에서 전송: −(SP) = src |
| 1065 | MFPD | 이전 D 공간에서 전송: −(SP) = src |
| 0066 | MTPI | 이전 I 공간으로 전송: dest = (SP)+ |
| 1066 | MTPD | 이전 D 공간으로 전송: dest = (SP)+ |
| 0067 | SXT | 부호 확장: dest = (N 플래그를 16개 복사) |
| 1067 | MFPS | 상태 레지스터에서 전송: dest = PS |
SWAB 명령은 지정된 워드의 상위 바이트와 하위 바이트를 교환하는 명령이며, 바이트 어드레싱은 존재하지 않는다.[61]
많은 분기 명령은 PSW(상태 레지스터)의 조건 코드 상태에 따라 분기할지 여부를 결정한다.[61] 일반적으로 바로 전에 CMP 명령, BIT 명령, TST 명령 등을 수행하여 조건 코드를 설정한다.[61] 산술 연산 명령이나 논리 연산 명령도 조건 코드를 설정한다.[61] 인텔의 x86과 달리 MOV 명령도 조건 코드를 설정한다.[61] 따라서, 전송한 값이 0인지, 음수인지에 따라 조건 분기할 수도 있다.[61]
명령어의 상위 8비트가 명령 코드이다.[61] 하위 8비트는 현재 프로그램 카운터로부터의 상대 오프셋을 지정한다.[61] 오프셋은 워드 수이며, 분기 대상 주소는 이를 2배로 하여 PC에 더한 값이 된다.[61] 또한 오프셋은 부호 있는 정수이므로, 전방과 후방 모두 분기할 수 있다.[61]
| 15 | style="width:15px;"| | style="width:15px;"| | style="width:15px;"| | 11 | 10 | style="width:15px;"| | 8 | 7 | style="width:15px;"| | style="width:15px;"| | style="width:15px;"| | style="width:15px;"| | 0 | ||
| x | 0 | 0 | 0 | 0 | Opcode | Offset | |||||||||
| 명령 코드 | 니모닉 | 설명 |
|---|---|---|
| 0000xx | (시스템 명령) | |
| 0004xx | BR | 무조건 분기 |
| 0010xx | BNE | 같지 않을 때 분기 (Z=0) |
| 0014xx | BEQ | 같을 때 분기 (Z=1) |
| 0020xx | BGE | 크거나 같을 때 분기 (N|V = 0) |
| 0024xx | BLT | 작을 때 분기 (N|V = 1) |
| 0030xx | BGT | 클 때 분기 (N^V = 1) |
| 0034xx | BLE | 작거나 같을 때 분기 (N^V = 0) |
| 1000xx | BPL | 양수일 때 분기 (N=0) |
| 1004xx | BMI | 음수일 때 분기 (N=1) |
| 1010xx | BHI | 높을 때 분기 (C|Z = 0) |
| 1014xx | BLOS | 낮거나 같을 때 분기 (C|Z = 1) |
| 1020xx | BVC | 오버플로가 아닐 때 분기 (V=0) |
| 1024xx | BVS | 오버플로일 때 분기 (V=1) |
| 1030xx | BCC | 캐리가 없을 때 분기 (C=0) |
| BHIS | 높거나 같을 때 분기 (C=0) | |
| 1034xx | BCS | 캐리가 있을 때 분기 (C=1) |
| BLO | 낮을 때 분기 (C=1) | |
2 오퍼랜드 명령 표에 있는 SOB (subtract one and branch, 1을 빼고 분기)도 조건 분기 명령이다.[61] 레지스터 오퍼랜드를 감소시키고, 결과가 0이 아닐 때 명령의 하위 6비트를 부호 없는 오프셋으로 해석하여 뒤로 분기한다.[61]
JSR 명령은 임의의 레지스터를 스택에 저장할 수 있다.[61] 저장할 레지스터가 없는 경우 PC를 지정하고 (JSR PC, address), 서브루틴에서 복귀할 때도 RTS PC를 사용한다.[61] 예를 들어, "JSR R4, address"로 서브루틴을 호출하면, R4의 원래 값이 스택 상단에 놓이고, 리턴 주소 (JSR 명령의 다음 명령 주소)가 R4에 저장된다.[61] 리턴 주소 위치에는 코드가 아닌 데이터를 놓고 (R4)+로 읽거나, 포인터를 놓고 @(R4)+로 읽을 수 있다.[61] 이렇게 하면 자동 증가로 데이터 부분을 건너뛰게 되어, R4가 실제 리턴 주소가 된다.[61] 따라서 RTS R4를 실행하면 올바른 위치로 복귀할 수 있다.[61]
상태 레지스터 (PSW)에는 다음 4개의 조건 코드가 있다.[61]
- N - 음수임을 나타낸다.
- Z - 제로 (비교 결과가 같음)임을 나타낸다.
- V - 오버플로가 발생했음을 나타낸다.
- C - 캐리가 발생했음을 나타낸다.
SCC와 CCC는 이 4개를 모두 클리어 또는 설정한다.[61]
=== PDP 엔디안 ===
PDP-11의 엔디안은 독특했다. 16비트 워드는 리틀 엔디안으로 저장되어 하위 바이트가 주소가 작은 쪽에 저장된다. 그러나 32비트 워드를 구성하는 두 개의 16비트 워드는 빅 엔디안으로 저장, 상위 16비트 워드가 주소가 작은 쪽에 저장되었다. 각 16비트 워드 내는 리틀 엔디안이다. PDP-11이 매우 일반화되었기 때문에 이러한 형식을 '''PDP 엔디안'''이라고 부른다.
이러한 미들 엔디안과 관련된 문제는 "NUXI영어 문제"라고 한다. 이는 UNIX영어라는 문자열을 PDP 엔디안 순서로 재정렬한 것에서 유래한다. 다른 기종으로 이식했을 때, 첫 번째 부팅 메시지에서 "UNIX"가 아닌 "NUXI"로 출력된 적이 있었다.
(컴퓨터 내 데이터 배열에 대해 "엔디안"이라는 용어를 사용하는 제안은 1980년에 이루어졌기 때문에 초기 PDP-11에 대해 엔디안이라는 용어를 사용하는 것은 사후적인 것이다.)
=== 입출력 구조 ===
초기 PDP-11 모델은 입출력 전용 버스를 갖지 않고 유니버스라고 하는 단일 시스템 버스를 사용했다.[10] 입출력 장치는 메모리 주소 공간에 매핑되었으며, 별도의 입출력 명령 없이 메모리 접근 명령어를 사용하여 제어되었다.[10] 각 장치는 자체 인터럽트 벡터와 인터럽트 우선 순위를 가졌다.[10] 이러한 구조는 시스템의 유연성과 확장성을 높여, 프로세서 설계 당시 고려되지 않았던 하드웨어를 제어하는 장치를 포함하여 새로운 버스 장치를 쉽게 연결할 수 있게 했다.[10] DEC는 유니버스의 기본 사양을 공개하고 프로토타이핑 버스 인터페이스 회로 기판을 제공하여 고객이 자체 유니버스 호환 하드웨어를 개발하도록 장려했다.[10]
유니버스는 PDP-11을 맞춤형 주변 장치에 적합하게 만들었다. 알카텔-루슨트(Alcatel-Lucent)의 전신 중 하나인 벨 전화 제조 회사(Bell Telephone Manufacturing Company)는 BTMC DPS
3. 1. 명령어 집합
PDP-11 프로세서 아키텍처는 대부분 직교 명령어 집합을 갖추고 있다.[10] 예를 들어, ''로드'' 및 ''저장''과 같은 명령어가 아닌, 피연산자(소스 및 대상)가 메모리 또는 레지스터가 될 수 있는 ''이동'' 명령어가 있다.[10] 특정 ''입력'' 또는 ''출력'' 명령어가 없다. PDP-11은 메모리 맵 I/O를 사용하므로 동일한 ''이동'' 명령어가 사용된다.[10] 직교성은 입력 장치에서 출력 장치로 데이터를 직접 이동하는 것까지 가능하게 한다.[10] ''더하기''와 같은 더 복잡한 명령어 역시 메모리, 레지스터, 입력 또는 출력을 소스 또는 대상으로 가질 수 있다.[10]대부분의 피연산자는 8개의 레지스터에 8가지 주소 지정 모드를 적용할 수 있다.[10] 주소 지정 모드는 레지스터, 즉시, 절대, 상대, 지연(간접), 인덱스 주소 지정을 제공하며, 한 개(바이트 명령어) 또는 두 개(워드 명령어)씩 레지스터의 자동 증가 및 자동 감소를 지정할 수 있다.[10] 상대 주소 지정을 사용하면 기계어 프로그램이 위치 독립 코드가 될 수 있다.[10]
높은 직교성을 가진 명령 집합 때문에 명령 종류와 메모리 접근 방식을 분리하여 생각할 수 있기 때문이다.[54] 임의의 메모리 접근 방식(어드레싱 모드)을 임의의 명령에 사용할 수 있으며, 다른 명령 집합처럼 예외 사항을 기억할 필요가 없다.[54] 예를 들어, 많은 명령 집합에는 `load`와 `store`가 있지만, PDP-11에는 `move` 명령만 있으며, 전송 원본과 전송 대상 모두 오퍼랜드로 메모리나 레지스터를 지정할 수 있다.[54] 또한, 입출력 전용 명령이 없으며, 직교성을 통해 입력 장치에서 출력 장치로 직접 데이터 전송도 가능하다.[54] 마찬가지로 덧셈 명령도 임의의 오퍼랜드(메모리, 레지스터, 장치)를 더하는 숫자로도, 계산 결과의 저장 위치로도 사용할 수 있다.[54]
PDP-11의 명령 집합 아키텍처가 B 언어의 관습적인 구문에 영향을 미쳤다는 설이 있지만, 이는 잘못된 것이다.[57] 레지스터 증가 또는 감소를 수행하는 어드레싱 모드가 C 언어의
−−i 또는 i++와 같은 식에 대응한다고 한다.[57] 만약 i와 j가 모두 레지스터 변수라면, *(−−i) = *(j++)와 같은 식은 하나의 기계어 명령으로 컴파일할 수 있다.[57] 데니스 리치는 B 언어 설계 당시 PDP-11은 존재하지 않았으므로 이 전설은 틀렸다고 명확히 부정했다.[57] 단, PDP-7의 자동 증가 셀이 PDP-11의 어드레싱 모드에 영향을 미쳤을 가능성은 있지만, B 언어 자체는 PDP-7의 해당 기능도 사용하지 않았다고 언급했다[57]。그럼에도, C 언어는 PDP-11에서 구현할 때 PDP-11이 가진 세부적인 장점을 활용했으며, 그로 인해 이후 프로세서 설계에 영향을 미쳤을 가능성이 있다[54]。논리적으로, 어드레싱 모드와 명령 집합에 의해 기반이 제공된다고 할 수 있다.[61] 2오퍼랜드 명령은 두 개의 6 비트 필드로 오퍼랜드를 지정하고(3비트가 레지스터 지정, 3비트가 어드레싱 모드 지정), 4비트로 명령 코드를 지정한다.[61] 1오퍼랜드 명령은 6비트로 오퍼랜드를 지정하고, 10비트로 명령 코드를 지정한다.[61] 어떤 명령에서도 오퍼랜드 지정 필드에 임의의 어드레싱 모드를 지정할 수 있다.[61] 8개의 레지스터(0번부터 7번까지)가 있으며, 7개의 레지스터는 임의의 용도로 사용할 수 있지만, 6번 레지스터는 몇몇 명령에서 스택포인터로 인식되며, 7번 레지스터는 프로그램 카운터이다.[61] 프로그램 카운터가 프로그래머에게 보인다는 발명과 어드레싱 모드의 조합으로, 절대 주소 지정과 상대 주소 지정을 사용할 수 있게 되었다.[61] 어드레싱 모드로는 레지스터, 즉시 값, 절대 주소 지정, 상대 주소 지정, 간접 주소 지정, 인덱스 기반 어드레싱이 있으며, 레지스터의 자동 증가/자동 감소(바이트 연산이면 1, 워드 연산이면 2)를 지정할 수 있다.[61] 상대 주소 지정을 사용하면 기계어 프로그램을 위치 독립 코드로 만들 수 있다.[61]
다음 정보는 DEC의 PDP-11 프로세서 핸드북에 있다.[61]
PDP-11의 주소는 16비트이며, 64KB까지의 주소 범위를 지정할 수 있다.[61] PDP-11에서 VAX로 이행할 무렵, 8비트 바이트와 16진 표기가 일반적이었지만, PDP-11에서는 팔진 표기가 일반적이었고, 탑재 메모리 용량은 워드 수로 표기되는 것이 보통이었다.[61] 따라서, 기본 논리 주소 공간은 32K워드이지만, 상위 4K워드(주소 160000부터 177777까지)는 주변 기기의 레지스터 매핑용으로 예약되어 있어, 메모리는 매핑되지 않았다.[61] 따라서, 초기 PDP-11의 최대 메모리 용량은 28K워드였다.[61]
임의의 범용 레지스터에 적용할 수 있는 8종류의 어드레싱 모드를 아래 표에 나타낸다. R6(스택 포인터)과 R7(프로그램 카운터)에 대해서는 별도로 해설한다.
| 코드 | 명칭 | 예 | 설명 |
|---|---|---|---|
| 0n | 레지스터 | OPR Rn | Rn에 오퍼랜드가 있다. |
| 1n | 레지스터 간접 | OPR (Rn) | Rn에 오퍼랜드의 주소가 있다. |
| 2n | 자동 증가 | OPR (Rn)+ | Rn에 오퍼랜드의 주소가 있으며, 명령 실행 후에 Rn의 내용을 증가시킨다. |
| 3n | 자동 증가 간접 | OPR @(Rn)+ | Rn에 오퍼랜드에 대한 포인터의 주소가 있으며, 명령 실행 후에 Rn의 내용을 2만큼 증가시킨다. |
| 4n | 자동 감소 | OPR −(Rn) | 명령 실행 전에 Rn을 감소시키고, 그것을 오퍼랜드의 주소로 사용한다. |
| 5n | 자동 감소 간접 | OPR @−(Rn) | 명령 실행 전에 Rn을 2만큼 감소시키고, 그것을 오퍼랜드에 대한 포인터의 주소로 사용한다. |
| 6n | 인덱스 | OPR X(Rn) | Rn+X가 오퍼랜드의 주소. X는 이 명령에 이어지는 워드. |
| 7n | 인덱스 간접 | OPR @X(Rn) | Rn+X가 오퍼랜드에 대한 포인터의 주소. X는 이 명령에 이어지는 워드. |
2 오퍼랜드 명령에서는 양쪽 오퍼랜드에서 이러한 모드를 사용할 수 있다.[61] 인덱스 및 인덱스 간접 모드는 명령에 이어지는 워드도 명령의 일부로 사용하므로, 2 오퍼랜드 명령은 3 워드가 되는 경우가 있다.[61]
자동 증가와 자동 감소는 바이트 명령이면 1씩, 워드 명령이면 2씩 증가/감소한다.[61] 간접 모드의 경우, 포인터 1개 분의 증가/감소가 되므로, 2씩이 된다.[61]
R7(프로그램 카운터)를 사용하는 경우, 다음 4가지 어드레싱 모드가 의미 있는 효과를 발휘한다.
| 코드 | 명칭 | 예 | 설명 |
|---|---|---|---|
| 27 | 즉시 | OPR #n | 오퍼랜드는 명령어 내에 있다. |
| 37 | 절대 | OPR @#a | 오퍼랜드의 절대 주소가 명령어 내에 있다. |
| 67 | 상대 | OPR a | 명령어에 이어진 워드의 내용 a를 PC+2에 더한 것을 주소로 사용한다. |
| 77 | 상대 간접 | OPR @a | 명령어에 이어진 워드의 내용 a를 PC+2에 더한 것을 주소의 주소로 사용한다. |
절대 모드는 예를 들어, 고정된 주소에 매핑된 I/O 레지스터의 액세스에 사용한다.[61] 상대 모드는 프로그램의 변수를 참조하는 경우나 분기 대상을 지정하는 경우에 사용한다.[61] 상대 모드나 상대 간접 모드만을 사용한 프로그램은 위치 독립이 된다.[61] 즉, 프로그램을 배치하는 주소가 가정되지 않으므로 임의의 위치에 로드할 수 있으며, 이동시키는 것도 가능하다(재배치 가능한 바이너리).[61]
R6는 SP로 표기되기도 하며, 트랩이나 인터럽트 시 하드웨어 스택의 스택 포인터로 사용된다.[61] 이 스택은 주소가 작은 방향으로 증가한다.[61] SP 또는 프로그래머가 소프트웨어 스택의 스택 포인터로 선택한 임의의 레지스터에는 다음과 같은 어드레싱 모드가 있다.[61]
| 코드 | 명칭 | 예 | 설명 |
|---|---|---|---|
| 16 | 간접 | (SP) | 피연산자는 스택의 최상단에 있다. |
| 26 | 자동 증가 | (SP)+ | 피연산자는 스택의 최상단에 있으며, 사용 후 팝(pop)한다. |
| 36 | 자동 증가 간접 | @(SP)+ | 피연산자에 대한 포인터가 스택의 최상단에 있다. 사용 후 팝(pop)한다. |
| 46 | 자동 감소 | −(SP) | 값을 스택에 푸시(push)한다. |
| 66 | 인덱스 | X(SP) | 스택의 최상단으로부터의 상대적인 위치로 스택 내의 임의의 항목을 참조한다. |
| 76 | 인덱스 간접 | @X(SP) | 스택의 최상단으로부터의 상대적인 위치로 스택 내의 임의의 포인터가 가리키는 항목을 참조한다. |
PDP-11은 바이트(군) 및 워드(군)를 조작한다.[61] 바이트(군)는 레지스터 번호로 지정되며, 해당 레지스터의 하위 바이트를 직접 조작하거나, 해당 레지스터로 메모리 위치를 가리킨다.[61] 워드(군) 역시 레지스터 번호로 지정되며, 해당 레지스터의 내용을 직접 조작하거나, 해당 레지스터로 메모리 위치를 가리킨다.[61] 워드는 짝수 번지 경계에 위치해야 한다.[61] 오퍼랜드가 있는 대부분의 명령에서 비트 15가 설정되어 있으면 바이트 어드레싱이고, 비트 15가 지워져 있으면 워드 어드레싱이다.[61] 다음 표에서 나타낸 바와 같이, 니모닉의 마지막에 "B"를 붙이면 바이트 조작을 의미한다 (예: MOV와 MOVB).[61]
명령어의 처음 4비트가 명령어 코드이다(특히 비트 15에서 워드 어드레싱인지 바이트 어드레싱인지를 나타냄).[61] 6비트가 1 오퍼랜드가 되며, 2개의 오퍼랜드가 있다.[61] 오퍼랜드 내용에 관해서는 위에 언급한 어드레싱 모드를 참조.[61]
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| opcode영어 | mode영어 | source영어 | mode영어 | destination영어 | |||||||||||
| 명령어 코드 | 니모닉 | 설명 |
|---|---|---|
| 01 | `MOV` | 전송: dest = src |
| 11 | `MOVB` | |
| 02 | `CMP` | 비교: src − dest 를 계산하고 플래그만 설정한다. |
| 12 | `CMPB` | |
| 03 | `BIT` | 비트 테스트: dest & src 를 계산하고 플래그만 설정한다. |
| 13 | `BITB` | |
| 04 | `BIC` | 비트 클리어: dest &= ~src |
| 14 | `BICB` | |
| 05 | `BIS` | 비트 세트(논리합): dest |= src |
| 15 | `BISB` | |
| 06 | `ADD` | 덧셈: dest += src |
| 16 | `SUB` | 뺄셈: dest −= src |
`ADD` 명령어와 `SUB` 명령어는 워드 어드레싱이며, 바이트를 대상으로 하는 버전은 존재하지 않는다.[61]
일부 2 오퍼랜드 명령어는 한쪽 오퍼랜드에 레지스터만 지정할 수 있다.[61]
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 0 | |
| opcode영어 | register영어 | mode영어 | source/destination영어 | ||||||||||||
여기서, 레지스터 쌍이 사용된다.[61] "`(R,R+1)`"과 같이 표기하며, R 레지스터가 상위 워드이고 짝수여야 한다.[61] 두 번째 레지스터는 하위 워드(또는 나머지)이다.[61] 곱셈에서는 R이 홀수 레지스터여도 되지만, 이 경우의 곱의 상위 워드는 레지스터에 보존되지 않는다.[61]
| 명령어 코드 | 니모닉 | 설명 |
|---|---|---|
| 070 | `MUL` | 곱셈: (R,R+1) = R × src |
| 071 | `DIV` | 나눗셈: (R,R+1) ÷ src 를 계산. 몫을 R, 나머지를 R+1로 |
| 072 | `ASH` | 산술 시프트: R <<= src 를 수행한다. 시프트할 비트 수는 −32에서 31까지 지정 가능. |
| 073 | `ASHC` | 연쇄 산술 시프트: (R,R+1) <<= src 를 수행하며, 시프트할 비트 수는 −32에서 31까지 지정 가능 |
| 074 | `XOR` | 배타적 논리합: dest ^= reg (워드만) |
| 075 | (부동 소수점 연산) | |
| 076 | (시스템 명령어) | |
| 077 | `SOB` | 데크리먼트하고 분기: 레지스터를 데크리먼트하고, 결과가 0이 아니면 PC 상대적으로 뒤로 분기한다. 분기할 수 있는 범위는 0에서 63 워드까지. |
명령의 처음 10비트는 명령 코드이며, 특히 비트 15는 워드 어드레싱인지 바이트 어드레싱인지를 나타낸다.[61] 처음 4비트 조합의 대부분이 2 오퍼랜드 명령에 사용되므로 명령 코드가 9비트여도 명령 종류가 그렇게 많지는 않다.[61] 나머지 6비트는 1 오퍼랜드 명령을 나타낸다.[61]
| 15 | style="width:15px;"| | style="width:15px;"| | style="width:15px;"| | 11 | 10 | style="width:15px;"| | style="width:15px;"| | style="width:15px;"| | 6 | 5 | style="width:15px;"| | 3 | 2 | style="width:15px;"| | 0 |
| B | 0 | 0 | 0 | 1 | Opcode | Mode | Register | ||||||||
| 명령 코드 | 니모닉 | 설명 |
|---|---|---|
| 0003 | SWAB | 바이트 스왑: 워드를 8비트 로테이트 |
| 004r | (서브루틴 호출) | |
| 104x | (에뮬레이터 트랩) | |
| 0050 | CLR | 클리어: dest = 0 |
| 1050 | CLRB | |
| 0051 | COM | 보수: dest = ~dest |
| 1051 | COMB | |
| 0052 | INC | 증가: dest += 1 |
| 1052 | INCB | |
| 0053 | DEC | 감소: dest −= 1 |
| 1053 | DECB | |
| 0054 | NEG | 부호 반전: dest = −dest |
| 1054 | NEGB | |
| 0055 | ADC | 캐리 덧셈: dest += C |
| 1055 | ADCB | |
| 0056 | SBC | 캐리 뺄셈: dest −= C |
| 1056 | SBCB | |
| 0057 | TST | 테스트: src를 로드하고, 플래그만 설정 |
| 1057 | TSTB | |
| 0060 | ROR | 1비트 오른쪽 로테이트 |
| 1060 | RORB | |
| 0061 | ROL | 1비트 왼쪽 로테이트 |
| 1061 | ROLB | |
| 0062 | ASR | 오른쪽 시프트: dest >>= 1 |
| 1062 | ASRB | |
| 0063 | ASL | 왼쪽 시프트: dest |
| 1063 | ASLB | |
| 0064 | MARK | 서브루틴에서 복귀. 0부터 63개의 명령 워드 건너뛰기 |
| 1064 | MTPS | 상태 레지스터로 전송: PS = src |
| 0065 | MFPI | 이전 I 공간에서 전송: −(SP) = src |
| 1065 | MFPD | 이전 D 공간에서 전송: −(SP) = src |
| 0066 | MTPI | 이전 I 공간으로 전송: dest = (SP)+ |
| 1066 | MTPD | 이전 D 공간으로 전송: dest = (SP)+ |
| 0067 | SXT | 부호 확장: dest = (N 플래그를 16개 복사) |
| 1067 | MFPS | 상태 레지스터에서 전송: dest = PS |
SWAB 명령은 지정된 워드의 상위 바이트와 하위 바이트를 교환하는 명령이며, 바이트 어드레싱은 존재하지 않는다.[61]
많은 분기 명령은 PSW(상태 레지스터)의 조건 코드 상태에 따라 분기할지 여부를 결정한다.[61] 일반적으로 바로 전에 CMP 명령, BIT 명령, TST 명령 등을 수행하여 조건 코드를 설정한다.[61] 산술 연산 명령이나 논리 연산 명령도 조건 코드를 설정한다.[61] 인텔의 x86과 달리 MOV 명령도 조건 코드를 설정한다.[61] 따라서, 전송한 값이 0인지, 음수인지에 따라 조건 분기할 수도 있다.[61]
명령어의 상위 8비트가 명령 코드이다.[61] 하위 8비트는 현재 프로그램 카운터로부터의 상대 오프셋을 지정한다.[61] 오프셋은 워드 수이며, 분기 대상 주소는 이를 2배로 하여 PC에 더한 값이 된다.[61] 또한 오프셋은 부호 있는 정수이므로, 전방과 후방 모두 분기할 수 있다.[61]
| 15 | style="width:15px;"| | style="width:15px;"| | style="width:15px;"| | 11 | 10 | style="width:15px;"| | 8 | 7 | style="width:15px;"| | style="width:15px;"| | style="width:15px;"| | style="width:15px;"| | style="width:15px;"| | 0 | |
| x | 0 | 0 | 0 | 0 | Opcode | Offset | |||||||||
| 명령 코드 | 니모닉 | 설명 |
|---|---|---|
| 0000xx | (시스템 명령) | |
| 0004xx | BR | 무조건 분기 |
| 0010xx | BNE | 같지 않을 때 분기 (Z=0) |
| 0014xx | BEQ | 같을 때 분기 (Z=1) |
| 0020xx | BGE | 크거나 같을 때 분기 (N|V = 0) |
| 0024xx | BLT | 작을 때 분기 (N|V = 1) |
| 0030xx | BGT | 클 때 분기 (N^V = 1) |
| 0034xx | BLE | 작거나 같을 때 분기 (N^V = 0) |
| 1000xx | BPL | 양수일 때 분기 (N=0) |
| 1004xx | BMI | 음수일 때 분기 (N=1) |
| 1010xx | BHI | 높을 때 분기 (C|Z = 0) |
| 1014xx | BLOS | 낮거나 같을 때 분기 (C|Z = 1) |
| 1020xx | BVC | 오버플로가 아닐 때 분기 (V=0) |
| 1024xx | BVS | 오버플로일 때 분기 (V=1) |
| 1030xx | BCC | 캐리가 없을 때 분기 (C=0) |
| BHIS | 높거나 같을 때 분기 (C=0) | |
| 1034xx | BCS | 캐리가 있을 때 분기 (C=1) |
| BLO | 낮을 때 분기 (C=1) | |
2 오퍼랜드 명령 표에 있는 SOB (subtract one and branch, 1을 빼고 분기)도 조건 분기 명령이다.[61] 레지스터 오퍼랜드를 감소시키고, 결과가 0이 아닐 때 명령의 하위 6비트를 부호 없는 오프셋으로 해석하여 뒤로 분기한다.[61]
JSR 명령은 임의의 레지스터를 스택에 저장할 수 있다.[61] 저장할 레지스터가 없는 경우 PC를 지정하고 (JSR PC, address), 서브루틴에서 복귀할 때도 RTS PC를 사용한다.[61] 예를 들어, "JSR R4, address"로 서브루틴을 호출하면, R4의 원래 값이 스택 상단에 놓이고, 리턴 주소 (JSR 명령의 다음 명령 주소)가 R4에 저장된다.[61] 리턴 주소 위치에는 코드가 아닌 데이터를 놓고 (R4)+로 읽거나, 포인터를 놓고 @(R4)+로 읽을 수 있다.[61] 이렇게 하면 자동 증가로 데이터 부분을 건너뛰게 되어, R4가 실제 리턴 주소가 된다.[61] 따라서 RTS R4를 실행하면 올바른 위치로 복귀할 수 있다.[61]
상태 레지스터 (PSW)에는 다음 4개의 조건 코드가 있다.[61]
- N - 음수임을 나타낸다.
- Z - 제로 (비교 결과가 같음)임을 나타낸다.
- V - 오버플로가 발생했음을 나타낸다.
- C - 캐리가 발생했음을 나타낸다.
SCC와 CCC는 이 4개를 모두 클리어 또는 설정한다.[61]
3. 2. PDP 엔디안
PDP-11의 엔디안은 독특했다. 16비트 워드는 리틀 엔디안으로 저장되어 하위 바이트가 주소가 작은 쪽에 저장된다. 그러나 32비트 워드를 구성하는 두 개의 16비트 워드는 빅 엔디안으로 저장, 상위 16비트 워드가 주소가 작은 쪽에 저장되었다. 각 16비트 워드 내는 리틀 엔디안이다. PDP-11이 매우 일반화되었기 때문에 이러한 형식을 '''PDP 엔디안'''이라고 부른다.이러한 미들 엔디안과 관련된 문제는 "NUXI영어 문제"라고 한다. 이는 UNIX영어라는 문자열을 PDP 엔디안 순서로 재정렬한 것에서 유래한다. 다른 기종으로 이식했을 때, 첫 번째 부팅 메시지에서 "UNIX"가 아닌 "NUXI"로 출력된 적이 있었다.
(컴퓨터 내 데이터 배열에 대해 "엔디안"이라는 용어를 사용하는 제안은 1980년에 이루어졌기 때문에 초기 PDP-11에 대해 엔디안이라는 용어를 사용하는 것은 사후적인 것이다.)
3. 3. 입출력 구조
초기 PDP-11 모델은 입출력 전용 버스를 갖지 않고 유니버스라고 하는 단일 시스템 버스를 사용했다.[10] 입출력 장치는 메모리 주소 공간에 매핑되었으며, 별도의 입출력 명령 없이 메모리 접근 명령어를 사용하여 제어되었다.[10] 각 장치는 자체 인터럽트 벡터와 인터럽트 우선 순위를 가졌다.[10] 이러한 구조는 시스템의 유연성과 확장성을 높여, 프로세서 설계 당시 고려되지 않았던 하드웨어를 제어하는 장치를 포함하여 새로운 버스 장치를 쉽게 연결할 수 있게 했다.[10] DEC는 유니버스의 기본 사양을 공개하고 프로토타이핑 버스 인터페이스 회로 기판을 제공하여 고객이 자체 유니버스 호환 하드웨어를 개발하도록 장려했다.[10]유니버스는 PDP-11을 맞춤형 주변 장치에 적합하게 만들었다. 알카텔-루슨트(Alcatel-Lucent)의 전신 중 하나인 벨 전화 제조 회사(Bell Telephone Manufacturing Company)는 BTMC DPS-1500 패킷 스위칭 (X.25) 네트워크를 개발했으며, PDP-11을 지역 및 국가 네트워크 관리 시스템에 사용했고, 유니버스는 DPS-1500 하드웨어에 직접 연결되었다.[10]
PDP-11 제품군의 고성능 구성원(PDP-11/45, PDP-11/83, PDP-11/70)은 단일 버스 방식에서 벗어났다.[10] PDP-11/45는 CPU 내에 반도체 메모리를 프로세서에 연결하는 전용 데이터 경로를 사용했고, 코어 메모리와 I/O 장치는 유니버스를 통해 연결되었다.[10] PDP-11/70에서는 매스버스를 통해 디스크와 테이프, 메모리 간의 전용 인터페이스가 추가되었다.[10] 입출력 장치가 메모리 주소에 계속 매핑되었지만, 추가된 버스 인터페이스를 설정하기 위해 약간의 추가 프로그래밍이 필요했다.[10]
초기 PDP-11의 주소는 16비트이며, 64KB까지의 주소 범위를 지정할 수 있었다. PDP-11에서 VAX로 이행할 무렵, 8비트 바이트와 16진 표기가 일반적이었지만, PDP-11에서는 팔진 표기가 일반적이었고, 탑재 메모리 용량은 워드 수로 표기되는 것이 보통이었다. 기본 논리 주소 공간은 32K워드였지만, 상위 4K워드(주소 160000부터 177777까지)는 주변 기기의 레지스터 매핑용으로 예약되어 있어, 메모리는 매핑되지 않았다. 따라서 초기 PDP-11의 최대 메모리 용량은 28K워드였다. 이러한 제약을 극복하기 위해 후기 PDP-11에서는 가상 메모리를 지원하는 메모리 관리 장치가 사용되었고, 물리 주소는 18비트 또는 22비트로 확장되어 256KB 또는 4MB의 메모리를 처리할 수 있게 되었다. PDP-11/45를 시작으로 하는 기종에서는 명령어용 논리 공간(32K워드)과 데이터용 논리 공간(32K워드)을 설정할 수 있었다.
3. 4. 인터럽트 시스템
PDP-11은 4단계의 우선 순위에서 하드웨어 인터럽트를 지원한다. 인터럽트는 소프트웨어 서비스 루틴에 의해 처리되며, 이 루틴은 자체적으로 인터럽트될 수 있는지 여부를 지정할 수 있었다(인터럽트 중첩 달성). 인터럽트를 발생시키는 이벤트는 장치 자체가 자체 인터럽트 벡터의 주소를 프로세서에 알림으로써 표시된다.인터럽트 벡터는 0에서 776 사이의 낮은 커널 주소 공간(일반적으로 낮은 물리적 메모리에 해당)에 있는 두 개의 16비트 단어로 구성된 블록이다. 인터럽트 벡터의 첫 번째 단어는 인터럽트 서비스 루틴의 주소를 포함하고, 두 번째 단어는 서비스 루틴 진입 시 PSW(우선 순위 레벨)에 로드될 값을 포함한다.
인터럽트 시스템은 가능한 한 단순하게 설계되었으며, 인터럽트 시퀀스에서 이벤트를 놓치지 않도록 보장한다. 장치가 인터럽트를 발생시키면 4개의 우선순위 라인 중 하나를 어서트한다. 프로세서는 우선순위별 인터럽트 데이지 체인에 응답하는데, 데이지 체인은 이벤트를 순서대로 정렬하는 일종의 논리 회로로, 첫 번째 논리 게이트가 먼저 처리된다. 데이지 체인은 해당 우선순위 내에서 장치 간의 우선 순위에 따라 설정된다.
PDP-11의 설계에서 이 인터럽트 응답 순서는 장치가 물리적으로 CPU에 가까운 순서로 되어 있다. CPU가 응답하면 장치는 해당 벡터 주소를 버스에 출력하는데, 이것은 4바이트 메모리 블록의 주소이다. CPU는 상태 레지스터와 프로그램 카운터를 벡터 테이블에서 로드한다. 이때 상태 레지스터의 값은 인터럽트를 비활성화하도록 설정된다. 프로그램 카운터에 로드되는 주소는 인터럽트 핸들러의 시작 주소이다. 인터럽트 핸들러는 장치와 관련된 처리를 수행하고, 그 과정에서 인터럽트된 장치의 인터럽트 신호를 재설정한다. 마지막으로 특수한 RTI (Return From Interrupt, 인터럽트에서 복귀) 명령으로 CPU가 인터럽트된 위치로 돌아간다. 돌아간 곳이 낮은 우선순위의 인터럽트 처리 중인 경우도 있으며, 인터럽트 처리의 중첩이 가능하다. 이러한 처리를 통해 인터럽트를 수신하지 못하는 것을 방지한다. 처리되지 않은 인터럽트는 어느 단계에서든 그대로 존재하며 다음 사이클에 처리할 수 있다. 인터럽트 처리가 잘못 시작되면 CPU는 타임아웃되어 특수한 의사 인터럽트를 발생시켜 사용자에게 하드웨어 고장을 경고한다.
3. 5. 대량 생산을 위한 설계
PDP-11은 반숙련된 노동자도 쉽게 제조할 수 있도록 설계되었다. 부품의 치수는 비교적 덜 중요했다. 와이어 랩 백플레인을 사용했다. 인쇄 회로 기판을 백플레인 위의 커넥터에 꽂도록 되어 있으며, 백플레인 위의 커넥터끼리는 와이어 래핑으로 연결된다. 와이어의 피복(테플론)을 벗긴 구리선(도금된 단단한 단심선)이 단자(사각 기둥의 모서리)에 감겨 들어가 접착된다. 이 커넥터 부분은 전화 교환기 등과 매우 유사하다.4. 모델
PDP-11 프로세서는 기반으로 하는 원래 설계와 사용되는 I/O 버스에 따라 여러 자연스러운 그룹으로 나뉘는 경향이 있다. 각 그룹 내에서 대부분의 모델은 OEM을 위한 버전과 최종 사용자를 위한 버전, 이렇게 두 가지 버전으로 제공되었다. 모든 모델이 동일한 명령어 집합을 공유하지만, 이후 모델에서는 새로운 명령어가 추가되었고 특정 명령어를 약간 다르게 해석했다. 아키텍처가 발전함에 따라 일부 프로세서 상태 및 제어 레지스터 처리 방식에도 변화가 있었다.
4. 1. 유니버스 모델


다음 모델들은 주요 버스로 유니버스(Unibus)를 사용한다.
- '''PDP-11/20''' 및 '''PDP-11/15'''는 1970년에 출시된[14] 최초의 PDP-11 모델이다. 11/20의 판매가는 11,800달러였다.[15] 짐 오로린(Jim O'Loughlin)이 설계한[69] 원래의 마이크로 프로그램되지 않은 프로세서를 사용하며, 다양한 데이터 형식을 사용하는 주변 장치 옵션을 통해 부동 소수점을 지원한다. 11/20에는 KS-11 메모리 매핑 애드온을 장착하지 않는 한 어떠한 종류의 메모리 보호 하드웨어도 없다.[16]
- '''PDP-11/35''' 및 '''PDP-11/40'''은 1973년에 출시된[14] PDP-11/20의 마이크로 프로그램 방식 후속 모델이며, 설계팀은 짐 오로린(Jim O'Loughlin)이 이끌었다.
- '''PDP-11/45'''(1972년)[14], '''PDP-11/50'''(1973년)[17], '''PDP-11/55'''(1976년)[14]는 최대 256 KB의 반도체 메모리를 코어 메모리 대신 또는 그 외에 사용할 수 있고 메모리 매핑 및 보호를 지원하는 훨씬 더 빠른 마이크로 프로그램된 프로세서이다. 이는 선택적 FP11 부동 소수점 보조 프로세서를 지원하는 최초의 모델로, 이후 모델에서 사용되는 형식을 확립했다.
- '''PDP-11/70'''은 1975년에 출시되었으며,[14] 11/45 아키텍처가 확장되어 4 MB의 물리적 메모리를 전용 메모리 버스, 2 KB의 캐시 메모리 및 Massbus를 통해 연결된 훨씬 더 빠른 I/O 장치로 분리할 수 있게 되었다.
- '''PDP-11/05''' 및 '''PDP-11/10'''은 1972년에 출시된[14] PDP-11/20의 비용 절감형 후속 제품이다.
- '''PDP-11/34'''(1976년[14]) 및 '''PDP-11/04'''(1975년[14])는 11/35 및 11/05의 비용 절감형 후속 제품이며, PDP-11/34 컨셉은 밥 암스트롱(Bob Armstrong)이 만들었다.[70] 11/34는 최대 256 KB의 유니버스 메모리를 지원한다. PDP-11/34a(1978년)[14]는 빠른 부동 소수점 옵션을 지원하고, 11/34c(같은 해)는 캐시 메모리 옵션을 지원했다.
- '''PDP-11/60'''은 1977년에 출시되었으며,[14] 사용자가 쓸 수 있는 마이크로 제어 저장소가 있는 PDP-11이며, 이는 짐 오로린(Jim O'Loughlin)이 이끄는 다른 팀에서 설계했다.
- '''PDP-11/44'''는 1979년에 출시되어[14] 1980년에 출시되었으며, 11/45 및 11/70을 대체하는 제품이다. 선택적인 (항상 포함된 것으로 보이는) 캐시 메모리, 선택적인 FP-11 부동 소수점 프로세서(16개의 AMD Am2901 비트 슬라이스 프로세서를 사용하는 단일 회로 기판) 및 선택적인 상용 명령어 집합(CIS, 두 개의 기판)을 지원한다. 정교한 직렬 콘솔 인터페이스와 4 MB의 물리적 메모리 지원이 포함되어 있다. 설계팀은 존 소피오(John Sofio)가 관리했다. 이는 개별 논리 게이트를 사용하여 제작된 마지막 PDP-11 프로세서였다.
- '''PDP-11/24'''는 1979년에 출시되었으며,[14] 유니버스를 위한 최초의 VLSI PDP-11로, 유니버스 어댑터와 함께 "Fonz-11"(F11) 칩셋을 사용했다.
- '''PDP-11/84'''는 1985-1986년에 출시되었으며,[14] 유니버스 어댑터와 함께 VLSI "Jaws-11"(J11) 칩셋을 사용했다.
- '''PDP-11/94'''는 1990년에 출시되었으며,[14] J11 기반으로 11/84보다 빠르다.
4. 2. Q-버스 모델
PDP-11/03(LSI-11/03)은 웨스턴 디지털의 MCP-1600 칩셋을 사용하여 60KB 메모리를 지원하는 최초의 LSI 버전 PDP-11이다.[51] CPU는 4개의 LSI 칩으로 구성되며, Q-버스를 사용한다. Q-버스는 유니버스와 유사하지만, 주소 버스와 데이터 버스가 물리적으로 같은 선을 공유(멀티플렉서)하며, I/O 장치 어드레싱 방식이 달라 22비트 물리 주소(유니버스는 18비트)와 블록 전송 모드를 지원하여 성능이 향상되었다.[51] CPU의 마이크로코드에는 RS-232C 또는 커런트 루프/current loop영어로 단말기와 통신 가능한 디버거가 내장되어, 컴퓨터 내부 상태를 조사하고 수리할 수 있었다. 또한, 범용 부트스트랩이 포함되어 DEC 제조 디스크 드라이브를 사용할 수 있었다.[51]PDP-11/23은 F-11 칩셋을 사용한 2세대 LSI 모델로, 초기에는 248KB 메모리를 지원했으나 나중에 4MB까지 지원했다. PDP-11/23+/MicroPDP-11/23은 프로세서 카드 기능을 강화한 개선 모델이다.[19] MicroPDP-11/73은 J-11 칩셋을 사용한 3세대 LSI-11 모델로, 최대 4MB 메모리를 지원한다. MicroPDP-11/53은 온보드 메모리를 갖춘 저속 모델이며, MicroPDP-11/83은 PMI(private memory interconnect)를 사용하는 고속 모델이다. MicroPDP-11/93은 Q-버스를 사용한 마지막 PDP-11 모델이다.
Mentec M100은 Mentec이 재설계한 11/93 모델로, 19.66MHz J-11 칩셋, 4개의 온보드 직렬 포트, 1-4MB 온보드 메모리 및 옵션 FPU를 갖추고 있다. Mentec M11은 텍사스 인스트루먼트의 TI 8832 ALU 및 TI 8818 마이크로시퀀서를 사용한 프로세서 업그레이드 보드이다. Mentec M1은 Atmel 0.35μm ASIC을 사용한 프로세서 업그레이드 보드이다.[20] Quickware QED-993은 고성능 PDP-11/93 프로세서 업그레이드 보드이다.


4. 3. 표준 버스가 없는 모델
PDT-11/110, PDT-11/130, PDT-11/150은 "스마트 터미널"로 판매된 데스크톱 시스템이다. /110 및 /130은 VT100 터미널 인클로저에 담겨 있었다.

PRO-325, PRO-350, PRO-380은 IBM PC와 경쟁하기 위해 만들어진 데스크톱 PC이다. DEC 프로페셔널 시리즈는 IBM의 초기 8088 및 80286 기반 개인용 컴퓨터와 경쟁하기 위해 만들어졌다. 325를 제외한 모든 모델에는 5인치 플로피 디스크 드라이브와 하드 디스크가 장착되어 있으며, 325에는 하드 디스크가 없었다. 원래 운영 체제는 기본적으로 RSX-11M+에 메뉴 시스템을 추가한 P/OS였다. 이 설계는 기존 PDP-11 모델과의 소프트웨어 교환을 피하기 위한 것이었기 때문에, 시장의 좋지 않은 반응은 놀라운 일이 아니었다. RT-11 운영 체제가 결국 PRO 시리즈로 이식되었다. RSTS/E 운영 체제를 PRO 시리즈로 이식하는 작업도 DEC 내부에서 이루어졌지만, 공개되지는 않았다. PRO-325 및 -350 장치는 11/23, 11/23+ 및 11/24에서 발견되는 것과 동일한 DCF-11("Fonz") 칩셋을 기반으로 한다. PRO-380은 11/53, 73, 83 등에서 발견되는 것과 동일한 DCJ-11("Jaws") 칩셋을 기반으로 하지만, 지원 칩셋의 제약으로 인해 10MHz로만 작동한다.
4. 4. 계획되었지만 선보인 적이 없는 모델
PDP-11/27은 VAXBI 버스를 주요 I/O 버스로 사용할 예정이었던 Jaws-11 구현이었다.[21] PDP-11/68은 4MB의 물리 메모리를 지원할 예정이었던 PDP-11/60의 후속 모델이었다.[72] PDP-11/74는 멀티프로세싱 기능을 포함하도록 확장된 PDP-11/70이었다.[21] 최대 4개의 프로세서를 상호 연결할 수 있었지만, 물리적 케이블 관리가 어려워졌다.[21] 11/74의 또 다른 변형은 멀티 프로세싱 기능과 상업용 명령어 세트를 모두 포함했다.[21]다양한 유형의 11/74 프로토타입이 상당수 제작되었으며, 최소 2개의 멀티 프로세서 시스템이 고객에게 베타 테스트용으로 보내졌지만, 공식적으로 판매된 시스템은 없었다.[21] 4 프로세서 시스템은 RSX-11 운영 체제 개발 팀에서 테스트용으로 유지 관리되었고, 단일 프로세서 시스템은 범용 시분할을 위해 PDP-11 엔지니어링에 사용되었다.[21] 11/74는 새로운 32비트 제품 라인과 첫 번째 모델인 VAX 11/780의 발표와 거의 동시에 출시될 예정이었다.[21] 11/74는 현장 유지 보수 문제로 인해 취소되었지만,[21] 직원들은 실제 이유는 11/780보다 성능이 뛰어나 판매를 저해할 것이라고 믿었다.[22] 어쨌든 DEC는 PDP-11 고객 기반을 VAX로 완전히 이전하지 않았다. 주요 이유는 성능이 아니라 PDP-11의 뛰어난 실시간 응답성이었다.
4. 5. 특수 목적의 버전
GT40, GT42, GT44, GT62는 벡터 그래픽 터미널이다.[23] GT40은 PDP-11/05를, GT42는 PDP-11/10을, GT44는 PDP-11/40을, GT62는 PDP-11/34a 및 VT48 그래픽 프로세서를 사용하는 VS60 벡터 그래픽 워크스테이션이다.[23]H11은 히스킷(Heathkit)에서 판매한 LSI-11/03의 OEM 버전이다.
VT20, VT71은 텍스트 편집 및 조판을 위한 직접 매핑 문자 디스플레이가 있는 터미널이다. VT20은 PDP-11/05, VT71은 LSI-11/03 및 Q-Bus 백플레인을 탑재했다. VT103은 LSI-11을 호스팅하는 백플레인이 있는 VT100 터미널이다. VT173은 11/03을 포함하는 하이엔드 편집 터미널로, 호스트 미니컴퓨터에 대한 직렬 연결을 통해 편집 소프트웨어를 로드했다.
MINC-11은 11/03 또는 11/23을 기반으로 한 실험실용 시스템이다.[24] 11/23 기반 시스템은 'MINC-23'으로 판매되었지만, 많은 MINC-11 기계가 11/23 프로세서로 현장 업그레이드되었다.

C.mmp는 카네기 멜론 대학교(Carnegie Mellon University)에서 개발한 멀티프로세서 시스템이다.
유니메이션 로봇 암 컨트롤러는 DEC M8192 / KDJ11-A 프로세서 보드와 두 개의 DEC DLV11-J(M8043) 비동기 직렬 인터페이스 보드가 있는 Q-Bus LSI-11/73 시스템을 사용했다.

SBC 11/21 (boardname KXT11) 팰컨, 팰컨 플러스는 Q-Bus 카드에 있는 단일 보드 컴퓨터이다.
KXJ11은 PDP-11 기반 주변 장치 프로세서와 DMA 컨트롤러를 사용하는 QBUS 카드 (M7616)이다.
VAX 콘솔은 DEC Professional 시리즈 PC-38N은 실시간 인터페이스(RTI)와 함께 VAX 8500 및 8550의 콘솔로 사용되었다.[26]
4. 6. 허가되지 않은 복제품
PDP-11은 인기가 많아 동구권 국가에서 많은 비인가 PDP-11 호환 미니컴퓨터와 마이크로컴퓨터가 생산되었다.[94][95][96][97] 일부는 PDP-11과 핀 호환이 가능하여 주변 장치 및 시스템 소프트웨어를 사용할 수 있었다.- 소련에서는 SM-4, SM-1420, SM-1600, Elektronika BK 시리즈, Elektronika 60, Elektronika 85, DVK, UKNC , Electronika 100-25 및 일부 모델의 SM EVM 시리즈가 생산되었다. 특히 Elektronika 85, 90은 포켓 컴퓨터와 같은 극소형 폼 팩터로 제품화되었다. 소련에서 생산된 PDP-11 호환 기종은 DEC의 미국 내 생산 대수보다 많았던 것으로 추정된다.
- 불가리아에서는 SM-4, SM-1420, IZOT-1016 및 주변 장치가 생산되었다.
- 폴란드에서는 MERA-60이 생산되었다.
- 동독에서는 SM-1620, SM-1630이 생산되었다.
- 헝가리에서는 SM-4, TPA-1140, TPA-1148, TPA-11/440이 생산되었다.
- 체코슬로바키아에서는 SM-4/20, SM 52-11, JPR-12R이 생산되었다.
- 미국 CalData에서 모든 DEC OS를 실행가능한 CalData가 제작되었다. CalData 하드웨어는 DEC와 호환성이 충분하여 CalData 메모리 보드를 DEC PDP–11 시스템에 사용할 수 있었다.
- 루마니아의 ICE Felix (부쿠레슈티)에서 제작된 CORAL 시리즈와 ITC Timișoara에서 제작된 INDEPENDENT 시리즈는 RSX-11M 운영 체제를 실행했다. CORAL 시리즈에는 여러 모델이 있었다. CORAL 4001은 PDP–11/04와 거의 동일했고, CORAL 4011은 PDP 11/34의 복제본이었으며, CORAL 4030은 PDP–11/44의 복제본이었다. 이들은 국영 기업과 공립 대학교에서 사용되었으며, 원래는 천공 카드를 통해 작동하다가 나중에는 루마니아 DAF-2020과 같은 비디오 터미널을 통해 FORTRAN과 파스칼을 가르치는 데 사용되었으며, 1991년부터 IBM PC 호환 기종으로 대체되었다.
- 영국의 Systime Computers 모델 1000, 3000, 5000은 영국 및 서유럽 판매를 위한 OEM 계약이 있었지만 지적 재산권 침해 및 동구권으로의 간접 판매를 둘러싼 분쟁이 발생했다.
5. 운영 체제
DEC에서 제공하는 운영 체제는 다음과 같다.
- BATCH-11/DOS-11 - PDP-11 제품군을 위한 최초의 OS였으나, 나중에 등장한 RT-11으로 대체되었다.
- DSM-11 (Digital Standard MUMPS) - MUMPS 환경의 DEC에 의한 구현.
- RSTS/E - 멀티 유저 · 시분할 시스템
- RSX-11 - 실시간 운영 체제. VMS나 Windows NT 계열을 설계한 데이비드 커틀러가 처음 설계한 OS. Windows NT의 먼 조상에 해당한다.
- * IAS - Interactive Application System, 1975년경 등장한 OS로 RSX-11에서 파생.
- * P/OS - PDP-11 기반의 개인용 컴퓨터용 OS, RSX-11에서 파생.
- RT-11 - 싱글 유저 · 실시간 운영 체제
- Ultrix-11 - DEC가 직접 이식한 UNIX
서드 파티는 다음과 같다.
- ANDOS - 소련제. 파일 시스템은 FAT12 호환.
- CSI-DOS - 소련제.
- DEMOS - 소련제. Unix 계열.
- Duress - 일리노이 대학교 어배너-섐페인과 Datalogics가 개발.[78]
- Fuzzball - LSI-11 기반의 라우터. NSFnet의 초기 백본을 형성했다.
- MERT - 벨 연구소가 UNIX에서 파생시킨 마이크로커널적인 OS.
- MK-DOS - 소련제.
- MONECS - 모나쉬 대학교에서 개발. 교육용이며, 언어 처리계가 풍부하다.
- MUMPS - 의료 정보 처리 환경.
- PC11 - 필킹턴이 개발한 프로세스 제어 OS.
- polyForth - Forth Inc. 에 의한 Forth 환경.
- Solo - Concurrent Pascal로 작성된 싱글 유저 OS[79]
- TRIPOS - 케임브리지 대학교의 실험적 OS. PDP-11 외에도 데이터 제너럴 Nova 및 MC68000에서 동작했다.
- TSX-Plus - RT-11 기반의 멀티 유저 OS
- UCSD p-System - UCSD Pascal의 개발 환경을 발전시킨 OS.
- UNIX - 다양한 버전이 있으며, 주요한 것으로 Version 6 Unix, Version 7 Unix, UNIX System III, 2BSD, Venix 가 있다.
- Xinu - 교육용 Unix 계열 OS.
5. 1. From Digital
디지털 이큅먼트 코퍼레이션(DEC)에서 개발한 BATCH-11/DOS-11[36], CAPS-11 ('''Ca'''ssette '''P'''rogramming '''S'''ystem, 카세트 프로그래밍 시스템)[36], CHRONIC[25], GAMMA-11[37], DSM-11, IAS, P/OS, RSTS/E, RSX-11, RT-11, TRAX (거래 처리 시스템)[37][38], Ultrix-11, 그리고 OS/45 등이 있다. OS/45는 PDP-11/45용으로 제안된 운영 체제로, 일괄 처리, 실시간 처리 및 시분할 처리가 가능하도록 설계되었으나, 개발 과정에서 요구 사항이 의도된 하드웨어에 비해 너무 커 개발이 취소되었다.[39][40]5. 2. From third parties
ANDOS, CSI-DOS, DEIMOS(에든버러 대학교), DEMOS(소련), Duress(일리노이 대학교 어배너-섐페인/데이터로직스)[37], LOS/C, MERT[37], Micropower Pascal[37], MK-DOS, MONECS, MTS(SPL이 RTL/2로 작성한 멀티 태스킹 시스템)[37], MUMPS, MUSS-11, PC11(Decus 11-501/필킹턴)[37], polyForth, Forth Inc.의 PDP-11용 포스, ROSTTP (터미널 텔레타이프 처리를 위한 실시간 운영 체제/Simpact), SHAREeleven, SHAREplus, 페르 브린치 한센의 Solo[41], Sphere(인포스피어 – 오리건주 포틀랜드 1981–87)[37], 소프테크 마이크로시스템즈 UCSD 시스템 with UCSD 파스칼[37], TRIPOS, TSX-Plus, 유닉스[42] (버전 6 유닉스, 버전 7 유닉스, UNIX 시스템 III, 2BSD를 포함한 여러 버전), 교육용 Xinu OS, Venix(벤츄어컴에서 개발한 유닉스 구현/포트)[37][43] 등이 PDP-11에서 사용 가능한 서드 파티 운영 체제였다. 이 중 DEMOS는 소련에서 개발된 Unix 계열 운영 체제이며,[78] Fuzzball은 LSI-11 기반의 라우터로 NSFnet의 초기 백본을 형성하는 데 사용되었다. MERT는 벨 연구소가 UNIX에서 파생시킨 마이크로커널적인 OS였다. MONECS는 모나쉬 대학교에서 개발한 교육용 운영 체제였고, PC11은 필킹턴이 개발한 프로세스 제어 OS였다. Solo는 Concurrent Pascal로 작성된 싱글 유저 OS였으며,[79] TRIPOS는 케임브리지 대학교의 실험적 OS로 PDP-11 외에도 데이터 제너럴 Nova 및 MC68000에서 동작했다. TSX-Plus는 RT-11 기반의 멀티 유저 OS였으며, UCSD p-System은 UCSD Pascal의 개발 환경을 발전시킨 OS였다.6. 주변 장치
PDP-11에는 다양한 주변 장치가 사용되었으며, 일부는 PDP–8 또는 PDP–10과 같은 다른 DEC 시스템에서도 사용되었다.
다음은 PDP–11 주변 장치 중 몇 가지 더 흔한 것들이다.
- CR11 - 천공 카드 리더
- DL11 - RS-232 또는 전류 루프 중 하나를 위한 단일 직렬 회선
- LA30/LA36 - DECwriter 도트 매트릭스 인쇄 키보드 터미널
- LP11 - 고속 라인 프린터
- PC11 - 고속 종이 테이프 리더/펀치
- RA, RD 시리즈 - 고정 플래터 하드 디스크
- RK 시리즈 - 교체 가능한 플래터가 있는 하드 디스크
- RL01/RL02 - 교체 가능한 플래터가 있는 하드 디스크
- RM, RP 시리즈 - 교체 가능한 멀티 플래터 하드 디스크
- RX01/RX02 - 8인치 플로피 디스크
- RX50/RX33 - 5.25인치 플로피 디스크

- TU10 - 9트랙 테이프 드라이브
- TU56 - DECtape 블록 주소 지정 테이프 시스템
- VT05/VT50/VT52/VT100/VT220 - 비디오 디스플레이 터미널
7. 활용
PDP-11 컴퓨터 제품군은 다양한 용도로 사용되었다.[45][46][47][48] 시분할 시스템, 과학, 교육, 의료, 정부 또는 비즈니스 컴퓨팅과 같은 일반적인 컴퓨팅을 위한 표준 미니컴퓨터로 사용되었다.[45] 또 다른 일반적인 응용 분야는 실시간 컴퓨팅을 사용한 공정 제어 및 공장 자동화였다.[45]
일부 OEM 모델은 교통 신호 시스템, 의료 시스템, 수치 제어 가공과 같은 복잡한 시스템 제어 또는 네트워크 관리를 위한 임베디드 시스템으로도 자주 사용되었다.[45] PDP-11의 이러한 사용의 예는 패킷 스위치 네트워크인 데이터넷 1의 관리였다. 1980년대에 영국의 항공 교통 관제 레이더 처리는 RAF 웨스트 드레이턴의 PRDS (Processed Radar Display System)로 알려진 PDP 11/34 시스템에서 수행되었다. Therac-25 의료 선형 입자 가속기의 소프트웨어도 32K PDP 11/23에서 실행되었다.[45]
PDP-11/45는 브룩헤븐 국립 연구소에서 J/ψ 중간자를 발견한 실험에 사용되었다.[48] 1976년 사무엘 C. C. 팅은 이 발견으로 노벨상을 받았다.
미 해군은 2007년까지 PDP-11/34를 사용하여 조종사 훈련에 사용되는 시뮬레이터인 다중 스테이션 공간 지향 장치를 제어했으며, 그 후에는 원래 PDP-11 소프트웨어를 실행하고 맞춤형 유니버스 컨트롤러 카드와 인터페이스할 수 있는 PC 기반 에뮬레이터로 대체되었다.[47]
8. 에뮬레이터
Ersatz-11은 D Bit의 제품으로,[49] DOS, OS/2, Windows, Linux 또는 베어 메탈(운영 체제 없음) 환경에서 PDP-11 명령어 집합을 에뮬레이션한다. RSTS 또는 기타 PDP-11 운영 체제를 실행하는 데 사용될 수 있다.
SIMH는 여러 플랫폼(예: 리눅스)에서 컴파일되고 실행되는 에뮬레이터로, DEC PDP–1, PDP–8, PDP–10, PDP–11, VAX, AltairZ80, 여러 IBM 메인프레임 및 기타 미니컴퓨터에 대한 하드웨어 에뮬레이션을 지원한다.
참조
[1]
논문
Simulators: Virtual Machines of the Past (and Future)
2004-08-31
[2]
서적
Into the Heart of the Mind: An American Quest for Artificial Intelligence
https://books.google[...]
2020-07-19
[3]
웹사이트
Section Three: The Great Dark Cloud Falls: IBM's Choice.
https://www.cpushack[...]
2023-04-30
[4]
학회
The Development of the C Language
https://www.bell-lab[...]
ACM Press (New York) and Addison-Wesley (Reading, Mass)
2023-04-30
[5]
웹사이트
PDP-X memoranda
http://www.bitsavers[...]
2017-07-13
[6]
웹사이트
Oral History of Edson (Ed) D. de Castro
https://archive.comp[...]
2020-04-28
[7]
웹사이트
How the PDP-11 Was Born
http://hampage.hu/pd[...]
2015-01-22
[8]
서적
A History of Modern Computing
MIT Press
2003
[9]
웹사이트
16-bit Timeline
http://research.micr[...]
2016-11-08
[10]
서적
PDP-11/45 Processor Handbook
http://bitsavers.org[...]
Digital Equipment Corporation
2022-10-20
[11]
서적
LSI-11 WCS user's guide
http://www.bitsavers[...]
Digital Equipment Corporation
2023-01-07
[12]
뉴스
The Unix Tutorial / Part 3: Unix in the Microcomputer Marketplace
https://archive.org/[...]
2015-01-30
[13]
뉴스그룹
Press/Digital and Mentec Announce PDP-11 Software Agreement
https://groups.googl[...]
2020-09-25
[14]
웹사이트
The PDP-11 FAQ
http://www.village.o[...]
Village.org
2014-04-14
[15]
웹사이트
PDP-11 Price List (1969)
http://vintagecomput[...]
2020-10-19
[16]
웹사이트
Odd Comments and Strange Doings in Unix
https://www.bell-lab[...]
Bell Labs
2015-10-18
[17]
웹사이트
When was the PDP-11/50 released?
https://retrocomputi[...]
2024-02-05
[18]
논문
Time-Sharing Uses Emphasized for DEC Datasystem 350 Series
https://books.google[...]
2022-11-04
[19]
잡지
TSX-Plus: Time Share RT-11
1982-10
[20]
웹사이트
Development Project Report
http://www.fuse-netw[...]
2014-04-14
[21]
웹사이트
Multiprocessor FAQ
http://www.miim.com/[...]
Machine Intelligence
2019-08-20
[22]
메일링리스트
Original 11/74 front panel
http://www.classiccm[...]
2007-03-15
[23]
웹사이트
GT40/GT42 user's guide
http://www.bitsavers[...]
2022-12-22
[24]
웹사이트
Digital MINC-11
http://www.binarydin[...]
Binary Dinosaurs
2014-04-14
[25]
서적
HSC Controller Installation Manual
http://vaxhaven.com/[...]
Digital Equipment Corporation
2017-05-29
[26]
서적
VAX 8500/8550 System Hardware User's Guide
Digital Equipment Corporation
1986
[27]
웹사이트
T-11 Engineering Specification
http://www.bitsavers[...]
2023-05-15
[28]
웹사이트
Múzeum - KFKI TPA 1140
http://hampage.hu/tp[...]
2023-04-30
[29]
웹사이트
TPA-1148
http://hampage.hu/tp[...]
Hampage.hu
2014-04-14
[30]
웹사이트
TPA-11/440
http://hampage.hu/tp[...]
Hampage.hu
2014-04-14
[31]
웹사이트
CalData_brochure
http://www.bitsavers[...]
2014-04-14
[32]
서적
Actorii sociali ai promovării tehnologiilor, informaţiei şi comunicaţiilor
https://books.google[...]
Editura Mica Valahie
2014-04-14
[33]
웹사이트
Archived copy
http://uknc.narod.ru[...]
2014-02-13
[34]
뉴스
Systime sets 80386 S-series box, 100-user Unix System
Computer Business Review
1987-02-01
[35]
뉴스
Who will tear the Silicon Curtain?
https://books.google[...]
1987-09-24
[36]
웹사이트
CAPS-11 User's Guide
http://bitsavers.org[...]
Digital Equipment Corporation
1973
[37]
웹사이트
The PDP-11 FAQ
http://www.village.o[...]
Village.org
2000-04-18
[38]
웹사이트
TRAX - The Complete On-Line Transaction Processing System
http://www.bitsavers[...]
Digital Equipment Corporation
[39]
웹사이트
OS/45 Proposal Meeting
http://www.bitsavers[...]
Digital
1971-10-20
[40]
인터뷰
Dave Cutler Oral History
https://www.youtube.[...]
Computer History Museum
2016-02-25
[41]
논문
The Solo Operating System: A Concurrent Pascal Program
http://brinch-hansen[...]
[42]
뉴스
The History of Unix
https://archive.org/[...]
1983-08
[43]
뉴스
Benchmarking UNIX Systems
https://archive.org/[...]
1984-08
[44]
웹사이트
Communications Options Minireference Manual, Volume 5, Ethernet Devices (Part 1)
http://www.bitsavers[...]
Digital Equipment Corporation
1988-08
[45]
논문
An Investigation of the Therac-25 Accidents
1993-07
[46]
뉴스
Nuke plants to rely on PDP-11 code UNTIL 2050: Programmers and their walking sticks converge in Canada
https://www.theregis[...]
2013-06-19
[47]
웹사이트
PDP-11 Replacement Keeps the Navy's MSDD Spinning
http://www.migration[...]
2008-02
[48]
간행물
Experimental Observation of a Heavy Particle J
1974-11
[49]
웹사이트
D Bit Ersatz-11 PDP-11 emulator
http://www.dbit.com/
[50]
웹사이트
What We Learned From the PDP-11
http://research.micr[...]
[51]
웹사이트
Timeline
http://research.micr[...]
[52]
서적
A History of Modern Computing
https://books.google[...]
MIT Press
[53]
웹사이트
Father of DOS Still Having Fun at Microsoft
http://www.patersont[...]
Micronews
[54]
웹사이트
DEC PDP-11, benchmark for the first 16/32 bit generation. (1970)
http://www.cpushack.[...]
[55]
웹사이트
The Development of the C Language
http://cm.bell-labs.[...]
[56]
웹사이트
PDP-11は何台売れたのか
http://ftrcrblog.g2.[...]
[57]
간행물
The Development of the C Language
http://cm.bell-labs.[...]
1993-03
[58]
웹사이트
Press Release re transfer of Operating Systems
https://groups.googl[...]
[59]
웹사이트
http://www.field-one[...]
[60]
웹사이트
PDP-11/70 CPU core and SoC :: Overview
http://opencores.org[...]
[61]
웹사이트
pdp11 handbook 1969 edition
http://research.micr[...]
[62]
문서
Kevin Murrell
[63]
웹사이트
kpun.mac
http://www.ps8comput[...]
[64]
문서
Farba Research
[65]
웹사이트
Farba Research PDP-11 Assembly Language Example
http://www.farbarese[...]
[66]
웹사이트
PDP-11 Home Page at metalab.unc.edu
http://www.ibiblio.o[...]
[67]
웹사이트
pdp-11.trailing-edge.com home page
http://pdp-11.traili[...]
[68]
문서
Bob Supnik
[69]
문서
James O'Loughlin
[70]
문서
Bob Armstrong
[71]
문서
Development Project Report
http://www.fuse-netw[...]
[72]
웹사이트
Multiprocessor FAQ
http://www.miim.com/[...]
Machine Intelligence
2011-05-21
[73]
웹사이트
Binary Dinosaurs - Digital MINC-11
http://www.binarydin[...]
[74]
웹사이트
TPA-1140
http://hampage.hu/tp[...]
[75]
웹사이트
TPA-1148
http://hampage.hu/tp[...]
[76]
웹사이트
TPA-11/440
http://hampage.hu/tp[...]
[77]
웹사이트
CalData_brochure
http://www.bitsavers[...]
[78]
웹사이트
http://www.village.o[...]
[79]
논문
The Solo Operating System: A Concurrent Pascal Program
http://brinch-hansen[...]
2011-06-22
[80]
논문
An Investigation of the Therac-25 Accidents
1993-07
[81]
웹사이트
PDP-11 Replacement Keeps the Navy’s MSDD Spinning
http://www.migration[...]
2008-02
[82]
웹인용
What We Learned From the PDP-11
http://research.micr[...]
2008-09-10
[83]
웹인용
Timeline
http://research.micr[...]
2008-09
[84]
웹인용
PDP-11 Processor Handbook
http://bitsavers.tra[...]
DEC
2015-11-13
[85]
서적
A Brief History of Computing
https://books.google[...]
Springer
2014-04-14
[86]
논문
Simulators: Virtual Machines of the Past (and Future)
http://queue.acm.org[...]
[87]
웹사이트
My, How Far We've Come
http://www.themanage[...]
2016-03-03
[88]
서적
Into the Heart of the Mind: An American Quest for Artificial Intelligence
https://books.google[...]
[89]
서적
A History of Modern Computing
https://books.google[...]
MIT Press
2010-08-05
[90]
웹사이트
Father of DOS Still Having Fun at Microsoft
http://www.patersont[...]
Micronews
2010-08-05
[91]
뉴스
The Unix Tutorial / Part 3: Unix in the Microcomputer Marketplace
https://archive.org/[...]
2015-01-30
[92]
웹사이트
DEC PDP-11, benchmark for the first 16/32 bit generation. (1970)
http://www.cpushack.[...]
2011-03-04
[93]
웹사이트
The Development of the C Language
https://www.bell-lab[...]
2011-08-05
[94]
웹사이트
TPA-1140
http://hampage.hu/tp[...]
[95]
웹인용
TPA-1148
http://hampage.hu/tp[...]
Hampage.hu
2014-04-14
[96]
웹인용
TPA-11/440
http://hampage.hu/tp[...]
Hampage.hu
2014-04-14
[97]
웹인용
CalData_brochure
http://www.bitsavers[...]
2014-04-14
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
