맨위로가기

PDP-8

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

PDP-8은 1965년에 출시된 Digital Equipment Corporation(DEC)에서 생산한 12비트 미니컴퓨터 제품군이다. PDP-8은 30만 대 이상 판매되었으며, 다양한 모델이 출시되었다. 12비트 워드 크기와 4,096 워드의 메모리 주소 공간을 가지며, 6비트 문자 코드를 처리하는 데 적합했다. PDP-8은 단순한 설계로 인해 저렴한 가격에 판매되었으며, 다양한 프로그래밍 환경을 지원했다. PDP-8은 단순성, 확장성, 가치 공학적 설계로 인해 많은 새로운 고객이 컴퓨터를 사용할 수 있게 하였고, 컴퓨터 역사에 큰 영향을 미쳤다.

더 읽어볼만한 페이지

  • 12비트 컴퓨터 - LINC
    LINC는 생의학 연구를 위해 설계된 초기 개인용 컴퓨터로, LINCtape를 사용한 파일 시스템을 갖추고 있으며, PDP-8을 기반으로 상용화된 LINC-8과 LINC 아키텍처를 계승한 PDP-12 등의 파생 모델이 개발되었다.
  • 트랜지스터 컴퓨터 - PDP-1
    PDP-1은 DEC에서 개발한 초기 미니컴퓨터로, TX-0 컴퓨터 설계를 기반으로 해커 문화 형성에 기여하고 스페이스워! 같은 혁신적인 소프트웨어 개발 플랫폼 역할을 했으며, 현재 일부가 컴퓨터 역사 박물관에 소장되어 작동 가능한 상태로 시연되고 있다.
  • 트랜지스터 컴퓨터 - PDP-6
    디지털 이큅먼트 코퍼레이션에서 개발한 PDP-6는 36비트 워드 방식의 시분할 시스템을 갖춘 최초의 "대형" 컴퓨터로 과학 및 대학 환경에서 사용되었으나, 복잡성과 비용 문제로 23대만 판매되었고 PDP-10 개발에 영향을 미쳤으며 현재 완전한 형태로는 존재하지 않는다.
  • DEC의 하드웨어 - PDP-11
    PDP-11은 DEC에서 1970년에 발표한 16비트 미니컴퓨터 제품군으로, 혁신적인 아키텍처, 직교 명령어 집합, 메모리 맵 I/O, 인터럽트 처리 방식 등의 특징을 가지며 다양한 분야에서 활용된 미니컴퓨터이다.
  • DEC의 하드웨어 - 프로그램 데이터 프로세서
    프로그램 데이터 프로세서(PDP)는 디지털 이큅먼트 코퍼레이션(DEC)에서 개발한 다양한 모델의 컴퓨터 시리즈로, 각 모델은 고유한 특징을 가지며 미니컴퓨터 혁명을 이끌고 컴퓨터 역사에 큰 영향을 미쳤다.
PDP-8
기본 정보
PDP-8 워드마크
PDP-8 워드마크
영국 블레츨리 국립 컴퓨팅 박물관에 전시된 PDP-8. 이 예시는 개별 트랜지스터로 제작되었으며 나중에
영국 블레츨리의 국립 컴퓨팅 박물관에 전시된 PDP-8. 이 예시는 개별 트랜지스터로 제작되었으며 나중에 "스트레이트 8"로 알려진 PDP-8의 1세대 제품이다.
개발사디지털 이큅먼트 코퍼레이션
제조사디지털 이큅먼트 코퍼레이션
제품군프로그램 데이터 프로세서
유형미니컴퓨터
출시일1965년 3월 22일
단종일알 수 없음
판매량50,000대 이상
가격약 $18,500 (1965년 기준 약 $ 상당)
운영체제알 수 없음
플랫폼DEC 12비트
이전 모델PDP-5
다음 모델PDP-12
기술 사양
CPU알 수 없음
메모리알 수 없음
저장 장치알 수 없음
디스플레이알 수 없음
그래픽알 수 없음
사운드알 수 없음
입력 장치알 수 없음
컨트롤러알 수 없음
카메라알 수 없음
터치패드알 수 없음
연결성알 수 없음
전력알 수 없음
시스템 온 칩 (SoC)알 수 없음
미디어알 수 없음
메모리 카드알 수 없음
크기알 수 없음
무게알 수 없음
기타
호환성알 수 없음
관련 항목알 수 없음
웹사이트알 수 없음

2. PDP-8의 버전

PDP-8 제품군은 30만 대 이상 판매된 것으로 추산된다.[22] 다음은 제조된 모델들이다.

PDP-8 모델 요약[23]
모델설명년도가격생산 수량무게
PDP-8반-이산 부품. 일부 하이브리드 IC 사용. DTL.196518000USD1450[24]
LINC-8LINC 또는 PDP-8 코드를 실행 가능196638500USD142
PDP-8/SPDP-8의 저가형 직렬 버전196610000USD1024[25]
PDP-8/I표준 TTL IC로 제작된 최초의 PDP-8196812800USD3698[26]
PDP-8/LPDP-8/I의 저가형19688500USD3902[27]
PDP-12LINC 명령어 지원이 추가된 PDP-8/I (LINC-8 대체)196927900USD755
PDP-8/E가격과 효율성을 개선하기 위해 보드 수를 줄이고 크기를 늘림19706500USD(일반)[28]
PDP-8/FPDP-8/E의 저가형1972(일반)[29]
PDP-8/M변경된 전면 패널이 있는 OEM PDP-8/F19725000USD[30](일반)[31]
PDP-8/ALSI 논리를 통해 CPU를 단일 보드에 장착 가능19741835USD
Intersil 6100단일 칩 PDP-8 호환 마이크로프로세서 (VT78에 사용됨)1975[32][33]
해리스 6120CMOS 단일 칩 PDP-8 호환 마이크로프로세서 (DECmate 워드 프로세서에 사용됨)1976[33]



슈투트가르트 컴퓨터 박물관에서 작동 중인 "스트레이트-8"


정면 패널 뒤의 로직 모듈과 상단에 있는 듀얼 TU56 DECtape 드라이브를 갖춘 PDP-8/E


가장 초기의 PDP-8 모델은 "스트레이트-8"이라는 비공식적인 이름으로, 1965년 3월 22일에 18500USD[3]에 출시되었다. 이 모델은 작은 가정용 냉장고 크기의 기계에 다이오드-트랜지스터 로직이 플립 칩 모듈 카드에 패키징되어 사용되었다. 2만 달러 미만으로 판매된 최초의 컴퓨터로, 당시 역사상 가장 많이 팔린 컴퓨터가 되었다.[4][5][6]

스트레이트-8은 1966년에 데스크톱 및 랙 마운트 모델로 제공된 PDP-8/S로 대체되었다. 비트 직렬 아키텍처의 산술 논리 장치(ALU)를 사용함으로써 PDP-8/S는 더 작고 저렴하게 제작될 수 있었지만, 원래의 PDP-8보다 느렸다. 기본 8/S는 1만 달러 미만으로 판매되었으며, 이 가격대에 도달한 최초의 기계였다.[4][7]

이후 시스템(PDP-8/I 및 /L, PDP-8/E, /F, /M, PDP-8/A)은 더 빠르고 완전한 병렬 구현으로 돌아갔지만, 훨씬 덜 비싼 트랜지스터-트랜지스터 로직 (TTL) MSI 로직을 사용했다. 현재 남아있는 PDP-8의 대부분은 이 시대의 것이다. PDP-8/E는 흔하며, 많은 종류의 입출력 장치를 사용할 수 있어서 좋은 평가를 받았다.

