Visitor

Wednesday, December 18, 2013

Penjelasan "REDUCED INSTRUCTION SET COMPUTERS (RISCs)" Wiliam Stalling

Download Document Lengkap (Ada Gambarx) --> [DOWNLOAD] via 4shared.com

"REDUCED INSTRUCTION SET COMPUTERS (RISCs)"

Perkembangan komputer sejak tahun 1950, telah ada sangat sedikit inovasi sejati dalam bidang organisasi komputer dan arsitektur. Berikut ini adalah beberapa kemajuan besar sejak kelahiran komputer :

·         The Family Consept : Diperkenalkan oleh IBM dengan System/360 pada tahun 1964 , diikuti kemudian oleh DEC , dengan PDP - 8 . Satu set komputer yang ditawarkan , dengan harga / kinerja karakteristik yang berbeda , yang menyajikan arsitektur untuk pengguna . Perbedaan harga dan kinerja karena implementasi yang berbeda dari arsitektur yang sama .
·         Microprogrammed Unit Control : Disarankan oleh Wilkes pada tahun 1951 dan diperkenalkan oleh IBM pada S/360 garis pada tahun 1964 . Microprogramming digunakan untuk memudahkan tugas merancang dan menerapkan unit kontrol dan menyediakan dukungan untuk keluarga konsep .
·         Cache Memori : Pertama kali diperkenalkan secara komersial pada IBM S/360 model 85 di 1968. Penyisipan elemen ini ke dalam hirarki memori secara dramatis meningkatkan kinerja .
·         Pipelining : Sebuah cara memperkenalkan paralelisme ke dasarnya berurutan sifat programnya mesin - instruksi . Contohnya adalah instruksi pipelining dan pengolahan vektor
·         Beberapa prosesor : Kategori  ini meliputi sejumlah organisasi dan tujuan yang berbeda .

Karakteristik - Karakteristik Eksekusi       Instruksi

Salah satu evolusi komputer yang paling dirasakan adalah evolusi bahasa pemrograman. Dengan semakin murahnya harga perangkat keras, harga perangkat lunak relatif telah mengalami peningkatan. Pada waktu yang bersamaan, kurangnya pemrogram telah mengakibatkan harga perangkat lunak semakin mahal. Akibatnya, biaya terbesar dalam siklus kehidupan sistem dihabiskan untuk keperluan perangkat lunak, bukannya perangkat keras. Sebagai tambahan terhadap biaya dan ketidaknyamanan tersebut, terdapat elemen ketidakreliabilitasan : adalah suatu hal yang umum bagi program, baik sistem maupun aplikasi, untuk terus mengandung bug-bug baru setelah dioperasikan
beberapa    lama.

Sebagai jawaban dari para peneliti dan industri adalah dengan membuat bahasa program tingkat tinggi (High Level Language – HLL) yang lebih baik dan lebih kompleks. HLL ini memungkinkan pemrogram dapat mengekspresikan algoritma lebih singkat, lebih memperhatikan rincian, dan sering kali mendukung secara alami
penggunaan pemrograman terstruktur.

 Solusi ini menimbulkan masalah lainnya, yang dikenal semantic gaps, yaitu perbedaan antara operasi-operasi yang disediakan HLL dengan operasi yang disediakan oleh arsitektur komputer. Tanda-tanda adanya gaps ini dinyatakan dengan terjadinya ketidakefisienan eksekusi, program mesin yang berukuran besar, dan kompleksitas kompiler. Sebagai contoh implementasi perangkat keras tersebut adalah instruksi mesin CASE pada VAX. Set-set instruksi
kompleks tersebut dimaksudkan untuk  :
   Memudahkan pekerjaan penulis     kompiler
  Meningkatkan efisiensi eksekusi, karena rangkaian operasi yang kompleks dapat
  
   diimplementasikandi dalam     mikrokode
   Memberikan dukungan bagi HLL yang lebih kompleks dan lebih canggih

Tabel Karakteristik Beberapa CISCs, RISCs, dan Prosesor Superscalar


Dengan demikian, untuk memahami RISC, kita akan mengawalinya dengan tinjauan karakteristik eksekusi instruksi, seperti :
• Operasi-operasi yang dilakukan : hal ini menentukan fungsi-fungsi yang akan dilakukan oleh CPU dan interaksinya dengan memori.
• Operand-operand yang digunakan : jenis-jenis operand dan frekuensi pemakaiannya akan menentukan organisasi memori untik  menyimpannya dan mode pengalamatan untuk mengaksesnya.
Pengurutan eksekusi :menentukan kontrol dan organisasi pipeline

