Lec2 - Backgrounds

한국어판 강의자료 · 49쪽
1쪽
p.1
2쪽
p.2강의 1에서 이전 내용
  • 컴퓨터 아키텍처 >> 명령어 집합 아키텍처 (ISA) 및 RTL
  • CS152은 하드웨어와 소프트웨어의 상호작용, 적절한 추상화 계층의 설계에 관한 과목이다.
  • 기술과 응용이 컴퓨터 아키텍처를 형성한다.
  • 역사는 미래를 위한 교훈을 제공한다.
  • 컴퓨터 아키텍처의 처음 130년(Babbage에서 IBM 360까지)
  • 계산기(조건문 없음)에서 완전히 프로그래밍 가능한 기계로의 전환
  • 제2차 세계대전(1940년대 중반)부터 급속한 변화 시작, 전기기계적 장치에서 순수 전자 처리 장치로의 전환
  • 소프트웨어 개발 비용이 아키텍처 설계에 큰 제약이 되었음 (호환성 필요)
  • IBM 360은 'family of machines(기계의 가족)' 개념을 도입, 동일한 명령어 집합 아키텍처 (ISA)를 실행하지만 매우 다른 구현 방식을 가짐
  • 1964년 4월 7일에 여섯 대의 기계가 동시에 출시됨
  • 후속 세대 기계에 대한 'future-proofing(미래 대비)' 전략을 수립함
3쪽
p.3기술 트렌드
4쪽
p.4기술 트렌드
  • feature size(특징 크기)
  • 전통적으로, 칩의 최소 리소그래피 특징 크기(게이트 길이)
  • 현재는 'feature size(특징 크기)'가 어떤 gate length(게이트 길이)나 반 피치와 대응하지 않음
  • 1971년: 10 미크론 → 2018년: 0.007 미크론(또는 7 nm)
  • transistor performance(트랜지스터 성능)은 선형적으로 증가
  • • wire delay(선 지연)은 feature size(특징 크기)와 함께 개선되지 않음!
  • integration density(통합 밀도)는 제곱으로 증가
  • 집적 회로 기술(무어의 법칙)
  • transistor density(트랜지스터 밀도): 연간 35%
  • die size(다이 크기): 연간 10-20%
  • integration density(통합 밀도) 전반: 연간 40-55%
5쪽
p.5기술 트렌드, 계속
  • DRAM capacity(DRAM 용량): 연간 25-40% (점차 둔화됨)
  • 8 Gb (2014), 16 Gb (2019)
  • flash capacity(플래시 용량): 연간 50-60%
  • DRAM보다 비용당 8-10배 저렴
  • magnetic disk capacity(자기 디스크 용량): 최근 5%로 둔화됨
  • 밀도 증가가 더 이상 가능하지 않을 수 있음, 플래터 수를 7에서 9로 증가 가능성
  • 플래시보다 비용당 8-10배 저렴
  • DRAM보다 비용당 200-300배 저렴
6쪽
p.6트랜지스터와 선
  • feature size(특징 크기)
  • 트랜지스터 또는 선의 x 또는 y 방향 최소 크기
  • 1971년: 10 미크론 → 2017년: 0.011 미크론
  • transistor performance(트랜지스터 성능)은 선형적으로 증가
  • • wire delay(선 지연)은 feature size(특징 크기)와 함께 개선되지 않음!
  • integration density(통합 밀도)는 제곱으로 증가
7쪽
p.7bandwidth(대역폭)과 latency(지연)
  • bandwidth(대역폭) 또는 throughput(처리량): 주어진 시간 내에 수행되는 총 작업량
  • 프로세서: 32,000~40,000배 향상
  • 메모리 및 디스크: 300~1,200배 향상
  • latency(지연) 또는 response time(응답 시간): 이벤트 시작과 완료 사이의 시간
  • 프로세서: 50~90배 향상
  • 메모리 및 디스크: 6~8배 향상
  • 1980년대 초의 마일스톤과 비교한 상대적 bandwidth(대역폭) 및 latency(지연)의 로그-로그 플롯 (교재 Fig 1.10 참조)
8쪽
p.8latency(지연)이 bandwidth(대역폭)을 따라잡지 못하는 rule of thumb(경험 법칙)
  • bandwidth(대역폭)이 두 배로 증가하는 동안, latency(지연)은 1.2~1.4배 이내로만 향상됨 (용량은 대역폭보다 더 빠르게 향상됨)
  • 다른 표현: latency(지연) 향상의 제곱보다 bandwidth(대역폭) 향상이 더 큼
