Home > Archive > CS_archive > πŸ’Ύ [CS] λͺ…λ Ήμ–΄ 병렬 처리 기법

πŸ’Ύ [CS] λͺ…λ Ήμ–΄ 병렬 처리 기법
CS

λͺ…λ Ήμ–΄ 병렬 처리 기법

  • λͺ…λ Ήμ–΄ 병령 처리 기법(ILP: Instruction-Level Parallelism): λͺ…λ Ήμ–΄λ₯Ό λ™μ‹œμ— μ²˜λ¦¬ν•˜μ—¬ CPUλ₯Ό ν•œμ‹œλ„ 쉬지 μ•Šκ³  μž‘λ™μ‹œν‚€λŠ” 기법.

  • λŒ€ν‘œμ μΈ λͺ…λ Ήμ–΄ 병렬 처리 기법

    • λͺ…λ Ήμ–΄ νŒŒμ΄ν”„ 라이닝
    • 슈퍼슀칼라
    • λΉ„μˆœμ°¨μ  λͺ…λ Ήμ–΄ 처리

λͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμΈ

λͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμΈμ„ μ΄ν•΄ν•˜λ €λ©΄ ν•˜λ‚˜μ˜ λͺ…λ Ήμ–΄κ°€ μ²˜λ¦¬λ˜λŠ” 전체 과정을 λΉ„μŠ·ν•œ μ‹œκ°„ κ°„κ²©μœΌλ‘œ λ‚˜λˆ„μ–΄ 보아야 ν•©λ‹ˆλ‹€.

λͺ…λ Ήμ–΄ 처리 과정을 클럭 λ‹¨μœ„λ‘œ λ‚˜λˆ„μ–΄ 보면 일반적으둜 λ‹€μŒκ³Ό 같이 λ‚˜λˆŒ 수 μžˆμŠ΅λ‹ˆλ‹€.

  1. λͺ…λ Ήμ–΄ 인좜(Instruction Fetch)
  2. λͺ…λ Ήμ–΄ 해석(Instruction Decode)
  3. λͺ…λ Ήμ–΄ μ‹€ν–‰(Execute Instruction)
  4. κ²°κ³Ό μ €μž₯(Write Back)

μ°Έκ³ : 이 단계가 정닡은 μ•„λ‹™λ‹ˆλ‹€.
μ „κ³΅μ„œμ— 따라 λͺ…λ Ήμ–΄ 인좜 -> λͺ…λ Ήμ–΄ μ‹€ν–‰μœΌλ‘œ λ‚˜λˆ„κΈ°λ„ ν•˜κ³ ,
λͺ…λ Ήμ–΄ 인좜 -> λͺ…λ Ήμ–΄ 해석 -> λͺ…λ Ήμ–΄ μ‹€ν–‰ -> λ©”λͺ¨λ¦¬ μ ‘κ·Ό -> κ²°κ³Ό μ €μž₯으둜 λ‚˜λˆ„κΈ°λ„ ν•©λ‹ˆλ‹€.

μ—¬κΈ°μ„œ μ€‘μš”ν•œ 점은 같은 단계가 κ²ΉμΉ˜μ§€λ§Œ μ•ŠλŠ”λ‹€λ©΄ CPUκ°€ β€˜κ° 단계λ₯Ό λ™μ‹œμ— μ‹€ν–‰ν•  수 μžˆλ‹€β€™λŠ” κ²ƒμž…λ‹ˆλ‹€.

  • 예λ₯Ό λ“€μ–΄ CPUλŠ” ν•œ λͺ…λ Ήμ–΄λ₯Ό β€˜μΈμΆœβ€™ν•˜λŠ” λ™μ•ˆμ— λ‹€λ₯Έ λͺ…λ Ήμ–΄λ₯Ό β€˜μ‹€ν–‰β€™ν•  수 있고, ν•œ λͺ…λ Ήμ–΄κ°€ β€˜μ‹€ν–‰β€™λ˜λŠ” λ™μ•ˆμ— μ—°μ‚° κ²°κ³Όλ₯Ό β€˜μ €μž₯’할 수 μžˆμŠ΅λ‹ˆλ‹€.

