PDP-11 아키텍처

PDP-11 architecture

PDP-11 아키텍처[1] Digital Equipment Corporation(DEC)에 의해 개발CISC Instruction Set Architecture(ISA; 명령 세트아키텍처)입니다.PDP-11 미니컴퓨터에 사용되는 중앙처리장치(CPU)와 마이크로프로세서에 의해 구현됩니다.1970년대에 널리 사용되었지만 1980년대에 더 강력한 VAX-11 아키텍처로 인해 결국 빛을 보지 못했습니다.

기억

data 형식

16비트 워드는 little-endian(최소 유효 바이트 우선)으로 저장됩니다.32비트 데이터(FPU 명령 집합의 부동 소수점, 확장 명령 집합의 이중 워드 또는 상용 명령 집합의 긴 데이터 등)는 "PDP-endian"이라고 불리는 특이한 미들엔드 형식을[2][3] 포함하여 여러 형식으로 저장됩니다.

메모리 관리

PDP-11의 16비트주소는, 64 KB 의 주소를 지정할 수 있습니다.PDP-11이 VAX에 반환될 무렵에는 8비트바이트와 16진수 표기가 업계 표준이 되어 있었습니다만, PDP-11의 수치에는 항상 8진수 표기가 사용되고 있어 PDP-11에 접속되어 있는 메모리의 양은 항상 다수의 단어로 기재되어 있습니다.기본적인 논리 주소 공간은 32K 워드이지만, 버스상의 입출력 레지스터가 그 범위의 주소에 응답하기 때문에 물리 주소 공간(메모리 관리가 없는 경우 주소 1600008~17777)의 상위8 4K는 채워지지 않습니다.따라서 원래 완전히 확장된 PDP-11은 28,000개의 단어, 즉 현대 용어로는 56KB였습니다.

프로세서는 프로그램카운터와 서비스 루틴을 시작하는 프로세서 상태 워드를 제공하는 2워드 벡터용으로 메모리 주소가 부족합니다.I/O 장치가 프로그램을 중단하면 해당 벡터의 주소를 버스에 배치하여 어떤 서비스 루틴을 제어해야 하는지 나타냅니다.가장 낮은 벡터는 다양한 유형의 트랩을 처리하는 서비스 루틴입니다.트랩은 정의되지 않은 명령을 실행하려고 하는 등 일부 프로그램오류에서 발생합니다.또한 프로그램이 운영체제에서 서비스를 요구하는 BPT, EMT, IOT, TRAP 등의 명령을 실행할 때도 발생합니다.

메모리 확장

PDP-11의 라이프 사이클 중에는 16비트의 논리 주소 공간이 점점 더 제한적이 되었습니다.이 문제를 해결하기 위해 다양한 기술이 사용되었습니다.

  • 최신 모델의 PDP-11 프로세서에는 가상 주소 지정을 지원하는 메모리 관리가 포함되어 있습니다.물리 주소 공간이 18비트 또는 22비트로 확장되었기 때문에 최대 256KB 또는 4MB의 RAM을 사용할 수 있습니다.논리 주소 공간(메모리 매핑테이블을 변경하지 않고 언제든지 사용할 수 있는 주소 공간)은 16비트로 제한됩니다.
  • PDP-11/45에서 시작하는 일부 모델은 프로그램 코드의 "명령 공간"으로 32K 워드(64KB)를 사용하고 "데이터 공간"의 별도 32K 워드를 사용하도록 설정할 수 있습니다.일부 운영체제시스템(특히 버전 V7 이후의 Unix 및 RSX11-M+)은 이 기능을 다시 사용하고 있습니다.
  • 필요에 따라 저장된 명령 또는 데이터 블록을 다른 명령과 오버레이하는 등의 프로그래밍 기술은 애플리케이션 프로그래머로부터 페이징 문제를 숨길 수 있습니다.예를 들어 Modula-2 컴파일러는 개별 프로시저가 제어를 [4]받을 때 런타임 시스템이 8Kb 페이지를 메모리로 스왑하는 코드를 생성합니다.

CPU 레지스터

DEC PDP-11 레지스터
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (비트 위치)
메인 레지스터
R0 레지스터 0
R1 레지스터 1
R2 레지스터 2
R3 레지스터 3
R4 레지스터 4
R5 레지스터 5
스택 포인터
R6 / SP 레지스터 6 / 스택 포인터
프로그램 카운터
R7 / PC 등록 7 / 프로그램 카운터
상태 플래그
I T N Z V C 프로세서 상태 단어
부동 소수점 상태 레지스터