1979년에 출시된 마지막 상업용 PDP-8 모델은 CMOS 마이크로프로세서를 기반으로 "CMOS-8"이라고 불린다. 이들은 가격 경쟁력이 없었고, 이 제품은 실패했다. Intersil은 Intersil 6100 제품군으로 1982년까지 집적 회로를 상업적으로 판매했다. CMOS 기술 덕분에 전력 요구량이 적었으며, 일부 임베디드 군사 시스템에 사용되었다.

PDP-8의 초기 버전을 설계한 수석 엔지니어는 Edson de Castro였으며, 그는 후에 Data General을 설립했다.[8]

PDP 시리즈의 베스트셀러인 PDP-8 제품군의 정확한 총 판매 대수를 나타내는 데이터는 없지만, 50,000대 정도로 추정된다.[43]

3. 아키텍처

PDP-8은 W.A. 클라크(Wesley A. Clark)와 찰스 몰나르(Charles Molnar)가 설계한 LINC와 CDC 160 미니컴퓨터에서 영감을 얻은 세이무어 크레이의 아이디어를 차용했다.[2][13]

PDP-8은 설계의 단순성을 위해 최적화되었다. 더 복잡한 기계에 비해 불필요한 기능은 제거되었고, 가능한 경우 논리가 공유되었다. 명령어는 자동 증가, 자동 지우기 및 간접 액세스를 사용하여 소프트웨어의 속도를 높이고, 메모리 사용량을 줄이며, 값비싼 레지스터 대신 저렴한 메모리를 대체하는 방식을 사용했다.

초기 PDP-8 모델은 단순성 때문에 다른 대부분의 상업용 컴퓨터보다 저렴했지만, 프로토타입에 자주 사용되는 값비싼 생산 방식을 사용했다. 수천 개의 매우 작고 표준화된 논리 모듈을 사용했으며, 금 커넥터가 있었고, 대형 캐비닛의 비용이 많이 드는 복잡한 와이어 랩 백플레인으로 통합되었다.

1966년 8월에 도입된 후기 PDP-8/S 모델은[7] 저렴한 다이오드-트랜지스터 로직의 팬아웃을 증가시키기 위해 두 가지 다른 논리 전압을 사용했다.[19] 또한, 8/S는 산술 연산을 수행하기 위해 직렬, 단일 비트 너비 데이터 경로를 사용하여 논리 게이트 수를 줄였다. PDP-8/S의 CPU는 약 519개의 논리 게이트만 가지고 있는 반면, 소형 마이크로컨트롤러(2008년 기준)는 일반적으로 15,000개 이상을 가지고 있다. 전자 장치의 감소로 빵 상자 크기의 훨씬 작은 케이스가 가능했다. PDP-8/S는 사울 딘만(Saul Dinman)이 설계했다.[20]

훨씬 후기의 PDP-8/E는 더 크고 더 강력한 컴퓨터이지만, 더 나은 가치를 위해 재설계되었다. 집적 회로에서 더 빠른 트랜지스터-트랜지스터 로직을 사용하며, 코어 메모리가 재설계되었다. 이전 모델의 와이어 랩 백플레인 대신 OMNIBUS를 사용하기 때문에 비용을 덜 들여 확장할 수 있었다.

3. 1. 주요 특징

PDP-8은 워드 크기와 산술 연산에 12비트를 사용한다(0에서 4095까지의 부호 없는 정수 또는 -2048에서 +2047까지의 부호 있는 정수).[13] 12비트는 ASCII의 서브셋을 6비트로 표현하면 1워드에 2 문자를 저장할 수 있다. 메모리 주소 공간도 12비트이므로 PDP-8의 기본 구성은 4,096(212)개의 12비트 워드, 즉 현대 용어로 6 KiB의 메인 메모리를 갖는다. 선택적 메모리 확장 장치는 IOT 명령을 사용하여 메모리 뱅크를 전환할 수 있다. 메모리는 자기 코어 메모리이며 사이클 시간은 1.5 마이크로초(0.667 MHz)이므로, 일반적인 2사이클(페치, 실행) 메모리 참조 명령어는 0.333 MIPS의 속도로 실행된다. 1974년 PDP-8/E용 포켓 참조 카드에는 기본 명령어 시간이 1.2마이크로초, 메모리를 참조하는 명령어의 경우 2.6마이크로초로 표시되어 있다.

PDP-8 명령어는 3비트 연산 코드를 가지므로 명령어는 8개뿐이다. 프로그래머는 어셈블러가 특정 OPR 또는 IOT 명령으로 변환하는 여러 추가 명령어 니모닉을 사용할 수 있다. PDP-8에는 프로그래머에게 보이는 레지스터가 3개뿐인데, 12비트 누산기(AC), 프로그램 카운터(PC), "링크 레지스터"(L)라고 하는 자리올림 플래그이다. 프로그래머에게 보이지 않는 추가 레지스터로는 메모리 버퍼 레지스터와 메모리 주소 레지스터가 있다. 비용 절감을 위해 운영 사이클의 서로 다른 지점에서 여러 가지 용도로 사용된다. 예를 들어, 메모리 버퍼 레지스터는 산술 연산자를 제공하고, 명령어 레지스터의 일부이며, 읽을 때 지워지는 코어 메모리를 다시 쓰기 위한 데이터를 저장한다.

입력 및 출력의 경우 PDP-8은 모든 장치가 공유하는 단일 인터럽트, I/O 명령으로 액세스되는 I/O 버스, 직접 메모리 접근(DMA) 채널을 갖는다. 프로그램된 I/O 버스는 일반적으로 프린터, 전신타자기, 종이 테이프 펀치 및 리더와 같은 저속에서 중간 속도 주변 장치를 실행하는 반면, DMA는 음극선관 화면, 라이트 펜, 아날로그-디지털 변환기, 디지털-아날로그 변환기, 테이프 드라이브, 디스크 드라이브에 사용된다.

비용 절감을 위해 이 설계는 다른 컴퓨터에서 더 비싼 플립플롭 레지스터에서 제공되는 많은 기능을 저렴한 메인 메모리를 사용하여 처리한다.[16] 보조 카운터 및 서브루틴 연결도 마찬가지이다.

기본 모델은 소프트웨어를 사용하여 곱셈과 나눗셈을 수행한다. 더 빠른 수학 연산을 위해 확장 산술 요소(EAE)는 곱셈/몫(MQ) 레지스터라는 추가 레지스터를 사용하여 곱셈 및 나눗셈 명령을 제공한다. EAE는 원래 PDP-8,[17] 8/I,[18] 및 8/E의 옵션이었지만, Intersil 6100 마이크로프로세서에서는 필수적인 부분이다.

PDP-8은 설계의 단순성을 위해 최적화되었다. 더 복잡한 기계에 비해 불필요한 기능은 제거되었고, 가능한 경우 논리가 공유되었다.

{| class="wikitable"

|-

! PDP-8 레지스터

|-

|

11109876543210(비트 위치)
주요 레지스터
ACAC 누산기
MQM곱셈기 Q
프로그램 카운터
PCP프로그램 C카운터
상태 플래그
 LL 링크 레지스터



|}

3. 2. 메모리 구조