이λ₯Ό 그림으둜 ν‘œν˜„ν•˜λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • t1μ—λŠ” λͺ…λ Ήμ–΄ 1, 2λ₯Ό λ™μ‹œμ— μ²˜λ¦¬ν•  수 있고 t2μ—λŠ” λͺ…λ Ήμ–΄ 1,2,3을 λ™μ‹œμ— μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이처럼 λͺ…λ Ήμ–΄λ₯Ό κ²Ήμ²˜μ„œ μˆ˜ν–‰ν•˜λ©΄ λͺ…λ Ήμ–΄λ₯Ό ν•˜λ‚˜ν•˜λ‚˜ μ‹€ν–‰ν•˜λŠ” 것보닀 훨씬 더 효율적으둜 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이처럼 마치 곡μž₯ 생산 라인과 같이 λͺ…령어듀을 β€œλͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμΈ(instruction pipeline)” 에 λ„£κ³  λ™μ‹œμ— μ²˜λ¦¬ν•˜λŠ” 기법을 β€œλͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμ΄λ‹(instruction pipelining)” 이라고 ν•©λ‹ˆλ‹€.

λͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμΈμ„ μ‚¬μš©ν•˜μ§€ μ•Šκ³  λͺ¨λ“  λͺ…λ Ήμ–΄λ₯Ό 순차적으둜만 μ²˜λ¦¬ν•œλ‹€λ©΄ μ•„λž˜μ™€ 같이 μ²˜λ¦¬ν–ˆμ„κ²ƒμž…λ‹ˆλ‹€.

  • ν•œλˆˆμ— 봐도 λͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμ΄λ‹μ„ μ΄μš©ν•˜λŠ” 것이 더 νš¨μœ¨μ μž„μ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

νŒŒμ΄ν”„λΌμ΄λ‹μ΄ 높은 μ„±λŠ₯을 κ°€μ Έμ˜€κΈ°λŠ” ν•˜μ§€λ§Œ, νŠΉμ • μƒν™©μ—μ„œλŠ” μ„±λŠ₯ ν–₯상에 μ‹€νŒ¨ν•˜λŠ” κ²½μš°λ„ μžˆμŠ΅λ‹ˆλ‹€.

  • μ΄λŸ¬ν•œ 상황을 νŒŒμ΄ν”„λΌμΈ μœ„ν—˜(pipeline hazard) 이라고 λΆ€λ¦…λ‹ˆλ‹€.

νŒŒμ΄ν”„λΌμΈ μœ„ν—˜μ—λŠ” 크게 3κ°€μ§€κ°€ μžˆμŠ΅λ‹ˆλ‹€.

  1. 데이터 μœ„ν—˜
  2. μ œμ–΄ μœ„ν—˜
  3. ꡬ쑰적 μœ„ν—˜

데이터 μœ„ν—˜

  • 데이터 μœ„ν—˜(data hazard) 은 λͺ…λ Ήμ–΄ κ°„ β€˜λ°μ΄ν„° μ˜μ‘΄μ„±β€™μ— μ˜ν•΄ λ°œμƒν•©λ‹ˆλ‹€.
    • λͺ¨λ“  λͺ…λ Ήμ–΄λ₯Ό λ™μ‹œμ— μ²˜λ¦¬ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€.
      • μ–΄λ–€ λͺ…λ Ήμ–΄λŠ” 이전 λͺ…λ Ήμ–΄λ₯Ό λκΉŒμ§€ μ‹€ν–‰ν•΄μ•Όλ§Œ λΉ„λ‘œμ†Œ μ‹€ν–‰ν•  수 μžˆλŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ μ•„λž˜ 두 λͺ…λ Ήμ–΄λ₯Ό λ΄…μ‹œλ‹€.

νŽΈμ˜μƒ λ ˆμ§€μŠ€ν„° 이름을 R1, R2, R3, R4, R5라 ν•˜κ³  β€˜μ™Όμͺ½ λ ˆμ§€μŠ€ν„°μ— 였λ₯Έμͺ½ κ²°κ³Όλ₯Ό μ €μž₯ν•˜λΌβ€™λŠ” κΈ°ν˜ΈλŠ” <- 기호둜 ν‘œκΈ°ν•˜κ² μŠ΅λ‹ˆλ‹€.

