Sunday, December 25, 2016

Pipelining & RISC

Pipelining

        Pipelining adalah teknik yang digunakan untuk meningkatkan throughput eksekusi CPU dengan menggunakan sumber daya prosesor dengan cara yang lebih efisien.
         Ide dasarnya adalah untuk membagi instruksi prosesor menjadi serangkaian tahapan independen kecil. Setiap tahap dirancang untuk melakukan bagian tertentu dari instruksi. Pada tingkat yang sangat dasar, tahap ini dapat dipecah menjadi:
1.       Fetch unit : Mengambil instruksi dari memori
2.       Decode unit : Membaca sandi instruksi yang dieksekusi
3.       Execute unit :  Mengeksekusi instruksi
4.       Write unit : Menulis hasil kembali untuk mendaftar atau memori


        Pada CPU non-pipelined, ketika instruksi sedang diproses pada tahap tertentu, tahap lainnya berada pada keadaan idle - yang sangat tidak efisien. Jika Anda melihat diagram, ketika instruksi 1 sedang diterjemahkan, Fetch, Execute dan Write Unit CPU tidak digunakan dan dibutuhkan 8 jam siklus untuk mengeksekusi 2 instruksi.
         Di sisi lain, pada CPU pipelined, semua tahapan bekerja secara paralel. Ketika instruksi pertama sedang diterjemahkan oleh Unit Decoder, instruksi kedua sedang diambil oleh fetch unit. Hanya membutuhkan waktu 5 siklus clock untuk mengeksekusi 2 instruksi pada CPU pipelined.
         Perhatikan bahwa peningkatan jumlah tahap dalam pipeline tidak akan selalu menghasilkan peningkatan eksekusi. Pada CPU non-pipelined, instruksi hanya bisa mengambil 3 siklus, tetapi pada CPU pipelined itu bisa mengambil 4 siklus karena tahapan yang berbeda yang terlibat. Oleh karena itu, satu instruksi mungkin memerlukan siklus clock yang lebih untuk mengeksekusi pada CPU pipelined. Tapi waktu yang dibutuhkan untuk menyelesaikan eksekusi beberapa instruksi mendapat lebih cepat di CPU pipelined. Jadi perlu ada keseimbangan di antaranya.
         Salah satu komplikasi utama dengan pipelining dalam (misalnya, 31-tahap pipelining digunakan di beberapa Intel Pentium 4 prosesor) adalah ketika sebuah instruksi cabang bersyarat sedang dieksekusi. Karena fakta bahwa prosesor tidak akan dapat menentukan lokasi dari instruksi berikutnya, oleh karena itu harus menunggu instruksi cabang untuk menyelesaikan dan seluruh pipeline mungkin perlu diflush sebagai hasilnya. Jika sebuah program memiliki banyak instruksi cabang bersyarat, pipelining bisa memiliki efek negatif pada kinerja secara keseluruhan. Untuk mengatasi masalah ini, prediksi cabang dapat digunakan, tetapi ini juga dapat memiliki efek negatif jika cabang-cabang diperkirakan salah.


RISC (Reduced Instruction Set Computer)

RISC, yang jika diterjemahkan berarti “Komputasi Kumpulan Instruksi yang Disederhanakan”,
         Merupakan sebuah arsitektur komputer atau arsitektur komputasi modern dengan instruksi-instruksi dan jenis eksekusi yang paling sederhana.
         Arsitektur ini digunakan pada komputer dengan kinerja tinggi, seperti komputer vektor. Selain digunakan dalam komputer vektor, desain ini juga diimplementasikan pada prosesor komputer lain, seperti pada beberapa mikroprosesor Intel 960, Itanium (IA64) dari Intel Corporation, Alpha AXP dari DEC, R4x00 dari MIPS Corporation, PowerPC dan Arsitektur POWER dari International Business Machine. 
         Selain itu, RISC juga umum dipakai pada Advanced RISC Machine (ARM) dan StrongARM (termasuk di antaranya adalah Intel XScale), SPARC dan UltraSPARC dari Sun Microsystems, serta PA-RISC dari Hewlett-Packard.
         Prosesor RISC hanya menggunakan instruksi-instruksi sederhana yang bisa dieksekusi dalam satu siklus. Dengan demikian, instruksi ‘MULT’ sebagaimana dijelaskan sebelumnya dibagi menjadi tiga instruksi yang berbeda, yaitu “LOAD”, yang digunakan untuk memindahkan data dari memori ke dalam register, “PROD”, yang digunakan untuk melakukan operasi produk (perkalian) dua operan yang berada di dalam register (bukan yang ada di memori) dan “STORE”, yang digunakan untuk memindahkan data dari register kembali ke memori. 
         Berikut ini adalah urutan instruksi yang harus dieksekusi agar yang terjadi sama dengan instruksi “MULT” pada prosesor RISC (dalam 4 baris bahasa mesin):
LOAD A, 2:3 
LOAD B, 5:2
PROD A, B
STORE 2:3, A

         Semakin banyak baris instruksi, semakin banyak lokasi RAM yang dibutuhkan untuk menyimpan instruksi-instruksi tersebut. Kompailer juga harus melakukan konversi dari bahasa tingkat tinggi ke bentuk kode instruksi 4 baris tersebut.

REFERENSI

No comments:

Post a Comment