9쪽
p.9latency(지연)이 bandwidth(대역폭)을 따라잡지 못하는 6가지 이유 (1/2)
  • Moore's law(무어의 법칙)은 bandwidth(대역폭)보다 latency(지연)에 더 큰 영향을 미침
  • 더 빠른 트랜지스터, 더 많은 트랜지스터, 더 많은 핀은 bandwidth(대역폭)에 도움이 됨
  • CPU 트랜지스터 수: 0.130 vs. 42M (300배)
  • DRAM 트랜지스터 수: 0.064 vs. 256M (4,000배)
  • CPU 핀 수: 68 vs. 423 (6배)
  • DRAM 핀 수: 16 vs. 66 (4배)
  • 더 작고 빠른 트랜지스터지만 (상대적으로) 긴 선을 통해 통신: latency(지연)을 제한함
  • feature size(특징 크기): 1.5~3 vs. 0.18 마이크론 (8배, 17배)
  • CPU die size(다이 크기): 35 vs. 204 mm² (비율 제곱근 계산 → 2배)
  • DRAM die size(다이 크기): 47 vs. 217 mm² (비율 제곱근 계산 → 2배)
10쪽
p.10latency(지연)이 bandwidth(대역폭)을 따라잡지 못하는 6가지 이유 (2/2)
  • 거리가 latency(지연)을 제한함
  • DRAM 블록 크기 → 긴 비트선 및 워드선 → DRAM 접근 시간의 대부분을 차지함
  • 빛의 속도와 네트워크 상의 컴퓨터
  • 1번과 2번은 선형 latency(지연) 대 제곱 bandwidth(대역폭)을 설명함
  • bandwidth(대역폭)은 더 쉽게 판매됨 ('크면 좋다')
  • 예: 10 Gbits/s 이더넷 ('10기가') vs. 10ms latency(지연) 이더넷
  • 영화 한 편 다운로드에 30초.. 10기가 인터넷 시대 활짝
  • 4400 MB/s DIMM ('PC4400') vs. 50 ns latency(지연)
  • bandwidth(대역폭)이 판매되기 때문에 더 많은 자원이 대역폭에 투입되며, 이는 균형을 더욱 기울임
11쪽
p.11latency(지연)이 bandwidth(대역폭)을 도울 수 있지만, 그 반대는 아님
  • 회전하는 디스크를 더 빠르게 하면 bandwidth(대역폭)과 회전 latency(지연) 모두 향상됨
  • 3600 RPM → 15000 RPM = 4.2배
  • 평균 회전 latency(지연): 8.3ms → 2.0ms
  • 조건이 동일할 경우, bandwidth(대역폭)도 4.2배 향상됨
  • 더 낮은 DRAM latency(지연) → 초당 더 많은 접근 (더 높은 대역폭)
  • 더 높은 선형 밀도는 디스크 대역폭(용량)을 향상시키지만, 디스크 latency(지연)에는 영향 없음
  • 9,550 BPI (비트/인치) → 533,000 BPI → bandwidth(대역폭) 60배 향상
12쪽
p.12bandwidth(대역폭)이 latency(지연)을 악화시킴
  • 큐는 bandwidth(대역폭)을 도와주지만 latency(지연)을 악화시킴 (대기열 이론)
  • 메모리 모듈을 넓히기 위해 칩을 추가하면 bandwidth(대역폭)은 증가하지만, address(주소) 라인의 더 높은 팬아웃으로 인해 latency(지연)이 증가할 수 있음
  • operating system overhead(운영체제 오버헤드)는 latency(지연)에 더 큰 영향을 미치며, bandwidth(대역폭)에는 덜 영향을 미침
  • 긴 메시지는 오버헤드를 분산시킴; 짧은 메시지에서는 오버헤드가 더 큰 비중을 차지함
13쪽
p.13RISC-V instruction set architecture (ISA)(명령어 집합 아키텍처)
14쪽
p.14명령어 집합 아키텍처 (ISA)
  • 소프트웨어와 하드웨어 사이의 계약
  • 일반적으로 프로그래머가 보는 상태(레지스터 + 메모리)를 모두 제시하고, 그 상태를 조작하는 명령어의 semantics(의미)를 설명함으로써 기술됨
  • IBM 360은 하드웨어 구현(즉, 마이크로아키텍처)과 분리된 ISA를 처음으로 도입한 family of machines(기계의 가족)
  • 동일한 ISA에 대해 여러 가지 구현이 가능함
  • 예: 소련은 IBM360의 코드 호환 클론을 제작했으며, Amdahl은 IBM을 떠난 후에도 이를 수행함
  • 예 2: AMD, Intel, VIA 프로세서는 AMD64 ISA를 실행함
  • 예 3: 많은 스마트폰은 ARM ISA를 사용하며, Apple, Qualcomm, Samsung, Huawei 등 여러 회사의 구현을 사용함
  • 본 수업에서는 표준 ISA로 RISC-V를 사용함 (www.riscv.org)
  • 많은 회사와 오픈소스 프로젝트가 RISC-V 구현을 개발하고 있음
