인천대학교 전자계산학과 멀티미디어와 가상현실 연구실 Marvel Lab. 성 미 영

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1 Prof. Young Jin Nam, Daegu University 컴퓨터 구조 (Computer Architecture) 명령어 세트 : 특성과 기능 남영진
문자코드 1 박 2 일 (4 조 ) 이경도 이준집 이수연 엄태규. 문자코드란 ? 문자나 기호를 컴퓨터로 다루기 위하여, 문자나 기호 하나하나에 할당 시키는 고유의 숫자를 말하는 것이다.
컴퓨터와 인터넷.
3. 명령어 집합 구조 순천향대학교 정보기술공학부 이상정.
제8장. RISC 및 슈퍼스칼라 프로세서 8.1 RISC의 출현 동기 8.2 RISC의 발전 경위
2.1 CPU의 기본 구조 2.2 명령어 실행 2.3 명령어 파이프라이닝 2.4 명령어 세트
연결리스트(linked list).
제7강 학습 내용 주소지정 방식의 예 값 즉시 지정 방식과 실행 예 레지스터 직접지정 방식 메모리 직접지정 방식과 실행 예
Lecture Notes in Introduction to Computers
12장. 제어 장치 다루는 내용 CPU속의 제어장치 마이크로 연산 제어장치의 동작.
어셈블리 문법 보강 4월 10일.
제 3장 컴퓨터 시스템의 구조.
System Programming 제1장 배경지식 시스템 프로그래밍.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Lecture #4 제3장. 컴퓨터 산술과 논리 연산.
제10강 중앙처리장치 1.
2장. 데이터의 표현 Lecture #2.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
Chapter 06 명령어와 번지지정 방식.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Error Detection and Correction
8086 프로세서의 구조 및 동작 방식 시스템 프로그래밍 - Lecture #2 신라대학교 컴퓨터공학과 시스템 프로그래밍.
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
타이머카운터 사용법 휴먼네트웍스 기술연구소
제3장 8086 프로세서의 내부구조.
PSW : PROGRAM STATUS WORD
ATmega128 FND 실습 휴먼네트웍스 기술연구소
DK-128 FND 실습 아이티즌 기술연구소 김태성 연구원
11장. 1차원 배열.
Microprocessor I/O Port & CLCD Noh Jin-Seok.
C#.
3장. 데이터의 표현과 컴퓨터 연산 다루는 내용 진법과 진법 변환 연산과 보수 데이터의 표현 산술 연산 논리 연산.
Chap 6.Assembler 유건우.
어셈블리어 (2) 매크로 어셈블리어 시스템 프로그래밍 - Lecture #4
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Computer System Architecture
DK-128 FND 실습 아이티즌 기술연구소
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
DK-128 실습 타이머카운터 사용법 아이티즌 기술연구소
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
2. 컴퓨터 시스템의 동작 명령어 구성 연산 종류와 기능에 따라 오퍼랜드 부분을 다양하게 활용 가능.
제4강 처리장치 1.
ARM Development Suite v1.2
1. 2진 시스템.
ATmega128의 특징 아이티즌 기술연구소
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
Canary value 스택 가드(Stack Guard).
데이터 동적 할당 Collection class.
Lecture #3 제2장 CPU의 구조와 기능(2).
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
DK-128 직렬통신 실습 아이티즌 기술연구소
AT MEGA 128 기초와 응용 I 기본적인 구조.
ARM Development Suite v1.2
컴퓨터구조 연습문제 발표 Chapter 3 - 컴퓨터의 기능 및 상호연결의 최상위 관점
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
TVM ver 최종보고서
발표자 : 이지연 Programming Systems Lab.
3.2 분기 명령어.
제10강 PC정비사 1급(필기) Lee Hoon Copyright(c) 2008 LeeHoon All rights reserved.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
제 4 장 Record.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
Assembly 05 방호남 07 반지훈 09 박상욱.
4-1. 명령어 형식.
Presentation transcript:

인천대학교 전자계산학과 멀티미디어와 가상현실 연구실 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로부터 접근 가능 시스템 프로그래밍