CPU에는 8개의 범용 16비트 레지스터(R0 ~R7)가 포함되어 있습니다.Register R7은 프로그램 카운터(PC)입니다.모든 레지스터를 스택포인터로 사용할 수 있지만 R6은 하드웨어 인터럽트 및 트랩에 사용되는 스택포인터(SP)입니다R5는 현재 프로시저 콜프레임을 가리키기 위해 자주 사용됩니다.컨텍스트 스위칭을 고속화하기 위해 일부 PDP-11 모델에서는 듀얼 R1-R5 레지스터 세트가 제공됩니다.커널, 슈퍼바이저(존재하는 경우) 및 사용자 모드에는 개별 메모리 맵과 개별 스택포인터가 있습니다(따라서 사용자 프로그램이 스택포인터 레지스터에 비활성 값을 저장하여 시스템을 오작동시킬 수 없습니다).

어드레싱 모드

대부분의 명령에서는 오퍼랜드를 지정하기 위해 6비트를 할당합니다.3비트는 8개의 주소 지정 모드 중 하나를 선택하고 3비트는 일반 레지스터를 선택합니다.

6비트 오퍼랜드어드레싱 모드의 부호화는 다음과 같습니다.

5 3 2 0
모드 등록하세요


다음 섹션에서 각 항목에는 오퍼랜드가 어셈블리 언어로 어떻게 기술되는지에 대한 예가 포함되어 있습니다.Rn은 R0에서 R7까지 쓰여진 8개의 레지스터 중 하나를 의미합니다.

일반 레지스터 주소 지정 모드

다음 8가지 모드를 모든 일반 레지스터에 적용할 수 있습니다.R6(스택 포인터, SP) 및 R7(프로그램 카운터, PC)에 적용했을 때의 효과는 다음 섹션에서 별도로 설명합니다.

코드 이름. 묘사
0n 등록하세요 Rn 오퍼랜드가 Rn에 있다.
1n 등록이 지연되었습니다. (Rn) Rn에는 오퍼랜드의 주소가 포함되어 있습니다.
2n 자동 증가 (Rn)+ Rn에는 오퍼랜드의 주소가 포함되어 Rn이 증가합니다.
3n 자동 증가 지연 @(Rn)+ Rn에는 오퍼랜드 주소의 주소가 포함되어 Rn은 2씩 증가합니다.
4n 자동 검출 −(Rn) [Decrement Rn] : 결과를 오퍼랜드의 주소로 사용합니다.
5n 자동 검색 지연됨 @−(Rn) Rn을 2씩 줄인 후 결과를 오퍼랜드 주소의 주소로 사용합니다.
6n 색인 X(Rn) Rn+X는 오퍼랜드의 주소입니다.
7n 지수 지연 @X(Rn) Rn+X는 오퍼랜드의 주소입니다.

인덱스 및 인덱스 지연 모드에서 X는 명령의 두 번째 단어에서 가져온 16비트 값입니다.이중 오퍼랜드 명령에서는 두 오퍼랜드 모두 이러한 모드를 사용할 수 있습니다.이런 지시는 세 단어나 된다.

레지스터의 자동증가 및 자동증가 연산은 레지스터가 (워드) 포인터이기 때문에 바이트 명령에서는 1개, 워드 명령에서는 2개, 지연 모드가 사용될 때마다 2개씩이다.

프로그램 카운터 주소 지정 모드

R7(프로그램 카운터)을 지정하면, 다음의 4개의 어드레싱 모드가 자동적으로 도움이 됩니다.

코드 이름. 묘사
27 즉각적인 #n 피연산자는 명령어의 다음 단어입니다.
37 절대 @#a 오퍼랜드의 주소는 명령의 다음 단어입니다.
67 관련있는 a 오퍼랜드의 주소는 PC에 추가된 명령의 다음 단어입니다.
77 상대 지연 @a 피연산자 주소의 주소는 PC에 추가된 명령의 다음 단어입니다.

구문이 즉시 모드와 지연 모드를 조합한 절대 모드의 유일한 일반적인 용도는 입력/출력 레지스터를 지정하는 것입니다.이는 각 디바이스의 레지스터에는 특정 메모리주소가 있기 때문입니다.Relative 모드는 구문이 단순하고 프로그램 변수와 점프 대상을 참조하는 데 더 일반적입니다.내부 참조 전용으로 상대 모드(및 상대 지연 모드)를 사용하는 프로그램은 위치에 의존하지 않습니다.이 프로그램은 자신의 위치에 대한 가정을 포함하지 않기 때문에 임의의 메모리 위치로 로드하거나 이동할 수 있습니다.주소를 조정하여 위치를 반영할 필요가 없습니다(위치 변경).이러한 주소를 현재 위치에 대해 계산할 때 프로세서는 즉시 재배치 작업을 수행했습니다.

즉시 모드와 절대 모드는 각각 PC에 적용되는 자동 증가 및 자동 증가 지연 모드입니다.위의 표와 같이 보조 워드가 "in the in the in in in the in in the instruction"일 경우 다음 명령의 PC는 보조 워드를 지나 자동으로 증가합니다.PC가 항상 단어를 가리키듯이 자동 증가 연산은 항상 2입니다.

스택 어드레싱 모드

