SlideShare a Scribd company logo
Processor
Micro Processor
rudalson@gmail.com
뭐 이런것 까지 알아야 하나?
굳이 이유를 들자면
1. 대상은 다르지만 풀려고 하는 문제는 같다
2. The free lunch is over
3. Welcome to the jungle
프로세서를 이해하기 위해 몇 가지
Instruction Set Architecture
CISC vs RISC 이제 논쟁은 그만 하자
struct Vector
{
int x;
int y;
int z;
} data[10];
data[index].y = Ox87654321;
;; ARM (좌로부터 문번호; 주소, 기계어 인코딩 값, 기계어, 해석)
0001100C ES9D1000 ldr rl, [sp, #4] ; rl = index
00011010 E3A0300C mov r3, #0xc ; r3 = sizeof(Vector)
00011014 E0020391 mul r2, rl, r3 ; r2 = index * sizeof(Vector)
00011018 E28D3004 add r3, sp, #8 ; r3 = data
0001101C E0833002 add r3, r3, r2 ; r3 = $data[index]
00011020 E2832004 add r2, r3, #4 ; r2 = $(data[index].y)
00011024 E59F3008 ldr r3, [pc, #8] ; r3 = 0xOx87654321
00011028 E5823000 str r3. [r2] ; *(r2) = r3
;; x86-64 (문번호: 주소, 기계어 인코팅 값, 기계어)
13FA110C8 48 63 44 24 24 movsxd rax, dword ptr [rsp+24h]
13FA110CD 48 6B CO OC imul rax, rax, OCh
13FA110Dl C7 44 04 34 21 mov dword ptr
[rsp+rax+34h], 8787654321h
그 외
• uarch
• ALU
• Register
• x86 8~16개 라고들…
• 100 개 이상
• Cache
• RAM
• Virtual memory
• 1 HZ란?
• Process & Thread
Dependency or Hazard
1. 데이터
a. RAW (Read-After-Write)
i. x = y + 1;
ii. z = x * 2;
b. WAR (Write-After-Read)
i. z = x * 2;
ii. x = y + 1;
c. WAW (Write-After-Write)
i. x = z * 2;
ii. x = y + 1;
2. 메모리
3. 컨트롤
Instruction 5 steps
1. 명령어 인출(Instruction fetch, IF)
2. 명령어 해독(Instruction decode and register fetch, ID)
3. 피연산자 인출(Operand(s) Fetch, OF)
4. 명령어 실행(Instruction Execution, EX)
5. 결과 저장(Operand Store, OS또는 Write Back, WB)
프로세서 발전의 두 축?
1. 반도체 기술 향상
2. 아키텍쳐 향상
무어의 법칙
“18개월 혹은 24개월마다 저렴한 비
용에 집적될 수 있는 트랜지스터의 개
수가 두 배씩 증가”
• 1978년 인텔 8086
• 29,000개. 5MHz
• 2008 Core i7
• 731,000,000개. 2,930MHz
• 하도 많이 들어서 좀 지겹다
Pipeline
• Instruction수준의 병렬 (ILP)
• Throughput 개선
• Latency는 개선 못함
• 최초는 1960년대 IBM 7030
• 1980년대 RISC 주요 구현 방식
• 그럼 CISC는?
• x86 은 1989년 i486 최초
• 286, 386도 어느 정도는 구현됨
비순차 실행
• In-order VS Out-of-order
• ILP 찾기
• dependency 조사가 필수
• 명령어 윈도우
• 컴파일러는 수천개의 ILP
• 프로세서에서는 백여개
• 비순차도 좋은 알고리즘이 필요하다
• 명령어 완료의 순차성 여부는 관리한다.
• ROB(Re-Order Buffer)
• 1964년 CDC의 6600 메인프레임에서 시작
• 마이크로 프로세서는 1990 IBM Power1
• 편대의 모든 프로세서가 비순차는 아니다.
Intel Itanium, Atom. IBM Power6
Superscalar
• 하나 이상의 파이프 라인
• N-wide, N-way 라고 표현
• 최초의 펜티엄은 아주 일부라인만 두개
• 인텔 네할렘은 4-wide까지 확장
• 비순차와 슈퍼스칼라는 보통 같이 간다.
• 하지만 인텔 Atom 2-Wide 슈퍼스칼라 순차
SMT(Simultaneous Multi-Threading)
• 스레드 문맥을 하드웨어 수준에
서 복제
• 둘 이상의 논리 프로세서로 보이
게 하는 기술
• 스레드 수준 병렬
• 전체 면적중 5~6% 이하가 더 필
요
• 파이프라인이나 캐시는 공유
하이퍼 스레딩
• SMT의 마케팅 네임
• 펜티엄4 이후
• 2배향상은 아니지만 작업종류에
따라 7~34% 까지 성능향상
• 물론 안좋은 작업도 있을 수도…
• OS의 스케쥴링도 중요
• 현 시점(2017)에서는 거의 문제되지
않음
싱글코어의 한계
• 한때는 클럭 = 성능
• 클럭수는 가장 좋은 마케팅 수단
• 에너지 장벽(energy wall)
• 아뜨! 아뜨!
• 이 추세면 2015년엔 태양표면온도 까지 도
달 (2001. ISSCC 인텔 부사장)
• 최적화 기법도 한계
멀티코어 병렬컴퓨터
• Homogeneous core
• TLP 수준 병렬 프로그래밍
• 메모리 구조 변화
• SMP vs NUMA (Non-Uniform Memory Access)
GPU
• 데이터 수준의 병렬성(Data-level parallelism)
• SIMD
• Single Instruction Multiple Data
• GPU 에서 GPGPU
• General Purpose Graphic Processing Unit
• 순차 처리
• 수천, 수만개의 스레드 문맥 관리
• 메모리와 대역폭도 아주 높다
• Heterogeneous core도 가능
• 슈~~~~퍼 컴퓨터
1. for (int i = 0; i < 4; ++i)
2. c[i] = a[i] + b[i];
Differences between CPU and GPU
GPU 컴퓨팅 파워
캐시(Cache)
• 속도 차이가 나는 두 계층 사이
• Pentium 100MHz
DRAM 66~100MHz (1996)
• 프로세서 2~3GHz
메모리 533~800MHz (2009)
• 데이터의 지역성(locality)을 활용
• 시간적 (temporal)
• 공간적 (spatial)
• 용어
• cache hit/miss
• miss penalty, hit latency
• 캐시 설계 고려 요소
• 검색, 배치, 교체, 쓰기
CPU multicore $
• 멀티레벨 구조 L1, L2, L3 (LL)
• 2008년 nehalem 구조 L1-64KB, L2 or L3 - 8MB, 12MB
• 왜 이렇게 나뉘어져 있을까?
• Cache line 혹은 cache block
• 32 ~ 256 byte
• Cache coherenece
• MSI, MESI 프로토콜
• Write back/through
Memory hierarchy
Latency comparison numbers
https://gist.github.com/jboner/2841832
False sharing
• 공유는 공유인데!
• 같은 캐시 라인
• 공유캐시가 없으면 200%까
지도 성능저하
1. volatile int data1;
2. volatile int data2;
Branch prediction
• 분기예측
• 과거 실행에 기반
• 만약, 브라우저에서 파일을 한번 저장한다면?
• 투기적 실행(Speculative execution)
• 이길이 아니라면?
• 백업장치가 필수
• 예측이 맞으면 …
• 아래의 경우라면…..
Prefetcher
• 이번엔 미리 가져와 읽는다.
• Latency 개선
• 잘못 읽으면
• 자원 낭비 (대역폭, 전력 등)
• 캐시오염(cache pollution)
병렬 프로그래밍
• 여전히 싱글코어의 속도가 중요한건 맞다
• 하지만 하드웨어는 병렬성을 증대하고 있다
• 그런데 어렵다.
• 데드락(dead lock)
• 우선순위 역전현상(priority inversion)
• 락 콘보잉(lock convoying) - many cores
References
• 프로그래머가 몰랐던 멀티코어 CPU 이야기
• 프로세서를 지탱하는 기술
• The Free Lunch Is Over
• Welcome to the jungle
• CPU·GPU가 뭐야?…인공지능 놓고 칩들의 ‘두뇌’ 싸움
• 수억 킬로미터 밖에서의 디버깅 (2)

More Related Content

What's hot

Main Variable Program
Main Variable ProgramMain Variable Program
Main Variable Program
경섭 심
 
ffmpeg optimization using CUDA
ffmpeg optimization using CUDAffmpeg optimization using CUDA
ffmpeg optimization using CUDA
yyooooon
 
윤석준 2015 cuda_contest
윤석준 2015 cuda_contest윤석준 2015 cuda_contest
윤석준 2015 cuda_contest
Seok-joon Yun
 
16장 메모리를 만들어 봅시다
16장 메모리를 만들어 봅시다16장 메모리를 만들어 봅시다
16장 메모리를 만들어 봅시다LuvCha
 
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
Ki-Hwan Kim
 
Compute shader
Compute shaderCompute shader
Compute shader
QooJuice
 

What's hot (7)

Main Variable Program
Main Variable ProgramMain Variable Program
Main Variable Program
 
ffmpeg optimization using CUDA
ffmpeg optimization using CUDAffmpeg optimization using CUDA
ffmpeg optimization using CUDA
 
윤석준 2015 cuda_contest
윤석준 2015 cuda_contest윤석준 2015 cuda_contest
윤석준 2015 cuda_contest
 
16장 메모리를 만들어 봅시다
16장 메모리를 만들어 봅시다16장 메모리를 만들어 봅시다
16장 메모리를 만들어 봅시다
 
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
 
D2 Havok
D2 HavokD2 Havok
D2 Havok
 
Compute shader
Compute shaderCompute shader
Compute shader
 

Viewers also liked

Jornal digital 16-03-17
Jornal digital 16-03-17Jornal digital 16-03-17
Jornal digital 16-03-17
Jornal Correio do Sul
 
Classificado 16-03-17
Classificado 16-03-17Classificado 16-03-17
Classificado 16-03-17
Jornal Correio do Sul
 
اسماء الدفعة الثانية المستفيدين من الدعم السكني وصندوق التنمية
اسماء الدفعة الثانية المستفيدين من الدعم السكني وصندوق التنميةاسماء الدفعة الثانية المستفيدين من الدعم السكني وصندوق التنمية
اسماء الدفعة الثانية المستفيدين من الدعم السكني وصندوق التنمية
Abdo Magdi
 
Java
JavaJava
Edicao24 artigo solar
Edicao24 artigo solarEdicao24 artigo solar
Edicao24 artigo solar
A X.S
 
Jesus em sua presença
Jesus em sua presençaJesus em sua presença
Jesus em sua presença
Andre Guedes
 
Do You Rely on the Synchromed II Pain Pump For Drug Delivery? Beware of Pump ...
Do You Rely on the Synchromed II Pain Pump For Drug Delivery? Beware of Pump ...Do You Rely on the Synchromed II Pain Pump For Drug Delivery? Beware of Pump ...
Do You Rely on the Synchromed II Pain Pump For Drug Delivery? Beware of Pump ...
Howie, Sacks & Henry
 
Kanser iwasan
Kanser iwasanKanser iwasan
Sala prensa dosier_cien_anos_de_soledad
Sala prensa dosier_cien_anos_de_soledadSala prensa dosier_cien_anos_de_soledad
Sala prensa dosier_cien_anos_de_soledad
Ani Lu Torres Lam
 
Patrón singleton
Patrón singletonPatrón singleton
Teorías de género 2017A
Teorías de género 2017ATeorías de género 2017A
Teorías de género 2017A
Juan Camilo Sánchez López
 
Proyeccion todo2017
Proyeccion todo2017Proyeccion todo2017
Proyeccion todo2017
Alexandre Magno
 
The Benefits of Radiofrequency Ablation
The Benefits of Radiofrequency AblationThe Benefits of Radiofrequency Ablation
The Benefits of Radiofrequency Ablation
Dr. Lawrence Markovitz
 
Tipos de contrato
Tipos de contratoTipos de contrato
Tipos de contrato
angigil
 
Larry Lampe hps14300244vlaira
Larry Lampe hps14300244vlairaLarry Lampe hps14300244vlaira
Larry Lampe hps14300244vlaira
Larry Ernesto Lampe Baptista
 
저장장치
저장장치저장장치
저장장치
박 경민
 
Robot Farmers and Chefs: In the Field and In Your Kitchen
Robot Farmers and Chefs: In the Field and In Your KitchenRobot Farmers and Chefs: In the Field and In Your Kitchen
Robot Farmers and Chefs: In the Field and In Your Kitchen
Tim Gasper
 
Aa2 torres angelica_problema_solucion
Aa2 torres angelica_problema_solucionAa2 torres angelica_problema_solucion
Aa2 torres angelica_problema_solucion
Angelica Torres
 
企業ネットワークの標的型攻撃とクラウド接続の課題に同時対応するソリューション
企業ネットワークの標的型攻撃とクラウド接続の課題に同時対応するソリューション企業ネットワークの標的型攻撃とクラウド接続の課題に同時対応するソリューション
企業ネットワークの標的型攻撃とクラウド接続の課題に同時対応するソリューション
Juniper Networks (日本)
 
White Paper - Power to Perform
White Paper - Power to PerformWhite Paper - Power to Perform
White Paper - Power to Perform
Carol Yang
 

Viewers also liked (20)

Jornal digital 16-03-17
Jornal digital 16-03-17Jornal digital 16-03-17
Jornal digital 16-03-17
 
Classificado 16-03-17
Classificado 16-03-17Classificado 16-03-17
Classificado 16-03-17
 
اسماء الدفعة الثانية المستفيدين من الدعم السكني وصندوق التنمية
اسماء الدفعة الثانية المستفيدين من الدعم السكني وصندوق التنميةاسماء الدفعة الثانية المستفيدين من الدعم السكني وصندوق التنمية
اسماء الدفعة الثانية المستفيدين من الدعم السكني وصندوق التنمية
 
Java
JavaJava
Java
 
Edicao24 artigo solar
Edicao24 artigo solarEdicao24 artigo solar
Edicao24 artigo solar
 
Jesus em sua presença
Jesus em sua presençaJesus em sua presença
Jesus em sua presença
 
Do You Rely on the Synchromed II Pain Pump For Drug Delivery? Beware of Pump ...
Do You Rely on the Synchromed II Pain Pump For Drug Delivery? Beware of Pump ...Do You Rely on the Synchromed II Pain Pump For Drug Delivery? Beware of Pump ...
Do You Rely on the Synchromed II Pain Pump For Drug Delivery? Beware of Pump ...
 
Kanser iwasan
Kanser iwasanKanser iwasan
Kanser iwasan
 
Sala prensa dosier_cien_anos_de_soledad
Sala prensa dosier_cien_anos_de_soledadSala prensa dosier_cien_anos_de_soledad
Sala prensa dosier_cien_anos_de_soledad
 
Patrón singleton
Patrón singletonPatrón singleton
Patrón singleton
 
Teorías de género 2017A
Teorías de género 2017ATeorías de género 2017A
Teorías de género 2017A
 
Proyeccion todo2017
Proyeccion todo2017Proyeccion todo2017
Proyeccion todo2017
 
The Benefits of Radiofrequency Ablation
The Benefits of Radiofrequency AblationThe Benefits of Radiofrequency Ablation
The Benefits of Radiofrequency Ablation
 
Tipos de contrato
Tipos de contratoTipos de contrato
Tipos de contrato
 
Larry Lampe hps14300244vlaira
Larry Lampe hps14300244vlairaLarry Lampe hps14300244vlaira
Larry Lampe hps14300244vlaira
 
저장장치
저장장치저장장치
저장장치
 
Robot Farmers and Chefs: In the Field and In Your Kitchen
Robot Farmers and Chefs: In the Field and In Your KitchenRobot Farmers and Chefs: In the Field and In Your Kitchen
Robot Farmers and Chefs: In the Field and In Your Kitchen
 
Aa2 torres angelica_problema_solucion
Aa2 torres angelica_problema_solucionAa2 torres angelica_problema_solucion
Aa2 torres angelica_problema_solucion
 
企業ネットワークの標的型攻撃とクラウド接続の課題に同時対応するソリューション
企業ネットワークの標的型攻撃とクラウド接続の課題に同時対応するソリューション企業ネットワークの標的型攻撃とクラウド接続の課題に同時対応するソリューション
企業ネットワークの標的型攻撃とクラウド接続の課題に同時対応するソリューション
 
White Paper - Power to Perform
White Paper - Power to PerformWhite Paper - Power to Perform
White Paper - Power to Perform
 

Similar to Processor

Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014
Gruter
 
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
GangSeok Lee
 
Nec 이비플러스
Nec 이비플러스Nec 이비플러스
Nec 이비플러스
silverfox2580
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
Ubuntu Korea Community
 
Pivot3 overview
Pivot3 overviewPivot3 overview
Pivot3 overview
CDIT-HCI
 
[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표sung ki choi
 
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
Kenu, GwangNam Heo
 
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
Seongho Park
 
Quick & Dirty Tips for x64 hooks
Quick & Dirty Tips for x64 hooksQuick & Dirty Tips for x64 hooks
Quick & Dirty Tips for x64 hooks
용환 노
 
iWorks 아이웍스의 비즈니스, IBM Power Chip(CPU)에 대하여
iWorks 아이웍스의 비즈니스, IBM Power Chip(CPU)에 대하여iWorks 아이웍스의 비즈니스, IBM Power Chip(CPU)에 대하여
iWorks 아이웍스의 비즈니스, IBM Power Chip(CPU)에 대하여
아이웍스 | iWorks Inc.
 
Binarized CNN on FPGA
Binarized CNN on FPGABinarized CNN on FPGA
Binarized CNN on FPGA
홍배 김
 
Let's geek! (1)
Let's geek! (1) Let's geek! (1)
Let's geek! (1)
nerdsday
 
백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나
Daniel Shin
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화
tartist
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp진현 조
 
CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기
YEONG-CHEON YOU
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
devCAT Studio, NEXON
 
[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유
Hwan Min
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
NAVER D2
 
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
(Joe), Sanghun Kim
 

Similar to Processor (20)

Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014
 
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
 
Nec 이비플러스
Nec 이비플러스Nec 이비플러스
Nec 이비플러스
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
 
Pivot3 overview
Pivot3 overviewPivot3 overview
Pivot3 overview
 
[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표
 
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
 
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
 
Quick & Dirty Tips for x64 hooks
Quick & Dirty Tips for x64 hooksQuick & Dirty Tips for x64 hooks
Quick & Dirty Tips for x64 hooks
 
iWorks 아이웍스의 비즈니스, IBM Power Chip(CPU)에 대하여
iWorks 아이웍스의 비즈니스, IBM Power Chip(CPU)에 대하여iWorks 아이웍스의 비즈니스, IBM Power Chip(CPU)에 대하여
iWorks 아이웍스의 비즈니스, IBM Power Chip(CPU)에 대하여
 
Binarized CNN on FPGA
Binarized CNN on FPGABinarized CNN on FPGA
Binarized CNN on FPGA
 
Let's geek! (1)
Let's geek! (1) Let's geek! (1)
Let's geek! (1)
 
백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp
 
CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
 
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
 

Processor

  • 2. 뭐 이런것 까지 알아야 하나?
  • 3. 굳이 이유를 들자면 1. 대상은 다르지만 풀려고 하는 문제는 같다 2. The free lunch is over 3. Welcome to the jungle
  • 5. Instruction Set Architecture CISC vs RISC 이제 논쟁은 그만 하자 struct Vector { int x; int y; int z; } data[10]; data[index].y = Ox87654321; ;; ARM (좌로부터 문번호; 주소, 기계어 인코딩 값, 기계어, 해석) 0001100C ES9D1000 ldr rl, [sp, #4] ; rl = index 00011010 E3A0300C mov r3, #0xc ; r3 = sizeof(Vector) 00011014 E0020391 mul r2, rl, r3 ; r2 = index * sizeof(Vector) 00011018 E28D3004 add r3, sp, #8 ; r3 = data 0001101C E0833002 add r3, r3, r2 ; r3 = $data[index] 00011020 E2832004 add r2, r3, #4 ; r2 = $(data[index].y) 00011024 E59F3008 ldr r3, [pc, #8] ; r3 = 0xOx87654321 00011028 E5823000 str r3. [r2] ; *(r2) = r3 ;; x86-64 (문번호: 주소, 기계어 인코팅 값, 기계어) 13FA110C8 48 63 44 24 24 movsxd rax, dword ptr [rsp+24h] 13FA110CD 48 6B CO OC imul rax, rax, OCh 13FA110Dl C7 44 04 34 21 mov dword ptr [rsp+rax+34h], 8787654321h
  • 6. 그 외 • uarch • ALU • Register • x86 8~16개 라고들… • 100 개 이상 • Cache • RAM • Virtual memory • 1 HZ란? • Process & Thread
  • 7. Dependency or Hazard 1. 데이터 a. RAW (Read-After-Write) i. x = y + 1; ii. z = x * 2; b. WAR (Write-After-Read) i. z = x * 2; ii. x = y + 1; c. WAW (Write-After-Write) i. x = z * 2; ii. x = y + 1; 2. 메모리 3. 컨트롤
  • 8. Instruction 5 steps 1. 명령어 인출(Instruction fetch, IF) 2. 명령어 해독(Instruction decode and register fetch, ID) 3. 피연산자 인출(Operand(s) Fetch, OF) 4. 명령어 실행(Instruction Execution, EX) 5. 결과 저장(Operand Store, OS또는 Write Back, WB)
  • 9. 프로세서 발전의 두 축? 1. 반도체 기술 향상 2. 아키텍쳐 향상
  • 10. 무어의 법칙 “18개월 혹은 24개월마다 저렴한 비 용에 집적될 수 있는 트랜지스터의 개 수가 두 배씩 증가” • 1978년 인텔 8086 • 29,000개. 5MHz • 2008 Core i7 • 731,000,000개. 2,930MHz • 하도 많이 들어서 좀 지겹다
  • 11. Pipeline • Instruction수준의 병렬 (ILP) • Throughput 개선 • Latency는 개선 못함 • 최초는 1960년대 IBM 7030 • 1980년대 RISC 주요 구현 방식 • 그럼 CISC는? • x86 은 1989년 i486 최초 • 286, 386도 어느 정도는 구현됨
  • 12. 비순차 실행 • In-order VS Out-of-order • ILP 찾기 • dependency 조사가 필수 • 명령어 윈도우 • 컴파일러는 수천개의 ILP • 프로세서에서는 백여개 • 비순차도 좋은 알고리즘이 필요하다 • 명령어 완료의 순차성 여부는 관리한다. • ROB(Re-Order Buffer) • 1964년 CDC의 6600 메인프레임에서 시작 • 마이크로 프로세서는 1990 IBM Power1 • 편대의 모든 프로세서가 비순차는 아니다. Intel Itanium, Atom. IBM Power6
  • 13. Superscalar • 하나 이상의 파이프 라인 • N-wide, N-way 라고 표현 • 최초의 펜티엄은 아주 일부라인만 두개 • 인텔 네할렘은 4-wide까지 확장 • 비순차와 슈퍼스칼라는 보통 같이 간다. • 하지만 인텔 Atom 2-Wide 슈퍼스칼라 순차
  • 14. SMT(Simultaneous Multi-Threading) • 스레드 문맥을 하드웨어 수준에 서 복제 • 둘 이상의 논리 프로세서로 보이 게 하는 기술 • 스레드 수준 병렬 • 전체 면적중 5~6% 이하가 더 필 요 • 파이프라인이나 캐시는 공유
  • 15. 하이퍼 스레딩 • SMT의 마케팅 네임 • 펜티엄4 이후 • 2배향상은 아니지만 작업종류에 따라 7~34% 까지 성능향상 • 물론 안좋은 작업도 있을 수도… • OS의 스케쥴링도 중요 • 현 시점(2017)에서는 거의 문제되지 않음
  • 16. 싱글코어의 한계 • 한때는 클럭 = 성능 • 클럭수는 가장 좋은 마케팅 수단 • 에너지 장벽(energy wall) • 아뜨! 아뜨! • 이 추세면 2015년엔 태양표면온도 까지 도 달 (2001. ISSCC 인텔 부사장) • 최적화 기법도 한계
  • 17. 멀티코어 병렬컴퓨터 • Homogeneous core • TLP 수준 병렬 프로그래밍 • 메모리 구조 변화 • SMP vs NUMA (Non-Uniform Memory Access)
  • 18. GPU • 데이터 수준의 병렬성(Data-level parallelism) • SIMD • Single Instruction Multiple Data • GPU 에서 GPGPU • General Purpose Graphic Processing Unit • 순차 처리 • 수천, 수만개의 스레드 문맥 관리 • 메모리와 대역폭도 아주 높다 • Heterogeneous core도 가능 • 슈~~~~퍼 컴퓨터 1. for (int i = 0; i < 4; ++i) 2. c[i] = a[i] + b[i];
  • 21. 캐시(Cache) • 속도 차이가 나는 두 계층 사이 • Pentium 100MHz DRAM 66~100MHz (1996) • 프로세서 2~3GHz 메모리 533~800MHz (2009) • 데이터의 지역성(locality)을 활용 • 시간적 (temporal) • 공간적 (spatial) • 용어 • cache hit/miss • miss penalty, hit latency • 캐시 설계 고려 요소 • 검색, 배치, 교체, 쓰기
  • 22. CPU multicore $ • 멀티레벨 구조 L1, L2, L3 (LL) • 2008년 nehalem 구조 L1-64KB, L2 or L3 - 8MB, 12MB • 왜 이렇게 나뉘어져 있을까? • Cache line 혹은 cache block • 32 ~ 256 byte • Cache coherenece • MSI, MESI 프로토콜 • Write back/through
  • 25. False sharing • 공유는 공유인데! • 같은 캐시 라인 • 공유캐시가 없으면 200%까 지도 성능저하 1. volatile int data1; 2. volatile int data2;
  • 26. Branch prediction • 분기예측 • 과거 실행에 기반 • 만약, 브라우저에서 파일을 한번 저장한다면? • 투기적 실행(Speculative execution) • 이길이 아니라면? • 백업장치가 필수 • 예측이 맞으면 … • 아래의 경우라면…..
  • 27. Prefetcher • 이번엔 미리 가져와 읽는다. • Latency 개선 • 잘못 읽으면 • 자원 낭비 (대역폭, 전력 등) • 캐시오염(cache pollution)
  • 28. 병렬 프로그래밍 • 여전히 싱글코어의 속도가 중요한건 맞다 • 하지만 하드웨어는 병렬성을 증대하고 있다 • 그런데 어렵다. • 데드락(dead lock) • 우선순위 역전현상(priority inversion) • 락 콘보잉(lock convoying) - many cores
  • 29. References • 프로그래머가 몰랐던 멀티코어 CPU 이야기 • 프로세서를 지탱하는 기술 • The Free Lunch Is Over • Welcome to the jungle • CPU·GPU가 뭐야?…인공지능 놓고 칩들의 ‘두뇌’ 싸움 • 수억 킬로미터 밖에서의 디버깅 (2)