59
제 8 제 . RISC 제 제제제제제 제제제제 8.1 RISC의 의의 의의 8.2 RISC의 의의 의의 8.3 RISC 의의의 의의 의의 8.4 의의의의 의의의 의의 8.5 의의 RISC의의 의의 8.6 의의의의의 의의의의

제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Embed Size (px)

Citation preview

Page 1: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

제 8 장 . RISC 및 슈퍼스칼라 프로세서8.1 RISC의 출현 동기8.2 RISC의 발전 경위8.3 RISC 설계의 기본 원리8.4 레지스터 세트의 설계8.5 상용 RISC들의 구조8.6 슈퍼스칼라 프로세서

Page 2: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-2

CISC / RISC

스텐포드 대학 및 버클리 대학의 연구팀의 용어 정의

CISC (Complex Instruction Set computer) 프로세서

o 복합 명령어세트 컴퓨터

o 복합적인 연산들을 처리하는 명령어들을 가진 기존의

프로세서

RISC (Reduced Instruction Set computer) 프로세서

o 축소 명령어세트 컴퓨터

o CISC 의 한계성을 극복하고자 제안한 새로운 프로세서

구조의 프로세서

o 간략화된 소수의 명령어들만 지원

Page 3: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-3

RISC 프로세서의 출현 동기 CISC 의 문제점

명령어 비트 수가 길어져서 기억장치로부터 읽어오는데 여러 번의 인출 필요

다양한 종류와 길이의 명령어를 해독하기 위한 제어 유니트의 내부 회로

복잡도 증가

명령어 해독 및 실행 시간 증가

해결책을 위한 조사

① 명령어들의 사용 빈도 조사

사용 빈도가 낮은 명령어 제거

사용 빈도가 높은 명령어들을 단순화시키고 실행 과정을 H/W 로

처리함으로써 명령어 실행의 고속화 시도

② 지역 변수 및 프로시듀어 매개변수의 수 조사 ①번의 결과로 확보되는

공간에 내부 레지스터들을 추가하여 주기억장치 액세스 수 감소

Page 4: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-4

일반적인 프로그램들의 특성 프로그램 특성의 분석 결과

Page 5: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-5

일반적인 프로그램들의 특성 ( 계속 ) Assign 문의 항들의 수에 대한 분포 [%]

프로시저 당 지역 변수들의 수에 대한 분포 [%]

프로시저 호출 당 전송되는 매개 변수들의 수에 대한 분포 [%]

Page 6: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-6

RISC 의 기본 설계 개념 각 명령어는 한 사이클 (cycle) 내에 실행되도록 한다 명령어 수를 최소화 한다 (100 개 이내 , 최대 150 개 ) 명령어의 해독은 하드웨어로 처리한다 명령어 해독을 단순화시키기 위하여 명령어 형식을 고정시킨다 주소지정 방식의 종류는 1 개 또는 2 개로 하며 , 최대 4 개까지만 허용한다 연산의 동시성을 높이기 위해 데이터 통로 (data path) 를 파이프라인 구조로 한다 가능한 많은 수의 레지스터들을 가지도록 한다 기억장치 액세스는 간단한 명령어 구조를 가진 LOAD/STORE 명령어에

의해서만 이루어지도록 한다 . 그 이외의 모든 데이터 이동 동작들은 내부 레지스터들 사이에서만 일어나도록 한다

계층 구조의 기억장치를 사용한다

Page 7: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-7

RISC 프로세서의 발전 경위 IBM 801 프로세서 : 1975 년 개발 완료 , 1982 년 공개

평균 명령어 실행시간 = 1.1 사이클

RISC I, II : 1981 년 , Berkeley 대학의 Patterson 교수와

Sequin 교수에 의해 실험적으로 설계

SPUR(Symbolic Processing Using RISCs) 및 SOAR(Small-tal

k On A RISC) 프로세서 개발로 이어짐

Sun SPARC(Scalable Processor ARChitecture) 프로세서로

상용화됨

Page 8: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-8