λͺ…λ Ήμ–΄ 1: R1 <- R2 + R3 // R2 λ ˆμ§€μŠ€ν„° κ°’κ³Ό R3 λ ˆμ§€μŠ€ν„° 값을 λ”ν•œ 값을 R1 λ ˆμ§€μŠ€ν„°μ— μ €μž₯
λͺ…λ Ήμ–΄ 2: R4 <- R1 + R5 // R1 λ ˆμ§€μŠ€ν„° κ°’κ³Ό R5 λ ˆμ§€μŠ€ν„° 값을 λ”ν•œ 값을 R4 λ ˆμ§€μŠ€ν„°μ— μ €μž₯

μœ„μ˜ 경우 λͺ…λ Ήμ–΄ 1을 μˆ˜ν–‰ν•΄μ•Όλ§Œ λͺ…λ Ήμ–΄ 2λ₯Ό μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • 즉, R1에 R2 + R3 결괏값이 μ €μž₯λ˜μ–΄μ•Ό λͺ…λ Ήμ–΄ 2λ₯Ό μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • λ§Œμ•½ λͺ…λ Ήμ–΄ 1 싀행이 λλ‚˜κΈ° 전에 λͺ…λ Ήμ–΄ 2λ₯Ό μΈμΆœν•˜λ©΄ R1에 R2 + R3 결괏값이 μ €μž₯되기 전에 R1 값을 읽어 λ“€μ΄λ―€λ‘œ μ›μΉ˜ μ•Šμ€ R1 κ°’μœΌλ‘œ λͺ…λ Ήμ–΄ 2λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.
      • λ”°λΌμ„œ λͺ…λ Ήμ–΄ 2λŠ” λͺ…λ Ήμ–΄ 1의 데이터에 μ˜μ‘΄μ μž…λ‹ˆλ‹€.
        • 이처럼 데이터 의쑴적인 두 λͺ…λ Ήμ–΄λ₯Ό λ¬΄μž‘μ • λ™μ‹œμ— μ‹€ν–‰ν•˜λ €κ³  ν•˜λ©΄ νŒŒμ΄ν”„λΌμΈμ΄ μ œλŒ€ν˜Έ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것을 β€˜λ°μ΄ν„° μœ„ν—˜β€™μ΄λΌκ³  ν•©λ‹ˆλ‹€.

μ œμ–΄ μœ„ν—˜

  • μ œμ–΄ μœ„ν—˜(control hazard) 은 주둜 λΆ„κΈ° λ“±μœΌλ‘œ μΈν•œ β€˜ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°μ˜ κ°‘μž‘μŠ€λŸ¬μš΄ 변화’에 μ˜ν•΄ λ°œμƒν•©λ‹ˆλ‹€.
    • 기본적으둜 ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°λŠ” β€˜ν˜„μž¬ μ‹€ν–‰ 쀑인 λͺ…λ Ήμ–΄μ˜ λ‹€μŒ μ£Όμ†Œβ€™λ‘œ κ°±μ‹ λ©λ‹ˆλ‹€.
      • ν•˜μ§€λ§Œ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 흐름이 λ°”λ€Œμ–΄ λͺ…λ Ήμ–΄κ°€ μ‹€ν–‰λ˜λ©΄μ„œ ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„° 값에 κ°‘μž‘μŠ€λŸ¬μš΄ λ³€ν™”κ°€ 생긴닀면 λͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμΈμ— 미리 κ°€μ§€κ³  μ™€μ„œ 처리 μ€‘μ΄μ—ˆλ˜ λͺ…령어듀은 아무 μ“Έλͺ¨κ°€ μ—†μ–΄μ§‘λ‹ˆλ‹€.
        • 이λ₯Ό β€˜μ œμ–΄ μœ„ν—˜β€™μ΄λΌκ³  ν•©λ‹ˆλ‹€.