R6(SP라고도 함)은 트랩 및 인터럽트의 하드웨어 스택으로 사용됩니다.PDP-11이 제공하는 일련의 모드에 의해 적용되는 규칙은 항목이 푸시되면 스택이 아래쪽으로(주소가 작은 쪽으로) 증가한다는 것입니다.SP 또는 프로그래머가 소프트웨어 스택으로 사용하도록 선택한 레지스터에 모드를 적용하면 주소 지정 모드는 다음과 같은 영향을 미칩니다.

코드 이름. 묘사
16 지연 (SP) 오퍼랜드가 스택의 맨 위에 있습니다.
26 자동 증가 (SP)+ 오퍼랜드가 스택의 맨 위에 있고, 그 다음 pop off
36 자동 증가 지연 @(SP)+ 오퍼랜드 포인터가 스택 위에 있습니다. 포인터를 팝오프합니다.
46 자동 검출 −(SP) 값을 스택에 푸시합니다.
66 색인화 X(SP) 이것은, 스택상의 임의의 항목을, 상부에서 플러스 거리로 참조합니다.
76 색인화 지연 @X(SP) 이것은 포인터가 스택의 지정된 위치에 있는 값을 나타냅니다.

소프트웨어 스택은 바이트를 포함할 수 있지만 SP는 항상 단어 스택입니다.SP의 자동 증가 및 자동 검색 작업은 항상 2입니다.

명령 집합

PDP-11은 바이트 및 워드로 동작합니다.바이트는 레지스터 번호(레지스터의 하위 바이트 식별) 또는 메모리 위치로 지정됩니다.워드는 레지스터 번호 또는 하위 바이트의 메모리 위치로 지정됩니다. 이 위치는 짝수여야 합니다.오퍼랜드를 사용하는 대부분의 명령에서는 비트 15가 바이트 어드레싱을 지정하도록 설정되거나 워드 어드레싱을 지정하기 위해 clear가 설정됩니다.다음 두 섹션의 목록에서 어셈블리 언어 프로그래머는 명령 심볼에 B를 추가하여 바이트 연산을 지정했습니다.예를 들어 MOVB가 되었습니다.

일부 PDP-11 모델에서는 MARK 및 SOB 등의 몇 가지 명령이 구현되지 않았습니다.

이중 연산자 명령

상위 4비트는 수행할 작업을 지정합니다(비트 15는 일반적으로 워드 대 바이트 주소 지정을 선택합니다).6비트의 2개의 그룹이, 상기와 같이 송신원 오퍼랜드어드레싱 모드와 행선지 오퍼랜드어드레싱 모드를 지정합니다.

15 12 11 9 8 6 5 3 2 0
오퍼코드 Src 등록하세요 증류 등록하세요
오퍼코드 니모닉 작동
01 motoroperatorvalve 이동:Dest ← Src

주의: 바이트를 레지스터 기호로 이동하면 비트 8-15로 확장됩니다.

11 무브
02 CMP 비교:Set-flags(Src − Dest)
12 CMPB
03 조금 비트 테스트:Set-flags(Src ∧ Dest)
13 비트
04 조금 선명함:Dest ← Dest ∧ Ones-complement(Src)
14 BIB
05 BIS 비트 세트:Dest ← Dest ∨ Src
15 BISB
06 더하다 추가:Dest ← Dest + Src
16 후보선수 빼기:Dest ← Dest − Src

ADD 및 SUB 명령에서는 워드 어드레싱을 사용하며 바이트 지향의 변화는 없습니다.

일부 2-operand 명령에서는 주소 지정 모드 피연산자와 추가 레지스터 피연산자를 사용합니다.

15 9 8 6 5 3 2 0
오퍼코드 등록 Src/대상 등록하세요