RISC 프로세서의 발전 경위 MIPS 프로세서 : 1983 년 , 스탠포드 대학의 Hennessy 교수팀에 의해

개발

MIPS-X, MIPS-X-MP 프로세서로 발전

on-chip 명령어 캐쉬 탑재

예측 분기 (squashed branch) 방식 도입

MIPS R2000, R3000, R4000, R10000 프로세서로 상용화됨

Clipper(Fairchild), AM29000 (AMD), MC88000 (Motorola) 등

1980 년대 중반 개발됨

산술 계산 속도를 높이기 위한 특수 기능 블록의 추가

명령어 선인출 (instruction prefetch) 기능 추가

분기 처리를 위한 분기 목표 캐쉬 (branch target cache) 의 구현

가상 기억장치를 지원하는 기억장치 관리 기능의 강화

Page 9: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-9

초기 CISC/RISC 프로세서의 비교

Page 10: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-10

8.3 RISC 설계의 기본 원리1) 복잡한 명령어의 제거 : 복잡하고 긴 시간이 걸리는 연산을 포함하는 명령어

제외 간단한 명령어들을 여러 개 반복 사용

[ 예 ] DIV 명령어 shift, add, sub 명령어들로 대치2) 주기억장치 액세스 명령어의 제한

데이터 연산 명령어 실행에 필요한 데이터는 항상 내부 레지스터에 저장 데이터 연산 명령어의 기억장치 액세스를 허용하지 않음

기억장치 액세스는 지정된 명령어들 (LOAD, STORE) 만 가능[ 이점 ]

o 레지스터 주소지정 방식을 사용하므로 명령어 코드의 비트 수 감소o 유효 주소 (effective address) 계산 시간이 절약

Page 11: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-11

LOAD/STORE 명령어의 종류

Page 12: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-12

RISC 설계의 기본 원리 ( 계속 )

3) 주소지정 방식의 단순화 유효주소 계산 시간을 줄이기 위하여 주소지정 방식의 종류를 최소화[ 예 ] RISC I 의 명령어 형식

o C : 명령어 실행 결과에 따라 조건 코드 세트 여부 지정o DEST : 목적지 레지스터 번호 o SRC : 근원지 레지스터 번호 o I = 1 : OFFSET = 데이터 immediate addressing

modeI = 0 : OFFSET = 레지스터 번호 register addressing mode

Page 13: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-13

RISC 설계의 기본 원리 ( 계속 )

4) 파이프라이닝 명령어 인출 , 해독 , 실행 유니트 , 기억장치 액세스 등을

파이프라인으로 구성[ 문제점 ] LOAD 및 STORE 명령어의 실행 단계가 최소 두 단계 소모

LOAD X, R0 ; M[X] R0 ADD R0, R1 ; R0 R1

Page 14: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-14

RISC 설계의 기본 원리 ( 계속 )[ 해결책 ]

o H/W Interlocking• LOAD/STORE 명령어 실행 후 , 자동적으로 NO-OP 명령어

코드에 해당하는 지연 슬롯 (delay slot) 삽입o 프로그램 실행 순서의 재조정

• 컴파일러가 프로그램 코드를 조사하여 LOAD/STORE 명령어 실행과 무관한 명령어를 재배치하는 방법 불가능 시 지연 슬롯 삽입

• MIPS 의 재구성기 (reorganizer) : 컴파일러의 부담을 줄이기 위하여 명령어의 실행 순서의 재조정을 담당하는 별도의 프로그램

Page 15: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-15

RISC 설계의 기본 원리 ( 계속 )

5) 마이크로프로그램의 제거

명령어들이 단순화됨으로써 , 하드웨어만으로 명령어 해독이

가능해짐

명령어 인출 유니트에 의하여 인출된 명령어 코드의 각 비트들이 그

명령어 실행에 필요한 제어 신호들을 발생시키는데 직접 사용

RISC 프로세서의 고속화

제어 유니트 내의 제어 기억장치 (control memory) 제거 공간

여유

