06 December 2013

Cara Kerja Processor Part 3

Branching
Salah satu dari masalah utama processor adalah terlalu banyak cache yang hilang karena fetch unit harus mengakses langsung RAM yang lambat, hal tersebut membuat kinerja sistem menjadi lambat. Biasanya penggunaan cache memory bisa menghidari hal ini namun ada kondisi tertentu dimana cache controller akan miss atau kondisi dimana data tidak ada di cache.

Jika pada pada pertengahan program ada sebuah instruksi yang disebut JMP (jump atau go to) mengirim program ke posisi memori yang berbeda, maka posisi ini tidak akan dimuat di cache memori L2, sehingga membuat fetch unit harus ke posisi tersebut langsung ke RAM. Untuk mengatasi masalah ini cache controller dari processor menganalisa blok memori, memuatnya dan kapanpun ketika ditemukan JMP maka memori blok akan dimuat ke L2 pada posisi tersebut sebelum processor mencapai instruksi JMP. Masalah selanjutnya adalah ketika sebuah program mempunyai kondisi branching misalnya alamat yang harus dituju sebuah program tergantung pada sebuah kondisi yang belum diketahui. Misal jika a=b pergi ke alamat 2. Pada gambar dibawah ini akan terjadi miss (data tidak ada di cache) karena nilai dari a dan b tidak diketahui dan cache controllet hanya akan mencari instruksi JMP. Solusinya adalah cache controllet memuat kedua kondisi ke cache memori kemudian ketika processor memproses insruksi braching maka salah satu informasi yang tidak dipilih akan diabaikan. Memuat data yang tidak diperlukan ke cache memori lebih baik daripada mengakses data secara langsung ke RAM.
Memproses Instruksi
Fetch unit bertanggung jawab dalam memuat perintah dari memori. Pertama, fetch unit akan mencari perintah yang dibutuhkan oleh processor ada di instruction cache L1. Jika tidak ada maka akan pergi ke cache memori L2, jika tidak ada juga maka perintah harus langsung dimuat dari RAM. Ketika anda pertama kali menghidupkan komputer maka semua cache memori masih dalam keadaan kosong dan pada saat sistem operasi komputer mulai dimuat maka prossor akan mulai menjalankan perintah pertama yang dimuat dari hard disk dan cache controllet mulai memuat caches.

Setelah fetch unit mendapatkan perintah yang dibutuhkan oleh processor maka fetch unit akan mengirimnya ke unit decode yang akan menterjemahkan perintah tersebut. Proses ini dilakukan melalui sebuah ROM memori yang ada didalam processor yang disebut microcode. Setiap perintah yang dimengerti oleh processor mempunyai microcode masing-masing. Microcode akan memberitahu processor apa yang harus dilakukan seperti instruksi step by step. Jika perintahnya adalah a+b maka microcode akan memberitahu decode untit bahwa dua parameter dibutuhkan yaitu a dan b. Decode unit kemudian akan meminta fetch unit untuk mengambil data di dua posisi memori berikutnya yang sesuai dengan nilai a dan b. Setelah decode unit menterjemahkan perintah dan medapatkan semua data untuk menjalankan perintah, semua data akan dikirim ke execute unit. Execute unit kemudian akan menjalankan perintah tersebut. Pada processor modern seperti saat ini anda akan menemukan lebih dari execution unit yang bekerja secara paralel. Ini bertujuan untuk meningkatkan kinerja processor, contohnya sebuah processor dengan enam execution unti bisa menjalankan enam perintah secara paralel sehingga secara teori hal tersebut sama dengan kinerja enam processor dengan satu execution unit masing-masing. Arsitektur seperti ini disebut dengan istilah seperscalar.

 Pada processor modern biasanya tidak mempunyai beberapa execution unit yang identik, melainkan mempunyai execution unit yang khusus untuk menjalankan perintah tertentu. Contoh teraiknya FPU (Float Point Unit) yang bertanggung jawab menjalankan perintah perhitungan yang kompleks. Biasanya antara decode unit dan execution unit ada sebuah unit yang disebut disptach atau schedule unit yang bertanggung jawab mengirim perintah ke execution unit yang benar. contoh, jika perintahnya berupa perintah perhitungan maka schedule unti akan mengirim perintah tersebut ke FPU bukan ke generic execution unit. Generic execution unit disebut ALU, Arithmetic and Logic Unit.

Ahirnya, ketika proses selesai hasilnya akan dikirim ke data cache L1. Hasil tersebut kemudian bisa dikirim kembali ke RAM atau tempat lain seperti video card dan lain-lain. Namun ini tergantung pada jenis perintah yang akan diproses selanjutnya. 

Labels:

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home