강의자료 - kcms.daegu.ac.kr

Download Report

Transcript 강의자료 - kcms.daegu.ac.kr

컴퓨터 구조 (Computer Architecture)
Reduced Instruction Set Computers(RISC)
남영진 ([email protected])
1
Prof. Young Jin Nam, Daegu University
강의내용






2
컴퓨터 기술 주요발전사항
명령어 실행 특성
큰 레지스터 파일 사용
컴파일러를 이용한 레지스터 최적화
축소 명령어 세트 구조
RISC vs. CISC
Prof. Young Jin Nam, Daegu University
컴퓨터 기술 주요발전사항
가상화 (Virtualization)
저장-프로그램 컴퓨터
(Stored-Program Computer)
캐쉬 기억장치 (IBM S/360)
파이프라이닝
3
마이크로프로그램 기반
제어 유닛 (Wilkes, 1951)
(제어 유닛 설계/구현 용이)
축소 명령어 세트 컴퓨터(RISC)
다중 프로세서
Prof. Young Jin Nam, Daegu University
RISC 컴퓨터 주요설계요소
 많은 수의 범용 레지스터
 레지스터 사용을 최적화하기 위한 컴파일러 기술
 제한적이고 간단한 명령어 세트
 명령어 파이프라인 최적화
4
Prof. Young Jin Nam, Daegu University
CISC 및 RISC 특성비교 예
5
Prof. Young Jin Nam, Daegu University
명령어 실행 특성
 HLL 프로그램 – 연산(Operations) 분석 (1 of 2)

HLL 연산들의 상대적 동적 빈도

지정문(assignment) 사용이 많음  데이터 단순이동이 중요
조건문 (IF, LOOP) 사용이 많음  순서제어 메커니즘이 필요

6
Prof. Young Jin Nam, Daegu University
명령어 실행 특성
 HLL 프로그램 – 연산(Operations) 분석 (2 of 2)

HLL 연산들에 있어 가중치가 부여된 상태적인 동적 빈도 [PATT82a]
(CISC 머신 – VAX, PDP-11, Motorola 68000 – 상에서 실행)
HLL이 컴파일 될 때, 각 문장 형태의 상대적인 중요성을 보여줌
 프로시저 call/return이 HLL 프로그램에서 가장 많은 시간 소모

7
Prof. Young Jin Nam, Daegu University
명령어 실행 특성
 HLL 프로그램 – 오퍼랜드 분석
대부분의 참조가 단순한 스칼라(scalar) 변수
 스칼라 변수들의 80% 이상이 지역 변수(local variables)
 가장 우선적으로 최적화해야 할 부분  지역 스칼라 변수의 저장과
access에 대한 부분

오퍼랜드의 동적 백분율 [PATT82a]
8
Prof. Young Jin Nam, Daegu University
명령어 실행 특성
 HLL 프로그램 – 프로시저 Call 분석
HLL 프로그램에서 가장 많은 시간 소요
 이는 파라메터와 변수 수 & 중첩(nesting) 깊이에 의존

동적으로 호출된 프로시저의 98%가 6개 이하의 파라메터 전송
 이중 92%는 6개 이하의 지역 스칼라 변수 이용

UC 버클리대 RISC 팀[KATE83]
9
Prof. Young Jin Nam, Daegu University
HLL 프로그램 분석을 통한 Implications
 많은 수의 레지스터 사용
Assignment 문을 최적화
 오퍼랜드 참조를 최적화

 보다 더 신중하게 명령어 파이프라인 설계

조건 분기 프로시저 및 호출이 많은 부분을 차지
 축소된(단순화된) 명령어 세트 필요??
10
Prof. Young Jin Nam, Daegu University
Large Register File
 레지스터 파일?

An extremely large # of registers
 레지스터 사용의 필요성
주기억장치 & 캐쉬 보다 더 빠른 저장장치
 ALU 및 제어 유닛과 함께 CPU 칩 내에 존재
 가장 자주 사용되는 오퍼랜드를 레지스터 내에 저장함으로써,
 레지스터-기억장치간의 이동을 최소화

11
Prof. Young Jin Nam, Daegu University
Large Register File
 레지스터 사용 극대화 – Software solution
Require compiler to allocate registers
 Allocate based on most used variables in a given time
 Requires sophisticated program analysis

 레지스터 사용 극대화 – Hardware solution


12
Have more registers
Thus more variables will be in registers
Prof. Young Jin Nam, Daegu University
Large Register File
 문제정의
대부분의 오퍼랜드 참조는 지역 스칼라 변수에 대한 것임
 Simple solution  몇 개의 레지스터만 전역 변수를 위해서 사용하