PDP-8의 기본 메모리 주소 공간은 12비트이므로, 기본 구성에서 4,096 (212)개의 12비트 워드, 즉 현대 용어로 6 KiB의 메인 메모리를 갖는다. 명령어는 주소의 하위 7비트만 직접 지정할 수 있으며, 4,096 워드의 메모리는 128 워드의 "페이지"로 분할된다. 페이지 0(주소 범위는 8진법으로 0000에서 0177)은 특별하며, 어떤 페이지에서 실행 중이더라도 접근할 수 있다. 주소 0000은 인터럽트 처리 루틴의 시작 주소이며, 주소 0010부터 0017까지는 자동 증가 기능을 가진다.

프로그램이 복잡해지고 메모리 가격이 하락하면서, 메모리 용량 확장에 대한 요구가 증가했다. 이에 따라 선택적 메모리 확장 장치를 통해 메모리 용량을 확장할 수 있었다. IOT 명령을 사용하여 메모리 뱅크를 전환하는 방식으로, 메모리 확장 컨트롤러는 주소 지정 가능한 메모리를 8배 확장하여 총 32,768 워드를 사용할 수 있게 하였다. 각 4K 워드의 메모리는 "필드"라고 불리며, 메모리 확장 컨트롤러에는 DF(데이터 필드)와 IF(명령어 필드)라는 두 개의 3비트 레지스터가 있다. 이 레지스터들은 CPU의 각 메모리 참조에 대한 필드를 지정하여 총 15비트 주소를 생성한다. IF 레지스터는 명령어 인출 및 직접 메모리 참조에 대한 필드를, DF 레지스터는 간접 데이터 접근에 대한 필드를 지정한다.

메모리 확장 컨트롤러는 6200에서 6277 범위의 I/O 명령어를 통해 제어되며, DF 및 IF 레지스터에 접근할 수 있다. 예를 들어, 62X1 명령어(CDF, Change Data Field)는 데이터 필드를 X로 설정하고, 62X2(CIF)는 명령어 필드를 설정하며, 62X3은 둘 다 설정한다. 기존 프로그램은 CIF나 CDF를 실행하지 않으므로 DF 및 IF 레지스터는 모두 동일한 필드를 가리키며, 단일 필드 내에서 작동한다.

PDP-8/E 및 이후 모델에서는 메모리 확장 컨트롤러가 개선되어 머신 가상화를 지원한다. 가상 머신 관리자는 모든 I/O 명령어가 트랩(관리자가 처리하는 인터럽트)을 발생하도록 하여 메모리 참조, 데이터/명령어 필드 매핑, I/O 리디렉션 등을 제어할 수 있다.

PDP-8/A에서는 메모리 가격 하락으로 32K 워드 이상의 메모리가 필요해짐에 따라, 8개 이상의 메모리 필드를 처리하기 위한 새로운 명령어 세트가 추가되었다. 필드 번호는 명령어에 하드 코딩되는 대신 AC(누산기)에 배치할 수 있게 되었다.

3. 3. 입출력(I/O)

PDP-8 시대에는 입출력(I/O) 시스템에 큰 변화가 있었다. 초기 PDP-8 모델은 전면 패널, 종이 테이프 판독기, 그리고 선택적으로 종이 테이프 펀치를 갖춘 텔레타이프 프린터를 사용했다. 시간이 지나면서 자기 테이프, RS-232, 전류 루프 덤 터미널, 천공 카드 판독기, 고정 헤드 디스크와 같은 입출력 시스템이 추가되었다.[40] PDP-8 시대 말기에는 플로피 디스크와 이동 헤드 카트리지 하드 디스크 드라이브가 인기 있는 입출력 장치였다. 현대 애호가들은 실제 및 시뮬레이션된 PDP-8 컴퓨터를 위해 표준 PC 스타일 IDE 하드 디스크 어댑터를 제작했다.[40]

여러 유형의 입출력이 지원되었다.

  • 입출력 컨트롤러를 위한 백플레인 전용 슬롯
  • "음수" 입출력 버스 (음전압 신호 사용)
  • "양수" 입출력 버스 (TTL 신호를 사용하는 동일한 아키텍처)
  • PDP-8/E에 도입된 옴니버스 (전용이 아닌 시스템 버스 슬롯의 백플레인)


"3주기 데이터 브레이크"라고 하는 간소화되고 저렴한 형태의 DMA가 지원되었는데, 이는 프로세서의 지원이 필요했다. "데이터 브레이크" 방식은 DMA 입출력을 구현하는 데 필요한 몇 가지 공통 로직을 각 입출력 장치에서 프로세서 내 로직의 한 가지 공통 복사본으로 이동시킨다. "데이터 브레이크"는 프로세서가 DMA 주소 및 워드 수 레지스터를 유지 관리하도록 한다. 3개의 연속적인 메모리 사이클에서 프로세서는 워드 수를 업데이트하고, 전송 주소를 업데이트하며, 실제 입출력 데이터 워드를 저장하거나 검색한다.[40]

1주기 데이터 브레이크는 코어 메모리로 전송해야 하는 대상 데이터만 필요하므로 DMA 전송 속도를 효과적으로 3배로 늘린다. 그러나 입출력 장치는 자체 워드 수 및 전송 주소 레지스터를 관리하기 위해 더 많은 전자 로직이 필요하다. PDP-8/E가 도입될 즈음에는 전자 로직 가격이 저렴해졌고 "1주기 데이터 브레이크"가 더 인기를 얻게 되었다.[40]

PDP-8의 I/O 버스에는 단일 인터럽트 라인이 존재한다. 프로세서는 추가 인터럽트를 비활성화하고 위치 0000으로 `JMS`를 실행하여 모든 인터럽트를 처리한다. 재진입 가능한 서브루틴을 작성하기 어렵기 때문에 인터럽트를 중첩하는 것은 어렵고 일반적으로 수행되지 않았다. 각 인터럽트는 완료될 때까지 실행되며 인터럽트에서 반환하는 `JMP I 0` 명령을 실행하기 직전에 인터럽트를 다시 활성화한다.[40]

I/O 버스에 단일 인터럽트 라인만 있기 때문에 인터럽트가 발생해도 프로세서에 인터럽트 소스를 알리지 않는다. 대신 인터럽트 서비스 루틴은 각 활성 I/O 장치를 순차적으로 폴링하여 해당 소스인지 확인해야 한다. 이를 수행하는 코드를 "스킵 체인"이라고 하는데, 일련의 PDP-8 "플래그가 설정된 경우 테스트 및 건너뛰기" I/O 명령으로 구성되기 때문이다. 스킵 체인이 서비스가 필요한 장치를 찾지 못한 채 끝에 도달하는 경우도 드물지 않았다. I/O 장치의 상대적 인터럽트 우선순위는 스킵 체인에서의 위치에 따라 결정된다. 여러 장치가 인터럽트하는 경우 스킵 체인에서 먼저 테스트된 장치가 먼저 서비스된다.[40]

PDP-8은 단순한 (PIO) 버스를 갖추고 있으며, 이에 더해 DMA 채널이 있다. PIO 버스는 프린터, 터미널, 종이 테이프 펀치/리더와 같은 저속에서 중속의 주변 장치를 연결하는 데 일반적으로 사용되었으며, DMA는 라이트 펜이 달린 브라운관 스크린, 아날로그-디지털 변환 회로, 디지털-아날로그 변환 회로, 자기 테이프 드라이브, 디스크 드라이브 등에서 사용했다.[41]