레지스터 쌍이 사용되는 경우(아래에 "Reg, Reg+1) 첫 번째 레지스터는 피연산자의 하위 부분을 포함하며 짝수 레지스터여야 합니다.다음으로 높은 번호의 레지스터에는 오퍼랜드의 상위 부분(또는 나머지 부분)이 포함됩니다.예외는 곱셈 명령입니다. Reg는 홀수일 수 있지만 홀수일 경우 결과의 상위 16비트는 저장되지 않습니다.

오퍼코드 니모닉 작동
070 멀티 곱셈:(Reg, Reg+1) ← Reg × Src
071 DIV 분할:Compute (Reg, Reg+1) ÷ Src; Reg ← quotient; Reg+1 ← remainder
072 산술 이동:if Src<5:0> < 0 then Reg ← Shift-right(Reg, -Src<5:0>) else Reg ← Shift-left(Reg, Src<5:0>)
073 ASHC 결합된 산술 이동:if Src<5:0> < 0 then (Reg, Reg+1) ← Shift-right((Reg, Reg+1), -Src<5:0>) else (Reg, Reg+1) ← Shift-left((Reg, Reg+1), Src<5:0>)
074 XOR 배타적 또는Dest ← Dest ⊻ Reg

싱글 오퍼랜드 명령

상위 10비트는 수행할 작업을 지정합니다. 비트 15는 일반적으로 바이트와 워드 주소 지정을 선택합니다.6비트로 구성된 단일 그룹이 위에서 정의한 것과 같이 피연산자를 지정합니다.

15 6 5 3 2 0
오퍼코드 Src/대상 등록하세요
오퍼코드 니모닉 작동
0001 JMP 점프:PC ← Src
0003 면봉 단어 바이트 스왑:Dest ← Swap-bytes(Dest)
0050 CLR 클리어:Dest ← 0
1050 CLRB
0051 COM 보충:Dest ← Ones-complement(Dest)
1051
0052 주식회사 증가:Dest ← Dest + 1
1052 INCB
0053 DEC 감소:Dest ← Dest − 1
1053 DECB
0054 하지 않다 부정:Dest ← Twos-complement(Dest)
1054 하지 않다
0055 ADC 캐리 추가:Dest ← Dest + C flag
1055 ADCB
0056 SBC 뺄셈 자리올림:Dest ← Dest - C flag
1056 SBCB
0057 TST 테스트:Set-flags(Src)
1057 TSTB
0060 로르 오른쪽으로 회전:Dest ← Rotate-right(Dest, 1)
1060 회전하다
0061 왼쪽으로 회전:Dest ← Rotate-left(Dest, 1)
1061
0062 ASR 산술 이동 오른쪽:Dest ← Shift-right(Dest, 1)
1062 ASRB
0063 Asl. 산술적 이동 왼쪽:Dest ← Shift-left(Dest, 1)
1063 ASLB
1064 MTPS PSW로 이동합니다.PSW ← Src
0065 MFPI 이전 I 공간에서 이동합니다.−(SP) ← Src
1065 MFPD 이전 D 공간에서 이동:−(SP) ← Src
0066 MTPI 이전 I 공간으로 이동합니다.Dest ← (SP)+
1066 MTPD 이전 D 공간으로 이동합니다.Dest ← (SP)+
0067 SXT 서명 확장:if N flag ≠ 0 then Dest ← -1 else Dest ← 0
1067 MFPS PSW에서 이동:Dest ← PSW

브런치 순서

대부분의 브랜치 명령에서는 브랜치를 취득할지는 조건 코드의 상태에 근거하고 있습니다.브랜치 명령에는 보통 2개의 오퍼랜드 CMP(비교) 또는 BIT(비트테스트) 또는 1개의 오퍼랜드 TST(테스트) 명령이 선행됩니다.산술 및 논리 명령도 조건 코드를 설정합니다.x86 아키텍처의 인텔 프로세서와 달리 MOV 명령에서도 프로세서가 설정되어 있기 때문에 이동한 값이 제로인지 마이너스인지에 따라 분기 명령을 사용할 수 있습니다.

명령의 상위 바이트는 동작을 지정합니다.비트 9~15는 op 코드, 비트8은 브랜치를 취득하는 조건 코드 계산 값입니다.하위 바이트는 프로그램 카운터의 현재 위치에 상대적인 부호 워드 오프셋입니다.이것에 의해, 코드의 순방향 브랜치 및 역방향 브랜치가 가능하게 됩니다.

15 9 8 7 0
오퍼코드 C 오프셋
오퍼코드 C 니모닉 상태 또는 동작
000 1 BR 항상 지점PC ← PC + 2 × Sign-extend(Offset)
001 0 BNE 동일하지 않은 경우 분기Z = 0
001 1 BEQ 같은 경우 브랜치Z = 1
002 0 BGE 크거나 같은 경우 분기(N ⊻ V) = 0
002 1 BLT 다음보다 작을 경우(N ⊻ V) = 1
003 0 BGT 다음 값보다 큰 경우 분기(Z ∨ (N ⊻ V)) = 0
003 1 삐걱거리다 분기가 작거나 같은 경우)(Z ∨ (N ⊻ V)) = 1
100 0 BPL 플러스인 경우 분기N = 0
100 1 BMI 마이너스인 경우 분기N = 1
101 0 BHI 브런치(높은 경우)(C ∨ Z) = 0
101 1 하지 않다 하위 또는 동일한 경우 분기(C ∨ Z) = 1
102 0 BVC 오버플로우 클리어 시 분기V = 0
102 1 BVS 오버플로가 설정된 경우 분기V = 1
103 0 BCC 또는 BHIS 이상 없는 경우 분기, 높거나 같은 경우 분기C = 0
103 1 BCS 또는 BLO branch(캐리 세트인 경우 분기), branch(낮은 경우 분기)C = 1

브랜치 명령의 범위가 한정되어 있기 때문에, 코드가 커짐에 따라, 일부 브랜치의 타겟주소에 도달할 수 없게 됩니다.프로그래머는 다음 그룹의 한 단어 BR을 두 단어 JMP 명령으로 변경합니다.JMP에는 조건부 형식이 없기 때문에 프로그래머는 BEQ를 JMP 주위에 분기된 BNE로 변경합니다.