6) 고정된 명령어 형식

하드웨어에 의한 명령어 해독 및 실행을 위해서는 고정된 명령어

형식이 필요

Page 16: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-16

8.4 레지스터 세트의 설계 RISC 설계 원리를 적용한 결과

프로세서 내부에 공간적 여유 발생 내부 기억장치 ( 레지스터 ) 증가 가능

LOAD 나 STORE 명령어의 실행 횟수 감소 데이터 액세스 시간 단축

중첩 레지스터 윈도우 (Overlapping Register Window) 방식 증가된 레지스터들의 효율적 운용 목적 RISC I 프로세서 (SPARC 프로세서 ) 에서 도입

o 520 개의 레지스터 o 공통변수들 및 전출입 매개변수들의 저장에 분할 사용

Page 17: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-17

중첩 레지스터 윈도우 방식 전체 레지스터들을 여러 개의 그룹으로 분할

각 프로시저 (procedure) 가 한 그룹씩 사용

보이는 레지스터들 (visible registers)

현재 수행중인 프로시저가 사용할 수 있는 32 개의 레지스터들

네 개의 소그룹들로 나누어져 사용

o 공통 변수 (global variables) 그룹 : 8 개

o 전입 매개변수 (incoming parameters) 그룹 : 8 개

o 지역 변수 (local variables) 그룹 : 8 개

o 전출 매개변수 (outgoing parameters) 그룹 : 8 개

Page 18: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-18

중첩 레지스터 윈도우 방식 ( 계속 )

한 그룹의 ‘보이는 레지스터들’이 네 개의 소그룹들로

나누어진 모습

Page 19: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-19

중첩 레지스터 윈도우 방식 ( 계속 )

Page 20: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-20

중첩 레지스터 윈도우 방식 ( 계속 )

CWP(Current Window Pointer) 현재 사용중인 윈도우의 첫번째 레지스터를 가리키는 포인터 프로시저가 호출될 때마다 (24 가 아닌 ) 16 씩 증가 Calling procedure 의 전출 매개변수 그룹과 called procedure

의 전입 매개변수 그룹이 중첩 (overlap) Overlapping register window 라고 불림

Page 21: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-21

중첩 레지스터 윈도우 방식 ( 계속 )

[ 예 ] 전체 레지스터 수가 520 개인 경우에 몇 개의

프로시듀어들이 연속적으로 호출될 수 있는가 ?

512 / 16 = 32 개 :: 호출의 깊이 (calling depth)

32 개 이상의 프로시듀어들이 호출되는 경우에는 ?

전체 레지스터 세트가 순환 버퍼 (circular buffer) 를 형성

트랩 (trap) 발생 첫번째 프로시저에 대한 정보는 기억장치 내 스택에

저장

33 번째 프로시저 정보를 첫 번째 레지스터 윈도우에 저장

그 이상의 호출 시 , 위의 과정 반복

프로시저 호출이 연속적으로 32 번 이상 일어나는 프로그램은 거의

없음

Page 22: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-22

8.5 상용 RISC 프로세서들의 구조8.5.1 SPARC 프로세서

1987 년 , Sun Microsystems 사에 의해 개발

공개형 프로세서 구조 (open processor architecture)

SPARC 는 제조가 완료된 프로세서 칩에 대한 명칭이 아니라 ,

새로운 RISC 형 프로세서 구조에 대한 정의

동일한 구조에 대하여 서로 다른 방법 ( 반도체 제조 기술 등 ) 으로 구현 가능

동일한 구조에 대하여 제조 기술에 의한 경쟁을 유도

더 빠른 프로세서 제조 가능 (5 개사 이상의 회사가 제조 참여 )

가상 캐쉬 (virtual cache) 사용 : 캐쉬의 주소가 프로세서에 의해 발생된

가상 주소를 그대로 사용

[ 비교 ] 일반적으로 캐쉬의 주소는 MMU 에 의해 변환된 물리적 주소 사용

Page 23: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-23

SPARC 프로세서의 내부 구성도