12비트 명령어의 앞 3비트(비트 0부터 2)는 명령어 코드이다. 비트 5부터 11까지의 7비트 오프셋 부분으로 접근할 메모리를 나타낸다. 비트 4가 설정되어 있으면, 프로그램 카운터(PC)의 상위 5비트와 오프셋을 연결하여 주소를 완성한다. 해당 비트가 0이면 주소의 상위는 0으로 한다. 비트 3은 간접 여부를 나타낸다. 설정되어 있으면, 그때까지 얻어진 주소는 메모리 상에 있는 실효 주소의 위치를 나타낸다. JMP 명령어는 간접 지정이 되어 있지 않은 경우에는 메모리 워드를 읽어 들이지 않지만, 명령어 형식은 같다.

0style="width:15px;" |2345style="width:15px;" |style="width:15px;" |style="width:15px;" |style="width:15px;" |style="width:15px;" |11
연산IZ오프셋



PDP-8은 IOT 명령을 거의 정의하지 않고 단순히 틀을 제공한다. 많은 IOT 명령이 어떻게 작동하는지는 개별 주변 장치에 따라 다르다.

0style="width:15px;" |23style="width:15px" |style="width:15px" |style="width:15px;" |style="width:15px;" |89style="width:15px;" |11
6=IOT장치 (Device)기능 (Function)



; 장치 (Device)

: IOT 명령의 비트 3에서 비트 8로 I/O 장치를 지정한다. 일부는 편의상 표준화되었다.

:* 00 - 프로세서가 처리하며, I/O 장치로 전송되지 않는다. 예를 들어 ION (6001)은 인터럽트 처리 인에이블, IOFF (6002)는 해당 처리 디세이블이다.

:* 01 - 일반적으로 고속 종이 테이프 리더

:* 02 - 고속 종이 테이프 펀치

:* 03 - 콘솔 키보드 (및 부속 저속 종이 테이프 리더)

:* 04 - 콘솔 프린터 (및 부속 저속 종이 테이프 펀치)

; 기능 (Function)

: IOT 명령의 비트 9에서 비트 11까지로, 해당 장치에서 실행해야 할 기능을 지정한다. 종이 테이프 리더/펀치나 콘솔 등 단순한 기기에서는 다음과 같이 해석한다.

:* 비트 11 - 지정된 주변 장치가 준비 상태이면 다음 명령을 건너뛴다.

:* 비트 10 - AC (누산기)를 클리어

:* 비트 9 - 해당 주변 장치와 AC 간에 1 워드를 전송하고, 다음 I/O 전송을 시작하며, 장치의 준비 플래그를 0으로 만든다.

: 여러 비트를 설정하면 적절한 순서로 실행된다.

: 디스크 드라이브 등 보다 복잡한 주변 장치에서는 각각 고유한 기능을 이 3 비트로 나타낸다. 일반적으로 8 종류의 기능 코드를 설정할 수 있다.

PDP-8/E 및 이후 기종에서는 메모리 확장 컨트롤러가 가상화도 가능하도록 확장되었다. PDP-8의 모든 리소스를 사용하는 프로그램이 1대의 PDP-8 위에 여러 개 공존할 수 있었고, 가상 머신 매니저의 제어 하에 동작 가능했다. 이 매니저는 (메모리 확장 컨트롤러 조작을 포함하여) 모든 IO 명령에 대해 트랩이 가능했다(인터럽트를 발생시켜 매니저가 그것을 처리할 수 있다). 그렇게 하여 매니저가 데이터와 명령 필드 매핑을 제어할 수 있었고, 입출력을 다른 장치로 리다이렉트할 수 있었다. 각 게스트 프로그램은 매니저가 제공하는 "가상 머신"에 대한 완전한 접근 권한을 가졌다.

3. 4. 명령어 집합

PDP-8 명령어는 3비트 연산 코드를 가지므로, 명령어는 8개뿐이다. 어셈블러는 프로그래머가 사용할 수 있는 추가적인 명령어 니모닉을 제공하며, 이들은 특정 OPR 또는 IOT 명령으로 변환된다. PDP-8에는 프로그래머가 볼 수 있는 레지스터가 3개뿐이다. 12비트 누산기(AC), 프로그램 카운터(PC), 그리고 "링크 레지스터"(L)라고 하는 자리올림 플래그이다. 보이지 않는 추가 레지스터로는 메모리 버퍼 레지스터와 메모리 주소 레지스터가 있다.

12비트 명령어 워드의 상위 3개의 비트 필드(비트 0부터 2까지)는 연산 코드이다. 메모리를 참조하는 여섯 가지 연산의 경우, 비트 5부터 11까지는 7비트 주소를 제공한다. 비트 4가 설정되면 주소가 프로그램 카운터(PC) 레지스터의 상위 5비트를 사용하여 완성된다. 즉, 주소 지정된 위치가 명령어와 동일한 128단어 내에 있다는 의미이다. 비트 4가 지워지면 0이 사용되므로 주소 지정된 위치는 메모리의 처음 128단어 내에 있다. 비트 3은 간접 지정을 지정한다. 설정되면 지금까지 설명한 대로 얻은 주소가 명령어에 대한 실제 유효 주소를 제공하는 메모리의 12비트 값을 가리킨다. 이러한 방식으로 피연산자는 추가 단어의 대가로 메모리 어디에나 있을 수 있다. JMP 명령어는 간접 지정을 지정한 경우를 제외하고는 메모리 워드에서 작동하지 않지만, 동일한 비트 필드를 갖는다.

0style="width:15px;" |2345style="width:15px;" |style="width:15px;" |style="width:15px;" |style="width:15px;" |style="width:15px;" |11
연산IZ오프셋



; 메모리 페이지

이러한 명령어 워드의 사용은 4,096단어 메모리를 128단어 메모리 페이지로 나눈다. 명령어의 비트 4는 현재 페이지 또는 페이지 0 (8진수 주소 0000–0177)을 선택한다. 변수가 여기에 배치될 수 있어 모든 페이지에서 직접 주소를 지정할 수 있으므로 페이지 0의 메모리는 중요하다. 또한 주소 0000은 모든 인터럽트 서비스 루틴이 시작해야 하는 위치이며, 주소 0010–0017은 해당 주소를 통한 모든 간접 참조 전에 자동 증가하는 특별한 속성을 갖는다.

표준 어셈블러는 현재 페이지에 산술에 대한 상수 값을 배치한다. 마찬가지로, 페이지 간 점프 및 서브루틴 호출은 현재 페이지의 간접 주소를 사용한다.

루틴이 128단어 페이지 내에 맞도록 작성하거나 페이지 전환을 최소화하도록 루틴을 배열하는 것이 중요했다. 현재 페이지 외부의 참조 및 점프에는 추가 단어가 필요하기 때문이다. 결과적으로 한두 단어를 절약하는 데 많은 시간을 소비했다. 프로그래머는 PC가 증가함에 따라 다음 페이지로 자유롭게 전환하기 위해 의도적으로 페이지 끝에 코드를 배치했다.