μ°Έκ³ : 참고둜 이λ₯Ό μœ„ν•΄ μ‚¬μš©ν•˜λŠ” 기술 쀑 ν•˜λ‚˜κ°€ λΆ„κΈ° 예츑(branch prediction) μž…λ‹ˆλ‹€.
λΆ„κΈ° μ˜ˆμΈ‘μ€ ν”„λ‘œκ·Έλž¨μ΄ μ–΄λ””λ‘œ λΆ„κΈ°ν• μ§€ 미리 μ˜ˆμΈ‘ν•œ ν›„ κ·Έ μ£Όμ†Œλ₯Ό μΈμΆœν•˜λŠ” κΈ°μˆ μž…λ‹ˆλ‹€.

ꡬ쑰적 μœ„ν—˜

  • ꡬ쑰적 μœ„ν—˜(structural hazard) 은 λͺ…령어듀을 겹쳐 μ‹€ν–‰ν•˜λŠ” κ³Όμ •μ—μ„œ μ„œλ‘œ λ‹€λ₯Έ λͺ…λ Ήμ–΄κ°€ λ™μ‹œμ— ALU, λ ˆμ§€μŠ€ν„° λ“±κ³Ό 같은 CPU λΆ€ν’ˆμ„ μ‚¬μš©ν•˜λ €κ³  ν•  λ•Œ λ°œμƒν•©λ‹ˆλ‹€.
    • ꡬ쑰적 μœ„ν—˜μ€ μžμ› μœ„ν—˜(resource hazard) 이라고도 λΆ€λ¦…λ‹ˆλ‹€.

슈퍼슀칼라

νŒŒμ΄ν”„λΌμ΄λ‹μ€ 단일 νŒŒμ΄ν”„λΌμΈμœΌλ‘œλ„ κ΅¬ν˜„μ΄ κ°€λŠ₯ν•˜μ§€λ§Œ, μ˜€λŠ˜λ‚  λŒ€λΆ€λΆ„μ˜ CPUμ—μ„œλŠ” μ—¬λŸ¬ 개의 νŒŒμ΄ν”„λΌμΈμ„ μ΄μš©ν•©λ‹ˆλ‹€.

  • 이처럼 CPU 내뢀에 μ—¬λŸ¬ 개의 λͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμΈμ„ ν¬ν•¨ν•œ ꡬ쑰λ₯Ό 슈퍼슀칼라(superscalar) 라고 ν•©λ‹ˆλ‹€.

λͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμΈμ„ ν•˜λ‚˜λ§Œ λ‘λŠ” 것이 마치 곡μž₯ 생산 라인을 ν•œ 개 λ‘λŠ” 것과 κ°™λ‹€λ©΄, μŠˆνΌμŠ€μΉΌλΌλŠ” 곡μž₯ 생산 라인을 μ—¬λŸ¬ 개 λ‘λŠ” 것과 κ°™μŠ΅λ‹ˆλ‹€.

슈퍼슀칼라 ꡬ쑰둜 λͺ…λ Ήμ–΄ μ²˜λ¦¬κ°€ κ°€λŠ₯ν•œ CPUλ₯Ό 슈퍼슀칼라 ν”„λ‘œμ„Έμ„œ λ˜λŠ” 슈퍼슀칼라 CPU라고 ν•©λ‹ˆλ‹€.

  • 슈퍼슀칼라 ν”„λ‘œμ„Έμ„œλŠ” λ§€ 클럭 μ£ΌκΈ°λ§ˆλ‹€ λ™μ‹œμ— μ—¬λŸ¬ λͺ…λ Ήμ–΄λ₯Ό μΈμΆœν•  μˆ˜λ„, μ‹€ν–‰ν•  μˆ˜λ„ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
    • κ°€λ Ή λ©€ν‹°μŠ€λ ˆλ“œ ν”„λ‘œμ„Έμ„œλŠ” ν•œ λ²ˆμ— μ—¬λŸ¬ λͺ…λ Ήμ–΄λ₯Ό μΈμΆœν•˜κ³ , ν•΄μ„ν•˜κ³ , μ‹€ν–‰ν•  수 있기 λ•Œλ¬Έμ— 슈퍼슀칼라 ꡬ쑰λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