Operasi
Beberapa penelitian telah menganalisis tingkah laku program HLL (High Level Language). Assignment Statement sangat menonjol yang menyatakan bahwa perpindahan sederhana merupakan satu hal yang penting. Hasil penelitian ini merupakan hal yang penting bagi perancang set instruksi mesin yang mengindikasikan jenis instruksi mana yang sering terjadi karena harus didukung optimal.

Operand
Penelitian Paterson telah memperhatikan [PATT82a] frekuensi dinamik terjadinya kelas-kelas variabel. Hasil yang konsisten diantara program pascal dan C menunjukkan mayoritas referensi menunjuk ke variable scalar. Penelitian ini telah menguji tingkah laku dinamik program HLL yang tidak tergantung pada arsitektur tertentu. Penelitian  [LUND77] menguji instruksi DEC-10 dan secara dinamik menemukan setiap instruksi rata-rata mereferensi 0,5 operand dalam memori dan rata-rata mereferensi 1,4 register. Tentu saja angka ini tergantung pada arsitektur dan kompiler namun sudah cukup menjelaskan frekuensi pengaksesan operand sehingga menyatakan pentingnya sebuah arsitektur.


Procedure Calls
Dalam HLL procedure call dan return merupakan aspek penting karena merupakan operasi yang membutuhkan banyak waktu dalam program yang dikompalasi sehingga banyak berguna untuk memperhatikan cara implementasi opperasi ini secara efisien. Adapun aspeknya yang penting adalah jumlah parameter dan variabel yang berkaitan dengan prosedur dan kedalaman pensarangan (nesting).
Implikasi
Secara umum penelitian menyatakan terdapat tiga buah elemen yang menentukan karakter arsitektur RISC :
1.    Penggunaan register dalam jumlah besar yang ditunjukan untuk mengotimalkan pereferensian operand.
2.    Diperlukan perhatian bagi perancangan pipelaine instruksi karena tingginya proporsi instruksi pencabangan bersyarat dan procedure call, pipeline instruksi yang bersifat langsung dan ringkas menjadi tidak efisien
3.    Terdapat set instruksi yang disederhanakan

Penggunaan File Register Besar
Alasan bahwa penyimpanan mendaftar ditunjukkan adalah bahwa itu adalah perangkat penyimpanan yang tersedia tercepat, lebih cepat dari kedua memori utama dan cache. Register file secara fisik kecil, pada chip yang sama dengan ALU dan unit kontrol, dan mempekerjakan alamat jauh lebih pendek daripada alamat untuk cache dan memori. Dengan demikian, strategi yang diperlukan yang akan memungkinkan operan paling sering diakses akan disimpan dalam register dan meminimalkan operasi mendaftar-memori.
Dua pendekatan dasar yang mungkin, yang didasarkan pada perangkat lunak dan perangkat keras lainnya pada. Pendekatan perangkat lunak mengandalkan kompiler untuk memaksimalkan penggunaan mendaftar. Compiler akan mencoba untuk mengalokasikan register untuk variabel-variabel yang akan digunakan paling dalam periode waktu tertentu. Pendekatan ini memerlukan penggunaan algoritma program analisis canggih. Pendekatan hardware hanya untuk menggunakan lebih register sehingga variabel yang lebih dapat diselenggarakan di register untuk waktu yang cukup lama
Pada bagian ini, kita akan membahas pendekatan hardware. Pendekatan ini telah dirintis oleh kelompok Berkeley RISC [PATT82a]; digunakan dalam produk pertama RISC komersial, Piramida [RAGA83], dan saat ini digunakan dalam SPARC populer arsitektur.
Register Windows
 penggunaan satu set besar register harus mengurangi kebutuhan untuk mengakses tugas desain memory.The adalah untuk mengatur register sedemikian rupa bahwa tujuan ini direalisasikan.