연산 코드설명
000AND 연산을 메모리 피연산자와 AC 레지스터에 수행한다.
0012의 보수 ADd 연산을 메모리 피연산자와 레지스터에 수행한다 (12비트 부호 있는 값 (AC)에 L 레지스터의 캐리 비트를 더한다).
010메모리 피연산자를 증가시키고 결과가 0이면 다음 명령어를 건너뜁니다.
011AC 레지스터의 값을 메모리 피연산자에 저장하고 AC 레지스터를 지웁니다.
100서브루틴으로 점프한다 (서브루틴의 첫 번째 워드에 반환 주소를 저장한다!).
101점프한다.
110입출력 전송 (아래 참조).
111마이크로 코드화된 OPeRations (아래 참조).



PDP-8 프로세서는 IOT(Input-Output Transfer, 입출력 전송) 명령어의 일부를 정의했지만, 단순한 프레임워크를 제공했다. 대부분의 IOT 명령어는 개별 I/O 장치에 의해 정의되었다.

0style="width:15px;" |23style="width:15px" |style="width:15px" |style="width:15px;" |style="width:15px;" |89style="width:15px;" |11
6=IOT장치기능



; 장치

IOT 명령어의 비트 3부터 8까지는 I/O 장치를 선택한다. 이러한 장치 주소 중 일부는 관례적으로 표준화되어 있다.

장치 주소설명
00프로세서가 처리하며 어떤 I/O 장치로도 전송되지 않는다(아래 참조).
01보통 고속 종이 테이프 리더이다.
02고속 종이 테이프 펀치이다.
03콘솔 키보드(및 관련 저속 종이 테이프 리더)이다.
04콘솔 프린터(및 관련 저속 종이 테이프 펀치)이다.



장치 0에 대한 명령어는 프로세서 전체에 영향을 미친다. 예를 들어, ION(6001)은 인터럽트 처리를 활성화하고, IOFF(6002)는 비활성화한다.

; 기능

IOT 명령어의 비트 9부터 11까지는 장치가 수행하는 기능을 선택한다. 종이 테이프 리더 및 펀치, 콘솔 키보드 및 프린터와 같은 단순한 장치는 표준 방식으로 비트를 사용한다.


  • 비트 11은 I/O 장치가 준비되면 프로세서가 다음 명령어를 건너뛰도록 한다.
  • 비트 10은 AC를 지운다.
  • 비트 9는 AC와 장치 간에 워드를 이동하고, 다른 I/O 전송을 시작하며, 장치의 "준비" 플래그를 지운다.


이러한 작업은 둘 이상의 비트가 설정된 경우 유용한 결과를 제공하는 잘 정의된 순서로 수행된다.

디스크 드라이브와 같은 더 복잡한 장치는 이러한 3개의 비트를 장치별 방식으로 사용한다. 일반적으로 장치는 3개의 비트를 디코딩하여 8개의 가능한 기능 코드를 제공한다.

OPR을 사용하여 많은 연산, 특히 대부분의 조건문을 수행한다. OPR은 메모리 위치를 지정하지 않으며, 조건부 실행은 일반적으로 JMP인 다음 명령어를 조건부로 건너뛰는 방식으로 구현된다.

OPR 명령어는 "마이크로코드화"되었다고 한다. 이것은 명령어 워드의 각 비트가 특정 동작을 지정하며, 프로그래머가 여러 비트를 설정하여 단일 명령어 사이클에서 여러 동작을 수행할 수 있다는 의미였다. 실제로 프로그래머는 여러 명령어 니모닉을 나란히 작성할 수 있으며, 어셈블러는 이들을 OR 연산으로 결합하여 실제 명령어 워드를 생성한다. 많은 I/O 장치가 "마이크로코드화된" IOT 명령어를 지원한다.

마이크로코드화된 동작은 많은 조합의 유용성을 극대화하도록 설계된 잘 정의된 시퀀스로 수행된다.

OPR 명령어는 그룹으로 나뉜다. 비트 3, 8 및 11은 OPR 명령어의 그룹을 식별하므로, 서로 다른 그룹의 마이크로코드화된 동작을 결합하는 것은 불가능하다.
그룹 1

000102030405060708091011
1110
CLACLLCMACMLRARRALBSWIAC
실행 순서11224443



연산 코드설명
7200CLA – 누산기 초기화
7100CLL – L 비트 초기화
7040CMA – 누산기 1의 보수
7020CML – L 비트 보수
7001IAC – 증가
7010RAR – 오른쪽 회전
7004RAL – 왼쪽 회전
7012RTR – 오른쪽 두 번 회전
7006RTL – 왼쪽 두 번 회전
7002BSW – 6비트 "바이트" 교환 (PDP 8/e 이상)



대부분의 경우 연산은 가장 유용한 방식으로 결합될 수 있도록 순차적으로 수행된다. 예를 들어, CLA(누산기 초기화), CLL(링크 초기화), IAC(누산기 증가)를 결합하면 먼저 AC와 링크를 초기화한 다음 누산기를 증가시켜 1로 설정한다. 여기에 RAL을 추가하면 (CLA CLL IAC RAL) 누산기가 초기화되고 증가된 다음 왼쪽으로 회전하여 2로 설정된다. 이러한 방식으로 작은 정수 상수를 단일 명령어로 누산기에 넣을 수 있었다.

어셈블러에서 CIA로 줄여 쓸 수 있는 조합 CMA IAC는 AC의 산술 역수를 생성한다. 즉, 2의 보수 부정을 수행한다. 뺄셈 명령어가 없고 2의 보수 덧셈(TAD)만 있기 때문에 두 피연산자의 차이를 계산하려면 먼저 감수를 부정해야 한다.

마이크로 프로그램 비트가 설정되지 않은 그룹 1 OPR 명령은 아무런 동작도 수행하지 않는다. 프로그래머는 이러한 명령을 어셈블하기 위해 NOP (No Operation, 무연산)을 작성할 수 있다.
그룹 2

000102030405060708091011
111100
CLASMASZASNAOSRHLT
실행 순서211133



연산 코드설명
7600CLA – 누산기(AC) 초기화
7500SMA – 누산기(AC) < 0 인 경우 건너뛰기 (또는 그룹)
7440SZA – 누산기(AC) = 0 인 경우 건너뛰기 (또는 그룹)
7420SNL – L ≠ 0 인 경우 건너뛰기 (또는 그룹)
7404OSR – 비트 연산 논리합 연산으로 전면 패널 스위치와 누산기(AC) 결합
7402HLT – 정지



설정된 경우 세 개의 비트(CLA, OSR, HLT)가 작업을 수행한다. 다른 세 개의 비트(SMA, SZA, SNL)는 건너뛰기 조건을 인코딩하며, 지정된 조건 중 하나라도 참이면 건너뛰기가 수행된다. 예를 들어, "SMA SZA", opcode 7540은 AC ≤ 0인 경우 건너뛰기를 수행한다.

마이크로 프로그래밍된 비트가 설정되지 않은 그룹 2 OPR 명령어는 또 다른 무연산(No-Op) 명령어이다.

000102030405060708091011
111110
CLASPASNASZLOSRHLT
실행 순서211132



연산 코드설명
7410SKP – 무조건 건너뛰기
7610CLA – AC 지우기
7510SPA – AC ≥ 0 일 경우 건너뛰기 (그리고 그룹)
7450SNA – AC ≠ 0 일 경우 건너뛰기 (그리고 그룹)
7430SZL – L = 0 일 경우 건너뛰기 (그리고 그룹)