SOB(Subtract One and Branch)는 또 다른 조건부 분기 명령입니다.지정된 레지스터가 1씩 감소하며, 결과가 0이 아닐 경우 6비트 워드 오프셋에 따라 역분기가 수행됩니다.

15 9 8 6 5 0
오퍼코드 등록 오프셋
오퍼코드 니모닉 작동
077 흐느끼다 Subtract One and Branch: Reg ← Reg - 1; if Reg ≠ 0 then PC ← PC - 2 × Offset

서브루틴 명령

JSR 명령은 스택에 모든 레지스터를 저장할 수 있습니다.이 기능이 필요 없는 프로그램에서는 PC를 레지스터(JSR PC, 주소)로 지정하고 RTS PC를 사용하여 반환되는 루틴을 지정합니다.예를 들어 "JSR R4, address"와 같은 루틴이 호출된 경우 오래된 R4 값은 스택의 맨 위에 있고 반환 주소(JSR 직후)는 R4에 있습니다.이를 통해 루틴은 (R4)+를 지정하여 인라인으로 코드화된 값에 액세스하거나 @(R4)+를 지정하여 인라인 포인터에 액세스할 수 있습니다.자동 인크리먼트는, 이러한 데이터를 지나, 발신자의 코드가 재개되는 시점까지 이동했습니다.이러한 루틴에서는, 발신자에게 되돌리려면 , RTS R4 를 지정할 필요가 있습니다.

15 9 8 6 5 3 2 0
오퍼코드 등록 Src 등록하세요
오퍼코드 니모닉 작동
004 JSR 서브루틴으로 이동:-(SP) ← Reg; Reg ← PC; PC ← Src
15 3 2 0
오퍼코드 등록
오퍼코드 니모닉 작동
00020 RTS 서브루틴에서 복귀:PC ← Reg; Reg ← (SP)+
15 6 5 0
오퍼코드 하지 않다
오퍼코드 니모닉 작동
0064 마크. 서브루틴에서 돌아와 스택엔트리를 파기합니다.SP ← PC + 2 x nn, PC ← R5, R5 ← (SP)+

트랩 명령

15 9 8 7 0
오퍼코드 S 조작 코드
오퍼코드 S 니모닉 작동
104 0 EMT 에뮬레이터 트랩:-(SP) ← PS; -(SP) ← PC; PC ← (30); PS ← (32)
104 1 트랩 일반 트랩:-(SP) ← PS; -(SP) ← PC; PC ← (34); PS ← (36)
15 0
오퍼코드
오퍼코드 니모닉 작동
000002 RTI 인터럽트로부터의 복귀:PC ← (SP)+; PS ← (SP)+
000003 BPT 중단점 트랩:-(SP) ← PS; -(SP) ← PC; PC ← (14); PS ← (16)
000004 IOT I/O 트랩:-(SP) ← PS; -(SP) ← PC; PC ← (20); PS ← (22)
000006 RTT 트랩에서 복귀:PC ← (SP)+; PS ← (SP)+

트랩 및 예외 벡터주소 할당

벡터 조건.
000000 (예약)
000004 잘못된 명령, 버스 오류, 스택 제한
000010 예약지시
000014 BPT 명령, 트레이스 트랩
000020 IOT 명령
000030 EMT 명령
000034 TRAP 명령
000244 부동 소수점 예외
000250 메모리 관리 장애

기타 지시

15 0
오퍼코드
오퍼코드 니모닉 작동
000000 정지하다 프로세서 정지:Halt execution before next instruction
000001 잠깐만요. 인터럽트 대기:Halt execution before next instruction; Resume execution at next interrupt handler
000005 리셋 UNIBUS 재설정:Assert INIT on UNIBUS for 10 ms; All other devices reset to power up state

조건 코드 조작

15 6 5 4 3 2 1 0
오퍼코드 1 S N Z V C
오퍼코드 S 니모닉 작동
0002 0 CCC 상태 코드 지우기:Clear codes according to N, Z, V, C bits
0002 1 SCC 조건 코드 설정:Set codes according to N, Z, V, C bits

프로세서 상태 워드(PSW)의 4가지 조건 코드는 다음과 같습니다.

  • N은 음의 값을 나타냅니다.
  • Z는 제로(동일한) 상태를 나타냅니다.
  • 오버플로 상태를 나타내는 V 및
  • 반송 상태를 나타내는 C.

이 그룹의 명령은 디지털이 "마이크로 프로그래밍"이라고 부르는 것입니다. 즉, 명령어의 단일 비트가 단일 조건 코드를 참조합니다.어셈블러는 모든 조합을 지정하기 위한 구문을 정의하지 않았지만 기호 SCC와 CCC는 각각 4개의 조건 코드를 설정 또는 클리어하는 명령을 조립했습니다.

조건 코드(각각 opcode 000240 및 000260) 중 어느 것도 삭제 또는 설정하지 않는 것은 사실상 비수술 지침으로 간주될 수 있다.실제로 NOP 니모닉은 000240으로 조립되었습니다.