Karena kebanyakan referensi operan harus skalar lokal, pendekatan yang jelas adalah untuk menyimpan ini dalam register, dengan mungkin beberapa register disediakan untuk variabel global. Masalahnya adalah bahwa definisi perubahan lokal dengan setiap prosedur panggilan dan kembali, perations yang sering terjadi. Pada setiap panggilan, variabel lokal harus diselamatkan dari register ke memori, sehingga register dapat digunakan kembali oleh program yang disebut. Selanjutnya, parameter harus dilalui. Setelah kembali, variabel program induk harus dikembalikan (dimuat kembali ke register) dan hasil harus diteruskan kembali ke program induk.
Solusi ini berbasis pada dua hasil lainnya dilaporkan dalam Pasal 13.1. Pertama, prosedur yang khas hanya mempekerjakan beberapa parameter yang dikirimkan dan variabel lokal (Tabel 13.4). Kedua, kedalaman aktivasi prosedur berfluktuasi dalam kisaran yang relatif sempit (Gambar 4.21). Untuk mengeksploitasi sifat ini, beberapa set kecil register yang digunakan, masing-masing ditugaskan ke prosedur yang berbeda. Sebuah panggilan prosedur otomatis beralih prosesor untuk menggunakan tetap-ukuran yang berbeda dari register windos, daripada tabungan register di memori. windows untuk prosedur yang berdekatan tumpang tindih untuk memungkinkan parameter passing
Konsep ini diilustrasikan pada Gambar 13.1. Pada setiap saat, hanya satu windows register terlihat dan beralamat seolah-olah itu adalah satu-satunya set register (misalnya, alamat 0 sampai N - 1). Windows akan dibagi menjadi tiga area berukuran tetap. Register Parameter menyimpan parameter diturunkan dari prosedur yang disebut prosedur saat ini dan terus hasil yang akan dilalui kembali. Register lokal digunakan untuk variabel lokal, seperti yang diberikan oleh register compiler.Temporary digunakan untuk bertukar parameter dan hasil dengan tingkat yang lebih rendah berikutnya (prosedur yang disebut oleh prosedur saat). Register sementara di satu tingkat secara fisik sama dengan parameter register di depan
menurunkan tingkat. Ini tumpang tindih memungkinkan parameter yang akan berlalu tanpa gerakan yang sebenarnya dari data. Perlu diingat bahwa, kecuali untuk tumpang tindih, register pada dua tingkatan yang berbeda secara fisik berbeda. Artinya, parameter dan lokal register di tingkat J adalah memisah dari register lokal dan sementara di tingkat J-1
Untuk menangani setiap pola yang mungkin dari panggilan dan kembali, jumlah register windows itu harus tak terbatas. Sebaliknya, register windows dapat digunakan untuk menyimpan beberapa aktivasi prosedur terbaru. Aktivasi tua harus disimpan dalam memori dan kemudian dikembalikan ketika kedalaman bersarang menurun. Dengan demikian, organisasi sebenarnya dari file register sebagai penyangga melingkar windows yang tumpang tindih. Dua contoh penting dari pendekatan ini adalah Sun SPARC arsitektur, dijelaskan dalam Bagian 13.7, dan arsitektur IA-64 yang digunakan dalam prosesor Intel Itanium, yang telah diuraikan dalam Bab 21.
Organisasi melingkar ditunjukkan pada Gambar 13.2, yang menggambarkan lingkaran buffer dari enam windows. Buffer penuh hingga kedalaman 4 (A disebut B, B disebut C, C disebut D) dengan prosedur D aktif current-windows pointer (CWP) poin ke windows dari prosedur yang sedang aktif. Daftar referensi oleh instruksi mesin diimbangi dengan pointer ini untuk menentukan register fisik yang sebenarnya. Windows disimpan pointer (SWP) mengidentifikasi windows paling baru disimpan dalam memori. Jika prosedur D sekarang memanggil prosedur E, argumen untuk E ditempatkan dalam register sementara D's (tumpang tindih antara w3 dan w4) dan CWP yang dikemukakan oleh satu windows.

Jika prosedur E kemudian membuat panggilan ke prosedur F, panggilan tidak dapat dibuat dengan status buffer.This adalah karena F jendela tumpang tindih A jendela. Jika F mulai memuat register sementaranya, persiapan panggilan, ia akan menimpa parameter register A (A.in). Jadi, ketika CWP bertambah (modulo 6) sehingga menjadi sama dengan SWP, interupsi terjadi, dan A window disimpan. Hanya pertama dua porsi (A.in dan A.loc) perlu menjadi saved.Then, SWP bertambah dan panggilan untuk F hasil. Sebuah interupsi yang sama dapat terjadi pada hasil. Misalnya, setelah aktivasi F, ketika B kembali ke A, CWP decremented dan menjadi sama dengan SWP.This menyebabkan interupsi yang mengakibatkan pemulihan A window
Dari sebelumnya, dapat dilihat bahwa N-jendela mendaftar file yang dapat menyimpan hanya N-1 prosedur aktivasi. Nilai N tidak perlu besar. Seperti disebutkan dalam Lampiran 4A, satu studi [TAMI83] menemukan bahwa, dengan 8 jendela, menyimpan atau mengembalikan diperlukan pada hanya 1% dari panggilan atau kembali. The Berkeley RISC komputer menggunakan 8 jendela dari 16 register masing-masing. Komputer Piramida mempekerjakan 16 jendela dari 32 register masing-masing.