고, 나머지는 지역 변수를 위해서 할당
 지역(local)의 정의가 각 프로시저 call/return에 따라서 계속 변함

프로시저 call시에 지역 변수들은 레지스터로부터 기억장치로 저장
되어야 함
 Calling 프로시저로 return시에는 원래의 변수 값들이 레지스터로 다
시 저장되어야 하며, 결과 값도 caller에게 전송되어야 함


13
해법은?
Prof. Young Jin Nam, Daegu University
Large Register File
 Known Facts (1 of 2)

전형적인 프로시저에는 전송될 파라메터와 지역 변수의 수가 적음
UC 버클리대 RISC 팀[KATE83]
14
Prof. Young Jin Nam, Daegu University
Large Register File
 Known Facts (2 of 2)

15
프로시저 호출의 깊이는 비교적 좁은 범위 내에서 이루어짐
[Chap.4 참조]
Prof. Young Jin Nam, Daegu University
Large Register File – Register Window
 여러 개의 작은 레지스터 세트(set)를 이용
 각 세트를 서로 다른 프로시저에 할당
 프로시저가 call될 때, 레지스터 내용을 기억장치에 저장하는 대신,
 CPU가 다른 레지스터 윈도우를 사용하도록 자동적으로 전환
(Note: 파라메터 전송을 위해서 중첩)
16
Prof. Young Jin Nam, Daegu University
Large Register File – Register Window
 파라메터(parameter) 레지스터
현재 프로시저를 호출한 프로시저로부터 전송된 파라메터 &
 재전송될 결과 저장

 지역(local) 레지스터

컴파일러에 의해 지정된 지역 변수 저장
 임시(temporary) 레지스터


다음 하위 단계 (callee)와 파라메터 및 결과값들을 교환하는데 사용
J 단계의 임시 레지스터 = J+1 단계의 파라메터 레지스터
중첩은 데이터의 실제 이동 없이
파라메터들이 전송할 수 있도록 함
17
Prof. Young Jin Nam, Daegu University
Large Register File – Register Window
SWP(2)
 Circular-Buffer
 CWP: 현재 실행중인 프로시저
의 윈도우를 가리킴
 SWP: 가장 최근에 기억장치에
저장된 윈도우를 가리킴
Example:
CWP(4)
CWP(3)
D가 E를 call
E.in  E를 위한 변수, CWP(2) 증가
E가 F를 call (CWP == SWP)
CWP(2)
interrupt 발생 &
A 윈도우를 기억장치에 저장 (A.in, A.loc), SWP(2), CWP(3)
B가 A로 return (CWP == SWP)
18
interrupt 발생 &
A 윈도우를 기억장치로부터 복구 (A.in, A.loc)
SWP(2)  SWP position, CWP(4)  SWP(2) position
Prof. Young Jin Nam, Daegu University
Large Register File – Register Window
 N-윈도우 레지스터 파일은 N-1개의 프로시저 활동들만 저장
 가장 최근에 실행되고 있는 N-1개 프로시저들만을 위해 사용
 그 이전 프로시저 call에 대한 정보는 기억장치에 저장하고, 호출
깊이가 감소되면 복구
 N 값은 크지 않아도 됨

8개의 윈도우가 존재할 때, 호출 or 복귀 중에서 1% 만이 저장 및 복
구가 발생 [TAMI83]
 Example: SUN SPARC, Intel Itanium 프로세서
19
Prof. Young Jin Nam, Daegu University
Large Register File – 전역변수
 중첩 레지스터 윈도우  지역 스칼라 변수 지정에 효율적
 But, 하나 이상의 프로시저에 의해 access되는 전역 변수 저장 문
제는 해결해주지 못함
해결방안
 Allocated by the compiler to memory

Inefficient for frequently accessed variables
 Have a set of registers for global variables
20
Prof. Young Jin Nam, Daegu University
Large Register File vs. 캐쉬 사용
 “큰 레지스터 파일” can be replaced with
“작은 레지스터 파일 with 캐쉬”?
 특성 비교
(레지스터/캐쉬  기억장치)
21
Prof. Young Jin Nam, Daegu University
Large Register File vs. 캐쉬 사용
 지역 스칼라의 참조 방법 비교
캐쉬 자체는 레지스터 파일 만큼
빠르지만, access 시간은 상당히 길어짐.
(성능 측면에서, 지역변수 access에 대해서는
윈도우 방식이 더 우수)
캐쉬
윈도우 기반 레지스터 파일
22
Prof. Young Jin Nam, Daegu University
컴파일러 기반 레지스터 최적화
 문제정의