지시의 불일치

PDP-11의 수명 동안, 정확한 구현으로 간주되지 않았지만, 명령 및 어드레싱 모드의 조합의 구현에 미묘한 차이가 발생했습니다.이러한 불일치는 PDP-11의 통상적인 사용에는 영향을 주지 않았습니다.

옵션 명령어 세트

확장 명령 세트(EIS)

EIS 는, 11/35/40 및 11/03 의 옵션이며, 새로운 프로세서에 표준 탑재되어 있습니다.

  • MUL, DIV 정수 피연산자를 곱하고 나누어서 쌍을 등록합니다.
  • ASH, ASHC 산술 - 레지스터 또는 레지스터 쌍을 바꿉니다.양수일 경우 왼쪽, 음수일 경우 오른쪽으로 이동합니다.

플로팅 명령 세트(FIS)

FIS 지침 세트는 PDP-11/35/40 및 11/03의 옵션이다.

  • 레지스터 피연산자에 의해 주소 지정된 스택에서 단정도 작동용 FADD, FSUB, FMUL, FDIV만

부동소수점 프로세서(FPP)

이것은 11/45 이후의 대부분의 모델에서는 옵션인 부동소수점 프로세서 옵션입니다.

  • 부동소수점 상태 레지스터에서 단일/이중 비트로 선택된 단일 또는 이중 정밀도 피연산자에 대한 전체 부동소수점 연산
  • 단정도 부동소수점 데이터 형식 IEEE 754 포맷의 이전 버전: 부호 비트, 8비트 지수, 23비트 가수(숨김 비트 24 포함)

상용 명령어 세트(CIS)

CIS 또는 CIS11로 알려진 Commercial Instruction Set에는 COBOL DIBOL에서 사용되는 문자열 및 Binary Coded Decimal(BCD) 명령이 추가됩니다.11/23/24에서는 옵션의 마이크로코드로, 11/44에서는 애드인모듈과 11/[5]74에서는1가지 버전으로 실장되어 있습니다.

문자열은 두 개의 범용 레지스터 중 하나에 저장된 두 개의 16비트 정수로 표현되며, 하나는 최대 64kB의 길이인 "n"로 지정되고 다른 하나는 메모리 내의 문자 데이터 시작 포인터인 "A"로 지정됩니다.기본 동작은 MOVC, MOVTC 및 MOVRC입니다.이러한 동작은 메모리 내의 문자 데이터를 한 위치에서 다른 위치로 이동합니다.이 두 위치 모두 n/A 레지스터의 쌍 또는 I 바리에이션의 후속 메모리 위치에 나타나 있습니다).MOVECI) MOVRC/MOVRCI 는, 원래의 문자열을 행선지에 되돌립니다.모든 이동 명령에서 소스가 대상보다 짧으면 대상이 패딩되고 소스가 길면 잘립니다.어느 쪽이든 발생할 경우 프로세서 상태 플래그가 이를 [5]나타내기 위해 사용됩니다.

MOVTC/MOVTCI 는, 카피중의 문자를 변환합니다.복사중의 문자는, 3번째의 2개의 레지스터 세트 또는 메모리 위치에 보관 유지되고 있는 256 바이트의 룩업 테이블을 사용합니다.A 는 테이블의 시작을 가리키며, 2번째 레지스터의 하위 8 비트는 소스 문자열이 짧은 경우, 행선지 문자열을 채우기 위해서 사용되는 ASCII 코드입니다.변환은 소스 문자열의 ASCII 값을 인덱스 번호로 사용하여 해당 인덱스의 변환 테이블 값을 대상 문자열에 복사합니다.예를 들어 대응하는 EBCD를 배치함으로써 EBCDIC 변환에 사용할 수 있습니다.테이블 내의 매핑 ASCII 코드의 IC 문자 코드.ASCII 문자 "E"는 문자 69이지만 EBCDIC에서는 문자 197이므로 EBCDIC를 ASCII로 변환하려면 위치 [5]197에 69가 있는 256바이트의 테이블을 만듭니다.

문자열 비교는 보통 CMPC에 의해 처리되며, CMPC는 2개의 문자열 비교 결과에 따라 프로세서 조건 코드를 설정합니다.LOCC는 문자열 내의 첫 번째 문자를 찾는 반면, SKPC는 일치하지 않는 첫 번째 문자를 검색합니다.예를 들어 문자열 시작 부분의 공백을 잘라내기 위해 사용됩니다.SCANC 및 SPANC는 LOCC 및 SKPC와 유사하지만 마스크된 문자 세트 내의 임의의 문자와 일치합니다.예를 들어 VT, LF, CR 등의 줄 바꿈 문자를 다음에 찾을 때 사용할 수 있습니다.문자 세트는 서브셋으로 [a]분할된 256바이트 테이블입니다.첫 번째 단어의 하위 8비트가 마스크를 형성하고 두 번째 단어가 표의 시작을 가리키는 변환 테이블과 유사합니다.마스크는 비교 중에 문자 집합의 일부인 하위 집합(최대 8개)을 선택합니다.이 시스템을 사용하면 대문자, 소문자, 숫자 등의 문자 집합을 정의하고 마스크를 통해 대문자 및 소문자 하위 집합을 선택하여 전체 [5]문자 집합을 만들 수 있습니다.