Page 24: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-24

SPARC 프로세서 ( 계속 )

32 비트 프로세서 단어의 길이 , 주소의 비트 수 : 32 비트 명령어 길이 , 레지스터 폭 : 32 비트 ( 고정 )

기억장치 단어 정렬방식 : big-endian 방식 [ 비교 ] 80X86 마이크로 프로세서 : little –endian 방식

Page 25: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-25

SPARC 프로세서 ( 계속 )

명령어 실행 과정 : 4 단계 파이프라인

레지스터 세트

중첩 레지스터 윈도우 방식

최대 520 개 = (32x16)+8

공통 레지스터들 중의 첫번째 레지스터인 R0 는 0 으로

고정

Page 26: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-26

SPARC 명령어 세트 산술 및 논리 연산 명령어의 형식

Page 27: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-27

SPARC 명령어 세트 ( 계속 )

SETHI 명령어

즉치 데이터 (immediate data) 필드가 주소로 사용될 경우 ,

길이가 13 비트이므로 전체 기억장치의 주소 공간 액세스 불가능

SETHI 명령어 사용

즉치 데이터 필드의 22 비트를 DEST 필드가 지정하는 공통

레지스터의 상위 22 비트 값으로 세트하고 , 하위 10 비트는 0

으로 세트

이어서 LOAD/STORE 명령어가 실행되면 , 즉치 데이터 비트들이

그 레지스터의 하위 비트들과 더하여져서 32 비트의 유효 주소를

생성

기억장치의 전체 주소 영역 액세스 가능

Page 28: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-28

SPARC 명령어 세트 ( 계속 )

조건 분기 명령어 단어 단위로 지정하므로 , 최대 16M 바이트 영역 내로 분기 가능 A 비트가 1 이면 , 분기가 발생할 경우에만 지연 슬롯 실행

호출 명령어 형식 단어 단위로 지정하므로 , 최대 4G 바이트 영역내의 명령어 호출 가능

Page 29: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-29

SPARC 의 어셈블리 명령어들

Page 30: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-30

SPARC 의 어셈블리 명령어들

Page 31: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-31

SPARC 어셈블리 프로그램 예 : ‘Towers of Hanoi’

Page 32: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-32

SPARC 어셈블리 프로그램 예 : ‘Towers of Hanoi’ ( 계속 )

Page 33: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-33

8.5.2 MIPS 프로세서 SPARC 와 같은 점

단어 길이 = 32 비트 명령어 길이 = 32 비트 기억장치 주소 공간 = 4 Gbytes(232) 명령어 실행 과정의 파이프라이닝 LOAD/STORE, JUMP 및 CALL 명령어에서 지연 슬롯 사용 바이트 단위의 주소 지정 가능 FPU 및 보조 프로세서 지원

Page 34: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-34

MIPS 프로세서 SPARC 와 다른 점

기억장치 저장 방식 : big-endian 과 little-endian 중 하나로 선택 가능

레지스터 수 = 32 개o 프로시저 호출에 걸리는 시간이 SPARC 에 비하여 길다o 문맥 교환 (context switching) 용이o 절약되는 칩상의 공간에 MMU 와 캐쉬 제어기 탑재

조건 코드가 별도로 지정되어 있지 않다 지연 슬롯 삽입 : H/W interlocking 방식 대신 컴파일러를 이용 명령어 파이프라인의 단계 수 = 5

Page 35: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-35

MIPS 의 명령어 파이프라인

Page 36: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-36

MIPS 프로세서의 내부 구조

Page 37: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-37

MIPS 의 레지스터 세트 32 개의 32 비트 레지스터로 구성

중첩 레지스터 윈도우 방식의 단점

문맥 교환시 , 현재 프로세스가 사용 중이던 레지스터 윈도우의

모든 정보들을 기억장치에 저장하고 , 새로운 프로세스를 위한

정보들을 읽어오는데 긴 시간이 소요

각 그룹에 저장할 변수들의 수가 8 개를 초과하는 경우에 곤란

