πŸ€“ Study/컴퓨터 ꡬ쑰

[λ©€ν‹°μ½”μ–΄CPU] 04. λͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμΈ & λΉ„μˆœμ°¨ μ‹€ν–‰

GAMEMING 2024. 3. 31. 23:30
728x90

 

 

μ •λ‚΄ν›ˆ κ΅μˆ˜λ‹˜μ΄ μΆ”μ²œν•œ μ±…

γ€Œ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ λͺ°λžλ˜ λ©€ν‹°μ½”μ–΄ CPU 이야기」 - κΉ€λ―Όμž₯ μ§€μŒ 

μœ„μ˜ 책을 ν† λŒ€λ‘œ κ³΅λΆ€ν•œ λ‚΄μš©μ΄ μž‘μ„±λ˜μ—ˆμŒ

 


 

 

 

- νŒŒμ΄ν”„λΌμΈ(pipeline)

 : μž‘μ—…μ„ μ—¬λŸ¬ 개둜 λ‚˜λˆ„κ³  μ„ΈλΆ€ 단계가 μ„œλ‘œ λ™μ‹œμ— μ‹€ν–‰ν•  수 있음

 : μ—°μ†μœΌλ‘œ μ£Όμ–΄μ§€λŠ” μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” 데 μžˆμ–΄ μ²˜λ¦¬μœ¨μ„ λ†’μ΄λŠ” 일반적인 μ•Œκ³ λ¦¬μ¦˜ (λ ˆμ΄ν„΄μ‹œ κ°œμ„  X)

 : 핡심 → μž¬μ‚¬μš© / 병렬 μ‹€ν–‰

 : 이상적인 처리율 μ¦κ°€λŠ” νŒŒμ΄ν”„ 라인 단계 수만큼 μž„ → μ•„λž˜μ˜ 4κ°€μ§€ 쑰건을 λ§Œμ‘±ν•΄μ•Ό 함

  1) κ· λ“±ν•œ νŒŒμ΄ν”„ 라인 단계 (각 λ‹¨κ³„λŠ” κ· λ“±ν•œ 길이둜 λ‚˜λ‰¨)

  2) 같은 μž‘μ—… (항상 같은 μž‘μ—…λ§Œ μˆ˜ν–‰ν•¨)

  3) 독립적인 μž‘μ—… (νˆ¬μž…λ˜λŠ” μž‘μ—…μ€ μ„œλ‘œ 의쑴 관계 X)

  4) νŒŒμ΄ν”„ 라인 μœ μ§€ λΉ„μš© μ΅œμ†Œν™” (졜적의 νŒŒμ΄ν”„ 라인 깊이 μ°Ύμ•„μ•Ό 함) 

 

 : λͺ…λ Ήμ–΄ 처리율 λ†’μ΄λŠ” 방법 μ΅œλŒ€ν•œ λ§Žμ€ 일을 λ³‘λ ¬λ‘œ 처리 ν•΄μ•Ό 함 → 병렬성 + ν•˜λ“œμ›¨μ–΄ 지원

 : ex) λͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμΈ : < λͺ…λ Ήμ–΄ 인좜 → λͺ…λ Ήμ–΄ 해독 → ν”Όμ—°μ‚°μž 인좜 → λͺ…λ Ήμ–΄ μ‹€ν–‰ → κ²°κ³Ό μ €μž₯ > 이 단계λ₯Ό νŒŒμ΄ν”„ 라인으둜 λŒλ¦¬λŠ” 것

 : νŒŒμ΄ν”„ 라인 단계 ν•˜λ‚˜λŠ” ν•œ 사이클 내에 μ™„λ£Œ λ˜μ–΄μ•Ό 함 (κ°€μž₯ κΈ΄ νŒŒμ΄ν”„ 라인 단계가 ν”„λ‘œμ„Έμ„œ 클둝 속도 κ²°μ •)

 

 : λͺ…λ Ήμ–΄κ°€ μš”κ΅¬ν•˜λŠ” μž‘μ—…μ΄ λ‹€λ₯΄κΈ°μ— μœ„μ˜ 두 번째 쑰건이 만쑱 되기 μ–΄λ ΅λ‹€

 : μœ„μ˜ κ³Όμ •λŒ€λ‘œ μ§„ν–‰ν•˜λ©΄ λ‚΄λΆ€ λ‹¨νŽΈν™” 문제 λ°œμƒ → 단계λ₯Ό ν•©μΉ˜κ±°λ‚˜ λ‚˜λˆ  ν•΄κ²°

 

 : νŒŒμ΄ν”„ 라인의 κΉŠμ΄λŠ” μ„±λŠ₯에 큰 영ν–₯ → 클럭 속도 κ²°μ •ν•˜κΈ° λ•Œλ¬Έ 

 : νŒŒμ΄ν”„ 라인의 단계λ₯Ό 더 잘게 λ‚˜λˆ„μ–΄ 길게 늘리면 λΉ λ₯Έ 클둝 μ–»κΈ° κ°€λŠ₯함 ( λ„ˆλ¬΄ μ˜¬λ €λ²„λ¦¬λ©΄ μ‹œμŠ€ν…œ μ„±λŠ₯ ν•˜λ½ κ°€λŠ₯ )

 

 

 

 - νŒŒμ΄ν”„ 라인 ν•΄μ €λ“œ(hazard)

  → ν”„λ‘œμ„Έμ„œμ—μ„œ μ˜μ‘΄μ„±μœΌλ‘œ λ°œμƒν•  수 μžˆλŠ” 문제 → ν•΄κ²° 방법 : stall (νŒŒμ΄ν”„ 라인 μ •μ§€) ?

 1) ꡬ쑰 ν•΄μ €λ“œ (structual hazard) :  ν”„λ‘œμ„Έμ„œμ˜ μžμ› λΆ€μ‘±μœΌλ‘œ μΈν•œ μŠ€ν†¨ →  μžμ› 증가 ν•„μš”

 2) 컨트둀 ν•΄μ €λ“œ (control hazard) : ν”„λ‘œκ·Έλž¨μ΄ 근본적으둜 κ°–κ³  μžˆλŠ” μ˜μ‘΄μ„±μœΌλ‘œ 인해 λ°œμƒ(ex. λΆ„κΈ°λ¬Έμ˜ κ²°κ³Ό ν•„μš”λ‘œ μΈν•œ stall λ“±) → λΆ„κΈ°μ˜ˆμΈ‘ (μΆ”ν›„ λ‹€λ£Έ)

 3) 데이터 ν•΄μ €λ“œ (data hazard) : 데이터 μ˜μ‘΄μ„±κ³Ό λ©”λͺ¨λ¦¬ μ˜μ‘΄μ„±μœΌλ‘œ μΈν•œ λ°œμƒ → λ°”μ΄νŒ¨μŠ€ 이용

 : λ°”μ΄νŒ¨μŠ€ 이전 λ‹¨κ³„μ—μ„œ κ³„μ‚°λœ κ²°κ³Όλ₯Ό ν˜„μž¬ λ‹¨κ³„μ—μ„œ ν•„μš”λ‘œ ν•˜λŠ” κ²½μš°μ— μ‚¬μš©, 데이터가 아직 νŒŒμ΄ν”„ 라인을 톡해 λ‹€μŒ λ‹¨κ³„λ‘œ μ΄λ™ν•˜κΈ° 전에 이미 μ‚¬μš© κ°€λŠ₯ν•œ κ²½μš°μ— 이λ₯Ό 이용

 

 

 