슈퍼슀칼라 ν”„λ‘œμ„Έμ„œλŠ” 이둠적으둜 νŒŒμ΄ν”„λΌμΈ κ°œμˆ˜μ— λΉ„λ‘€ν•˜μ—¬ ν”„λ‘œκ·Έλž¨ 처리 속도가 λΉ¨λΌμ§‘λ‹ˆλ‹€.

  • ν•˜μ§€λ§Œ νŒŒμ΄ν”„λΌμΈ μœ„ν—˜ λ“±μ˜ μ˜ˆμƒμΉ˜ λͺ»ν•œ λ¬Έμ œκ°€ μžˆμ–΄ μ‹€μ œλ‘œλŠ” λ°˜λ“œμ‹œ νŒŒμ΄ν”„λΌμΈ κ°œμˆ˜μ— λΉ„λ‘€ν•˜μ—¬ λΉ¨λΌμ§€μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.
    • 이 λ•Œλ¬Έμ— 슈퍼슀칼라 방식을 μ°¨μš©ν•œ CPUλŠ” νŒŒμ΄ν”„λΌμΈ μœ„ν—˜μ„ λ°©μ§€ν•˜κΈ° μœ„ν•΄ κ³ λ„λ‘œ μ„€κ³„λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
      • μ—¬λŸ¬ 개의 νŒŒμ΄ν”„λΌμΈμ„ μ΄μš©ν•˜λ©΄ ν•˜λ‚˜μ˜ νŒŒμ΄ν”„λΌμΈμ„ μ‚¬μš©ν•  λ•Œ 보닀 데이터 μœ„ν—˜, μ œμ–΄ μœ„ν—˜, μžμ› μœ„ν—˜μ„ ν”Όν•˜κΈ°κ°€ λ”μš± κΉŒλ‹€λ‘­κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

λΉ„μˆœμ°¨μ  λͺ…λ Ήμ–΄ 처리

  • λΉ„μˆœμ°¨μ  λͺ…λ Ήμ–΄ 처리(OoOE: Out-of-order execution): 보톡 OoOE둜 쀄여 λΆ€λ¦…λ‹ˆλ‹€. 이 기법은 λ§Žμ€ μ „κ³΅μ„œμ—μ„œ 닀루지 μ•Šμ§€λ§Œ, μ˜€λŠ˜λ‚  CPU μ„±λŠ₯ ν–₯상에 크게 κΈ°μ—¬ν•œ κΈ°λ²•μ΄μž λŒ€λΆ€λΆ„μ˜ CPUκ°€ μ°¨μš©ν•˜λŠ” κΈ°λ²•μž…λ‹ˆλ‹€.
    • λΉ„μˆœμ°¨μ  λͺ…λ Ήμ–΄ 처리 기법은 μ΄λ¦„μ—μ„œλ„ μ•Œ 수 μžˆλ“― λͺ…령어듀을 순차적으둜 μ‹€ν–‰ν•˜μ§€ μ•ŠλŠ” κΈ°λ²•μž…λ‹ˆλ‹€. λͺ…λ Ήμ–΄μ˜ β€˜ν•©λ²•μ μΈ μƒˆμΉ˜κΈ°β€™λΌκ³  λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

μ§€κΈˆκΉŒμ§€ μ„€λͺ…ν–ˆλ˜ λͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμ΄λ‹, 슈퍼슀칼라 기법은 λͺ¨λ‘ μ—¬λŸ¬ λͺ…λ Ήμ–΄μ˜ 순차적인 처리λ₯Ό μƒμ •ν•œ λ°©λ²•μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

  • ν”„λ‘œκ·Έλž¨μ„ μœ„μ—μ„œ μ•„λž˜λ‘œ μ°¨λ‘€μ°¨λ‘€ μ‹€ν–‰ν•˜λŠ” λ°©μ‹μ΄μ—ˆμŠ΅λ‹ˆλ‹€.
    • ν•˜μ§€λ§Œ νŒŒμ΄ν”„ 라인 μœ„ν—˜κ³Ό 같은 μ˜ˆμƒμΉ˜ λͺ»ν•œ λ¬Έμ œλ“€λ‘œ 인해 μ΄λ”°κΈˆμ”© λͺ…λ Ήμ–΄λŠ” κ³§λ°”λ‘œ μ²˜λ¦¬λ˜μ§€ λͺ»ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€.
    • λ§Œμ•½ λͺ¨λ“  λͺ…λ Ήμ–΄λ₯Ό 순차적으둜만 μ²˜λ¦¬ν•œλ‹€λ©΄ 이런 μ˜ˆμƒμΉ˜ λͺ»ν•œ μƒν™©μ—μ„œ λͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμΈμ€ λ©ˆμΆ°λ²„λ¦¬κ²Œ λ©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ μ•„λž˜μ™€ 같은 λͺ…λ Ήμ–΄λ“€λ‘œ 이루어진 μ†ŒμŠ€ μ½”λ“œκ°€ μžˆλ‹€κ³  ν•΄λ΄…μ‹œλ‹€.