8번째 비트가 설정되면, 그룹 2 건너뛰기 조건이 반전된다. or 그룹 조건 중 하나라도 참이면 건너뛰기를 ''수행하지 않는다''. 드 모르간의 법칙에 따르면, 이는 지정된 반전된 조건이 모두 참일 경우 건너뛰기를 ''수행한다''는 의미이다. 예를 들어, "SPA SNA", 연산 코드 7550은 AC > 0이면 건너뜁니다. 비트 5–7 중 어느 것도 설정되지 않으면 무조건 건너뛰기가 수행된다.

(CLA, OSR, HLT) 동작은 8번째 비트의 영향을 받지 않는다.
그룹 3OPR의 사용되지 않은 비트 조합은 주로 MQ(곱셈기/몫) 레지스터에 영향을 미치는 마이크로 프로그램된 작업의 세 번째 그룹으로 정의된다. MQ 레지스터와 확장 산술 요소(EAE) 명령어는 선택 사항이며 EAE 옵션이 구매된 경우에만 존재한다.[35]

000102030405060708091011
11111
CLAMQAMQLSCACODE
실행 순서1*2223



연산 코드설명
7601CLA – 누산기 지우기 (Clear AC)
7501MQA – 누산기를 사용한 곱셈기 몫 (MQ를 AC에 논리 OR)
7441SCA – 단계 카운터 로드 (Step counter load)를 누산기에 적재
7421MQL – 곱셈기 몫 적재 (AC를 MQ로 전송, AC 지우기)
7621CAM – CLA + MQL은 AC와 MQ를 모두 지웁니다.



일반적으로 CLA와 MQA는 MQ를 AC로 전송하기 위해 결합되었다. 또 다른 유용한 조합은 두 레지스터를 교환하기 위한 MQA와 MQL이다.

세 개의 비트는 수행할 곱셈/나눗셈 명령어를 지정했다.

연산 코드설명
7401무연산 (No operation)
7403SCL – 단계 카운터 로드 (즉시 단어 뒤따름, PDP-8/I 이상)
7405MUY – 곱셈 (Multiply)
7407DVI – 나눗셈 (Divide)
7411NMI – 정규화 (Normalize)
7413SHL – 왼쪽 시프트 (즉시 단어 뒤따름)
7415ASR – 산술 오른쪽 시프트 (Arithmetic shift right)
7417LSR – 논리 오른쪽 시프트 (Logical shift right)



다음 코드는 두 숫자를 비교하는 데 필요한 내용을 보여준다.

```assembly

/ OPD1과 OPD2에 있는 메모리의 숫자 비교

CLA CLL / AC와 링크를 0으로 시작해야 함

TAD OPD1 / 첫 번째 피연산자를 AC에 로드 (0에 더하여); 링크는 여전히 클리어

CIA / AC를 보수하고 증가시켜 부호 반전

TAD OPD2 / AC는 이제 OPD2-OPD1을 가짐; 만약 OPD2≥OPD1이면, 합이 오버플로우되어 링크가 설정됨

SZL / 링크가 클리어되면 건너뜀

JMP OP2GT / OPD2≥OPD1의 경우 어딘가로 점프;

/ 그렇지 않으면 아래 코드로 이동합니다.

```

일반적인 PDP-8 프로그램의 텍스트는 작성자의 의도된 알고리즘이 아니라 하위 레벨의 기계적 작동에 초점을 맞춘다. 가독성 문제점은 위에서 보여진 조건부 점프에서 조건부 명령(JMP를 건너뜀)이 관심 조건의 반대를 강조한다는 것이다.

4. 프로그래밍 환경

PDP-8의 프로그래밍은 다소 번거로웠다. 코드의 상당 부분은 알고리즘 설정보다는 필요한 메커니즘을 수행하는 데 할애되었다. 예를 들어, 숫자를 빼려면 2의 보수를 계산한 다음 더해야 했고, 조건부 점프를 작성하려면 원하는 조건과 반대되는 조건을 코딩하여 점프 주변에 조건부 건너뛰기를 작성해야 했다.[10] 이러한 복잡성으로 인해, 일부 프로그래밍 프로젝트는 메모리에 맞지 않거나 해결할 수 없는 설계 결함을 발생시키기도 했다. 특히, 서브루틴의 의도하지 않은 재귀는 추적하기 어려운 결함을 생성했다.

설계가 발전하면서 논리 및 메모리 비용이 감소함에 따라 프로그래머의 시간이 상대적으로 더 중요해졌다.[10] 이후의 컴퓨터 설계는 더 크고 직관적인 명령어 집합을 사용하여 프로그래밍의 용이성을 강조했다.[11]

초기 PDP-8 시스템은 사전 설치된 소프트웨어 없이 출하되었으며, 사용자는 전면 패널의 12개 토글 스위치를 사용하여 명령어를 수동으로 입력해야 했다. 일반적으로 이러한 명령어는 종이 테이프 판독기에서 프로그램을 읽어오는 부트스트랩 로더였다. 이후 프로그램 개발은 종이 테이프 입출력을 통해 이루어졌다.

DEC의 FOCAL 인터프리터[34]와 4K FORTRAN 컴파일러 및 런타임을 포함하여 여러 프로그래밍 언어의 종이 테이프 버전이 제공되었다.

PDP-8 시대 말기에는 OS/8 및 COS-310과 같은 운영 체제를 통해 PAL-III 어셈블리 언어, FORTRAN, BASIC, DIBOL과 같은 언어를 사용하여 기존의 라인 모드 편집기 및 명령줄 컴파일러 개발 시스템을 사용할 수 있었다.

실시간 운영 체제 (RTOS) 및 선점형 멀티태스킹 다중 사용자 시스템도 사용 가능했는데, 실시간 시스템 (RTS-8), 다중 사용자 상용 시스템 (COS-300 및 COS-310), 전용 단일 사용자 워드 프로세싱 시스템 (WPS-8) 등이 있었다.

시분할 시스템인 TSS-8도 사용 가능했다. TSS-8을 사용하면 여러 사용자가 110보드 터미널을 통해 시스템에 로그인하여 프로그램을 편집, 컴파일 및 디버깅할 수 있었다. 언어에는 BASIC의 특수 버전, FORTRAN-1과 유사한 FORTRAN 서브셋 (사용자 작성 서브루틴 또는 함수 없음), ALGOL 서브셋, FOCAL 및 PAL-D라는 어셈블러가 포함되었다.

DECUS는 PDP-8용으로 상당량의 사용자 기증 소프트웨어를 제공했으며, 종종 전체 소스 목록과 문서를 함께 제공했다.

다음은 PAL-III 어셈블러용으로 작성된 PDP-8 어셈블리 언어 코드 예시이다.
두 숫자 비교 코드:```

/ OPD1과 OPD2에 있는 메모리의 숫자 비교

CLA CLL / AC와 링크를 0으로 시작해야 함

TAD OPD1 / 첫 번째 피연산자를 AC에 로드 (0에 더하여); 링크는 여전히 클리어

CIA / AC를 보수하고 증가시켜 부호 반전

TAD OPD2 / AC는 이제 OPD2-OPD1을 가짐; 만약 OPD2≥OPD1이면, 합이 오버플로우되어 링크가 설정됨

SZL / 링크가 클리어되면 건너뜀

JMP OP2GT / OPD2≥OPD1의 경우 어딘가로 점프;

/ 그렇지 않으면 아래 코드로 이동합니다.

```