- λΉ„μˆœμ°¨ μ‹€ν–‰

 : ν”„λ‘œμ„Έμ„œκ°€ 직접 λͺ…λ Ήμ–΄ μ‚¬μ΄μ˜ μ˜μ‘΄μ„±μ„ 뢄석해 μ‹€ν–‰ κ°€λŠ₯ν•œ λͺ…령을 미리 μ‹€ν–‰μ‹œμΌœ μ‹œκ°„ 단좕

 : 슈퍼슀칼라 νŒŒμ΄ν”„λΌμΈ ꡬ쑰 → νŒŒμ΄ν”„ 라인이 μ—¬λŸ¬ 개 μžˆμ–΄ λͺ…λ Ήμ–΄λ₯Ό λ³‘λ ¬λ‘œ μ²˜λ¦¬ν•˜λŠ” ꡬ쑰

   1보닀큰 IPC μ–»κ²Œ 함

 

 

 

- 원리) λͺ…λ Ήμ–΄ μˆ˜μ€€ 병렬성(Instruction Level Parallelism, ILP)

 : λΉ„μˆœμ°¨ 싀행은 ILPλ₯Ό μ°Ύμ•„ λ°μ΄ν„°μ˜ 흐름에 따라 λͺ…λ Ήμ–΄λ₯Ό μ²˜λ¦¬ν•˜λŠ” 기술

 : 'λ™μ‹œ'에 μ‹€ν–‰λ˜λŠ” 병렬성을 μŠ€λ ˆλ“œ μˆ˜μ€€ 별렬성(TLP) → λ©€ν‹°μŠ€λ ˆλ“œ ν”„λ‘œκ·Έλž¨ μž‘μ„± μ‹œ μ–»λŠ” 병렬성

 ; 데이터 μ˜μ‘΄μ„±λ§Œ 지킨닀면 μ‹€μ œ μ‹€ν–‰ μˆœμ„œλŠ” λ°”λ€Œμ–΄λ„ 문제 μ—†μŒ ILP