νŽΈμ˜μƒ β€˜λ©”λͺ¨λ¦¬ Nλ²ˆμ§€β€™λŠ” M(N)으둜. β€˜λ©”λͺ¨λ¦¬ Nλ²ˆμ§€μ— M을 μ €μž₯ν•˜λΌβ€™λŠ” M(N) <- M으둜 ν‘œκΈ°ν•˜κ² μŠ΅λ‹ˆλ‹€.

1. M(100) <- 1
2. M(101) <- 2
3. M(103) <- M(100) + M(101)
4. M(150) <- 1
5. M(151) <- 2
6. M(152) <- 3

μ—¬κΈ°μ„œ μ£Όλͺ©ν•΄μ•Ό ν•  점은 3번 λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•΄μ„œλŠ” M(100) 값은 λ¬Όλ‘  M(101) 값이 κ²°μ •λ˜μ–΄μ•Ό ν•˜κΈ°μ— 1번과 2번 λͺ…λ Ήμ–΄ 싀행이 끝날 λ•ŒκΉŒμ§€ κΈ°λ‹€λ €μ•Ό ν•œλ‹€λŠ” μ μž…λ‹ˆλ‹€.

이 λͺ…령어듀을 순차적으둜 μ‹€ν–‰λ˜λŠ” CPU둜 μ‹€ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
2번 λͺ…λ Ήμ–΄ 싀행이 끝날 λ•ŒκΉŒμ§€ 3, 4, 5, 6번 λͺ…령어듀은 κΈ°λ‹€λ¦½λ‹ˆλ‹€.

μ•žμ˜ μ½”λ“œλ₯Ό μ΄λ£¨λŠ” λͺ…λ Ήμ–΄λ“€ 쀑에 μ„œλ‘œ 데이터 μ˜μ‘΄μ„±μ΄ μ „ν˜€ μ—†λŠ”, μˆœμ„œλ₯Ό λ°”κΏ” μ²˜λ¦¬ν•΄λ„ μˆ˜ν–‰ 결과에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠλŠ” λͺ…령어듀이 μžˆμŠ΅λ‹ˆλ‹€.

  • κ°€λ Ή 3λ²ˆμ€ λ‹€μŒκ³Ό 같이 λ’€μ˜ λͺ…령어와 μˆœμ„œλ₯Ό λ°”κΎΈμ–΄ 싀행해도 크게 문제될 것이 μ—†μŠ΅λ‹ˆλ‹€.

μ΄λ ‡κ²Œ μˆœμ„œλ₯Ό λ°”κΏ” μ‹€ν–‰ν•˜λ©΄ μ•„λž˜μ™€ 같이 μˆ˜ν–‰λ©λ‹ˆλ‹€.

  • 순차적으둜 λͺ…λ Ήμ–΄λ₯Ό μ²˜λ¦¬ν•  λ•Œλ³΄λ‹€ 더 νš¨μœ¨μ μž…λ‹ˆλ‹€.
    • μ΄λ ‡κ²Œ λͺ…λ Ήμ–΄λ₯Ό 순차적으둜만 μ‹€ν–‰ν•˜μ§€ μ•Šκ³  μˆœμ„œλ₯Ό λ°”κΏ” 싀행해도 λ¬΄λ°©ν•œ λͺ…λ Ήμ–΄λ₯Ό λ¨Όμ € μ‹€ν–‰ν•˜μ—¬ λͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμΈμ΄ λ©ˆμΆ”λŠ” 것을 λ°©μ§€ν•˜λŠ” 기법을 λΉ„μˆœμ°¨μ  λͺ…λ Ήμ–΄ 처리 기법 이라고 ν•©λ‹ˆλ‹€.

