인천대학교 전자계산학과 멀티미디어와 가상현실 연구실 Marvel Lab. 성 미 영 시스템 프로그래밍 인천대학교 전자계산학과 멀티미디어와 가상현실 연구실 Marvel Lab. 성 미 영 시스템 프로그래밍
시스템 프로그래밍을 배우는 목적 시스템 소프트웨어를 잘 이해함으로써 컴퓨터가 실제로 어떻게 동작하는지를 더 잘 이해하게 하고자 함이다. By understanding the system software you will gain a deeper understanding of how computers actually work. (교재 p2) 시스템 소프트웨어 컴퓨터의 동작을 지원하는 다양한 프로그램들 A variety of programs that support the operation of a computer 단순 명령어 컴퓨터 (SIC; Simplified Instructional Computer) 를 통해 개념을 이해함 가상적인 기계 일반적 기능 및 핵심 개념 포함 마이크로 컴퓨터와 비슷 시스템 프로그래밍
1.2 시스템 소프트웨어와 기계구조 (System Software and Machine Architecture) 시스템 소프트웨어 .vs. 기계 구조 시스템 프로그램 .vs. 응용 프로그램 기계에 종속적인 편 기계에 독립적인 편 시스템 프로그램이 기계에 종속적인 예 assembler, compiler: 기계 언어 코드 생성 기계어 형식 고려해야 주소지정 방식 고려해야 레지스터 개수 고려해야 기계어 종류 고려해야 OS: 컴퓨터 관리위해 모든 자원을 고려해야 시스템 프로그램이 기계에 독립적인 예 assembler들의 논리와 설계가 유사함 compiler의 최적화(optimization) 기술이 기계에 독립적임 어셈블된 프로그램들의 linking 처리가 기계에 독립적임 단순 명령어 컴퓨터 (SIC; Simplified Instructional Computer) 를 통해 개념을 이해함 가상적인 컴퓨터 (hypothetical computer) 일반적 기능 및 핵심 개념 포함 마이크로 컴퓨터와 비슷 SIC로 배우는 장점 특이한 복잡성 없어 간단함 모두 모르고 시작하므로 출발이 같아 공평함 교훈적임 SIC support software 이용 가능 anonymous ftp from rohan.edsu.edu faculty/beck/SystemSoftware.tar 시스템 프로그래밍
1.3 단순 명령어 컴퓨터(SIC) Simplified Instructional Computer SIC/XE(extra equipment, extra expensive) : 단순 명령어 컴퓨터 확장 모델 SIC : 단순 명령어 컴퓨터 표준 모델 ...상향 호환성(upward compatibility) 유지 SIC 기계구조 메모리: 1 워드: 3 바이트(= 8 비트): 최하위 바이트가 주소 크기: 32,768 (215) 바이트 레지스터: 24 비트 5개 0 - A(Accumulator): 누산기 1 - X(Index register): 인덱스 레지스터 2 - L (Linkage register): 연결 레지스터 8 - PC(Program counter): 프로그램 계수기 9 - SW(Status word): 상태 워드 데이터 형식: 정수: 24 비트 2 진수 음수: 2의 보수(자료), 문자: 8비트 ASCII 코드(부록) 명령어 형식: 24 비트 opcode(8): 명령어 x(1): 비트 인덱스 주소지정 표시 address(15): 비트 주소 주소지정 방식: x = 0 : 직접 주소지정, TA(Target Address) = 주소 x = 1 : 인덱스 주소지정, TA = 주소 + (X) 명령어 집합 레지스터로부터 읽고 쓰는 명령들 LDA, LDX, STA, STX 정수 연산 명령어들 ADD, SUB, MUL, DIV 비교 명령어 COMP: CC(Conditional Code)에 결과 (<, =, >) 기록 조건부 점프 명령어들 JLT, JEQ, JGT 입력과 출력 1 바이트씩 레지스터 A로/A로부터 전송 8 비트 코드로 장치 구분 TD(Test Device) : <(ready), =(busy) 매 바이트마다 TD 로 장치의 ready 상태 기다린 후 RD(Read Data), WD(Write Data) 시스템 프로그래밍
SCI/XE 기계 구조 명령어 형식 메모리: 레지스터: 24 비트 5개 주소지정 방식 데이터 형식: 시스템 프로그래밍 1 워드: 3 바이트(= 8 비트): 최하위 바이트가 주소 크기: 1M (220) 바이트 레지스터: 24 비트 5개 0 - A(Accumulator): 누산기 1 - X(Index register): 인덱스 레지스터 2 - L (Linkage register): 연결 레지스터 8 - PC(Program counter): 프로그램 계수기 9 - SW(Status word): 상태 워드 3 - B(Base register): 기준 레지스터, 주소지정에 사용 4 - S(General working register): 범용 레지스터 5 - T(General working register): 범용 레지스터 6 - F(Floating-point accumulator): 부동소수점 누산기 (48비트) 데이터 형식: 정수: 24 비트 2 진수 음수: 2의 보수(자료), 문자: 8비트 ASCII 코드(부록) 부동소수점: 1 비트 부호 + 11 비트 지수 + 36비트 소수 (0=양, 1=음) (0-2047 무부호 2진수) (정규화) (0 = 1024) 명령어 형식 형식 1: 1 byte: op(8) : 메모리 참조 않음 형식 2: 2 bytes: op(8), r1(4), r2(4) : 메모리 참조 않음 형식 3: 3 bytes: op(6), n(1), i(1), x(1), b(1), p(1), e(1), disp(12) indirect immediate = 0 형식 4: 4 bytes: op(6), n(1), i(1), x(1), b(1), p(1), e(1), address(20) indexed base pc = 1 extended 주소지정 방식 기준 상대 방식(Base relative mode): b= 1, p=0, TA=(B) + disp(0에서 4096: 12비트 무부호 정수) 프로그램 계수기 상대 방식(Pogram-counter relative mode) disp: b=0, p=1, TA = (PC) + disp(-2048에서 2047: 12비트 부호정수) 직접주소 방식(Direct addressing mode): b=p=0 형식 3 명령(e=0): b=p=0, disp가 목표주소 형식 4 명령(e=1): b=p=0, address가 목표주소 인덱스 주소지정 방식(Indexed addressing mode) x=1이면 레지스터 X의 값이 더해짐 즉시 주소지정 방식(Immediate addressing mode): i=1, n=0 목표주소 자체가 피연산자 값 간접 주소지정 방식(Indirect addressing mode): i=0, n=1 목표주소에 있는 값이 피연산자 값의 주소 단순 주소지정 방식(Simple addressing mode): i=n=0(SIC),1(XE) 목표주소는 피연산자의 위치(location), 상대 방식 가능 인덱스는 즉시나 간접 주소 지정 방식과는 함께 쓸 수 없음 n=i=0 이면 b, p, e 는 주소 필드 부분으로 인식됨(상향 호환성) 시스템 프로그래밍
명령어 집합 입력과 출력 SCI 프로그램 예제 시스템 프로그래밍 레지스터로부터 읽고 쓰는 명령들 정수 연산 명령어들 LDA, LDX, STA, STX 정수 연산 명령어들 ADD, SUB, MUL, DIV 비교 명령어 COMP: CC(Conditional Code)에 결과 (<, =, >) 기록 조건부 점프 명령어들 JLT, JEQ, JGT 부동 소수점수 연산 명령어들 ADDF, SUBF, MULF, DIVF 피연산자 가져오는 명령어 RMO(Register Move) 감독자 호출 명령어 SVC(Supervisor Call) 입력과 출력 1 바이트씩 레지스터 A로/A로부터 전송 8 비트 코드로 장치 구분 TD(Test Device) : <(ready), =(busy) 매 바이트마다 TD 로 장치의 ready 상태 기다린 후 RD(Read Data), WD(Write Data) CPU 간섭 없이 입출력 채널을 동작시키는 명령어들 SIO(Start IO), TIO(Test IO), HIO(Halt IO) SCI 프로그램 예제 시스템 프로그래밍
1.4 전통적(CISC) 기계(Traditional machines) CISC(Complex Instruction Set Computers) 복잡한 명령어 세트 다양한 명령어 형식/길이, 주소지정 형식 (예) VAX 펜티엄 프로(Pentium Pro) VAX 구조 메모리 8 비트 바이트로 구성된 2 바이트 워드(word) 4 바이트 롱워드(longword) 8 바이트 쿼드워드(quadword) 16 바이트 옥타워드(octaword) 총 223 바이트의 실제 메모리 총 232 바이트의 가상 메모리 시스템 공간(system space) 반: OS 등, 공유됨 프로세스 공간(process space) 반: 스택 등, 각 프로그램별로 레지스터 32 비트 범용 레지스터들(general-purpose registers) 16개(R0~R15) R15 = PC(Program Counter): 다음에 수행할 명령의 주소 R14 = SP(Stack Pointer): 스택의 현재 Top 주소 R13=FP(Frame Pointer): 프로시주어 호출시 복귀주소, 전 프레임 주소, 지역 변수 등 저장하는 Stack Frame 자료구조의 주소 R12=AP(Argument Pointer): 프로시주어 호출시 필요한 인수 리스트주소 R6~R11: 프로그램 범용 R0~R5: 프로그램 및 기계어 범용 프로세스 상태 롱워드: PSL(process status longword): CC(condition code), PDP-11 호환성 모드의 사용 여부 flag 등 포함 제어 레지스터들(control registers): OS가 이용 시스템 프로그래밍
명령어 형식 데이터 형식 주소지정 방식 1 또는 2 바이트 명령 코드(opcode) 최대 6개 피연산자 지정자(operand specifier) 주소지정 방식 레지스터 방식(register mode): 피연산자 자체가 레지스터에 있음 레지스터 지연 방식(register deferred mode): 피연산자의 주소가 레지스터에 의해 지정됨 레지스터 내용의 자동 증가(autoincrement) 레지스터 내용의 자동 감소(autodecrement) 기준 상대(base relative) 주소 방식: 다양한 변위(displacement) 길이를 가짐 프로그램 계수기 상대(PC relative) 주소 방식: 다양한 변위(displacement) 길이를 가짐 인덱스(index) 주소지정 방식 간접(indirect) 주소지정 방식: 지연 방식(deferred mode) 데이터 형식 정수: 2진수(바이트, 워드, 롱워드, 쿼드워드, 옥타워드) 음수: 2의 보수 문자: 8 비트 ASCII 부동소수: 4~16 바이트 범위의 4가지 팩 10진수(packed decimal): 4 비트로 10진수 표현 수(numeric): 8 비트로 10진수 표현 후미수(trailing numeric): 부호가 마지막 바이트에 선행수(leading separate numeric): 부호가 선행 바이트에 큐: H/W로 지원(하나의 기계어 명령으로 삽입/삭제) 가변길이 비트열: H/W로 지원 (하나의 기계어 명령으로 문자열 조작) 시스템 프로그래밍
입력과 출력 명령어 집합 입출력 장치 제어기(I/O device controllers)에 의해 수행됨 제어/상태 레지스터(control/status registers) 데이터 레지스터(data registers) 입출력 공간(I/O space): 장치 제어기의 레지스터들에 매핑된 주소 영역 입출력 공간 안의 레지스터들은 실제 메모리 위치인 것처럼 접근됨 입출력 공간과 장치 제어기의 실제 레지스터 사이의 연결은 메모리 관리 루틴에 의해 조작됨 명령어 집합 명령 연상어(mnemonic) 구성 접두부(prefix): 연상 종류 접미부(suffix): 데이터 형식 수정자(modifier): 피연산자 개수 (예) ADDW2: 길이가 워드인 두 피연산자 덧셈 MULL3: 롱워드 피연산자 곱셈 CVTWL: 워드에서 롱워드로 전환 피연산자 위치 레지스터에 메모리에 명령어 자체에(즉시 주소지정) 여러 복잡한 명령어들을 H/W (단일 기계어 명령어)로 지원 여러 개의 레지스터들을 적재/저장 큐에 삽입/삭제 가변 길이 비트열 조작 프로시주어 호출 및 귀환 시스템 프로그래밍
펜티엄 프로(Pentium Pro) 구조 메모리 데이터 형식 레지스터 특수 레지스터들 바이트 주소 세그먼트들로 구성 2 바이트 워드(word) 4 바이트 더블워드(double word) 세그먼트들로 구성 다른 크기 다른 용도 페이지화된 세그먼테이션(paged segmentation) 가상 기억장치 논리주소---> 물리적 바이트 주소 MMU(Memeory Management Unit) 레지스터 32 비트 범용 레지스터 8개: 모든 386 이상 EAX, EBX, ECX, EDX: 데이터 조작 ESI, EDI, EBP, ESP: 주소 데이터 저장 특수 레지스터들 EIP: 32 비트 다음 수행 명령어 주소(=program counter) FLAGS: 32 비트 flags(프로세스 상태 및 조건 코드) 16 비트 세그먼트 레지스터 6개 CS(current segment): 현재 사용 중인 세그먼트 주소 SS(current stack segment): 현재 사용 중인 스택 세그먼트 주소 DS, ES, FS, GS: 데이터 세그먼트의 주소 FPU(floating-point unit): 부동 소수점 계산 기타 OS가 사용하는 레지스터들 MMU가 주소 변환에 사용 위해 프로세스 제어 위해 디버깅 위해 데이터 형식 정수: 8, 16, 32 비트 이진수(부호 및 무부호) 음수: 2의 보수(2’s complement) little-endian: 수의 최소 단위 부분(least significant part)이 작은 값의 주소( lowest numbered address)에 부동소수 32비트 single-precision: 24 비트 가수, 7 비트 지수, 1 비트 부호 64 비트 double-precision: 53 비트 가수, 10 비트 지수, 1 비트 부호 80 비트 extended precision: 64 비트 가수, 15 비트 지수, 1 비트 부호 BCD(binary coded decimal) unpacked: 8 비트가 한 10진수(낮은 쪽 4 비트에) packed: 4 비트가 한 10진수 시스템 프로그래밍
명령어 형식: 다양(1 바이트~10 바이트 이상) 주소지정 방식 명령어 집합 입출력 접두부(prefix): 명령어 종류, 반복 회수 등, optional 명령 코드(opcode): 1 또는 2 바이트, mandatory 데이터 바이트 수: 피연산자 및 주소지정 방식 등, optional 주소지정 방식 즉시 주소지정 방식(immediate mode) 레지스터 주소지정 방식(register mode) 일반적인 피연산자 주소지정 방식: TA = (base register) + (index register)*(scale factor) + displacement base register: 범용 레지스터들 index register: ESP 제외한 범용 레지스터들 scale factor: 1, 2, 4, 8 displacement: 8, 16, 32 비트 값 위의 값들은 피연산자 값으로 지정됨 위의 항목들 삭제 가능---> 8개 조합 가능 직접 주소지정 방식(direct mode): 절대 주소(absolute address)로 지정 EIP 상대 주소지정 방식(relative mode) 명령어 집합 400여 개 기계어 명령어 세트 레지스터-레지스터 연산 명령들 레지스터-메모리 연산 명령들 메모리-메모리 연산 명령 약간 즉시 피연산자 가진 명령들 산술 연산 명령: 1, 2, 4 바이트 길이 피연사자 이용 문자열 명령: 반복 접두부 가짐, 다양한 길이의 바이트, 워드, 더블 워드 단위의 문자열 다룸 논리 연산 명령들 비트 연산 명령들 프로세스 제어 명령들 메모리 관리 명령들 특수 명령들: 고급 프로그래밍 언어위한 명령들 프로시주어 진입/진출 배열의 첨자 범위 검사 입출력 바이트, 워드, 더블워드 단위의 입력 명령: I/O 포트 ---> EAX 출력 명령: EAX ---> I/O 포트 시스템 프로그래밍
1.5 RISC 기계 UltraSPARC(Scalable Processor ARChitecture) 구조 UltraSPARC 프로세서: Sun Microsystems가 1995 개발한 최신 프로세서 전신들: SPARC, SuperSPARC(상향 호환성 유지) 메모리 8 비트 바이트로 구성된 2 바이트 반워드(half word): 2의 배수 주소에 4 바이트 워드(word): 4의 배수 주소에 8 바이트(double word): 8의 배수 주소에 가상 기억 장치: 264 바이트 가변 길이의 페이지(page) 들로 구성 UltraSPARC MMU 가 논리 주소를 물리 주소로 변환 레지스터 레지스터 파일(register file): 100 여 개의 범용 레지스터들 포함 각 프로시주어는 단지 32개 레지스터들; r0~r31만 접근 가능 r0~r7는 전역(golobal), r0는 항상 0 나머지 24개는 레지스터 파일에 대한 하나의 window임 window들은 겹칠 수 있음 (예) (호출 프로그램의 r8~R15) =(호출된 프로그램의 R24~R31) window overflow 인터럽트 가능 RISC(Reduced Instruction Set Computers) 개념 단순한 설계로 빠르고 저렴한 프로세서 개발 높은 신뢰성(reliability) 빠른 명령어 실행 시간 일반적 특징 고정 길이의 표준 명령어 단일 사이클 실행 명령어 load/store 만으로 메모리 접근 load/store 이외의 명령어들은 모두 레지스터-레지스터 연산 명령어 비교적 많은 범용 레지스터들 적은 개수의 명령어 세트, 명령어 형식, 주소지정 방식 (예) UltraSPARC PowerPC Cray T3E 시스템 프로그래밍
명령어 형식 주소지정 방식 데이터 형식 32 비트, 64 비트 범용 레지스터(ultra 등 최신 버전에만) 물리적으로 독립된 전역 레지스터(global registers) 세트들: 응용, H/W, OS가 이용 64 비트 FPU(floating-point unit) 파일: 부동소수점 연산 PC(program counter) CC(condition code) 레지스터들 제어 레지스터들(control registers) 데이터 형식 정수: 8, 16, 32, 64 비트 이진수(부호 및 무부호) 음수: 2의 보수 big-endian: 수의 큰 단위 부분(least significant part)이 작은 값의 주소( lowest numbered address)에 부동소수: 32비트 single-precision: 23 비트 가수, 8 비트 지수, 1 비트 부호 64 비트 double precision: 52 비트 가수, 11 비트 지수, 1 비트 부호 128 비트 quad precision:63 비트 가수, 15 비트 지수, 2 비트 부호 문자: 8 비트 ASCII 명령어 형식 32 비트 고정 형식 2 비트: 형식 코드 형식 1: call 명령어 형식 2: branch 명령어 형식 3: load/store 명령어 및 3-피연산자 산술 연산 인출(fetching)과 해독(decoding)이 빠름 주소지정 방식 즉시 방식(immediate mode) 레지스터 직접 방식(register direct mode) 메모리 참조 방식 PC 상대 방식(PC-relative): branch 명령만 레지스터 간접 변위 방식(register relative with displacement) 레지스터 간접 인덱스 방식(register indirect indexed) 비교적 적은 수의 주소지정 방식 시스템 프로그래밍
명령어 집합 입출력 100 이하의 기계어 명령어 세트 입출력 장치가 메모리를 통해 구현됨 load/store 만이 메모리 참조 명령어 나머지는 모두 레지스터-레지스터 명령어 파이프라이닝(pipelining): 한 명령어가 실행(being executed)되는 동안 다음명령어를 메모리로부터 인출과 해독 빠르나 branch 명령일 때 미리 인출과 해독된 것 소용 없음 지연 분기(delayed branch): branch 명령 다음 명령을 먼저 실행, 이 규칙에 따라 프로그램 되어야 함 (예) SUB %L0, 11, %L1 BA NEXT MOV %L1, %03 (delay slot of the branch) 특수 명령어들: OS나 optimizing compiler 지원 high-bandwidth block load/store 명령어 프로세서들의 통신을 위한 특수 atomic 명령어들 프로그램 실행을 최적화하는 conditional move 명령어들 입출력 입출력 장치가 메모리를 통해 구현됨 메모리 영역이 장치의 레지스터들로 대치됨 각 입출력 장치는 고유 주소 가짐memory-mapped 입출력 위한 특수 명령어 필요없이 보통의 명령어 세트로 입출력 가능 시스템 프로그래밍
Power PC 구조 메모리 데이터 형식 명령어 형식 레지스터 주소지정 방식 Performance Optimization With Enhanced RISC IBM + Apple + Motorola ->Power PC 601, 603, 604 메모리 8 비트 바이트로 구성된 2 바이트 반워드(half word) 4 바이트 워드(fullword) 8 바이트 더블워드(doubleword) 16 바이트 쿼드워드(quadword) 피연산자가 자신의 길이의 배수에 배치되었을(aligned) 때 명령어들이 더 효율적으로 연산됨 64비트 가상기억장치(264) 256M 바이트 고정길이 세그먼트들로 구성 (4096 바이트 페이지들로 나뉨) 레지스터 32 비트 범용 레지스터(GPR0~GPR31) FPU(floating-point unit): 64 비트 부동소수 레지스터 32개 + 상태 레지스터 + 제어레지스터 32 비트 상태 레지스터: 4 비트 서브 필드(CR0~CR7)로 나뉘며 각 필드는 독립적으로 설정되고 검사됨 Branch 명령에 이용되는 레지스터들 LR(Link Register) CR(Count Register) 기계 종속적인 레지스터들 MSR(Machine Status Register) 제어 레지스터(Control Register) 상태 레지스터(Status Register) 데이터 형식 정수 8,16, 32, 64 비트 이진수(부호 및 무부호) 음수는 2의 보수 big-endian(defalut): 최대유효숫자가 낮은 주소에 little-endian 가능: 제어 레지스터의 한 비트 설정으로 부동소수 32 비트(23 비트 가수, 8 비트 지수, 1 비트 부호) 64 비트(52 비트 가수, 11 비트 지수, 1 비트 부호) 명령어 형식 32 비트 고정 길이 7개 기본 형식(SPARC 보다 다양) 반드시 워드 단위로 배치되어야(aligned) 함 6 비트 opcode가 기본, 부가적인 확장형 명령 코드(extended opcode) 필드 가진 명령어들로 있음 고정길이 명령어라 해독(decoding) 빠르고 간단 주소지정 방식 즉시 주소지정 방식: 피연산자가 명령어에 레지스터 주소지정 방식: 피연산자 레지스터에 메모리 접근 명령: load/store, branch 만 레지스터 간접(Register indirect): TA=(register) 인덱스 있는 레지스터 간접(Register indirect with index): TA=(register-1) + (register-2) 즉시 인덱스 있는 레지스터 간접(Register indirect with immediate index): TA=(register) + displacement{16비트, 부호} 시스템 프로그래밍
Cray T3E 구조 1995, MPP(Massively Parallel Processing) 16~2048 PE(Processing Elements)들의 망 전송 경로 지원 동기화 위한 제어 기능 제공 각 차원에 따라 원형으로 연결됨(p37,Fig1.8) 각 PE 구성 요소 DEC Alpha EV5 RISC microprocessor (model 21164) local memory Cray 가 개발한 performance-accelerating control logic 메모리 각 PE: 64M~2G local memory physically distributed, logically shared PE의 microprocessor 간섭 없이 다른 PE의 local memory 접근 가능 8비트 바이트로 구성된 2 바이트 워드( word) 4 바이트 롱워드(longword) 8 바이트 쿼드워드(quadword) Alpha 명령어는 피연산자가 명령어의 배수 주소에 배치(aligned)되면 효율적 64 비트 가상 주소: 264 가상기억 장치 Branch 명령 절대(Absolute): TA=절대 주소(명령어 안에 정의됨) 상대(Relative): TA= 현재 명령의 주소 + 변위(명령어 안에 정의됨) 연결 레지스터(Link Register): TA=LR 계수 레지스터(Count Register): TA=CR 명령어 집합 약 200 여종 load/store 명령들이 index register 자동 수정 세 개의 피연산자를 처리하는 부동소수 덧셈, 곱셈 가능 Power PC는 강력한 명령어들을 이용하여 같은 작업을 적은 개수의 명령어들로 처리하고자 함 분기 예측(branch prediction) 을 가진 파이프라이닝(pipelining): 지연 분기(delayed branch) 필요없어 SPARC 보다 세련(sophisticated)됨 입출력 direct store segment: 가상기억장치의 세그먼트들이 외부주소공간(external address space, 주로 I/O 버스)로 mapping됨(=입출력) normal segment: 보통의 가상기억장치 접근 시스템 프로그래밍
레지스터 데이터 형식 명령어 형식 주소지정 방식 명령어 집합 입출력 64 비트 범용 레지스터 32개(R0~R31) 64 비트 부동소수 레지스터 32개(F0~F31) 64 비트 PC(프로그램 계수기) 상태 레지스터 제어 레지스터 데이터 형식 정수 롱워드, 쿼드워드 이진수 음수는 2의 보수 little-endian 부동소수 VAX 호환 형식 3개 나머지 IEEE 표준 형식 문자: 8 비트 ASCII, 그러나 롱워드, 쿼드워드 단위로만 레지스터-메모리 전송 (각 글자마다 따로 처리해야 할 경우에는 한 롱워드에 한 글자 저장) 명령어 형식 32 비트 명령어 형식 5 가지 6 비트 opcode + 추가 “function” 필드 주소지정 방식 즉시 레지스터 직접 메모리 접근 명령: load/store, branch 만 PC-상대(PC-relative): TA=(PC)+displacement{23bits,signed} 변위를 가지는 레지스터 간접(Register indirect with displacement): TA=(register)+displacement{16bites,signed} 명령어 집합 약 130 기계어 명령들 모든 메모리 접근은 롱워드 단위로 수행하게 하여(shift and mask 연산 필요 없음) 가능한 한 빠르게 명령어들을 처리할 수 있도록 설계됨 입출력 다중 포트(multiple ports)를 통해 하나 이상의 I/O 채널로 입출력 채널들은 PE들의 망에 통합되어 연결됨 PE 8개 마다 하나의 I/O 채널 구성 각 I/O 채널은 모든 PE로부터 접근 가능 시스템 프로그래밍