15쪽
p.15ISA에서 microarchitecture(마이크로아키텍처)로의 매핑
  • ISA는 종종 특정 microarchitecture(마이크로아키텍처) 스타일을 고려하여 설계됨
  • 예: 누산기 ⇒ hardwired(하드웨어로 구현된), 파이프라인화되지 않은
  • 예: CISC ⇒ 마이크로코딩된
  • 예: RISC ⇒ hardwired(하드웨어로 구현된), pipelined(파이프라인화된)
  • 예: VLIW ⇒ 고정 latency(지연), 순서 유지 병렬 파이프라인
  • 예: JVM ⇒ software interpretation(소프트웨어 해석)
  • 하지만 어떤 microarchitecture(마이크로아키텍처) 스타일로도 구현 가능함
  • 예: Intel Ivy Bridge: hardwired(하드웨어로 구현된) pipelined(파이프라인화된) CISC(x86) 기계(일부 마이크로코드 지원 포함)
  • 예: Spike: software interpretation(소프트웨어 해석)된 RISC-V 기계
  • 예: ARM Jazelle: 하드웨어 기반 JVM 프로세서
  • 본 강의: 마이크로코딩된 RISC-V 기계
16쪽
p.16제어와 datapath(데이터 경로)
  • 프로세서 설계는 숫자를 저장하고 산술 연산을 수행하는 datapath(데이터 경로)와 데이터 경로의 연산을 순서대로 수행하는 제어로 나눌 수 있음
  • 초기 컴퓨터 설계자들에게 가장 큰 도전 과제는 제어 회로를 올바르게 설계하는 것이었음
  • Maurice Wilkes는 1958년 EDSAC-II의 control unit(제어 유닛) 설계를 위해 microprogramming(마이크로프로그래밍)의 개념을 고안함
  • Babbage의 'Barrel'과 이전 프로그래머블 계산기의 메커니즘에 의해 예고됨
  • 조건?
  • 제어
  • 주요 메모리
  • address(주소)
  • 데이터
  • control lines(제어 라인)
  • datapath(데이터 경로)
  • program counter (PC)(프로그램 카운터)
  • instruction register(명령어 레지스터)
  • register(레지스터)
  • ALU(산술논리장치)
  • 명령어
  • busy?(사용 중?)
17쪽
p.17microcoded CPU(마이크로코딩된 CPU)
  • datapath(데이터 경로)
  • 주요 메모리
  • (사용자 프로그램을 매크로명령어로 저장, 예: x86, RISC-V)
  • address(주소)
  • 데이터
  • decoder(디코더)
  • µPC (microprogram counter)(마이크로프로그램 카운터)
  • microcode ROM(마이크로코드 ROM)
  • (고정된 µcode instruction(마이크로코드 명령어)을 저장)
  • next state(다음 상태)
  • control lines(제어 라인)
  • Opcode
  • 조건
  • busy?(사용 중?)
18쪽
p.18마이크로코딩된 기계 분석
  • John Cocke와 IBM 그룹
  • 간단한 pipelined(파이프라인화된) 프로세서인 801과 IBM 내부의 고급 컴파일러 개발 중
  • 실험용 PL.8 컴파일러를 IBM 370으로 이식하고, 801과 유사한 간단한 register(레지스터)-레지스터 및 load-store(로드-스토어) 명령어만 사용함
  • 기존의 모든 370 명령어를 사용하는 컴파일러보다 코드 실행 속도가 빠름 (최대 6MIPS, 이전에 2MIPS가 우수한 수준으로 여겨짐)
  • Emer, Clark, DEC
  • 외부 하드웨어를 사용해 VAX-11/780 측정
  • 실제로는 0.5MIPS 기계였음, 일반적으로 1MIPS로 간주됨
  • VAX 명령어 중 20%가 마이크로코드의 60%를 차지하지만, 실행 시간의 0.2%만 차지함!
  • VAX8800
  • control store(제어 저장소): 16K*147b RAM, unified cache(통합 캐시): 64K*8b RAM
  • cache(캐시) RAM보다 마이크로저장소 RAM이 4.5배 더 많음