CIS에는 BCD 번호를 조작하기 위한 일련의 데이터 유형과 명령도 포함되어 있습니다.또한 이 데이터는 2개의 16비트 레지스터 또는 메모리 위치에 의해 표시되며, 두 번째 숫자는 문자열 대소문자와 동일한 A입니다.첫 번째 단어에는 데이터의 문자열 표현(패킹 완료 및 언팩 완료 숫자, 부호 처리, 문자열 길이 등)이 4개 있습니다.DEC는 언팩 완료 데이터를 바이트당 1자리씩 "숫자 문자열"이라고 부릅니다.바이트당 BCD 자리수가 2자리인 팩된 데이터를 사용하여 16단어 문자열은 최대 32자리까지의 BDC 번호를 보유했습니다.설명에는 포장 및 포장 해제된 데이터에 대한 ADDP/ADDN, SUBP/SUBN, ASHP/ASHN(산술 시프트) 및 CMPP/CMPN(비교)이 포함되어 있습니다.패킹된 데이터만 사용할 수 있습니다.MULP 및 DIVP입니다.또한 BCD 번호를 패킹된 형식과 언팩된 형식 간에 변환하는 명령 집합과 바이너리 [5]값 간에 변환하는 명령 집합도 포함되어 있습니다.

내부 레지스터와의 사이에서 문자열 및 BCD 데이터를 로드하기 위해 명령의 최종 세트가 사용되며,[5] 코드의 비트 피들링이 필요하지 않습니다.

프로세서 상태 워드(PSW)에 대한 액세스

PSW는 메모리 주소 177776에 매핑되어 있기 때문에 모든 데이터와 같이 처리할 수 있습니다.초기 PDP-11을 제외한 모든 명령어는 프로그램에 레지스터에 대한 직접 액세스를 제공합니다.

  • SPL(우선순위 레벨 설정)
  • MTPS(프로세서 상태로 이동)
  • MFPS(프로세서 상태에서 이동)

다른 메모리 공간에 대한 액세스

여러 명령 공간과 데이터 공간을 제공하는 PDP-11에서는 일련의 비직교 이동 명령이 다른 공간에 대한 액세스를 제공합니다.예를 들어 런타임서비스 콜을 처리하는 운영체제시스템 내의 루틴은 다음 명령을 사용하여 발신자와 정보를 교환합니다.

  • MTPD(이전 데이터 공간으로 이동)
  • MTPI(이전 명령 공간으로 이동)
  • MFPD(이전 데이터 공간에서 이동)
  • MFPI(이전 명령 공간에서 이동)

스피드

PDP-11 프로세서 속도는 모델, 메모리 구성, 동작 코드 및 주소 지정 모드에 따라 달라집니다.명령 타이밍에는 명령 자체의 실행/페치 및 소스 및 대상 액세스 시간이 최대 3개의 구성요소가 있습니다.마지막 2개의 컴포넌트는 어드레싱 모드에 따라 달라집니다.예를 들어, PDP-11/70(circa 1975)에서는 ADD x(Rm),y(Rn) 형식의 명령어는 1.35마이크로초의 fetch/execute 시간과 소스 및 수신처 시간이 각각 0.6마이크로초의 합계 명령 시간이 2.55마이크로초였습니다.주소 지정된 메모리가 캐시에 없는 경우 1.02마이크로초가 추가됩니다.ADD Rm, Rn은 캐시에서 0.3마이크로초 이내에 실행할 수 있습니다.부동소수점은 CPU와 부동소수점 프로세서 사이에 약간의 오버랩이 있기 때문에 더욱 복잡하지만 일반적으로 부동소수는 상당히 느립니다.단정도 부동 추가 명령의 범위는 2.4~5.5마이크로초이며 오퍼랜드를 [6]취득하는 데 걸리는 시간도 포함됩니다.

인터럽트

PDP-11은 Processor Status Word(PSW; 프로세서 상태 워드)의 3비트로 지정된0 ~ 7의 priority 레벨로 동작하며 하이엔드 모델은 PSW의 2비트에 따라 커널(특권), 사용자(어플리케이션), 슈퍼바이저 모드 중에서 선택할 수 있습니다.