많은 수의 레지스터가 필요하기 때문에 칩상의 면적을 크게 차지

Page 38: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-38

MIPS 의 레지스터 세트

Page 39: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-39

MIPS 의 명령어 세트 분기 목적지의 주소 계산

(PC 의 최상위 4 비트 ) + ((JUMP TARGET ADDRESS) << 2)

o Superpage : PC 의 최상위 4 비트로 구분 각 256M(228)

o Superpage 사이의 분기 불가능 (0x0ffffffc 0x10000004)

Page 40: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-40

8.6 슈퍼스칼라 프로세서8.6.1 명령어 - 수준 병렬성

Instruction-level parallelism : 명령어들이 서로 독립적이어서

동시에 실행될 수 있는 상태

하드웨어 병렬성 (H/W parallelism, machine parallelism) : 실제

명령어들을 병렬로 실행하는 데 사용될 수 있는 하드웨어 능력

[ 예 ] 어떤 프로세서가 두 개의 ALU 들과 하나의 LOAD/STORE

유니트들을 가지고 있다면 , 아래의 세 명령어들을 동시 실행 가능

LOAD R1, A

ADD R2, R3

MUL R4, R5

Page 41: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-41

하드웨어 자원의 이용률 저하 원인 명령어 - 수준 병렬성 및 하드웨어 병렬성이 존재하더라

도 , 아래의 이유 때문에 성능 향상에 한계가 있게 됨

데이터 의존성 (data dependence)

o 흐름 의존성 (flow dependence)

o 반의존성 (antidependence)

o 출력 의존성 (output dependence)

자원 충돌 (resource conflict)

Page 42: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-42

흐름 의존성 어떤 명령어를 실행하기 위해서는 앞의 다른 명령어의

실행 결과를 이용해야 하는 상황 두 명령어는 반드시

순차적으로 실행

[ 예 ] I1: LOAD R1, A ; R1 ← M[A]

I2: SUB R1, R2 ; R1 ← R1 - R2

I3: MOV R3, R1 ; R3 ← R1

Page 43: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-43

동적 실행 (dynamic execution)

프로그램에서 흐름 의존성이 존재하는 경우에 , 뒤에 위치한 명령어들 중에서 현재 실행하려는 명령어와 의존성이 존재하지 않는 것이 있으면 , 순서를 변경하여 먼저 실행하는 방법

Page 44: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-44

반의존성

흐름 의존성이 존재하지 않는 명령어들 간이라도 , 동적

실행을 위하여 순서를 바꾸어 실행할 수는 없는 의존 관계

흐름 의존성과 반대 방향의 의존성

[ 예 ] I4: MUL R1, R2 ; R1 ← R1 × R2

I5: ADD R2, R4 ; R2 ← R2 + R4

Page 45: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-45

출력 의존성 두 명령어들의 실행 결과가 동일한 목적지에 저장되는 경우

[ 예 ] I6: SUB R1, R2 ; R1 ← R1 - R2

I7: MOV R3, R1 ; R3 ← R1

I8: MOV R1, #2 ; R1 ← 2

I6 I7 : 동적 실행을 위하여 I6 와 I8 을 동시에 실행시키는

경우에는 I7 이 잘못된 R1값을 이용할 위험이 존재

Page 46: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-46

자원 충돌 동시에 실행될 수 있는 명령어들이 같은 H/W 자원을

사용하며 , 그 수가 충분하지 못한 상황 .

자원의 예 : ALU, 기억장치 모듈 , 캐쉬 , 레지스터 , 등 .

[ 예 ] I6: SUB R1, R2 ; R1 ← R1 - R2

I7: MOV R3, R1 ; R3 ← R1

I8: MOV R1, #2 ; R1 ← 2

I6 와 I8 은 출력 의존성 뿐 아니라 , 자원 충돌도 존재하므로 , 동시

실행 불가능 레지스터 재명명 (register renaming) 으로 해결 가능

(8.6.3절 )

Page 47: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-47