ν•˜μ§€λ§Œ 아무 λͺ…λ Ήμ–΄λ‚˜ μˆœμ„œλ₯Ό λ°”κΏ”μ„œ μˆ˜ν–‰ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄μ„œ λ‹€μŒ μ˜ˆμ‹œλ₯Ό λ΄…μ‹œλ‹€.

1. M(100) <- 1
2. M(101) <- 2
3. M(102) <- M(100) + M(101)
4. M(103) <- M(102) + M(101)
5. M(104) <- M(100)
  • μœ„ μ½”λ“œμ—μ„œ 3번 λͺ…령어와 1번 λͺ…λ Ήμ–΄μ˜ μˆœμ„œλ₯Ό λ°”κΏ€ μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€.
    • 3번 λͺ…λ Ήμ–΄λ₯Ό μˆ˜ν–‰ν•˜λ €λ©΄ λ°˜λ“œμ‹œ M(100) 값이 κ²°μ •λ˜μ–΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.
      • λ§ˆμ°¬κ°€μ§€λ‘œ 4번 λͺ…령어와 1번 λͺ…λ Ήμ–΄λŠ” μˆœμ„œλ₯Ό λ°”κΏ€ 수 μ—†μŠ΅λ‹ˆλ‹€.
        • 1번 λͺ…λ Ήμ–΄λ₯Ό ν† λŒ€λ‘œ 3번 λͺ…λ Ήμ–΄κ°€ μˆ˜ν–‰λ˜κ³ , 3번 λͺ…λ Ήμ–΄λ₯Ό ν† λŒ€λ‘œ 4번이 μˆ˜ν–‰λ˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

ν•˜μ§€λ§Œ μœ„ μ½”λ“œμ—μ„œ 4번 λͺ…령어와 5번 λͺ…λ Ήμ–΄λŠ” μˆœμ„œλ₯Ό λ°”κΎΈμ–΄ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • λ‹€μ‹œ 말해 이 두 λͺ…λ Ήμ–΄λŠ” μ–΄λ–€ μ˜μ‘΄μ„±λ„ 없기에 μˆœμ„œλ₯Ό 바꿔도 전체 ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ νλ¦„μ—λŠ” 영ν–₯이 μ—†μŠ΅λ‹ˆλ‹€.

이처럼 λΉ„μˆœμ°¨μ  λͺ…λ Ήμ–΄ μ²˜λ¦¬κ°€ κ°€λŠ₯ν•œ CPUλŠ” λͺ…령어듀이 μ–΄λ–€ λͺ…령어와 데이터 μ˜μ‘΄μ„±μ„ κ°€μ§€κ³  μžˆλŠ”μ§€, μˆœμ„œλ₯Ό λ°”κΏ” μ‹€ν–‰ν•  수 μžˆλŠ” λͺ…λ Ήμ–΄μ—λŠ” μ–΄λ–€ 것듀이 μžˆλŠ”μ§€λ₯Ό νŒλ‹¨ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

ν‚€μ›Œλ“œλ‘œ μ •λ¦¬ν•˜λŠ” 핡심 포인트

  • λͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμ΄λ‹μ€ λ™μ‹œμ— μ—¬λŸ¬ 개의 λͺ…λ Ήμ–΄λ₯Ό 겹쳐 μ‹€ν–‰ν•˜λŠ” κΈ°λ²•μž…λ‹ˆλ‹€.
  • 슈퍼 μŠ€μΉΌλΌλŠ” μ—¬λŸ¬ 개의 λͺ…λ Ήμ–΄ νŒŒμ΄ν”„λΌμΈμ„ λ‘λŠ” κΈ°λ²•μž…λ‹ˆλ‹€.
  • λΉ„μˆœμ°¨μ  λͺ…λ Ήμ–΄ 처리 기법은 νŒŒμ΄ν”„λΌμΈμ˜ 쀑단을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ λͺ…λ Ήμ–΄λ₯Ό 순차적으둜 μ²˜λ¦¬ν•˜μ§€ μ•ŠλŠ” κΈ°λ²•μž…λ‹ˆλ‹€.