위 코드에서 볼 수 있듯이, 일반적인 PDP-8 프로그램은 작성자가 의도한 알고리즘보다는 하위 레벨의 기계적 작동에 초점을 맞추고 있다. 가독성 문제점은 조건부 명령(JMP를 건너뜀)이 관심 조건의 반대를 강조한다는 것이다.
Hello, world!를 텔레프린터로 출력하는 프로그램:```


  • 10 / 어셈블리의 현재 시작 주소를 10으로 설정

STPTR, STRNG-1 / 자동 증가 레지스터 (10-17번지 중 하나)

  • 200 / 어셈블리의 현재 시작 주소를 프로그램 텍스트 영역으로 설정

HELLO, CLA CLL / AC와 링크를 다시 지웁니다 (tls에서 루프백할 때 필요)

TAD I Z STPTR / 제로 페이지에서 자동 증가 주소를 사용하여 간접적으로 다음 문자를 가져옵니다.

SNA / 0이 아니면 건너뜁니다 (문자열의 끝이 아님)

HLT / 그렇지 않으면 0에서 정지합니다 (문자열의 끝)

TLS / AC의 문자를 텔레프린터로 출력합니다.

TSF / 텔레프린터가 문자를 받을 준비가 되었으면 건너뜁니다.

JMP .-1 / 그렇지 않으면 다시 점프하여 다시 시도합니다.

JMP HELLO / 다음 문자를 위해 다시 점프합니다.

STRNG, 310 / H

345 / e

354 / l

354 / l

357 / o

254 /,

240 / (space)

367 / w

357 / o

362 / r

354 / l

344 / d

241 / !

0 / 문자열의 끝

$HELLO /DEFAULT TERMINATOR

```

PDP-8 프로세서는 스택을 구현하지 않아 서브루틴 호출이나 인터럽트 발생 시 레지스터나 문맥을 저장할 수 없었다. (스택은 소프트웨어로 구현 가능[36]) 대신, JMS 명령은 업데이트된 PC(JMS 이후 반환 주소를 가리킴)를 유효 주소에 저장하고 유효 주소에 1을 더한 주소로 점프했다. 서브루틴은 서브루틴의 첫 번째 단어를 주소로 사용하는 간접 JMP 명령을 사용하여 호출자에게 반환되었다.
"Hello, World!"를 서브루틴을 사용하도록 다시 작성한 예시:```

  • 10 / 현재 어셈블리 원점을 주소 10으로 설정,

STPTR, STRNG-1 / 자동 증가 레지스터 (10-17에 있는 8개 중 하나)

  • 200 / 어셈블리 원점 설정 (로드 주소)

LOOP, TAD I STPTR / 미리 증가된 메모리 위치 10, 간접적으로 인출하여 메시지의 다음 문자 가져오기

SNA / 0이 아닌 AC에서 건너뛰기

HLT / 그렇지 않으면 메시지 끝에서 중지

JMS OUT1 / 한 문자 쓰기

JMP LOOP / 그리고 더 많은 것을 위해 루프백

OUT1, 0 / 호출자의 업데이트된 PC로 대체될 것입니다.

TSF / 프린터가 준비되면 건너뛰기

JMP .-1 / 플래그 대기

TLS / AC에서 문자 보내기

CLA CLL / 다음 패스를 위해 AC 및 링크 지우기

JMP I OUT1 / 호출자로 반환

STRNG, "H / 잘 알려진 메시지

"e /

"l / 참고:

"l /

"o / PAL-8 및 PAL-III의 문자열은 "6비트"였습니다.

", / ASCII를 사용하려면 문자를 하나씩 철자합니다.

" /

"w /

"o /

"r /

"l /

"d /

"! /

015 /

012 /

0 / 널 종료 문자열의 끝을 표시 (.ASCIZ는 아직 발명되지 않았습니다!)

```

JMS 명령은 반환 주소를 서브루틴 코드 바로 앞 단어에 저장하기 때문에, 프로그래머가 추가 작업을 하지 않으면 재진입 및 재귀를 방지하고, PDP-8에서 ROM 사용을 어렵게 만들었다. ROM에 배치할 프로그램을 위해 다음과 같은 방법으로 해결했다.

  • 실행 전에 읽기/쓰기 메모리에 복사.
  • 특수 ROM 카드에 배치하여 간접적으로 액세스되는 몇 단어의 읽기/쓰기 메모리를 제공.
  • 서브루틴 사용을 피하거나 JMS 명령 대신 반환 주소를 읽기/쓰기 메모리에 넣는 코드를 사용.


JMS 명령을 사용하면 디버깅이 어려웠다. 서브루틴이 자신을 호출하는 실수를 하면 외부 호출의 반환 주소가 파괴되어 무한 루프가 발생하거나, 잘못된 주소로 코딩된 경우 서브루틴의 코드를 실행하지 못하고 반환 주소를 수정하여 프로세서가 서브루틴에 대한 후속 호출 중에 명령으로 해석할 수 있었다.

소프트웨어로 스택을 구현할 수 있다.[36] 다음은 단순화된 PUSH 및 POP 서브루틴의 예시이다.