8.6.2 명령어 발송 정책 명령어 발송 (instruction issue) : 프로세서가 독립적인

명령어들을 찾아서 명령어 실행 파이프라인으로 보내어

실행이 시작되도록 하는 과정

명령어 발송 정책 (instruction issue policy) : 명령어를

발송하는 데 필요한 프로토콜

‧ 순서대로 발송하고 순서대로 종료 (in-order issue with in-orde

r completion)

‧ 순서대로 발송하고 순서와 다르게 종료 (in-order issue with o

ut-of-order completion)

‧ 순서와 다르게 발송하고 순서와 다르게 종료 (out-order issue

with out-of-order completion)

Page 48: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-48

2-way 슈퍼스칼라 프로세서 내부 구조의 예 4- 단계 파이프라인

인출 및 해독 단계 : 두 개의 별도 유니트들 & 미리보기

윈도우

실행 단계 : 네 개의 유니트들 (곱셈기 , 가산기 , logic, lo

ader)

Page 49: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-49

(1) 순서대로 발송하고 순서대로 종료하는 방식 가장 간단한 명령어 발송 정책 원래 프로그램 순서대로 발송하고 , 결과들도 원래 순서대로

저장 실행 단계가 미리 종료된 명령어라도 , 프로그램 순서 상으로

그 이전에 위치한 명령어가 완전히 종료되지 않았다면 , 기다렸다가 순서에 맞추어 마지막 단계인 저장 (S) 단계를 수행 .

Page 50: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-50

프로그램 예[ 예 ] I1: LORD R1, X ; R1 ← M[X]

I2: ADD R2, R1 ; R2 ← R2 + R1

I3: ADD R3, R4 ; R3 ← R3 + R4

I4: MUL R4, R5 ; R4 ← R4 × R5

I5: OR R6, #01 ; R6 ← R6 ∨ 01

I6: MUL R6, R7 ; R6 ← R6 × R7

o I1 과 I2 사이에는 흐름 의존성이 존재한다 (I1 ―→ I2).

o I3 와 I4 사이에는 반의존성이 존재한다 (I3 ―+→ I4).

o I5 와 I6 사이에는 흐름 의존성과 출력 의존성이 존재한다

(I5 ―→ I6, I5 ―o→ I6)

Page 51: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-51

순서대로 발송하고 순서대로 종료하는 방식이 적용된 결과 실행 과정 ( 소요 시간 = 9 사이클 )

Page 52: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-52

순서대로 발송하고 순서대로 종료하는 방식이 적용된 결과 ( 계속 )

o 각 사이클마다 명령어들이 두 개씩 동시에 인출 및 해독된다 .

o I1 의 실행 단계가 완료되어 기억장치 A 번지로부터 데이터가 R1 에 적재된

다음에 I2 가 실행 단계를 시작할 수 있기 때문에 , 두 번째 파이프라인은 세

번째 사이클에서 유휴 (idle) 상태에 있게 된다 .

o I3 는 실행 단계에서 I2 와 자원 ( 가산기 ) 에 대한 충돌이 발생하기 때문에 , I

2 가 곱셈기의 첫 번째 단계의 사용을 종료할 때까지 기다렸다가 실행

사이클을 시작한다 . 반면에 , I4 는 자원 충돌이 없으므로 즉시 곱셈기를

사용하여 실행 단계를 수행한다 .

o I5 의 실행 단계 (OR 연산 ) 가 종료된 다음에 I6 의 실행 단계가 시작될 수

있기 때문에 , I6 는 한 사이클 동안 지연된다 .

o I5 의 실행 단계는 사이클 5 에서 완료되었지만 , 원래 프로그램에서 그 앞에

위치한 I3 와 I4 가 완전히 종료되지 않았기 때문에 , 그때까지 기다렸다가

사이클 8 에서 저장 단계를 수행하고 종료한다 .

Page 53: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-53

(2) 순서대로 발송하고 순서와 다르게 종료하는 방식 명령어의 인출 및 해독 순서는 원래 프로그램 순서와 동일 데이터 의존성이나 자원 충돌 문제가 없는 한 , 실행 및