인터럽트를 요구하기 위해 버스 디바이스는 프로세서가 응답할 때까지 4개의 일반적인 버스 회선(BR4~BR7) 중 하나를 확인합니다.수치가 클수록 프로세서가 신속하게 응답하지 않으면 데이터가 손실되거나 원하는 섹터가 회전하여 읽기/쓰기 헤드와 접촉하지 않을 수 있습니다.프린터의 다른 캐릭터에 대한 대응은 최저 우선도(BR4)입니다.이것은, 프린터는 무기한으로 준비 상태를 유지할 수 있기 때문입니다.프로세서가 레벨 5로 동작하고 있는 경우는, BR6 와 BR7 이 순서대로 동작합니다.프로세서가 3 이하에서 동작하고 있는 경우는, 인터럽트를 허가합니다.7 의 경우는 아무것도 허가하지 않습니다.허가되지 않은 버스 요청은 손실되지 않고 지연될 뿐입니다.서비스가 필요한 디바이스는 버스 요구를 계속 아사트합니다.

인터럽트가 프로세서의 priority 레벨을 초과할 때마다 프로세서는 대응하는 버스 인가 BG4~BG7을 단언합니다.버스 그랜트 회선은 일반적인 회선이 아니라 데이지 체인입니다.각 게이트의 입력은 체인에 있는 이전 게이트의 출력입니다.각 버스 장치에는 게이트가 있고 프로세서에 물리적으로 가까운 장치는 데이지 체인 내에 있다.디바이스가 요구를 했을 경우, 버스 그랜트 입력을 검지하면, 그 디바이스가 버스를 제어하고 있다고 판단해, 버스상의 다음의 디바이스에 인가 신호를 건네주지 않습니다.디바이스가 요구를 하지 않으면 버스 그랜트 입력이 버스 그랜트 출력으로 전파되어 다음으로 가까운 디바이스가 응답할 기회가 주어집니다(디바이스가 프로세서보드에 인접 슬롯을 점유하지 않는 경우 빈 슬롯에 삽입된 "그랜트 연속성 카드"가 버스 그랜트 회선을 전파합니다).

버스 제어가 완료되면 디바이스는 버스 요구를 드롭하고 버스 상에 2워드 벡터의 메모리 주소를 배치합니다.프로세서는 프로그램카운터(PC)와 PSW를 저장하고 커널모드로 들어가 지정된 벡터로부터 새로운 값을 로드합니다.BR6에 있는 디바이스의 경우 일반적으로 벡터 내의 새로운 PSW는 새로운 프로세서priority로 6을 지정하기 때문에 프로세서는 서비스 루틴 중에 보다 긴급한 요구(BR7)를 수용하지만 우선순위가 같거나 낮은 요구는 연기합니다.새로운 PC에서는 프로세서가 인터럽트 디바이스의 서비스 루틴으로 넘어갑니다.이 루틴은 적어도 인터럽트의 원인이 된 조건을 제거하면서 장치를 작동시킵니다.이 루틴은 프로세서가 인터럽트를 허가하기 직전에 PC와 PSW를 복원하는 RTI(ReTurn from Interrupt) 명령으로 종료됩니다.

버스 요구가 잘못되어 버스 인가에 응답하는 디바이스가 없는 경우 프로세서는 타임아웃을 하고 불량 하드웨어를 나타내는 트랩을 실행합니다.

매크로-11 어셈블리 언어

PDP-11에 사용되는 천공 테이프

MACRO-11은 PDP-11의 어셈블리 언어입니다.매크로 기능이 없는 PDP-11 어셈블리 언어의 이전 버전인 PAL-11(Program Assembler Loader)의 후속 버전입니다.매크로-11은 모든 DEC PDP-11 운영시스템에서 지원됩니다.PDP-11 Unix 시스템에는 MACRO-11과 구조적으로 유사하지만 구문이 다르고 기능이 적은 어셈블러(as)도 포함되어 있습니다.

메모들

  1. ^ 1바이트 마스크는 각각 32자로 구성된 8개의 서브셋이 있음을 의미하지만, 문서에는 명확하게 기술되어 있지 않습니다.

레퍼런스

  1. ^ "PDP-11 Processor Handbook" (PDF). DEC. Retrieved 13 November 2015.
  2. ^ pdp11/05/10/35/40, 7장
  3. ^ pdp11/04/34a/44/60/70, 421페이지.
  4. ^ Dotzel, Günter (1986). "On LSI-11, RT-11, Megabytes of Memory and Modula-2/VRS" (PDF).
  5. ^ a b c d e f "Commercial Instruction Set". PDP processor handbook (PDF). DEC. 1979.
  6. ^ DEC PDP-11/70 프로세서 핸드북, 1975, 부록 C, 명령 타이밍

추가 정보

  • Eckhouse, jr., Richard H.; Morris, L. Robert (1979). Microcomputer Systems Organization, Programming and Applications (PDP-11). Englewood Cliffs, New Jersey: Prentice-Hall. ISBN 0-13-583914-9.
  • 마이클 싱어, PDP-11입니다 어셈블러 언어 프로그래밍머신 구성(John Wiley & Sons, 뉴욕): 1980.
  • pdp11 processor handbook - pdp11/05/10/35/40. Digital Equipment Corporation. 1973.
  • pdp11 processor handbook - pdp11/04/34a/44/60/70. Digital Equipment Corporation. 1979.

외부 링크