컴파일러는 계산과정에서 사용되는 오퍼랜드들이
 가능한 주기억장치보다는 레지스터에 저장되도록 함으로써
 Load-and-store 동작을 최소화

 일반적인 방법




23
프로그램 변수를 일단 symbol or 가상 레지스터에 지정
무한개의 symbol 레지스터를 한정된 수의 실제 레지스터에 맵핑
If (실제 레지스터 수보다 더 많은 변수들이 존재)
그들 중의 일부를 기억장치에 저장
그래프 coloring 기법 이용
Prof. Young Jin Nam, Daegu University
컴파일러 기반 레지스터 최적화
 Example: 그래프 Coloring 기법

3개의 레지스터가 존재한다고 가정
3-Coloring이 안됨!
Load-store가 필요
간단히(복잡하게) 레지스터를 최적화 할 때,
레지스터를 64(32)개 이상 사용하여도 성능상의 이득은 없음
24
Prof. Young Jin Nam, Daegu University
Why CISC?
 컴파일러 단순화, but
복잡한 기계 명령어들을 사용하기가 불편함
 코드 크기 최소화, 명령어 실행 회수 감소, 파이프라이닝 개선 등의
최적화 작업이 힘들어짐

 더 작고 빠른 프로그램 생성, but
메모리를 적게 차지하나, 메모리 가격이 급격하게 하락
 명령어 수가 적어지면(프로그램이 작아지면),
 인출할 명령어 바이트 수가 줄어들며, 페이지 fault 수를 줄여줌


25
In reality, 프로그램 길이는 현저하게 줄어들지 않음
Prof. Young Jin Nam, Daegu University
RISC I에 대비된 CISC에 의한 코드 크기
 RISC의 경우보다 절약된 것이 거의 없음
 그 이유는,
CISC에서는 컴파일러는 짧은 명령어를 선호
2. CISC에서는 많은 명령어로 인해서 opcode가 길어짐
3. RISC는 기억장치 참조보다, 레지스터 참조를 더 강조
1.
26
Prof. Young Jin Nam, Daegu University
RISC 구조 특징




27
기계 사이클(machine cycle)당 한 명령어(one instruction per cycle)
레지스터-레지스터 연산(register-to-register operations)
간단한 주소지정 방식(simple addressing modes)
간단한 명령어 형식(simple instruction formats)
Prof. Young Jin Nam, Daegu University
Machine Cycle당 한 명령어(기계어)
 기계 사이클
레지스터로부터 2개의 오퍼랜드를 인출하고,
 ALU 동작을 수행하며,
 결과를 레지스터에 저장하는데 소요되는 시간

 마이크로-코드가 아주 작거나 or 마이크로-코드가 필요 없음 
하드웨어로 구성(hard-wired)
28
Prof. Young Jin Nam, Daegu University
레지스터-레지스터 연산
 대부분의 연산이 레지스터간에 수행
 기억장치를 access하는 것은 LOAD & STORE 명령만 이용
 레지스터-레지스터 연산 vs. 메모리-메모리 연산 방식 (뒤장 참조)
29
Prof. Young Jin Nam, Daegu University
레지스터-레지스터 연산
보다 공정한 비교
(size of executed instructions)
(size of executed data)
30
Prof. Young Jin Nam, Daegu University
간단한 주소지정 방식
 거의 대부분의 명령어, 단순한 레지스터 주소지정 방식을 사용
 변위 or PC-relative 방식 등이 추가적으로 포함
31
Prof. Young Jin Nam, Daegu University
간단한 명령어 형식
 하나 or 적은 수의 형식이 이용
 명령어 길이, 특히 opcode 길이는 고정
32
Prof. Young Jin Nam, Daegu University
RISC vs. CISC
RISC
CISC
1. simple instructions taking
one clock cycle
2. only loads/stores access
memory
3. highly pipelined
4. hardwired control
5. fixed format instructions
6. few instructions & modes
7. complexity is in the compiler
8. multiple register set
1. complex instructions taking
multiple cycles
2. any instruction may access
memory
3. not pipelined or less pipelined
4. micro-programmed control
5. variable format instructions
6. many instructions & modes
7. complexity is in the microcode
8. simple register set
최근에는, RISC와 CISC간의 논쟁이 사라지고,
기술들이 점차적으로 통합되는 추세
33
Prof. Young Jin Nam, Daegu University
The end of “RISC”
Part of Homework #4:
연습문제 13.3, 13.4
34
Prof. Young Jin Nam, Daegu University