19쪽
p.19프로세서 성능의 '철칙'
  • instructions per program(프로그램당 지시어 수)는 source code(소스 코드), compiler technology(컴파일러 기술), instruction set architecture (ISA)(명령어 집합 아키텍처)에 따라 달라진다.
  • 지시어당 사이클 수(CPI)는 instruction set architecture (ISA)(명령어 집합 아키텍처)와 microarchitecture(마이크로아키텍처)에 따라 달라진다.
  • time per cycle(사이클당 시간)은 microarchitecture(마이크로아키텍처)와 base technology(기본 기술)에 따라 달라진다.
  • time = instructions × CPI × cycle time(시간 = 지시어 수 × CPI × 사이클 시간)
20쪽
p.20지시어당 사이클 수(CPI)
  • 지시어 1: 10 사이클
  • 지시어 2: 5 사이클
  • 지시어 3: 7 사이클
  • 총 사이클 수 = 7 + 5 + 10 = 22
  • 총 지시어 수 = 3
  • CPI = 22 / 3 = 7.33
  • CPI는 대량의 지시어에 대한 평균값이다.
21쪽
p.21IC 기술의 변화가 트레이드오프를 변화시킴
  • 논리 회로, RAM, ROM 모두 MOS 트랜지스터를 사용하여 구현됨
  • 반도체 RAM은 ROM과 거의 동일한 속도를 가짐
22쪽
p.22마이크로코드 기계의 재고찰 (나노코딩된 68000 예시)
  • Motorola 68000은 17비트 마이크로코드를 사용하며, 이는 10비트 마이크로점프 또는 9비트 nanoinstruction(나노명령어) 포인터를 포함함
  • nanoinstruction(나노명령어)는 68비트 폭이며, 196개의 제어 신호로 디코딩됨
  • microcode ROM(마이크로코드 ROM)은 반복적인 제어 신호 패턴을 활용함, 예: ALU0 → A ← Reg[rs1], ... → ALUI0 → A ← Reg[rs1]
23쪽
p.23CISC에서 RISC로의 전환
  • 빠른 RAM을 사용해 사용자에게 보이는 지시어의 빠른 instruction cache(명령어 캐시)를 구축하고, 고정된 하드웨어 마이크로루틴 대신 사용함
  • 빠른 명령어 메모리의 내용은 애플리케이션 요구에 맞게 변경됨
  • 간단한 instruction set architecture (ISA)(명령어 집합 아키텍처)를 사용해 hardwired(하드웨어로 구현된) pipelined(파이프라인화된) 구현을 가능하게 함
  • 대부분의 컴파일된 코드는 CISC 지시어의 일부만 사용함
  • 간단한 인코딩은 pipelined(파이프라인화된) 구현을 가능하게 함
  • RISC instruction set architecture (ISA)(명령어 집합 아키텍처)는 수직 마이크로코드와 유사함
  • 통합 기술의 추가적 이점
  • 1980년대 초반, 드디어 32비트 datapath(데이터 경로)와 작은 cache(캐시)를 단일 칩에 맞출 수 있음
  • 일반적인 경우 칩 간 전송이 없어 더 빠른 동작이 가능함
24쪽
p.24Berkeley RISC 칩
  • RISC-I (1982): 트랜지스터 수 44,420개, 5 µm NMOS 공정, die area(다이 면적) 77 mm², 1 MHz에서 동작. 이 칩은 아마도 최초의 VLSI RISC일 가능성이 높음
  • RISC-II (1983): 트랜지스터 수 40,760개, 3 µm NMOS 공정, 3 MHz에서 동작, 크기 60 mm²
25쪽
p.25RISC-V instruction set architecture (ISA)(명령어 집합 아키텍처)
  • UC Berkeley에서 개발한 새로운 다섯 번째 세대 RISC 설계
  • 현실적이고 완전한 instruction set architecture (ISA)(명령어 집합 아키텍처)이지만, 오픈소스이면서도 작음
  • 특정 구현 방식에 과도하게 설계되지 않음
  • 32비트(RV32)와 64비트(RV64) address(주소) 공간 버전 모두 지원
  • multiprocessing(다중 처리)를 위해 설계됨
  • efficient instruction encoding(효율적인 명령어 인코딩)
  • education/research(교육/연구)용으로 subset/extend(하위 집합/확장)을 쉽게 할 수 있음
  • RISC-V 사양은 RISC-V Foundation 웹사이트 및 GitHub에서 제공됨
  • industry adoption(산업적 채택) 증가로 점점 더 큰 추진력을 얻고 있음
