Intel 80486
Prosesor Intel 80486
memiliki pipeline dengan 5 tahap,
antara lain adalah sebagai berikut :
- Fetch
o
Dari cache atau memori eksternal
o
Memakai
salah satu dari dua prefetch buffer
yang masing-masing berukuran 16 byte
o
Mengisi buffer dengan data baru seketika setelah
data lama selesai digunakan
o
Rata-rata
dapat mengambil 5 instruksi untuk sekali operasi
o
Bersifat
independen dari tahap lain supaya buffer dapat tetap penuh
- Decode stage 1 (D1)
o
Informasi
opcode dan mode pengalamatan memori
o
Paling
banyak mengambil 3 byte pertama dari sebuah instruksi
o
Mendelegasikan
kepada Decode stage 2 untuk mengambil
sisa instruksi
- Decode stage 2 (D1)
o
Mengembangkan
opcode menjadi sinyal kontrol
o
Perhitungan
untuk mode pengalamatan yang kompleks
- Execute (EX)
o
Operasi
ALU, akses cache, update register
- Writeback (WB)
o
Update
register dan flag
o
Hasilnya
dikirim ke write buffer untuk cache dan bus interface
Berikut adalah
beberapa contoh instruksi dan eksekusinya pada pipeline.
Pipeline without Delay for Load |
Pipeline with Delay for Pointer |
Intel Xeon
Pada keluarga processor Intel Xeon, Intel
memperkenalkan sebuah teknologi baru untuk meningkatkan performa processor yang
disebut Hyper-Threading. Hyper-Threading mengutilisasi thread-level parallelism
di mana sebuah processor dapat menjalankan 2 buah thread secara simultan tanpa
switching (simultaneous threading).
Adanya pendekatan thread-level parallelism
pada Intel Xeon berpengaruh bagaimana pipelining pada physical processor Intel
Xeon dilakukan. Berikut merupakan penjabaran bagaimana pipelining pada Intel Xeon
dilakukan.
Pipelining in Intel Xeon |
Secara umum, proses pipelining dibagi menjadi
2 (dua) bagian yakni Front-End dan Out-of-order Execution. Berikut tahap yang terlibat
pada Front-End.
Fetch
Di tahap ini instruksi diambil dari sumbernya.
Sumber utama instruksi adalah L1 cache, atau dalam proses pipelining ini
disebut sebagai Execution Trace Cache (TC). Instruksi yang disimpan pada TC
berupa microcode (uops). TC memiliki kemampuan untuk memanggil Microcode ROM
yang berisi sekumpulan rangkaian uops yang merupakan breakdown dari instruksi
yang lebih kompleks. Ketika akses L1 miss, maka pengambilan instruksi harus
dilakukan ke L2 cache. Semua instruksi yang sudah berada di dalam TC nantinya
akan dimasukkan ke dalam uops queue untuk menunggu di proses di Out-of-order
Engine.
Fetch |
Decode
Ketika akses instruksi harus menuju L2, maka
perlu dilakukan decoding terlebih dahulu sebelum instruksi pada L2 bisa
disimpan ke TC sebagai uops. Setelah selesai di-decode, uops yang sudah ada
akan disimpan ke dalam TC. Di sini instruksi di breakdown, dilakukan prediksi
untuk branch, disimpan ke dalam TC, dan di forward ke uop queue
Decode |
Setelah uops berada di dalam queue,
Out-of-order Engine akan mengambil uops yang masuk seketika uops siap untuk
dieksekusi, tanpa memedulikan urutan eksekusi dari program aslinya.
Berikut tahap-tahap yang terjadi pada
Out-of-order Engine
1.
Allocator dan Register Rename
Pada tahap ini uop yang masuk ke dalam engine
akan dialokasikan ke dalam key machine buffer, yang selanjutnya akan direname
alamat buffer nya menjadi alamat memory fisik. Setelah uop selesai dialokasi
dan diubah alamatnya, mereka akan dimasukkan ke dalam queue yang berbeda
tergantung tipe operasinya. Queue pertama untuk operasi memory, queue lainnya
untuk operasi non-memory.
2.
Schedulling
Pada tahap ini uop yang sudah berada di dalam
queue dischedule ke exection unit yang tersedia. Schedulling dari masing-masing
uop bergantung dari ketersediaan input dari uop serta ketersediaan sumber daya
exection unit.
3.
Exection
Di sini uop dieksekusi oleh unit yang ada dengan
memanfaatkan alamat fisik yang sudah diberikan serta input yang telah tersedia.
Di sini juga hasil dari eksekusi disimpan ke dalam register file serta
dimungkinkan untuk melakukan forward result.
4.
Retirement
Pada tahap ini uop dikembalikan berdasarkan urutan
eksekusi program aslinya. Data dari uop yang sudah selesai diistirahatkan
dikembalikan lagi ke L1 cache
Retirement |
AMD Athlon x86
Jumlah Stage Pipeline:
- 10 untuk Integer Pipeline
- 15 untuk Floating Point Pipeline
Pipeline in AMD Athlon x86 |
Penanganan Branch:
- 2048 branching address untuk branch target buffer (BTB)
- 4096 branching address untuk branch history table (BHT)
- Kesuksesan prediksi branch 95%
- Penalti dari kesalahan prediksi: 9 cycles.
No comments:
Post a Comment