종료되는 순서는 원래 프로그램 순서와 상관없이 진행 실행 과정 ( 소요 시간 = 9 사이클 )

Page 54: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-54

(3) 순서와 다르게 발송하고 순서와 다르게 종료하는 방식 최근 대부분의 슈퍼스칼라 프로세서들에서 사용되고

있는 방식

최단 시간 내에 프로그램 실행을 완료할 수 있도록 명령어

발송과 종료 순서를 조정

명령어 발송 단계부터 데이터 의존성과 자원 충돌을 고려

원래 프로그램 순서와는 거의 상관없이 실행 순서 결정

필요시 , 미리보기 윈도우 (lookahead window) 에 의해

독립적인 명령어의 추가 실행 추진

Page 55: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-55

순서와 다르게 발송하고 순서와 다르게 종료하는 방식 ( 계속 )

실행 과정 ( 소요 시간 = 7 사이클 )

I5 를 미리보기 윈도우를 이용하여 먼저 실행

I6 도 지연 없이 실행 가능

Page 56: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-56

순서와 다르게 발송하고 순서와 다르게 종료하는 방식 ( 계속 )

명령어 발송 및 종료 순서 ( 결과 ) 발송된 순서

사이클 1: I3, I4, I5 사이클 2: I1, I6 사이클 3: I2

종료된 순서 사이클 4: I5 사이클 5: I1, I3 사이클 6: I4 사이클 7: I2, I6

Page 57: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-57

순서와 다르게 발송하고 순서와 다르게 종료하는 방식 ( 계속 )

명령어 윈도우 (instruction window: 명령어 풀 (instruction poo

l) : 파이프라인의 해독 단계와 실행 단계 사이에 위치하는

버퍼로서 , 해독된 명령어를 일시 저장한다 . 이 윈도우가

채워지지 않는 한 , 프로세서는 명령어들을 계속 인출하고

해독할 수 있다 .

명령어 분배기 (instruction dispatcher) : 명령어 윈도우에

저장되어 있는 해독된 명령어들을 검사하여 ,

그 실행에 필요한 기능 유니트가 사용 가능해지고 ,

자원 충돌이나 데이터 의존성이 없는 경우에 ,

그 명령어를 꺼내어 기능 유니트로 보내어 실행 단계가 시작되도록 해준다 .

Page 58: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-58

8.6.3 레지스터 재명명 명령어 실행 과정에서 CPU 레지스터의 중복 사용에 의해

실행이 지연되는 출력 의존성 및 반의존성에 의한 명령어

- 수준 병렬성의 저하를 방지하기 위한 방법

전통적인 자원 충돌 해결책인 자원 복제 (duplication of re

sour -ce) 방법 이용

레지스터를 추가적으로 사용하거나 ,

원래 프로그램 코드에서 사용하는 레지스터의 이름을 변경

불필요한 의존성 제거

Page 59: 제8장. RISC - VADA Lab. Introductionvada.skku.ac.kr/ClassInfo/comp-arch/par-… · PPT file · Web view · 2008-06-02제8장. RISC 및 슈퍼스칼라 ... Sun Microsystems사에

Parallel Computer Architecture 8-59

레지스터 재명명 ( 계속 ) [ 예 ] I1 : R3 := R3 - R5 ; I1 -- I2

I2 : R4 := R3 + 1 ; I2 -+ I3

I3 : R3 := R5 + 1 ; I1 -o I3

I4 : R7 := R3 + R4

I1, I2 : 순차적으로 실행 , I3 : I1, I2 와 동시 실행 불가능

논리적인 레지스터들을 하드웨어 레지스터로 할당

I1 : R3b := R3a - R5a I3 와의 출력 의존성 제거

I2 : R4b := R3b + 1 I3 와의 반의존성 제거

I3 : R3c := R5a + 1 I3 를 I1 혹은 I2 와 동시 발송 가능

I4 : R7b := R3c + R4b