26쪽
p.26instruction set architecture (ISA)(명령어 집합 아키텍처)
  • 연산
  • RISC-V: 데이터 전송, 산술, 논리, 제어, 부동소수점
  • 텍스트의 그림 1.5 참조
  • control flow instructions(제어 흐름 명령어)
  • register(레지스터) 내용 사용 (RISC-V) 대비 상태 비트 사용 (x86, ARMv7, ARMv8)
  • return address(반환 주소) 저장 위치: 레지스터 (RISC-V, ARMv7, ARMv8) 대비 스택 (x86)
  • 인코딩
  • 고정 길이 (RISC-V, ARMv7/v8은 컴팩트 명령어 세트 제외) 대비 가변 길이 (x86)
27쪽
p.27instruction set architecture (ISA)(명령어 집합 아키텍처)
  • 메모리 address(주소) 지정
  • RISC-V: byte addressed(바이트 address(주소) 지정), aligned accesses(정렬된 접근)이 더 빠름
  • address(주소) 지정 모드
  • RISC-V: register(레지스터), immediate(즉시), displacement addressing(변위 주소 지정) (베이스+오프셋)
  • 기타 예: 자동 증가, 인덱스, PC 상대
  • 피연산자 유형 및 크기
  • RISC-V: 8비트, 32비트, 64비트
28쪽
p.28RV32 프로세서 상태
  • 프로그램 카운터 (pc)
  • 32개의 32비트 정수 레지스터 (x0-x31)
  • • x0는 항상 0을 포함함
  • 32개의 부동소수점 (FP) 레지스터 (f0-f31)
  • • 각각은 단정밀도 또는 이중정밀도 FP 값 (32비트 또는 64비트 IEEE FP)을 포함할 수 있음
  • 부동소수점 상태 레지스터 (fcsr), 부동소수점 rounding mode(반올림 모드) 및 exception reporting(예외 보고)에 사용
29쪽
p.29instruction set architecture (ISA)(명령어 집합 아키텍처)
  • instruction set architecture (ISA)(명령어 집합 아키텍처)의 종류
  • general-purpose registers(일반 목적 레지스터)
  • register-memory(레지스터-메모리) 대비 load-store(로드-스토어)
  • RISC-V register(레지스터)
  • 32개의 일반 목적, 32개의 부동소수점
  • register(레지스터) 이름 및 사용
  • x0: zero, constant 0(상수 0), 해당 없음
  • x1: ra, return address(반환 주소), 호출자
  • x2: sp, stack pointer(스택 포인터), 피호출자
  • x3: gp, 전역 포인터
  • x4: tp, thread pointer(스레드 포인터)
  • x5-x7: t0-t2, 일시적 register(레지스터), 호출자
  • x8: s0/fp, 저장된/frame pointer(프레임 포인터), 피호출자
  • x9: s1, 저장된, 피호출자
  • x10-x17: a0-a7, 인수, 호출자
  • x18-x27: s2-s11, 저장된, 피호출자
  • x28-x31: t3-t6, 일시적 register(레지스터), 호출자
  • f0-f7: ft0-ft7, FP 일시적 register(레지스터), 호출자
  • f8-f9: fs0-fs1, FP 저장된, 피호출자
  • f10-f17: fa0-fa7, FP 인수, 피호출자
  • f18-f27: fs2-fs21, FP 저장된, 피호출자
  • f28-f31: ft8-ft11, FP 일시적 register(레지스터), 호출자
30쪽
p.30RISC-V instruction encoding(명령어 인코딩)
  • 가변 길이 명령어를 지원할 수 있음
  • 기본 명령어 세트 (RV32)는 항상 고정 32비트 명령어이며, 하위 두 비트 = 11₂
  • 모든 브랜치와 점프는 16비트 단위의 타겟을 가짐 (기본 ISA에서 모든 명령어가 고정 32비트이더라도)
31쪽
p.31RISC-V 명령어 형식
  • 목적 register(레지스터)
  • register(레지스터) 소스 1
  • register(레지스터) 소스 2
  • 7비트 오퍼코드 필드 (하지만 하위 2비트 = 11₂)
  • 추가 오퍼코드 비트/즉시값