```

  • 100 / 다음 예제에서 루틴에 접근 가능하도록 만듦

PUSH, 0

DCA DATA

CLA CMA / -1

TAD SP

DCA SP

TAD DATA

DCA I SP

JMP I PUSH /반환

POP, 0

CLA CLL

TAD I SP

ISZ SP

JMP I POP

DATA, 0

SP, 0

```
"Hello World"와 "OUT" 서브루틴을 스택을 사용하여 구현한 예시:```

  • 200

MAIN, CLA CLL /메시지 포인터 설정

TAD (MESSG /메시지의 시작 부분으로 (리터럴)

DCA SP

LOOP, JMS POP

SNA /0이면 실행 중지

HLT

JMS OUT /그렇지 않으면 문자를 출력

JMP LOOP

MESSG, "H

"e

"l

"l

"o

",

"

"w

"o

"r

"l

"d

"!

015

012

0

OUT, 0 / 호출자의 업데이트된 PC로 대체될 것임

TSF / 프린터 준비되면 건너뜀

JMP .-1 / 플래그를 기다림

TLS / AC에 문자를 보냄

CLA CLL / 다음 패스를 위해 AC와 링크 초기화

JMP I OUT / 호출자로 반환

```
PDP-8을 위한 연결 리스트 구현 예시:```

GETN, 0 / 가리키는 숫자를 가져와 포인터를 이동합니다.

CLA CLL / 누산기를 지웁니다.

TAD I PTR / 가리키는 숫자를 가져옵니다.

DCA TEMP / 현재 값을 저장합니다.

ISZ PTR / 포인터를 증가시킵니다.

TAD I PTR / 다음 주소를 가져옵니다.

DCA PTR / 포인터에 넣습니다.

JMP I GETN / 반환합니다.

PTR, 0

TEMP, 0

5. 영향 및 평가

PDP-8은 저렴한 비용,[3] 단순성, 확장성, 그리고 가치를 위한 신중한 설계를 결합했다. 가장 큰 역사적 의의는 PDP-8의 저렴한 가격과 높은 생산량으로 인해 많은 새로운 고객이 다양한 용도로 컴퓨터를 사용할 수 있게 되었다는 점이다. 지속적인 의의는 가치 공학적[9] 컴퓨터 설계의 역사적 사례로서 남아있다.

낮은 복잡성은 다른 비용을 초래했다. 프로그래밍이 번거로워졌으며, 코드의 상당 부분이 필요한 메커니즘을 수행했다. 예를 들어, 숫자를 빼려면 2의 보수를 계산한 다음 더해야 했다. 조건부 점프를 작성하려면 점프 주변에 조건부 건너뛰기를 작성해야 했으며, 건너뛰기는 원하는 조건과 반대되는 조건을 코딩했다. 일부 야심찬 프로그래밍 프로젝트는 메모리에 맞지 않거나 해결할 수 없는 설계 결함을 개발했다. 예를 들어, 서브루틴의 의도하지 않은 재귀는 해당 서브루틴으로 추적하기 어려운 결함을 생성한다.

설계가 발전하면서 논리 및 메모리 비용이 감소함에 따라 프로그래머의 시간이 상대적으로 더 중요해졌다.[10] 이후의 컴퓨터 설계는 프로그래밍의 용이성을 강조했으며, 일반적으로 더 크고 직관적인 명령어 집합을 사용했다.[11]

결국 대부분의 기계어는 컴파일러와 보고서 생성기에 의해 생성되었다.[12] RISC는 실행 속도를 극대화하기 위해 단일 명령어 사이클에서 여러 작업을 수행하고 간단한 명령어 집합을 강조하는 PDP-8의 방식을 되돌아갔지만, 새로운 컴퓨터는 훨씬 더 긴 명령어 단어를 가지고 있다.

PDP-8은 기술사적 관점에서도 중요한 위치를 차지하고 있다. 입출력 기구, 소프트웨어 개발, 운영 체제 설계 등에 영향을 미쳤다. 애플 II와 같은 마이크로컴퓨터가 일반화되기 전까지 PDP-8은 세계에서 가장 많이 판매된 컴퓨터였다.

PDP-8은 몇몇 12비트 기기의 선례를 참고했으며, 특히 W.A. 클라크와 C.E. 몰나르가 설계한 LINC에 영향을 받았다. LINC 자체는 시모어 크레이가 설계한 미니컴퓨터 CDC 160에 영향을 받았다[40]

참조

[1] 웹사이트 Early Computing at the NIH - Office of NIH History and Stetten Museum https://history.nih.[...] 2024-07-17
[2] 웹사이트 PDP-8 Summary of Models and Options http://www.faqs.org/[...]
[3] 웹사이트 The Digital Equipment Corporation PDP-8 -- Frequently Asked Questions https://homepage.cs.[...]
[4] 서적 DEC is dead, long live DEC: the lasting legacy of Digital Equipment Corporation https://books.google[...] Berrett-Koehler Publishers 2004
[5] 웹사이트 The Digital Equipment Corporation PDP-8 https://homepage.cs.[...]
[6] 웹사이트 PDP-8 1965 http://historywired.[...] Smithsonian Institution 2012-03-16
[7] 웹사이트 PDP-8/S #1 https://www.ricomput[...] 2020-08-18
[8] 서적 The ultimate entrepreneur: the story of Ken Olsen and Digital Equipment Corporation https://books.google[...] Contemporary Books
[9] 서적 Small Computer Handbook, NEW PDP 8/I edition (Forward) Digital Equipment Corporation 1968
[10] 간행물 Benchmarking the Languages https://books.google[...] 1985-10-29
[11] 웹사이트 TMS320C28x CPU and Instruction Set (Rev. F) http://www.ti.com.cn[...]
[12] 서적 Basics of Compiler Design http://www.diku.dk/~[...] 2010-08-20
[13] 서적 Computer Engineering: A DEC View of Hardware Systems Design http://bitsavers.org[...] Digital Press
[14] 간행물 PDP-8 Floating-Point System Programmers Reference Manual http://bitsavers.org[...] Digital Equipment Corporation 1969-09
[15] 웹사이트 PDP-8 Typesetting System http://www.pdp8onlin[...] Digital Equipment Corporation
[16] 문서 C. Gordon Bell, et al.; Computer Structures, Principles and Organization, 1982, PDP-8 chapter
[17] 서적 PDP-8 User's Handbook Digital Equipment Corporation
[18] 서적 Introduction to Programming http://bitsavers.org[...] Digital Equipment Corporation
[19] 서적 PDP-8/S Maintenance Manual Digital Equipment Corporation
[20] 웹사이트 PDP -8/S http://www.pdp8.com/[...]
[21] 웹사이트 First-Hand:PDP-8/E OMNIBUS Ride https://ethw.org/Fir[...]
[22] 웹사이트 Doug Jones's DEC PDP-8 FAQs https://homepage.cs.[...] 2024-03-24
[23] 웹사이트 PDP-8 Summary of Models and Options (posted every other month) http://www.faqs.org/[...]
[24] 웹사이트 PDP-8 - A High Speed Digital Computer http://www.bitsavers[...]
[25] 서적 PDP-8/S Maintenance Manual http://www.bitsavers[...] 1970-10
[26] 서적 Small Computer Handbook http://www.bitsavers[...] 1968
[27] 서적 Small Computer Handbook http://www.bitsavers[...] 1970
[28] 서적 PDP-8/e/f/m Sales Brochure http://www.pdp8onlin[...]
[29] 서적 PDP-8/e/f/m Sales Brochure http://www.pdp8onlin[...]
[30] 웹사이트 System Source Computer Museum: PDP-8M https://museum.syssr[...]
[31] 서적 PDP-8/e/f/m Sales Brochure http://www.pdp8onlin[...]
[32] 웹사이트 The Explosion 1975-1976 » AntiqueTech http://www.antiquete[...] AntiqueTech.com 2009-04-21
[33] 간행물 Family Tree of Digital's Computers https://gordonbell.a[...] Digital Equipment Corporation 2017-06-19
[34] 서적 FOCAL Programming Manual for PDP-8, PDP-8/S, PDP-8/I, LAB-8, LINC-8 http://www.bitsavers[...] Digital Equipment Corporation
[35] 서적 Small Computer Handbook 1967–1968 Digital Equipment Corporation 1968
[36] 문서 DEC PDP-8 Subroutines http://people.cs.cle[...] 2002
[37] 웹사이트 The Digital Equipment Corporation PDP-8 http://www.cs.uiowa.[...] 2009-10-30
[38] 서적 The ultimate entrepreneur: the story of Ken Olsen and Digital Equipment Corporation https://books.google[...] 1988
[39] 서적 Computer Architecture and Organization
[40] 서적 Computer Engineering: A DEC View of Hardware Systems Design https://books.google[...] Digital Press
[41] 문서 1971
[42] 문서 PDP-8/S Maintenance Manual DEC 1971
[43] 웹사이트 PDPシリーズはどれくらい売れたのか---Part.5 http://ftrcrblog.g2.[...] 2020-12-12
[44] 간행물 Computer Report Vol.10 No.10 日本経営科学研究所
[45] 문서 The Digital Equipment Corporation PDP-8 -- Frequently Asked Questions http://homepage.cs.u[...]
[46] 문서 The Digital Equipment Corporation PDP-8 http://www.cs.uiowa.[...]
[47] 뉴스 PDP-8 1965 http://historywired.[...] History Wired, Smithsonian Institution 2015-02-17
[48] 서적 DEC is dead, long live DEC: the lasting legacy of Digital Equipment Corporation Berrett-Koehler Publishers 2004
[49] 웹인용 PDP-8 Summary of Models and Options http://www.faqs.org/[...]
[50] 서적 The ultimate entrepreneur: the story of Ken Olsen and Digital Equipment Corporation https://books.google[...] 1988



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com