Variabel Global
Skema window baru saja dijelaskan memberikan organisasi yang efisien untuk menyimpan variabel skalar lokal dalam register. Namun, skema ini tidak membahas kebutuhan untuk menyimpan variabel global, yang diakses oleh lebih dari satu prosedur. Dua pilihan sarankan sendiri. Pertama, variabel yang dideklarasikan sebagai global dalam sebuah HLL dapat diberikan lokasi memori oleh kompilator, dan semua instruksi mesin yang referensi variabel-variabel akan menggunakan operan memori referensi. Ini sangat mudah, baik dari perangkat keras dan perangkat lunak (compiler) sudut pandang. Namun, untuk variabel global sering diakses, skema ini tidak efisien.
Sebuah alternatif adalah untuk menggabungkan satu set register global dalam prosesor. Ini register akan tetap dalam jumlah dan tersedia untuk semua prosedur. Skema penomoran terpadu dapat digunakan untuk menyederhanakan format instruksi. Sebagai contoh, referensi untuk register 0 sampai 7 bisa merujuk pada register global yang unik, dan referensi ke register 8 sampai 31 bisa diimbangi untuk merujuk register fisik di jendela saat ini. Ada beban hardware meningkat untuk mengakomodasi perpecahan dalam menangani mendaftar. Selain itu, compiler harus menentukan variabel global harus diserahkan kepada register.
Large Register File versus Cache
Register File, disusun dalam windows, bertindak sebagai kecil, penyangga cepat untuk memegang subset dari semua variabel yang mungkin untuk digunakan yang paling berat. Dari sudut pandang ini, register file bertindak seperti memori cache, meskipun memori jauh lebih cepat. Pertanyaan itu muncul, apakah itu akan lebih sederhana dan lebih baik untuk menggunakan cache dan register file kecil tradisional
Tabel 13.5 membandingkan karakteristik dari dua pendekatan. Windows-based register file memegang semua variabel skalar lokal (kecuali dalam kasus yang jarang jendela overflow) dari aktivasi N-1 prosedur terbaru. Cache memegang pemilihan variabel skalar baru digunakan. Register file harus menghemat waktu, karena semua variabel skalar lokal dipertahankan. Di sisi lain, cache dapat membuat lebih efisien penggunaan ruang, karena bereaksi terhadap situasi dinamis. Selanjutnya, cache
umumnya memperlakukan semua referensi memori sama, termasuk instruksi dan jenis data lainnya. Dengan demikian, penghematan di daerah-daerah lain yang mungkin dengan cache dan bukan register file.
Sebuah register file dapat menggunakan tidak efisien ruang, karena tidak semua prosedur akan membutuhkan ruang penuh jendela yang dialokasikan kepada mereka. Di sisi lain, cache menderita jenis lain inefisiensi: Data yang dibaca ke dalam cache di blok. Sedangkan register file hanya berisi variabel yang digunakan, cache membaca dalam sebuah blok data, beberapa atau banyak yang tidak akan digunakan.
Cache mampu menangani global serta variabel lokal. Biasanya ada banyak skalar global, tetapi hanya sedikit dari mereka yang banyak digunakan [KATE83]. Cache secara dinamis akan menemukan variabel tersebut dan menahan mereka. Jika register file berbasis window dilengkapi dengan register global, juga bisa memegang beberapa skalar global. Namun, sulit bagi compiler untuk menentukan GLOBALS akan banyak digunakan.
Dengan register file, pergerakan data antara register dan memori ditentukan oleh kedalaman prosedur bersarang. Karena kedalaman ini biasanya berfluktuasi dalam kisaran yang sempit, penggunaan memori relatif jarang terjadi. Kebanyakan cache memori diatur asosiatif dengan size.Thus set kecil, ada bahaya bahwa data atau instruksi lain akan menimpa variabel yang sering digunakan.
Berdasarkan diskusi sejauh ini, pilihan antara berbasis jendela register file besar dan cache yang tidak jelas. Ada satu karakteristik, namun, di mana pendekatan mendaftar jelas unggul dan yang menunjukkan bahwa sistem berbasis cache akan terasa lebih lambat. Perbedaan ini muncul dalam jumlah mengatasi overhead yang dialami oleh dua pendekatan.
Gambar 13.3 mengilustrasikan perbedaan. Untuk referensi skalar lokal dalam register file windowbased, "virtual" nomor register dan sejumlah jendela yang digunakan. Ini dapat melewati decoder relatif sederhana untuk memilih salah satu register fisik. Untuk referensi lokasi memori dalam cache, alamat memori penuh-lebar harus dibangkitkan. Kompleksitas operasi ini tergantung pada mode pengalamatan. Dalam cache asosiatif set, sebagian dari alamat digunakan untuk membaca sejumlah kata dan tag sama dengan ukuran set. Bagian lain dari alamat dibandingkan dengan tag, dan salah satu kata-kata yang dibaca dipilih. Harus jelas bahwa bahkan jika cache secepat register file, waktu akses akan jauh lebih lama. Dengan demikian, dari sudut pandang kinerja, register file berbasis window lebih unggul untuk skalar lokal. Selanjutnya peningkatan kinerja dapat dicapai dengan penambahan cache untuk petunjuk saja.

0 komentar

Post a Comment