32쪽
p.32RISC-V 어셈블리 예제
  • C 코드
  • if(n>10)
  • val=A[1];
  • else
  • val=A[B[n]];
  • RISC-V 어셈블리 코드
  • addi x5, x0, 11 # x5 <- 11
  • blt x7, x5, ELSE
  • ld x6, 8(x8)
  • # assume 64-bit int
  • jal x0, END
  • ELSE:
  • slli x7, x7, 3 # x7 <- 8*n (64-bit)
  • add x9, x9, x7
  • # x9 <- B + 8*n
  • ld x10, 0(x9)
  • # x10 <- MEM[B+8*n]
  • slli x10, x10, 3
  • # x10 <- 8*MEM[B+8n]
  • ld x11, 0(x10)
  • # x11 <- MEM[x10]
  • END:
33쪽
p.33전력, 에너지, 성능 측정
34쪽
p.34전력과 에너지
  • 문제: 입력 전력과 출력 전력
  • 열 설계 전력(TDP)̶
  • 지속적인 전력 소비를 특성화함̶
  • 전원 공급 장치 및 냉각 시스템의 목표로 사용됨̶
  • 피크 전력보다 낮음 (1.5배 높음), 평균 전력 소비보다 높음
  • 클럭 속도를 동적으로 감소시켜 전력 소비를 제한할 수 있음
  • 작업당 에너지는 종종 더 나은 측정 기준
35쪽
p.35동적 에너지와 전력
  • 동적 에너지̶
  • 트랜지스터가 0 -> 1 또는 1 -> 0로 전환될 때̶
  • ½ x 용량 부하 x 전압²̶
  • 용량 부하는 출력에 연결된 트랜지스터 수와 기술에 따라 결정되며, 이는 선과 트랜지스터의 용량을 결정함̶
  • 전압을 낮추면 둘 다 개선되므로, 5V에서 ~1V로 전환됨
  • 동적 전력̶
  • ½ x 용량 부하 x 전압² x 스위칭 주파수
  • 고정된 작업에 대해 클럭 속도(스위칭 주파수)를 낮추면 전력은 감소하지만, 에너지는 감소하지 않음
36쪽
p.36전력
  • Intel 80386은 약 2 W 소비
  • 3.3 GHz Intel Core i7는 130 W 소비
  • 1.5 x 1.5 cm 칩에서 열을 방출해야 함
  • 300 W를 초과하면 공기 냉각이 어려움
  • 최근 CPU/GPU는 적절히 냉각되지 않으면 throttled(스로틀링됨)
37쪽
p.37전력 감소
  • 전력 감소를 위한 기술:
  • • 아무것도 하지 않기 (공백 상태의 단위에 클럭 비활성화)
  • → 실질적으로 주파수 0
  • • 동적 전압-주파수 스케일링
  • • cache(캐시), DRAM, 디스크용 저전력 상태
  • • 오버클럭킹, 다른 코어 비활성화 (예: 인텔 터보 부스트)
38쪽
p.38DVFS 예제
  • 15% 전압 감소가 15% 주파수 감소를 초래한다고 가정할 때, 동적 전력에 미치는 영향은?
  • dynamic power ∝ Voltage² × Frequency
  • OldPower ≈ (0.85)² × (0.85) × DynamicPower = 0.614 × DynamicPower
  • → 약 38.6% 감소
39쪽
p.39정적(또는 누설) 전력
  • 정적 전력 소비:
  • • 총 전력의 25-50%
  • • Current_static × Voltage
  • • 트랜지스터 수에 비례
  • • 감소를 위해: 전력 게이팅 사용
40쪽
p.40성능 측정
  • 일반적인 성능 지표: response time(응답 시간), throughput(처리량)
  • 서버는 SLA(Service-Level Agreement) 요구 사항을 가질 수 있음
  • 예: 주어진 요청에 대해 99번째 백분위 latency(지연)이 10ms 이하
  • 실행 시간:
  • • 월클록 시간: 모든 시스템 오버헤드 포함
  • • CPU 시간: 오직 계산 시간만 포함
  • 벤치마크:
  • • 커널 (예: 행렬 곱셈)
  • • 토이 프로그램 (예: 정렬)
  • • 합성 벤치마크 (예: Dhrystone, LINPACK)
  • • 벤치마크 세트 (예: SPEC CPU, TPC-C)
