EMZETT.
Giriş yap

İşlemci ardışık düzeni (CPU pipeline)

Kısaca: Bir işlemci ardışık düzeni (pipeline), bir komutun yürütülmesini, bir montaj hattı gibi farklı komutlar üzerinde aynı anda çalışan birkaç aşamaya böler. Böylece her komut birkaç çevrim gerektirse bile ideal olarak çevrim başına bir komut tamamlanır.

Biraz daha ayrıntılı: Bir komutu tamamen bitirip sonrakine başlamak yerine işlemci adımları üst üste bindirir. Komut 1 yürütülürken komut 2 zaten çözülür ve komut 3 getirilir. Bu, verimi artırır ve her aşamanın işi azaldığından daha yüksek saatlere izin verir.

Ayrıntılı

Klasik 5 aşama (RISC):

AşamaGörev
IF (instruction fetch)Komutu bellekten/önbellekten getir
ID (instruction decode)Komutu çöz, yazmaçları oku
EX (execute)ALU’da hesapla
MEM (memory)Belleği oku/yaz
WB (write back)Sonucu yazmaca yaz
Çevrim:   1   2   3   4   5   6   7
Komut 1:  IF  ID  EX  MEM WB
Komut 2:      IF  ID  EX  MEM WB
Komut 3:          IF  ID  EX  MEM WB

Isınma sonrasında, 5. çevrimden itibaren her çevrimde bir komut tamamlanır.

Sorunlar (hazard’lar):

  • Veri bağımlılığı: Bir komut, öncekinin sonucuna ihtiyaç duyar. Çözüm: ileri besleme (forwarding) veya kısa bir bekleme (stall).
  • Yapısal hazard: İki aşama aynı birime aynı anda ihtiyaç duyar.
  • Denetim hazard’ı (dallanmalar): Bir dallanmada hangi komutların geleceği bilinmez. Dallanma tahmini tahmin yürütür. Yanlış tahminde yanlış yüklenen komutlar atılır (“pipeline flush”, 10 – 20 çevrim kaybettirir).

Gelişmeler:

  • Süperskaler: Paralel birkaç ardışık düzen, çevrim başına birkaç komut.
  • Sırasız yürütme (out-of-order): Veri hazır olur olmaz komutlar yeniden sıralanır.
  • Derin ardışık düzenler: Intel Pentium 4’ün 31 aşaması vardı; yüksek saatler getirdi ama yanlış tahminler pahalıydı. Modern çekirdeklerde yaklaşık 14 – 20 aşama vardır.

Neden önemli? Ardışık düzenler, tahmin edilemez çok sayıda dallanmalı kodun neden daha yavaş olduğunu ve IPC’nin (çevrim başına komut) neden yalnızca GHz’ten daha önemli olduğunu açıklar.

Ayrıca bak: Sırasız yürütme (out-of-order execution), İşlemci yapısı: yürütme birimleri ve önbellek, x86-64 ve ARM64