41쪽
p.41성능 정의
  • 성능 정의:
  • Performance(X) = 1 / Execution_time(X)
  • Performance(Y) = 1 / Execution_time(Y)
  • • 성능은 초당 처리 가능한 작업 수 단위로 표현됨
  • • 값이 클수록 좋음
  • • response time(응답 시간)에 주로 관심이 있다면:
  • Performance(X) = 1 / Execution_time(X)
  • • X는 Y보다 n배 빠르다 → Performance(X) = n × Performance(Y)
42쪽
p.42상대적 성능
  • 시간은 성능의 궁극적인 측정 기준
  • 성능 = 1 / 시간
  • • 짧은 latency(지연) → 높은 성능
  • • 높은 처리량(job/시간) → 높은 성능
  • • "X는 Y보다 n배 빠르다" = "X의 속도 향상은 n"
  • • "X는 Y보다 m% 빠르다"는 semantics(의미): PerformanceX / PerformanceY = 1 + m/100
  • • "보다 느리다"는 표현은 사용하지 말 것 → 항상 "보다 빠르다"로 표현하여 혼동 방지
  • PerformanceX / PerformanceY = ThroughputX / ThroughputY = TimeY / TimeX = n
  • → 이는 단일 프로그램에 대한 비교입니다.
  • 다수의 프로그램을 비교해야 할 경우는 어떻게 할까요?
43쪽
p.43산술 평균
  • 작업부하(workload)가 응용프로그램 A0, A1, ..., An-1로 구성된다고 가정하자.
  • 응용프로그램 실행 시간의 산술 평균(AM)은 다음과 같다.
  • 산술 평균을 비교하는 것은 총 실행 시간을 비교하는 것과 같다.
  • 문제점: 더 긴 응용프로그램이 더 큰 기여를 한다.
  • 만약 AMX / AMY = n이라면, Y는 X보다 n배 빠르다.
  • 참: A0, ..., An-1는 항상 동일한 횟수로 실행된다.
  • 거짓: 일부 응용프로그램이 다른 것보다 훨씬 더 자주 실행되는 경우 (특히 가장 자주 실행되는 응용프로그램이 나머지보다 훨씬 짧은 경우에 특히 문제가 된다).
  • 상대적인 중요도를 반영하기 위해 가중치를 부여할 수 있다.
44쪽
p.44기하 평균
  • 작업부하(workload)가 응용프로그램 A0, A1, ..., An-1로 구성된다고 가정하자.
  • 실행 시간의 기하 평균(GM)은 다음과 같다.
  • 1. 각 작업부하에 대해 컴퓨터 X의 성능을 Y에 대해 정규화한다.
  • 2. 참조 컴퓨터 Y에 대한 상대적인 성능 향상(relative speedup)으로 컴퓨터 X의 성능을 보고한다.
  • 참고: GM(Xi) / GM(Yi) = GM(Xi / Yi)
45쪽
p.45조화 평균
  • "속도"(예: 처리량)의 산술 평균을 취하지 마라.
  • 예: 처음 10km는 30km/h, 다음 10km는 90km/h일 때, 평균 속도는 (30 + 90)/2 = 60km/h가 아니다!
  • 평균 속도를 계산하기 위해:
  • 1. 전체적으로 전개한다.
  • 평균 속도 = 총 거리 / 총 시간 = 20 / (10/30 + 10/90) = 45km/h
  • 2. 조화 평균 및 가중 조화 평균
  • 조화 평균(HM):
  • 가중 조화 평균(WHM):
  • 이 조화 평균 식이 예시와 일치하는가?
46쪽
p.46IPC에 대해 조화 평균을 사용하는 이유
  • 동일한 주파수와 동일한 지시어 수를 가진 경우,
  • 평균 시간 = 평균 CPI = CPI의 산술 평균(A.M.)
47쪽
p.47표준 벤치마크
  • 왜 표준 벤치마크가 필요한가?
  • 모든 사람들은 다른 응용프로그램(성능의 다른 측면)에 관심이 있다.
  • 연구하려는 기계에서 당신의 응용프로그램을 사용할 수 없을 수 있다.
  • SPEC 벤치마크(www.spec.org)
  • Standard Performance Evaluation Corporation(표준 성능 평가 기구)
  • 다수 산업 위원회가 선정한 "현실적인", 일반 목적의, 공개 도메인 응용프로그램 모음으로, 몇 년마다 업데이트된다(2000, 2006, 2017, ...)
  • 완벽하지 않다는 것은 모두 알고 있지만, 적어도 모두 같은 규칙으로 게임을 하거나 조작한다.
  • 거래 처리 협회(Transaction Processing Council)는 데이터베이스의 서버 성능 및 비용-성능을 측정한다.
  • TPC-C: 온라인 거래 처리를 위한 복잡한 쿼리
  • TPC-H: 즉석 의사결정 지원을 모델링
  • TPC-W: 거래형 웹 벤치마크
  • TPC-App: 애플리케이션 서버 및 웹 서비스 벤치마크
48쪽
p.48SPEC CPU 벤치마크 세트(SPEC CPU2017)
  • SPECrate® 2017 정수
  • SPECspeed® 2017 정수
  • 언어[1]
  • KLOC[2]
  • 응용 분야
  • 500.perlbench_r
  • 600.perlbench_s
  • C
  • 362
  • Perl 인터프리터
  • 502.gcc_r
  • 602.gcc_s
  • C
  • 1,304
  • GNU C 컴파일러
  • 505.mcf_r
  • 605.mcf_s
  • C
  • 3
  • 경로 계획
  • 520.omnetpp_r
  • 620.omnetpp_s
  • C++
  • 134
  • 이산 사건 시뮬레이션 - 컴퓨터 네트워크
  • 523.xalancbmk_r
  • 623.xalancbmk_s
  • C++
  • 520
  • XSLT를 통한 XML에서 HTML로 변환
  • 525.x264_r
  • 625.x264_s
  • C
  • 96
  • 비디오 압축
  • 531.deepsjeng_r
  • 631.deepsjeng_s
  • C++
  • 10
  • 인공지능: 알파-베타 트리 탐색(체스)
  • 541.leela_r
  • 641.leela_s
  • C++
  • 21
  • 인공지능: 몬테카를로 트리 탐색(고)
  • 548.exchange2_r
  • 648.exchange2_s
  • Fortran
  • 1
  • 인공지능: 재귀적 해 생성기(Sudoku)
  • 557.xz_r
  • 657.xz_s
  • C
  • 33
  • 일반 데이터 압축
  • SPECrate® 2017 부동소수점
  • SPECspeed® 2017 부동소수점
  • 언어[1]
  • KLOC[2]
  • 응용 분야
  • 503.bwaves_r
  • 603.bwaves_s
  • Fortran
  • 1
  • 폭발 모델링
  • 507.cactuBSSN_r
  • 607.cactuBSSN_s
  • C++, C, Fortran
  • 257
  • 물리학: 상대성 이론
  • 508.namd_r
  • C++
  • 8
  • 분자 역학
  • 510.parest_r
  • C++
  • 427
  • 생물의학 영상: 유한 요소를 통한 광학 토모그래피
  • 511.povray_r
  • C++, C
  • 170
  • 레이 트레이싱
  • 519.lbm_r
  • 619.lbm_s
  • C
  • 1
  • 유체 역학
  • 521.wrf_r
  • 621.wrf_s
  • Fortran, C
  • 991
  • 기상 예보
  • 526.blender_r
  • C++, C
  • 1,577
  • 3D 렌더링 및 애니메이션
  • 527.cam4_r
  • 627.cam4_s
  • Fortran, C
  • 407
  • 대기 모델링
  • 628.pop2_s
  • Fortran, C
  • 338
  • 광범위한 해양 모델링(기후 수준)
  • 538.imagick_r
  • 638.imagick_s
  • C
  • 259
  • 이미지 조작
  • 544.nab_r
  • 644.nab_s
  • C
  • 24
  • 분자 역학
  • 549.fotonik3d_r
  • 649.fotonik3d_s
  • Fortran
  • 14
  • 계산 전자기학
  • 554.roms_r
  • 654.roms_s
  • Fortran
  • 210
  • 지역 해양 모델링
  • [1] 다중 언어 벤치마크의 경우, 나열된 첫 번째 언어가 라이브러리 및 링크 옵션을 결정한다(세부 사항)
  • [2] KLOC = 줄 수(줄 수)
49쪽
p.49질문?
  • 추천 독서:
  • • 교재 부록 C.1 – C.6 (모든 부록은 온라인에서도 이용 가능)
  • • "RISC(축소 명령어 집합)에 대한 근거", Patterson, Ditzel, 1980
  • • "RISC(축소 명령어 집합)에 대한 근거"에 대한 의견, Clark, Strecker, 1980
  • • "하드웨어 구성이 유사한 RISC와 CISC의 성능 비교", Bhandarkar, Clark, 1991
단축키
Ctrl K · s자료 검색
[ ]이전·다음 강의
Space영상 재생·정지
j k다음·이전 section
n p다음·이전 slide
b강의 목록 접기·펴기
t맨 위
/강의 검색
Esc닫기