Rabu, 04 Januari 2017

REDUCED INSTRUCTION SET COMPUTERS

MENGURANGI INTRUKSI KOMPUTER SETTING



15.1 Instruksi Karakteristik Eksekusi
                Operasi
                operan
                prosedur Panggilan
                Implikasi
15.2 Penggunaan Register Besar File
                Windows register
                Variabel global
                Besar Daftar Berkas vs Cache
                Daftar Optimization Berbasis Compiler 

15,3 Compiler berbasis register optimalisasi
15,4 Reduced Instruction Set Architecture
                Mengapa CISC
                Karakteristik Reduced Instruction Set Arsitektur
                CISC vs RISC Karakteristik
                15,5 RISC Pipelining
                Pipelining dengan Regular Instruksi
                Optimasi Pipelining

15,6 MIPS R4000
                instruksi Set
                instruksi Pipeline
15,7 SPARC
                SPARC Register Set
                instruksi Set
                instruksi Format
15,8 RISC vs Kontroversi CISC
15,9 Direkomendasikan Reading
15.10 Ketentuan Key, Ulasan Pertanyaan, dan Masalah


BAB 15 / MENGURANGI INSTRUKSI KOMPUTER SET

                 Karena perkembangan komputer disimpan-program sekitar tahun 1950, telah adatelah sangat sedikit inovasi yang benar di bidang organisasi komputer danArsitektur. Berikut ini adalah beberapa kemajuan besar sejak kelahirankomputer:• Konsep keluarga: Diperkenalkan oleh IBM dengan System / 360 tahun 1964, diikutilama kemudian oleh Desember, dengan yang PDP-8. Konsep keluarga decouplesarsitektur mesin dari pelaksanaannya. Satu set komputer yang ditawarkan,dengan karakteristik harga / kinerja yang berbeda, yang menghadirkan arsitektur yang samakepada pengguna. Perbedaan harga dan kinerja adalah karena berbedaimplementasi dari arsitektur yang sama.• microprogrammed unit kontrol: Disarankan oleh Wilkes pada tahun 1951 dan memperkenalkanoleh IBM pada baris S / 360 pada tahun 1964. microprogramming memudahkan tugas merancangdan melaksanakan unit kontrol dan memberikan dukungan bagi keluargakonsep.• memori Cache: Pertama kali diperkenalkan secara komersial pada IBM S / 360 Model 85 di1968. penyisipan elemen ini ke dalam hirarki memori secara dramatismeningkatkan kinerja.• Pipelining: Sebuah cara memperkenalkan paralelisme ke dasarnya berurutansifat program mesin-instruksi. Contohnya adalah instruksi pipeliningdan pengolahan vektor.• Beberapa prosesor: Kategori ini mencakup sejumlah organisasi yang berbedadan tujuan.• Mengurangi set instruksi komputer (RISC) arsitektur: ini adalah fokusBab ini.Ketika muncul, arsitektur RISC adalah keberangkatan dramatis daritren sejarah dalam arsitektur prosesor. Sebuah analisis dari arsitektur RISCmembawa ke fokus banyak isu penting dalam organisasi komputer danArsitektur.


15,1 / INSTRUKSI PELAKSANAAN KARAKTERISTIK
                 Meskipun RISC arsitektur telah ditetapkan dan dirancang dalam berbagaicara oleh kelompok-kelompok yang berbeda, elemen kunci bersama dengan desain paling adalah:• Sejumlah besar register tujuan umum, dan / atau penggunaan compilerteknologi untuk mengoptimalkan penggunaan daftar• Sebuah terbatas dan sederhana set instruksi• Penekanan pada optimalisasi pipa instruksiTabel 15.1 membandingkan beberapa sistem RISC dan non-RISC.Kita mulai bab ini dengan survei singkat dari beberapa hasil pada set instruksi,dan kemudian memeriksa masing-masing tiga topik hanya terdaftar. Ini diikuti dengan deskripsidua dari desain RISC terbaik-didokumentasikan.15.1 INSTRUKSI KARAKTERISTIK PELAKSANAANSalah satu bentuk yang paling terlihat dari evolusi yang terkait dengan komputer adalah bahwa pemrogramanbahasa. Karena biaya hardware telah menurun, biaya relatif perangkat lunaktelah meningkat. Seiring dengan itu, kekurangan kronis programmer telah didorongbiaya perangkat lunak secara absolut. Dengan demikian, biaya utama dalam siklus hidup sistem adalahsoftware, tidak keras. Menambah biaya, dan untuk ketidaknyamanan ini, adalah elementidak dapat diandalkan: itu adalah umum untuk program, baik sistem dan aplikasi, untuk melanjutkanmenunjukkan bug baru setelah tahun beroperasi.Tanggapan dari peneliti dan industri telah mengembangkan yang lebihbahasa pemrograman tingkat tinggi yang kuat dan kompleks. Ini bahasa tingkat tinggi(Hlls): (1) memungkinkan programmer untuk mengekspresikan algoritma yang lebih ringkas,(2) memungkinkan compiler untuk mengurus rincian yang tidak penting dalam programmerekspresi algoritma, dan (3) sering mendukung secara alami penggunaan terstrukturpemrograman dan / atau desain berorientasi objek.Sayangnya, solusi ini menimbulkan masalah yang dirasakan, yang dikenal sebagai semantikkesenjangan, perbedaan antara operasi yang disediakan di Hlls dan yang disediakandalam arsitektur komputer. Gejala gap ini diduga termasuk eksekusiinefisiensi, ukuran program mesin yang berlebihan, dan kompleksitas compiler. desainermenanggapi dengan arsitektur dimaksudkan untuk menutup kesenjangan ini. Fitur utama termasuk besarset instruksi, puluhan mode pengalamatan, dan berbagai pernyataan HLL dilaksanakandi hardware. Contoh yang terakhir adalah instruksi mesin CASE padaVAX. set instruksi yang kompleks tersebut dimaksudkan untuk• Kemudahan tugas penulis compiler.• Meningkatkan efisiensi eksekusi, karena urutan kompleks operasi dapatdiimplementasikan dalam microcode.• Memberikan dukungan untuk Hlls bahkan lebih kompleks dan canggih.Sementara itu, sejumlah penelitian telah dilakukan selama bertahun-tahun untuk menentukankarakteristik dan pola pelaksanaan instruksi mesin yang dihasilkandari program HLL. Hasil studi ini terinspirasi beberapa peneliti untuk melihatuntuk pendekatan yang berbeda: yaitu untuk membuat arsitektur yang mendukung HLLsederhana, daripada lebih kompleks.






15,1 / INSTRUKSI PELAKSANAAN KARAKTERISTIS
                     Untuk memahami garis penalaran dari para pendukung RISC, kita mulai denganulasan singkat karakteristik eksekusi instruksi. Aspek perhitunganbunga adalah sebagai berikut:• Operasi dilakukan: ini menentukan fungsi yang harus dilakukan olehprosesor dan interaksinya dengan memori.• Operan digunakan: Jenis-jenis operan dan frekuensi penggunaannya menentukanorganisasi memori untuk menyimpan mereka dan mode pengalamatan untukmengakses mereka.• Eksekusi sequencing: ini menentukan kontrol dan pipa organisasi.Dalam sisa bagian ini, kami merangkum hasil dari sejumlahstudi program-tingkat bahasa tinggi. Semua hasil didasarkan pada dinamikapengukuran. Artinya, pengukuran dikumpulkan dengan menjalankan program danmenghitung jumlah kali beberapa fitur telah muncul atau properti tertentutelah diadakan benar. Sebaliknya, pengukuran statis hanya melakukan hitungan ini padasumber teks dari sebuah program. Mereka tidak memberikan informasi yang berguna tentang kinerja, karenamereka tidak berbobot relatif terhadap jumlah kali setiap pernyataan dieksekusi.OperasiBerbagai penelitian telah dilakukan untuk menganalisis perilaku program HLL.Tabel 4.8, dibahas dalam Bab 4, termasuk hasil kunci dari sejumlah penelitian.Ada kesepakatan yang cukup baik dalam hasil campuran ini bahasa dan aplikasi.laporan tugas mendominasi, menunjukkan bahwa gerakan sederhanadata sangatlah penting. Ada juga dominan pernyataan bersyarat(IF, LOOP). Pernyataan-pernyataan ini diimplementasikan dalam bahasa mesin dengansemacam membandingkan dan instruksi cabang. Hal ini menunjukkan bahwa kontrol urutanmekanisme set instruksi penting.hasil ini instruktif ke set mesin desainer instruksi, menunjukkanyang jenis laporan paling sering terjadi dan karena itu harus didukungdalam "optimal" fashion. Namun, hasil ini tidak mengungkapkan yang laporan menggunakanpaling waktu dalam pelaksanaan program khas. Artinya, kita ingin menjawabPertanyaan: Mengingat program mesin-bahasa yang dikompilasi, yang laporan dibahasa sumber menyebabkan eksekusi paling instruksi mesin-bahasa danapa waktu eksekusi dari instruksi ini?Untuk mendapatkan fenomena yang mendasari ini, program Patterson [PATT82a],dijelaskan dalam Lampiran 4A, disusun pada VAX, PDP-11, dan Motorola68000 untuk menentukan rata-rata jumlah instruksi mesin dan referensi memoriper jenis pernyataan. Kolom kedua dan ketiga pada Tabel 15.2 menunjukkan relatiffrekuensi terjadinya berbagai pernyataan HLL dalam berbagai program;data diperoleh dengan mengamati kejadian di program yang berjalan agakdari sekedar jumlah kali bahwa pernyataan terjadi dalam kode sumber. Karenanyametrik ini menangkap perilaku dinamis. Untuk mendapatkan data dalam kolom empat danlima (mesin-instruksi tertimbang), setiap nilai di kolom kedua dan ketiga adalahdikalikan dengan jumlah instruksi mesin yang dihasilkan oleh compiler. IniHasil tersebut kemudian dinormalisasi sehingga kolom empat dan lima menunjukkan frekuensi relatifkejadian, tertimbang dengan jumlah instruksi mesin per HLL.


BAB 15 / MENGURANGI INSTRUKSI KOMPUTER SET
                  Tabel 15.2 tertimbang Frekuensi Dinamis relatif HLL Operasi [PATT82a]Terjadinya dinamisMesin-InstruksitertimbangMemori-ReferensitertimbangPascal C Pascal C Pascal CASSIGN 45% 38% 13% 13% 14% 15%LOOP 5% 3% 42% 32% 33% 26%PANGGILAN 15% 12% 31% 33% 44% 45%JIKA 29% 43% 11% 21% 7% 13%GOTO - 3% - - - -LAIN 6% 1% 3% 1% 2% 1%pernyataan. Demikian pula, kolom keenam dan ketujuh yang diperoleh dengan mengalikanfrekuensi terjadinya masing-masing jenis pernyataan dengan jumlah relatif dari memorireferensi yang disebabkan oleh setiap pernyataan. Data dalam kolom empat melalui tujuh memberikantindakan pengganti dari waktu yang sebenarnya dihabiskan melaksanakan berbagai pernyataanjenis. Hasil penelitian menunjukkan bahwa prosedur panggilan / return adalah yang paling memakan waktuoperasi dalam program HLL khas.pembaca harus jelas tentang pentingnya Tabel 15.2. Tabel ini menunjukkandampak kinerja relatif dari berbagai jenis pernyataan dalam HLL, ketikaHLL yang dikompilasi untuk arsitektur set instruksi khas kontemporer. Beberapaarsitektur lainnya dibayangkan bisa menghasilkan hasil yang berbeda. Namun, penelitian inimenghasilkan hasil yang representatif untuk kontemporer kompleks set instruksikomputer (CISC) arsitektur. Dengan demikian, mereka dapat memberikan bimbingan kepada mereka yang mencariuntuk cara yang lebih efisien untuk mendukung Hlls.operanApalagi pekerjaan yang telah dilakukan pada terjadinya jenis operan, meskipunpentingnya topik ini. Ada beberapa aspek yang signifikan.Studi Patterson sudah diacu [PATT82a] juga melihat dinamikafrekuensi terjadinya kelas variabel (Tabel 15.3). Hasilnya, konsistenantara program Pascal dan C, menunjukkan bahwa sebagian besar referensi yang ke skalar sederhanavariabel. Selanjutnya, lebih dari 80% dari skalar yang lokal (prosedur) variabel.Selain itu, setiap referensi ke array atau struktur membutuhkan referensi untukindeks atau pointer, yang lagi biasanya skalar lokal. Dengan demikian, ada dominan yangreferensi untuk skalar, dan ini sangat lokal.Penelitian Patterson meneliti perilaku dinamis dari program HLL,independen dari arsitektur yang mendasari. Sebagaimana dibahas sebelumnya.



15,1 / INSTRUKSI PELAKSANAAN KARAKTERISTIK 
                 berurusan dengan arsitektur yang sebenarnya untuk memeriksa perilaku program yang lebih dalam. Satustudi, [LUND77], diperiksa Desember-10 instruksi dinamis dan menemukan bahwasetiap instruksi rata-rata referensi 0,5 operan dalam memori dan 1,4 register.Hasil yang sama dilaporkan dalam [HUCK83] untuk C, Pascal, dan FORTRANprogram di S / 370, PDP-11, dan VAX. Tentu saja, angka-angka ini sangat tergantungpada kedua arsitektur dan compiler, tetapi mereka menggambarkan frekuensimengakses operan.Studi-studi terakhir menunjukkan pentingnya arsitektur yang cocokuntuk cepat operan mengakses, karena operasi ini dilakukan begitu sering. ItuStudi Patterson menunjukkan bahwa kandidat utama untuk optimasi adalah mekanismeuntuk menyimpan dan mengakses variabel skalar lokal.prosedur PanggilanKita telah melihat bahwa prosedur panggilan dan kembali merupakan aspek penting dari HLLprogram. Bukti (Tabel 15.2) menunjukkan bahwa ini adalah mengkonsumsi paling waktu-operasi dalam program HLL disusun. Dengan demikian, hal itu akan menguntungkan untuk mempertimbangkan cara-caramelaksanakan operasi ini secara efisien. Dua aspek yang signifikan: nomorparameter dan variabel yang prosedur penawaran dengan, dan kedalaman bersarang.Penelitian Tanenbaum [TANE78] menemukan bahwa 98% dari dinamis disebut prosedurditanggungkan kurang dari enam argumen dan 92% dari mereka yang digunakan lebih sedikit darienam variabel skalar lokal. Hasil yang sama dilaporkan oleh tim Berkeley RISC[KATE83], seperti yang ditunjukkan pada Tabel 15.4. Hasil ini menunjukkan bahwa jumlah katadiperlukan per aktivasi prosedur tidak besar. Studi melaporkan sebelumnya ditunjukkanbahwa proporsi yang tinggi dari referensi operan adalah variabel skalar lokal. Inistudi menunjukkan bahwa orang-referensi yang sebenarnya terbatas relatif sedikit variabel.Kelompok Berkeley yang sama juga tampak pada pola panggilan prosedur dan kembalidalam program HLL. Mereka menemukan bahwa sangat jarang untuk memiliki urutan terganggu panjangpanggilan prosedur diikuti dengan urutan yang sesuai pengembalian. Sebaliknya, mereka menemukanbahwa program tetap terbatas pada jendela agak sempit prosedur-doakedalaman. Ini diilustrasikan pada Gambar 4.21, yang dibahas dalam Bab 4. Hasil inimemperkuat kesimpulan bahwa referensi operan yang sangat lokal.ImplikasiSejumlah kelompok telah melihat hasil seperti yang baru saja melaporkan dan memilikimenyimpulkan bahwa usaha untuk membuat set instruksi arsitektur dekat dengan Hlls.

  

BAB 15 / MENGURANGI INSTRUKSI KOMPUTER SET
                      bukan strategi desain yang paling efektif. Sebaliknya, Hlls terbaik dapat didukungdengan mengoptimalkan kinerja fitur yang paling memakan waktu HLL khasprogram.Generalisasi dari karya sejumlah peneliti, tiga elemen munculbahwa, oleh dan besar, ciri RISC arsitektur. Pertama, menggunakan sejumlah besarregister atau menggunakan compiler untuk mengoptimalkan mendaftar penggunaan. Hal ini dimaksudkan untuk mengoptimalkanreferensi operan. Studi yang baru saja dibahas menunjukkan bahwa ada beberapa referensiper pernyataan HLL dan bahwa ada proporsi yang tinggi dari langkah (tugas)laporan. Ini, ditambah dengan lokalitas dan dominasi referensi skalar,menyarankan kinerja yang dapat ditingkatkan dengan mengurangi referensi memori dimengorbankan referensi mendaftar lebih. Karena lokalitas referensi ini, sebuahdiperluas daftar set tampaknya praktis.Kedua, perhatian harus dibayarkan kepada desain pipa instruksi.Karena tingginya proporsi cabang bersyarat dan prosedur panggilaninstruksi, pipa instruksi langsung akan menjadi tidak efisien. manifes inidirinya sebagai proporsi tinggi dari instruksi yang disangga tetapi tidak pernah dieksekusi.Akhirnya, sebuah set instruksi yang terdiri dari primitif kinerja tinggi adalahditunjukkan. Instruksi harus memiliki biaya diprediksi (diukur dalam eksekusiwaktu dan kode ukuran, dan semakin, di disipasi energi) dan konsistendengan implementasi kinerja tinggi (yang selaras dengan diprediksiwaktu eksekusi biaya).15.2 PENGGUNAAN A DAFTAR FILE BESARHasil dirangkum dalam Bagian 15.1 titik keluar keinginan akses cepat keoperan. Kita telah melihat bahwa ada sebagian besar laporan tugasdalam program HLL, dan banyak di antaranya dari bentuk sederhana A dB. Juga, adasejumlah besar operan mengakses per pernyataan HLL. Jika kita pasangan inihasil dengan fakta bahwa sebagian besar akses adalah untuk skalar lokal, ketergantungan berat pada daftarpenyimpanan yang disarankan.Alasan yang mendaftar penyimpanan ditunjukkan adalah bahwa hal itu adalah tercepat yang tersediaperangkat penyimpanan, lebih cepat dari kedua memori utama dan cache. Register filefisik kecil, pada chip yang sama dengan ALU dan unit kontrol, dan mempekerjakan banyakalamat lebih pendek dari alamat untuk cache dan memori. Dengan demikian, strategi diperlukanyang akan memungkinkan operan yang paling sering diakses untuk disimpan dalam register danmeminimalkan operasi mendaftar-memori.Dua pendekatan dasar yang mungkin, yang didasarkan pada perangkat lunak dan yang lainnya diperangkat keras. Pendekatan perangkat lunak mengandalkan kompiler untuk memaksimalkan daftarpemakaian. Compiler akan mencoba untuk menetapkan register untuk variabel-variabel yang akandigunakan paling dalam periode waktu tertentu. Pendekatan ini memerlukan penggunaan canggihalgoritma program analisis. Pendekatan hardware hanya menggunakan lebihregister sehingga lebih variabel dapat diselenggarakan di register untuk waktu yang cukup lama.Pada bagian ini, kita akan membahas pendekatan hardware. Pendekatan ini telahdipelopori oleh kelompok Berkeley RISC [PATT82a]; digunakan dalam komersial pertamaproduk RISC, Piramida [RAGA83]; dan saat ini digunakan dalam populerarsitektur SPARC.


15.2 / PENGGUNAAN BESAR DAFTAR FILE 
                    Windows registerDi wajah itu, penggunaan satu set besar register harus mengurangi kebutuhan untukmemori akses. Tugas desain adalah untuk mengatur register sedemikian rupa yangTujuan ini direalisasikan.Karena sebagian besar referensi operan adalah untuk skalar lokal, pendekatan yang jelasadalah untuk menyimpan ini dalam register, dengan mungkin beberapa register yang disediakan untuk variabel global.Masalahnya adalah bahwa definisi perubahan lokal dengan masing-masing panggilan prosedurdan kembali, operasi yang sering terjadi. Pada setiap panggilan, variabel lokal harusdiselamatkan dari register ke memori, sehingga register dapat digunakan kembali olehdisebut prosedur. Selanjutnya, parameter harus dilalui. Setelah kembali, variabeldari prosedur menelepon harus dipulihkan (dimuat kembali ke register) danHasil harus dilalui kembali ke prosedur panggilan.Solusi ini berbasis pada dua hasil lainnya dilaporkan dalam Pasal 15.1. Pertama, khasProsedur mempekerjakan hanya beberapa parameter yang dikirimkan dan variabel lokal (Tabel 15.4).Kedua, kedalaman aktivasi prosedur berfluktuasi dalam kisaran yang relatif sempit(Gambar 4.21). Untuk mengeksploitasi sifat ini, beberapa set kecil dari register yang digunakan,masing-masing ditugaskan untuk prosedur yang berbeda. Sebuah panggilan prosedur secara otomatis beralihprosesor menggunakan jendela berukuran tetap berbeda register, daripada menyimpan registerdalam kenangan. Jendela untuk prosedur yang berdekatan yang tumpang tindih untuk memungkinkan parameterlewat.Konsep ini diilustrasikan pada Gambar 15.1. Pada setiap saat, hanya satu jendelaregister terlihat dan beralamat seolah-olah itu adalah satu-satunya set register (misalnya,alamat 0 melalui N - 1). Jendela ini dibagi menjadi tiga area berukuran tetap.register parameter tahan parameter diturunkan dari prosedur yang disebutarus prosedur dan tahan hasil untuk diteruskan kembali. register lokaldigunakan untuk variabel lokal, seperti yang ditetapkan oleh kompilator. register sementara digunakanuntuk bertukar parameter dan hasil dengan tingkat yang lebih rendah berikutnya (prosedur yang disebut olehProsedur saat ini). Register sementara di satu tingkat secara fisik samasebagai parameter register di tingkat yang lebih rendah berikutnya. tumpang tindih ini memungkinkan parameterakan berlalu tanpa gerakan yang sebenarnya dari data. Perlu diingat bahwa, kecuali untuktumpang tindih, register pada dua tingkat yang berbeda adalah berbeda secara fisik. Itu adalahparameter dan lokal register di tingkat J saling terpisah dari lokal dan sementararegister di tingkat J + 1.Untuk menangani setiap pola yang mungkin dari panggilan dan kembali, jumlah daftarJendela harus menjadi terbatas. Sebaliknya, jendela daftar dapat digunakanuntuk memegang beberapa aktivasi prosedur terbaru. aktivasi yang lebih tua harus diselamatkan.

   


 dalam memori dan kemudian dikembalikan ketika kedalaman nesting menurun. Dengan demikian, sebenarnyaorganisasi file register sebagai buffer lingkaran tumpang tindih jendela. Duacontoh penting dari pendekatan ini adalah arsitektur SPARC Sun, dijelaskan dalamBagian 15,7, dan arsitektur IA-64 yang digunakan oleh prosesor Intel Itanium.Organisasi melingkar ditunjukkan pada Gambar 15.2, yang menggambarkan edaranpenyangga enam jendela. buffer diisi dengan kedalaman 4 (A disebut B; B disebut C;C disebut D) dengan prosedur D aktif. Saat-window pointer (CWP) poinke jendela dari prosedur yang sedang aktif. Daftar referensi oleh mesininstruksi diimbangi dengan pointer ini untuk menentukan daftar fisik yang sebenarnya. Itudisimpan-jendela pointer (SWP) mengidentifikasi jendela paling baru disimpan di memori.Jika prosedur D sekarang memanggil prosedur E, argumen untuk E ditempatkan di D's sementararegister (tumpang tindih antara w3 dan w4) dan CWP maju dengan satu jendela.Jika prosedur E kemudian membuat panggilan ke prosedur F, panggilan tidak dapat dibuat denganstatus buffer. Hal ini karena jendela F tumpang tindih jendela A. JikaF mulai memuat register sementara yang, persiapan untuk panggilan, itu akan menimparegister parameter A (A.in). Jadi, ketika CWP bertambah (modulo 6) sehinggasehingga menjadi sama dengan SWP, interrupt terjadi, dan jendela A disimpan. Hanyapertama dua bagian (A.in dan A.loc) perlu diselamatkan. Kemudian, SWP yang bertambah.


 15.2 / PENGGUNAAN BESAR DAFTAR FILE 
                    panggilan untuk F hasil. Sebuah interupsi yang sama dapat terjadi pada hasil. Sebagai contoh,setelah aktivasi F, saat B kembali ke A, CWP decremented danmenjadi sama dengan SWP. Hal ini menyebabkan interupsi yang menghasilkan pemulihanwindow A.Dari sebelumnya, dapat dilihat bahwa file register N-jendela dapat terushanya N - 1 aktivasi prosedur. Nilai N tidak perlu besar. Seperti yang telah disebutkandalam Lampiran 4A, satu penelitian [TAMI83] menemukan bahwa, dengan 8 jendela, menyimpan ataumengembalikan diperlukan hanya pada 1% dari panggilan atau kembali. Komputer Berkeley RISCmenggunakan 8 jendela dari 16 register masing-masing. Piramida komputer mempekerjakan 16 jendela32 register masing-masing.Variabel globalSkema window baru saja dijelaskan memberikan organisasi yang efisien untuk menyimpanvariabel skalar lokal di register. Namun, skema ini tidak membahas kebutuhanuntuk menyimpan variabel global, yang diakses oleh lebih dari satu prosedur. dua pilihanmenyarankan sendiri. Pertama, variabel dinyatakan sebagai global dalam HLL dapat ditugaskanlokasi memori oleh kompilator, dan semua instruksi mesin yang referensi inivariabel akan menggunakan operan memori-referensi. Ini sangat mudah, dari keduaperangkat keras dan perangkat lunak (compiler) sudut pandang. Namun, untuk seringdiakses variabel global, skema ini tidak efisien.Alternatif adalah untuk menggabungkan satu set register global dalam prosesor. Iniregister akan tetap dalam jumlah dan tersedia untuk semua prosedur. Sebuah penomoran terpaduSkema dapat digunakan untuk menyederhanakan format instruksi. Sebagai contoh, referensiuntuk register 0 sampai 7 bisa merujuk ke register global yang unik, dan referensiuntuk register 8 sampai 31 bisa diimbangi untuk merujuk ke register fisik saat inijendela. Ada peningkatan beban hardware untuk mengakomodasi perpecahan dalam daftarmenangani. Selain itu, linker harus memutuskan mana variabel global harusditugaskan untuk register.Besar Daftar Berkas vs CacheRegister file, disusun dalam jendela, bertindak sebagai kecil, penyangga cepat untuk memegangsubset dari semua variabel yang mungkin untuk digunakan paling berat. Dari titik inipandang, register file bertindak seperti sebuah memori cache, meskipun jauh lebih cepatingatan. Oleh karena itu muncul pertanyaan apakah akan lebih sederhana dan lebih baikuntuk menggunakan cache dan register file kecil tradisional.Tabel 15.5 membandingkan karakteristik dari dua pendekatan. Jendela-berbasismendaftar file memegang semua variabel skalar lokal (kecuali dalam kasus yang jarang terjadi dari jendelaoverflow) dari N terbaru - 1 prosedur aktivasi. cache memegang seleksibaru-baru digunakan variabel skalar. Register file harus menghemat waktu, karena semuavariabel skalar lokal dipertahankan. Di sisi lain, cache dapat membuat lebih efisienmenggunakan ruang, karena bereaksi terhadap situasi dinamis. Selanjutnya,cache umumnya memperlakukan semua referensi memori sama, termasuk petunjuk dan lainnyajenis data. Dengan demikian, penghematan di daerah-daerah lain yang mungkin dengan cache dan tidakmendaftar file.


                 Sebuah register file dapat menggunakan tidak efisien ruang, karena tidak semua prosedurakan memerlukan ruang jendela penuh yang diberikan secara. Di sisi lain, cachemenderita jenis lain dari inefisiensi: Data dibaca ke dalam cache di blok.Sedangkan register file hanya berisi variabel yang digunakan, cache membaca dalamblok data, beberapa atau banyak yang tidak akan digunakan.cache mampu menangani variabel global serta lokal. Adabiasanya banyak skalar global, tetapi hanya sedikit dari mereka yang banyak digunakan [KATE83].Cache dinamis akan menemukan variabel tersebut dan menahan mereka. Jika windowbasedmendaftar file dilengkapi dengan register global, juga dapat memegang beberapaskalar global. Namun, ketika modul program yang dikompilasi secara terpisah, itu adalahmungkin bagi compiler untuk menetapkan nilai global untuk register; linker harusmelakukan tugas ini.Dengan register file, pergerakan data antara register dan memoriditentukan oleh kedalaman prosedur bersarang. Karena kedalaman ini biasanya berfluktuasidalam kisaran yang sempit, penggunaan memori relatif jarang terjadi. kebanyakan Cachekenangan ditetapkan asosiatif dengan ukuran set kecil. Dengan demikian, ada bahaya bahwadata atau instruksi lain akan bersaing cache residensi.Berdasarkan diskusi sejauh ini, pilihan antara register berbasis jendela besarmengajukan dan cache tidak jelas. Ada satu karakteristik, namun, di manapendekatan register jelas unggul dan yang menunjukkan bahwa sistem berbasis Cacheakan terasa lebih lambat. perbedaan ini muncul dalam jumlah pengalamatanoverhead yang dialami oleh dua pendekatan.Gambar 15.3 mengilustrasikan perbedaan. Untuk referensi skalar lokal di windowbasedregister file, "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 harusdihasilkan. Kompleksitas operasi ini tergantung pada mode pengalamatan. Disebuah cache asosiatif set, sebagian dari alamat yang digunakan untuk membaca sejumlah katadan tag sama dengan ukuran set. bagian lain dari alamat dibandingkan dengantag, dan salah satu kata yang dibaca dipilih. Ini harus jelas bahwa bahkan jikacache secepat register file, waktu akses akan jauh lebih lama.Dengan demikian, dari sudut pandang kinerja, berbasis jendela register file lebih ungguluntuk skalar lokal. peningkatan kinerja lebih lanjut dapat dicapai olehSelain dari cache untuk petunjuk saja.


 15.3 COMPILER BERBASIS REGISTER OPTIMALISASI 
                     Mari kita asumsikan sekarang bahwa hanya sejumlah kecil (misalnya, 16-32) dari register tersediapada target mesin RISC. Dalam hal ini, dioptimalkan penggunaan register tanggung jawabkompilator. Sebuah program yang ditulis dalam bahasa tingkat tinggi, tentu saja,ada referensi eksplisit untuk register (C-bahasa kata kunci daftar meskipun).Sebaliknya, jumlah program yang disebut simbolis. Tujuan daricompiler adalah untuk menjaga operan untuk sebanyak perhitungan mungkin dalam registerdaripada memori utama, dan untuk meminimalkan operasi load-dan-toko.Secara umum, pendekatan yang dilakukan adalah sebagai berikut. Setiap kuantitas program yangcalon yang berada di register ditugaskan untuk register simbolik atau virtual.Compiler kemudian memetakan jumlah terbatas register simbolik menjadi tetapjumlah register yang nyata. register simbolik yang penggunaan tidak tumpang tindih dapat berbagidaftar riil yang sama. Jika, dalam porsi khusus dari program ini, ada lebihjumlah untuk menangani dari register nyata, maka beberapa dari jumlah yang ditetapkanuntuk lokasi memori. instruksi beban-dan-toko yang digunakan untuk jumlah posisi diregister sementara untuk operasi komputasi.


544 BAB 15 / MENGURANGI INSTRUKSI KOMPUTER SET 
                    Inti dari tugas optimasi adalah untuk menentukan jumlah yang harusditugaskan untuk register pada suatu titik tertentu dalam program ini. Teknik yang paling umumdigunakan dalam compiler RISC dikenal sebagai pewarnaan graf, yang merupakan teknik yang dipinjamdari disiplin topologi [CHAI82, CHOW86, COUT86, CHOW90].Masalah pewarnaan graf adalah ini. Mengingat grafik yang terdiri dari node dantepi, menetapkan warna untuk node sehingga node yang berdekatan memiliki warna yang berbeda, danmelakukan hal ini dengan cara seperti untuk meminimalkan jumlah warna yang berbeda. Masalah inidisesuaikan dengan masalah compiler dengan cara berikut. Pertama, program ini dianalisisuntuk membangun grafik daftar gangguan. Node dari grafik adalah simbolikregister. Jika dua register simbolik yang "hidup" selama fragmen program yang sama,kemudian mereka bergabung dengan keunggulan untuk menggambarkan gangguan. Upaya ini kemudian dibuat untukmewarnai graph dengan n warna, di mana n adalah jumlah register. Node yang berbagiwarna yang sama dapat diberikan ke register yang sama. Jika proses ini tidak sepenuhnyaberhasil, maka mereka node yang tidak dapat diwarnai harus ditempatkan dalam memori, danbeban dan toko harus digunakan untuk membuat ruang untuk jumlah terpengaruh ketika merekadibutuhkan.Gambar 15.4 adalah contoh sederhana dari proses. Asumsikan program dengan enamregister simbolik untuk dikompilasi menjadi tiga register yang sebenarnya. Gambar 15.4A menunjukkanurutan waktu penggunaan aktif setiap register simbolik. garis horizontal putus-putusmenunjukkan eksekusi instruksi yang berurutan. Gambar 15.4b menunjukkan gangguan daftargrafik (shading dan lintas-penetasan yang digunakan sebagai pengganti warna). kemungkinanmewarnai dengan tiga warna diindikasikan. Karena register simbolik A dan D tidakmengganggu, kompilasi dapat menetapkan kedua ini untuk mendaftar fisik R1. Demikian pula,register simbolik C dan E dapat ditugaskan untuk mendaftar R3. Satu mendaftar simbolik, F,yang tersisa tidak berwarna dan harus ditangani dengan menggunakan beban dan toko.Secara umum, ada trade-off antara penggunaan set besar register dancompiler berbasis mendaftar optimasi. Misalnya, [BRAD91a] laporan penelitian.

15.4 / MENGURANGI INSTRUCTION SET ARCHITECTURE 
                        yang dimodelkan arsitektur RISC dengan fitur mirip dengan Motorola 88000 danMIPS R2000. Para peneliti bervariasi jumlah register 16-128,dan mereka dianggap baik penggunaan semua tujuan umum register dan register perpecahanantara integer dan penggunaan floating-point. Studi mereka menunjukkan bahwa bahkan dengan sederhanamendaftar optimasi, ada sedikit manfaat dengan penggunaan lebih dari 64 register. Dengancukup teknik daftar optimasi canggih, hanya ada marginalpeningkatan kinerja dengan lebih dari 32 register. Akhirnya, mereka mencatat bahwadengan sejumlah kecil register (misalnya, 16), mesin dengan organisasi daftar bersamamengeksekusi lebih cepat dari satu dengan organisasi split. kesimpulan yang sama dapatdiambil dari [HUGU91], yang melaporkan sebuah studi yang terutama berkaitan denganmengoptimalkan penggunaan sejumlah kecil register daripada membandingkan penggunaandaftar besar set dengan upaya optimasi.15,4 MENGURANGI INSTRUKSI SET ARSITEKTURPada bagian ini, kita melihat beberapa karakteristik umum dan motivasiuntuk arsitektur set instruksi berkurang. Contoh-contoh spesifik akan terlihat nantiBab ini. Kita mulai dengan diskusi tentang motivasi untuk kompleks kontemporerset instruksi arsitektur.Mengapa CISCKami telah mencatat tren ke set instruksi yang lebih kaya, yang mencakup jumlah yang lebih besarinstruksi dan instruksi yang lebih kompleks. Dua alasan utama telah memotivasitren ini: keinginan untuk menyederhanakan kompiler dan keinginan untuk meningkatkan kinerja.Mendasari kedua alasan ini itu pergeseran ke Hlls pada bagian programmer;arsitek berusaha untuk merancang mesin yang memberikan dukungan yang lebih baik untuk Hlls.Ini bukan maksud dari bab ini untuk mengatakan bahwa desainer CISC mengambilarah yang salah. Memang, karena teknologi terus berkembang dan karena arsitekturada di sepanjang spektrum daripada dalam dua kategori rapi, hitam-putihpenilaian tidak mungkin pernah muncul. Dengan demikian, komentar yang mengikuti hanyadimaksudkan untuk menunjukkan beberapa perangkap potensial dalam pendekatan CISC dan untuk memberikanbeberapa pemahaman tentang motivasi para penganut RISC.Yang pertama dari alasan yang dikutip, compiler penyederhanaan, tampak jelas, tetapitidak. Tugas penulis compiler adalah untuk membangun sebuah compiler yang menghasilkan baik(Cepat, kecil, cepat dan kecil) urutan instruksi mesin untuk program HLL(Yaitu, compiler memandang pernyataan HLL individu dalam konteks sekitarnyapernyataan HLL). Jika ada instruksi mesin yang menyerupai pernyataan HLL,tugas ini disederhanakan. Alasan ini telah diperdebatkan oleh para peneliti RISC([HENN82], [RADI83], [PATT82b]). Mereka telah menemukan bahwa mesin yang rumitinstruksi sering sulit untuk mengeksploitasi karena compiler harus menemukan kasus-kasusyang tepat sesuai konstruk. Tugas mengoptimalkan kode yang dihasilkan untuk meminimalkanukuran kode, mengurangi hitungan eksekusi instruksi, dan meningkatkan pipelining jauhlebih sulit dengan set instruksi yang kompleks. Sebagai bukti ini, penelitian yang dikutipsebelumnya dalam bab ini menunjukkan bahwa sebagian besar instruksi dalam program dikompilasiadalah orang-orang yang relatif sederhana.


BAB 15 / MENGURANGI INSTRUKSI KOMPUTER SET
                         Alasan utama lainnya dikutip adalah harapan bahwa CISC akan menghasilkan lebih kecil,program lebih cepat. Mari kita memeriksa kedua aspek pernyataan ini: bahwa program akanlebih kecil dan bahwa mereka akan mengeksekusi lebih cepat.Ada dua keuntungan untuk program yang lebih kecil. Pertama, karena programmemakan banyak memori, ada penghematan sumber daya itu. Dengan memori hari ini menjadibegitu murah, keuntungan potensial ini tidak lagi menarik. Lebih penting,program yang lebih kecil harus meningkatkan kinerja, dan ini akan terjadi dalam tiga cara.Pertama, instruksi yang lebih sedikit berarti byte instruksi yang lebih sedikit akan diambil. Kedua, dalamlingkungan paging, program kecil menempati halaman lebih sedikit, mengurangi kesalahan halaman.Ketiga, instruksi yang lebih cocok dalam cache (s).Masalah dengan baris ini penalaran adalah bahwa hal itu jauh dari pasti bahwa CISCProgram akan lebih kecil dari program RISC yang sesuai. Dalam banyak kasus,Program CISC, dinyatakan dalam bahasa mesin simbolis, mungkin lebih pendek (yaitu, lebih sedikitinstruksi), namun jumlah bit memori ditempati mungkin tidak terasalebih kecil. Tabel 15.6 menunjukkan hasil dari tiga studi yang membandingkan ukuran dari dikompilasiprogram C pada berbagai mesin, termasuk RISC I, yang memiliki berkurangset instruksi arsitektur. Perhatikan bahwa ada sedikit atau tidak ada tabungan menggunakan CISC lebihRISC. Hal ini juga menarik untuk dicatat bahwa VAX, yang memiliki jauh lebih kompleksset instruksi dari PDP-11, mencapai penghematan yang sangat sedikit di atas yang terakhir. IniHasil dikonfirmasi oleh para peneliti IBM [RADI83], yang menemukan bahwa IBM 801(RISC) diproduksi kode yang adalah 0,9 kali ukuran kode pada IBM S / 370. ItuPenelitian ini menggunakan satu set program PL / I.Ada beberapa alasan untuk ini hasil yang agak mengejutkan. Kita sudahmencatat bahwa kompiler pada CISCs cenderung mendukung instruksi sederhana, sehingga keringkasan yanginstruksi kompleks jarang datang ke dalam bermain. Juga, karena adalebih petunjuk tentang CISC sebuah, opcodes lagi diperlukan, memproduksi lagiinstruksi. Akhirnya, RISCs cenderung menekankan daftar daripada referensi memori,dan mantan memerlukan bit yang lebih sedikit. Contoh dari efek terakhir ini dibahassekarang.Jadi harapan bahwa CISC akan menghasilkan program yang lebih kecil, dengan petugaskeuntungan, mungkin tidak menyadari. Faktor pendorong kedua untuk semakinset instruksi yang kompleks adalah bahwa eksekusi instruksi akan lebih cepat. Rasanyamasuk akal bahwa operasi HLL kompleks akan mengeksekusi lebih cepat sebagai tunggalinstruksi mesin bukan sebagai serangkaian instruksi yang lebih primitif. Namun,karena bias terhadap penggunaan instruksi tersebut sederhana, ini mungkin tidak begitu.


   

15.4 / MENGURANGI INSTRUCTION SET ARCHITECTURE 
                   Unit kontrol seluruh harus dibuat lebih kompleks, dan / atau kontrol microprogramtoko harus dibuat lebih besar, untuk mengakomodasi set instruksi yang lebih kaya. baik faktormeningkatkan waktu eksekusi dari instruksi sederhana.Bahkan, beberapa peneliti telah menemukan bahwa percepatan dalam pelaksanaan kompleksfungsi ini disebabkan tidak begitu banyak untuk kekuatan instruksi mesin yang kompleksuntuk tempat tinggal mereka di toko kontrol kecepatan tinggi [RADI83]. Akibatnya, kontrolToko bertindak sebagai cache instruksi. Dengan demikian, arsitek hardware di posisimencoba untuk menentukan subrutin atau fungsi akan digunakan paling sering danmenugaskan mereka ke toko kontrol dengan menerapkan mereka dalam microcode. Hasiltelah kurang dari menggembirakan. Pada S / 390 sistem, instruksi seperti Terjemahkandan Extended-presisi-Floating-Point-Divide berada di penyimpanan berkecepatan tinggi, sedangkanurutan terlibat dalam mendirikan panggilan prosedur atau memulai sebuah interrupt handlerberada di memori utama lebih lambat.Oleh karena itu, jauh dari jelas bahwa kecenderungan untuk semakin instruksi kompleks set adalahsesuai. Hal ini telah menyebabkan sejumlah kelompok untuk mengejar jalan yang berlawanan.Karakteristik Reduced Instruction Set ArsitekturMeskipun berbagai pendekatan yang berbeda untuk mengurangi set instruksi arsitekturtelah diambil, karakteristik tertentu yang umum untuk semua dari mereka:• Satu instruksi per siklus• operasi Daftarkan-to-daftar• mode pengalamatan Sederhana• format instruksi sederhanaDi sini, kami menyediakan diskusi singkat karakteristik tersebut. contoh-contoh spesifik yangdieksplorasi dalam bab ini.Karakteristik yang pertama yang tercantum adalah bahwa ada satu mesin instruksi persiklus mesin. Sebuah siklus mesin didefinisikan sebagai waktu yang dibutuhkan untuk mengambil dua operandari register, melakukan operasi ALU, dan menyimpan hasilnya dalam register.Dengan demikian, RISC instruksi mesin sebaiknya tidak lebih rumit daripada, dan mengeksekusitentang secepat, microinstructions pada mesin CISC (dibahas di Bagian Empat). Dengansederhana, instruksi satu siklus, ada sedikit atau tidak ada kebutuhan untuk microcode; mesininstruksi dapat tertanam. Instruksi tersebut harus mengeksekusi lebih cepat dari sebandinginstruksi mesin pada mesin lain, karena tidak diperlukan untuk mengaksestoko kontrol microprogram selama eksekusi instruksi.Karakteristik kedua adalah bahwa sebagian besar operasi harus mendaftar untuk mendaftar,dengan hanya sederhana LOAD dan STORE operasi mengakses memori. desain iniFitur menyederhanakan set instruksi dan karena itu unit kontrol. Misalnya,Set instruksi RISC dapat mencakup hanya satu atau dua instruksi ADD (mis, integermenambahkan, tambahkan dengan membawa); VAX memiliki 25 instruksi ADD yang berbeda. manfaat lainadalah bahwa arsitektur seperti mendorong optimalisasi penggunaan register, sehingga seringoperan Diakses tetap dalam penyimpanan kecepatan tinggi.Penekanan pada operasi daftar-to-register penting untuk desain RISC.mesin CISC kontemporer memberikan petunjuk seperti itu tetapi juga mencakup memoryto-memori dan dicampur daftar / memori operasi. Upaya untuk membandingkan ini.


BAB 15 / MENGURANGI INSTRUKSI KOMPUTER SET
                       Pendekatan yang dilakukan pada 1970-an, sebelum munculnya RISCs. Gambar 15.5amenggambarkan pendekatan yang diambil. arsitektur hipotetis dievaluasi pada programukuran dan jumlah bit lalu lintas memori. Hasil seperti ini menyebabkansalah satu peneliti menyarankan bahwa arsitektur masa depan harus tidak mengandung register disemua [MYER78]. Kita bertanya-tanya apa yang akan dia sangka, pada saat itu, dari RISCMesin sekali diproduksi oleh Pyramid, yang berisi tidak kurang dari 528 register!Apa yang hilang dari studi mereka adalah pengakuan dari akses seringuntuk sejumlah kecil skalar lokal dan bahwa, dengan bank besar register atau mengoptimalkancompiler, paling operan bisa disimpan dalam register untuk jangka waktu yang lama.Dengan demikian, Gambar 15.5b mungkin perbandingan yang lebih adil.Karakteristik ketiga adalah penggunaan mode pengalamatan yang sederhana. Hampir semua RISCpetunjuk menggunakan daftar sederhana menangani. Beberapa mode tambahan, seperti perpindahandan PC-relatif, dapat dimasukkan. Lainnya, lebih kompleks mode dapatdisintesis dalam perangkat lunak dari yang sederhana. Sekali lagi, fitur desain ini menyederhanakanset instruksi dan unit kontrol.Karakteristik umum akhir adalah penggunaan format instruksi sederhana.Umumnya, hanya satu atau beberapa format yang digunakan. panjang instruksi adalah tetap danselaras di batas kata. lokasi lapangan, terutama opcode, adalah tetap. Inifitur desain memiliki sejumlah manfaat. Dengan bidang tetap, opcode decoding dandaftar operan mengakses dapat terjadi secara bersamaan. format disederhanakan menyederhanakanunit kontrol. Instruksi pengambilan dioptimalkan karena unit kata-panjang yangdiambil. Keselarasan pada batas kata juga berarti bahwa sebuah instruksi tidaktidak lintas batas halaman.Secara bersama-sama, karakteristik ini dapat dinilai untuk menentukan potensimanfaat kinerja dari pendekatan RISC. Sebuah jumlah tertentu dari "tidak langsung.
   


15.4 / MENGURANGI INSTRUCTION SET ARCHITECTURE 
                       bukti "dapat disajikan. Pertama, compiler mengoptimalkan lebih efektif dapat dikembangkan.Dengan instruksi lebih-primitif, ada lebih banyak kesempatan untuk bergerakfungsi dari loop, kode reorganisasi untuk efisiensi, memaksimalkan daftarpemanfaatan, dan sebagainya. Hal ini bahkan dimungkinkan untuk menghitung bagian dari instruksi yang komplekspada waktu kompilasi. Misalnya, S / 390 Move Karakter (MVC) instruksi menggerakkanstring karakter dari satu lokasi ke lokasi lain. Setiap kali dijalankan, bergerakakan tergantung pada panjang string, apakah dan di mana arah lokasitumpang tindih, dan apa karakteristik penjajaran adalah. Dalam kebanyakan kasus, ini semua akandiketahui pada waktu kompilasi. Dengan demikian, compiler bisa menghasilkan urutan dioptimalkaninstruksi primitif untuk fungsi ini.Hal kedua, telah dicatat, adalah bahwa sebagian besar instruksi yang dihasilkan oleh kompilatorrelatif sederhana pula. Tampaknya masuk akal bahwa unit kontrol dibangunkhusus untuk instruksi tersebut dan menggunakan sedikit atau tidak ada microcode bisa mengeksekusimereka lebih cepat dari CISC sebanding.Titik ketiga berkaitan dengan penggunaan instruksi pipelining. peneliti RISC merasabahwa teknik instruksi pipelining dapat diterapkan lebih efektif denganinstruksi berkurang ditetapkan. Kami memeriksa titik ini dalam beberapa detail saat.Sebuah akhir, dan agak kurang signifikan, titik adalah bahwa prosesor RISC lebihresponsif terhadap interupsi karena interupsi diperiksa antara agak SDoperasi. Arsitektur dengan instruksi kompleks baik membatasi interupsi untukbatas instruksi atau harus menentukan poin interruptible tertentu dan menerapkanmekanisme untuk restart instruksi.Kasus untuk meningkatkan kinerja untuk set instruksi arsitektur berkurangkuat, tapi satu mungkin masih bisa membuat argumen untuk CISC. Sejumlahpenelitian telah dilakukan namun tidak pada mesin teknologi yang sebanding dan kekuasaan.Selanjutnya, kebanyakan studi tidak mencoba untuk memisahkan efek dari penguranganset instruksi dan efek dari file register yang besar. The "bukti,"Namun, adalah sugestif.CISC vs RISC KarakteristikSetelah antusiasme awal untuk mesin RISC, telah terjadi realisasi tumbuhbahwa (1) desain RISC dapat mengambil manfaat dari masuknya beberapa fitur CISCdan (2) desain CISC dapat mengambil manfaat dari masuknya beberapa fitur RISC.Hasilnya adalah bahwa lebih desain terbaru RISC, terutama PowerPC, tidak lagi"Murni" RISC dan CISC desain baru yang lebih, terutama Pentium II danmodel Pentium kemudian, melakukan menggabungkan beberapa karakteristik RISC.Sebuah perbandingan yang menarik di [MASH95] memberikan beberapa wawasan ke dalam masalah ini.Tabel 15.7 daftar sejumlah prosesor dan membandingkan mereka di sejumlah karakteristik.Untuk tujuan perbandingan ini, berikut dianggap khasRISC klasik:1. Ukuran instruksi tunggal.2. Ukuran Itu biasanya 4 bytes.3. Sejumlah kecil data mode pengalamatan, biasanya kurang dari lima. Iniparameter sulit untuk dijabarkan. Di meja, daftar dan mode literaltidak dihitung dan format yang berbeda dengan offset ukuran yang berbeda dihitungterpisah.


  


15.5 / RISC pipelining 
                     Tidak langsung pengalamatan yang mengharuskan Anda untuk membuat satu akses memori untuk mendapatkanalamat operand lain di memori.5. Tidak ada operasi yang menggabungkan load / store dengan aritmatika (misalnya, tambahkan dari memori,menambah memori).6. Tidak lebih dari satu operand memori-ditangani per instruksi.7. Tidak mendukung keselarasan sewenang-wenang data untuk operasi load / store.8. Jumlah maksimum penggunaan unit manajemen memori (MMU) untuk dataalamat dalam instruksi.9. Jumlah bit untuk integer daftar specifier sama dengan lima atau lebih. Ini berartibahwa setidaknya 32 register integer dapat secara eksplisit dirujuk pada suatu waktu.10. Jumlah bit floating-point specifier daftar sama dengan empat atau lebih. Iniberarti bahwa setidaknya 16 register floating-point dapat secara eksplisit direferensikan diSebuah waktu.Item 1 sampai 3 merupakan indikasi kompleksitas instruksi decode. item 4melalui 8 menyarankan kemudahan atau kesulitan pipelining, terutama di hadapanpersyaratan memori virtual. Item 9 dan 10 terkait dengan kemampuan untuk mengambil yang baikkeunggulan dari kompiler.Di meja, delapan prosesor pertama jelas RISC arsitektur, berikutnyalima jelas CISC, dan dua terakhir adalah prosesor sering dianggap sebagai RISC yangsebenarnya memiliki banyak karakteristik CISC.15,5 RISC PipeliningPipelining dengan Regular InstruksiSeperti yang kita bahas dalam Bagian 12.4, instruksi pipelining sering digunakan untuk meningkatkan kinerja.Mari kita kembali ini dalam konteks arsitektur RISC. sebagian besar instruksiyang mendaftar untuk mendaftar, dan siklus instruksi memiliki dua tahapan sebagai berikut:• I: Instruction Fetch.• E: Jalankan. Melakukan operasi ALU dengan masukan mendaftar dan output.Untuk operasi beban dan toko, tiga tahap yang diperlukan:• I: Instruction Fetch.• E: Jalankan. Menghitung alamat memori.• D: Memory. Mendaftar-to-memori atau operasi memori-ke-mendaftar.Gambar 15.6a menggambarkan waktu urutan instruksi tidak menggunakan pipelining.Jelas, ini adalah proses boros. Bahkan pipelining sangat sederhana secara substansial dapatmeningkatkan kinerja. Gambar 15.6b menunjukkan skema pipelining dua tahap, didimana saya dan E tahap dua instruksi yang berbeda yang dilakukan secara bersamaan.Dua tahap pipa merupakan instruksi mengambil panggung, dan mengeksekusi /Tahap memori yang mengeksekusi instruksi, termasuk daftar-ke-ingat danoperasi memori-ke-mendaftar. Jadi kita melihat bahwa instruksi fetch tahap 

                 instruksi kedua dapat dilakukan secara paralel dengan bagian pertama dari eksekusi /Tahap memori. Namun, eksekusi / stage memori dari instruksi kedua harusditunda sampai instruksi pertama membersihkan tahap kedua dari pipa. IniSkema dapat menghasilkan hingga dua kali lipat tingkat pelaksanaan skema serial. dua masalahmencegah speedup maksimal dari yang dicapai. Pertama, kita mengasumsikan bahwa singleport amemori digunakan dan bahwa hanya satu akses memori mungkin per tahap. Inimembutuhkan penyisipan keadaan menunggu di beberapa petunjuk. Kedua, instruksi cabangmengganggu aliran sekuensial eksekusi. Untuk mengakomodasi ini dengan minimumsirkuit, instruksi NOOP dapat dimasukkan ke dalam aliran instruksi olehcompiler atau assembler.Pipelining dapat ditingkatkan lebih lanjut oleh mengizinkan dua mengakses memori pertahap. Ini menghasilkan urutan yang ditunjukkan pada Gambar 15.6c. Sekarang, sampai tiga petunjukdapat tumpang tindih, dan perbaikan adalah sebanyak faktor 3. Sekali lagi, cabanginstruksi menyebabkan speedup untuk jatuh pendek dari kemungkinan maksimal. Juga mencatatbahwa data dependensi memiliki efek. Jika instruksi memerlukan operan yangdiubah oleh instruksi sebelumnya, penundaan diperlukan. Lagi-lagi, hal ini dapat dicapaioleh NOOP a.The pipelining dibahas sejauh yang terbaik jika tiga tahap yang sekitardurasi yang sama. Karena tahap E biasanya melibatkan operasi ALU, itudapat lebih lama. Dalam hal ini, kita dapat membagi menjadi dua substages:• E1: Daftar file read• E2: operasi ALU dan mendaftar writeKarena kesederhanaan dan keteraturan dari set instruksi RISC, desaindari pentahapan menjadi tiga atau empat tahap mudah dicapai. Gambar menunjukkan 15.6dhasil dengan pipa empat tahap. Hingga empat instruksi pada satu waktu dapat berada di bawahcara, dan potensi percepatan maksimum adalah faktor 4. Perhatikan lagi penggunaanNOOPs untuk memperhitungkan data dan penundaan cabang.


15.5 / RISC pipelining 
                  Optimasi PipeliningKarena sifat sederhana dan teratur instruksi RISC, lebih mudah untukdesainer hardware untuk menerapkan sederhana, pipa cepat. Ada beberapa variasidalam durasi eksekusi instruksi, dan pipa dapat disesuaikan untuk mencerminkan ini.Namun, kita telah melihat bahwa data dan cabang dependensi mengurangi keseluruhantingkat eksekusi.TERTUNDA CABANG Untuk mengimbangi dependensi ini, kode reorganisasiteknik telah dikembangkan. Pertama, mari kita perhatikan instruksi percabangan.Tertunda cabang, cara meningkatkan efisiensi pipa, membuat penggunaancabang yang tidak berlaku sampai setelah pelaksanaan instruksi berikut(Maka istilah tertunda). Lokasi instruksi segera menyusulcabang disebut sebagai slot delay. Prosedur ini aneh diilustrasikan dalamTabel 15.8. Di kolom berlabel "cabang normal," kita melihat normal simbolikinstruksi Program bahasa mesin. Setelah 102 dijalankan, instruksi berikutnyaakan dieksekusi adalah 105. Untuk beraturan pipa, sebuah NOOP dimasukkan setelah inicabang. Namun, peningkatan kinerja dicapai jika petunjuk di 101 dan102 dipertukarkan.Gambar 15.7 menunjukkan hasilnya. Gambar 15.7a menunjukkan pendekatan tradisional untukpipelining, dari jenis yang dibahas dalam Bab 14 (misalnya, lihat Gambar 14.11 dan 14.12).Instruksi JUMP adalah diambil pada waktu 3. Pada saat 4, instruksi JUMP dieksekusipada saat yang sama bahwa instruksi 103 (ADD instruksi) diambil. karenaJUMP terjadi, yang update program counter, pipa harus dibersihkan dariinstruksi 103; pada waktu 5, instruksi 105, yang merupakan target JUMP itu, dimuat.Gambar 15.7b menunjukkan pipa yang sama ditangani oleh organisasi RISC khas. Ituwaktu adalah sama. Namun, karena penyisipan instruksi NOOP, kamitidak perlu sirkuit khusus untuk membersihkan pipa; yang NOOP hanya menjalankan dengantidak berpengaruh. Gambar 15.7c menunjukkan penggunaan cabang tertunda. The JUMP instruksiadalah diambil pada waktu 2, sebelum instruksi ADD, yang diambil pada waktu 3. Catatan,Namun, bahwa instruksi ADD diambil sebelum pelaksanaan JUMP yanginstruksi memiliki kesempatan untuk mengubah program counter. Oleh karena itu, selama waktu 4,instruksi ADD dijalankan pada saat yang sama bahwa instruksi 105 diambil.
 



              Dengan demikian, semantik asli dari program ini dipertahankan tapi kurang siklus clockdiperlukan untuk eksekusi.interchange ini instruksi akan bekerja dengan sukses untuk bersyaratcabang, panggilan, dan kembali. Untuk cabang bersyarat, prosedur ini tidak dapatmembabi buta diterapkan. Jika kondisi yang diuji untuk cabang dapat diubah olehinstruksi segera sebelumnya, maka compiler harus menahan diri dari melakukanpertukaran dan bukan memasukkan NOOP a. Jika tidak, compiler dapat berusaha untukmenyisipkan instruksi berguna setelah cabang. Pengalaman dengan baik BerkeleyRISC dan IBM 801 sistem adalah bahwa sebagian besar instruksi cabang bersyaratdapat dioptimalkan dengan cara ini ([PATT82a], [RADI83]).TERTUNDA LOAD Semacam serupa taktik, disebut beban tertunda, dapat digunakan padainstruksi LOAD. Pada instruksi LOAD, register yang menjadi targetbeban terkunci oleh prosesor. Prosesor kemudian berlanjut pelaksanaanaliran instruksi hingga mencapai sebuah instruksi memerlukan daftar itu, di manatitik itu idles sampai beban yang lengkap. Jika compiler dapat mengatur ulang instruksi.


15.5 / RISC pipelining 
                    sehingga pekerjaan yang berguna bisa dilakukan sambil beban di dalam pipa, efisiensimeningkat.Lingkaran membuka gulungan SimulatorLOOP membuka gulungan teknik compiler lain untuk meningkatkan instruksi paralelismeloop membuka gulungan [BACO94]. Membuka gulungan ulangan tubuh dari loop beberapa nomorkali disebut faktor membuka gulungan (u) dan iterates demi langkah u bukan langkah 1.Membuka gulungan dapat meningkatkan kinerja dengan• mengurangi lingkaran di atas kepala• meningkatkan instruksi paralelisme dengan meningkatkan kinerja pipa• meningkatkan register, data cache, atau lokalitas TLBGambar 15.8 mengilustrasikan ketiga perbaikan ini dalam sebuah contoh. putaranoverhead dipotong setengah karena dua iterasi dilakukan sebelum ujian dancabang pada akhir loop. Instruksi paralelisme meningkat karena keduatugas dapat dilakukan saat hasil pertama sedang disimpan danvariabel lingkaran sedang diperbarui. Jika elemen array yang ditugaskan untuk register, daftarlokalitas akan meningkatkan karena [i] dan [i + 1] digunakan dua kali dalam tubuh loop,mengurangi jumlah beban per iterasi dari tiga menjadi dua.Gambar 15.8
  


 556 BAB 15 / MENGURANGI INSTRUKSI KOMPUTER SET
                      Sebagai catatan akhir, kita harus menunjukkan bahwa desain pipa instruksitidak harus dilakukan dalam isolasi dari teknik optimasi lainnya diterapkan untuksistem. Misalnya, [BRAD91b] menunjukkan bahwa penjadwalan instruksi untukpipa dan alokasi dinamis register harus dipertimbangkan bersama-samauntuk mencapai efisiensi terbesar.15,6 MIPS R4000Salah satu yang pertama yang tersedia secara komersial chip set RISC dikembangkan oleh MIPSTechnology Inc Sistem ini terinspirasi oleh sebuah sistem eksperimental, juga menggunakannama MIPS, yang dikembangkan di Stanford [HENN84]. Pada bagian ini kita melihatMIPS R4000. Telah secara substansial arsitektur dan instruksi yang sama ditetapkan darisebelumnya MIPS desain: R2000 dan R3000. Perbedaan yang paling signifikan adalah bahwaR4000 menggunakan 64 bukan 32 bit untuk semua jalur data internal dan eksternal dan untukalamat, register, dan ALU.Penggunaan 64 bit memiliki sejumlah keunggulan dibandingkan arsitektur 32-bit. Saya tmemungkinkan alamat lebih besar ruang-cukup besar untuk sebuah sistem operasi untuk memetakan lebihdari terabyte file langsung ke memori virtual untuk akses mudah. Dengan 1-terabytedan disk drive yang lebih besar sekarang umum, ruang alamat 4-gigabyte dari mesin 32-bitmenjadi pembatas. Juga, kapasitas 64-bit memungkinkan R4000 untuk memproses data tersebutsebagai double-presisi floating-point IEEE dan karakter string, hingga delapankarakter dalam satu tindakan.R4000 chip prosesor dibagi menjadi dua bagian, satu berisiCPU dan lainnya yang mengandung coprocessor untuk manajemen memori. prosesormemiliki arsitektur yang sangat sederhana. Tujuannya adalah untuk merancang sistem di manalogika eksekusi instruksi adalah sesederhana mungkin, meninggalkan ruang yang tersedia untuklogika untuk meningkatkan kinerja (misalnya, seluruh unit manajemen memori).Prosesor ini mendukung tiga puluh dua register 64-bit. Hal ini juga menyediakan hingga128 Kbytes cache berkecepatan tinggi, setengah masing-masing untuk instruksi dan data. relatifcache yang besar (IBM 3090 memberikan 128 sampai 256 Kbytes cache) memungkinkan sistemuntuk menjaga set besar kode program dan data lokal untuk prosesor, off-loadingutama bus memori dan menghindari kebutuhan untuk register file besar dengan menyertaiwindowing logika.instruksi SetTabel 15.9 daftar instruksi dasar yang ditetapkan untuk semua prosesor seri MIPS R. Semuainstruksi prosesor dikodekan dalam 32-bit format word tunggal. Semua operasi datayang mendaftar untuk mendaftar; satu-satunya referensi memori adalah beban murni / tokooperasi.R4000 tidak membuat penggunaan kode kondisi. Jika instruksi menghasilkankondisi, yang sesuai bendera disimpan dalam tujuan umum mendaftar. Inimenghindari kebutuhan untuk logika khusus untuk menangani kode kondisi seperti mereka mempengaruhimekanisme pipelining dan penataan kembali instruksi oleh compiler. Sebagai gantinya,mekanisme yang sudah dilaksanakan untuk menangani daftar-nilai dependensidipekerjakan. Selanjutnya, kondisi dipetakan ke file daftar tunduk.



  


558 BAB 15 / MENGURANGI INSTRUKSI KOMPUTER SET 
                         untuk optimasi saat kompilasi yang sama dalam alokasi dan penggunaan kembali sebagai nilai-nilai laindisimpan di register.Seperti kebanyakan mesin berbasis RISC, MIPS menggunakan 32-bit instruksi tunggalpanjangnya. panjang instruksi tunggal ini menyederhanakan instruksi mengambil dan decode, danitu juga menyederhanakan interaksi instruksi mengambil dengan manajemen memori virtualUnit (yaitu, petunjuk lakukan kata tidak lintas atau batas halaman). Tigaformat instruksi (Gambar 15.9) berbagi format umum opcodes dan mendaftarkanreferensi, menyederhanakan instruksi decode. Pengaruh instruksi yang lebih kompleksdapat disintesis pada waktu kompilasi.Hanya modus memori-pengalamatan paling sederhana dan paling sering digunakan adalahdiimplementasikan dalam perangkat keras. Semua referensi memori terdiri dari 16-bit offset dari suatu32-bit register. Misalnya, "beban kata" instruksi adalah dalam bentuklw r2, 128 (r3) / * kata beban di alamat 128 offset daridaftar 3 ke daftar 2Masing-masing dari 32 register tujuan umum dapat digunakan sebagai base register. Satu mendaftar,r0, selalu mengandung 0.compiler memanfaatkan beberapa instruksi mesin untuk mensintesiskhas mode pengalamatan di mesin konvensional. Berikut adalah contoh dari[CHOW87], yang menggunakan instruksi lui (memuat atas segera). instruksi inibeban bagian atas dari daftar dengan nilai langsung 16-bit, pengaturanlebih rendah setengah ke nol. Pertimbangkan sebuah instruksi assembly-bahasa yang menggunakan 32-bitargumen langsung.
  


15,6 / MIPS R4000 
                    instruksi ini dapat dikompilasi ke petunjuk MIPS berikutlui r1, # imm-hi / * mana # imm-hi adalah tinggi-order16 bit #immAddu r1, r1, r4 / * menambahkan unsigned # imm-hi ke r4 dandimasukkan ke dalam r1lw r2, # imm-lo (r1) / * mana # imm-lo adalah rendah-order16 bit #imminstruksi PipelineDengan arsitektur instruksi yang disederhanakan, yang MIPS dapat mencapai sangat efisienpipelining. Ini adalah pelajaran untuk melihat evolusi dari pipa MIPS, karena menggambarkanevolusi RISC pipelining pada umumnya.Awal sistem RISC eksperimental dan generasi pertama komersialprosesor RISC mencapai kecepatan eksekusi yang mendekati satu instruksi per sistemclock cycle. Untuk memperbaiki kinerja ini, dua kelas prosesor telah berevolusiuntuk menawarkan eksekusi beberapa instruksi per siklus jam: superscalar dan superpipelinedarsitektur. Pada dasarnya, arsitektur superscalar ulangan masing-masingtahap pipa sehingga dua atau lebih instruksi pada tahap yang sama dari pipa bisadiproses secara bersamaan. Sebuah arsitektur superpipelined adalah salah satu yang menggunakanlebih, dan lebih halus, pipa tahap. Dengan lebih tahap, petunjuk lebih lanjutbisa di pipa pada saat yang sama, meningkatkan paralelisme.Kedua pendekatan memiliki keterbatasan. Dengan pipelining superscalar, dependensiantara petunjuk dalam pipa yang berbeda dapat memperlambat sistem. Juga, overheadlogika diperlukan untuk mengkoordinasikan dependensi ini. Dengan superpipelining, adaadalah overhead yang terkait dengan mentransfer instruksi dari satu tahap ke tahap berikutnya.Bab 16 dikhususkan untuk studi arsitektur superscalar. MIPS R4000adalah contoh yang baik dari arsitektur superpipeline berbasis RISC.MIPS R3000 Lima Tahap Pipeline SimulatorGambar 15.10a menunjukkan pipa instruksi dari R3000. Dalam R3000,pipa kemajuan sekali per siklus jam. MIPS compiler mampu menyusun ulangInstruksi untuk mengisi slot delay dengan kode 70 sampai 90% dari waktu. Semua petunjuk ikutiurutan yang sama dari lima tahap pipeline:• Instruction Fetch• Sumber operan mengambil dari register file• operasi ALU atau data generasi alamat operan• referensi memori data• Menulis kembali ke file registerSeperti diilustrasikan dalam Gambar 15.10a, tidak hanya ada paralelisme karena pipeliningtetapi juga oleh paralelisme dalam pelaksanaan sebuah instruksi. Siklus jam 60-ns



                  dibagi menjadi dua tahap 30-ns. Eksternal instruksi dan akses data operasiuntuk cache masing-masing memerlukan 60 ns, seperti melakukan operasi internal utama (OP, DA, IA).Instruksi decode adalah operasi sederhana, hanya membutuhkan tahap 30-ns tunggal, tumpang tindihdengan mendaftar menjemput di instruksi yang sama. Perhitungan alamat untukinstruksi cabang juga tumpang tindih instruksi decode dan mendaftar menjemput, sehingga cabangdi instruksi saya dapat mengatasi akses ICache instruksi i + 2. Demikian pula, bebandi instruksi saya mengambil data yang segera digunakan oleh OP instruksi i + 1,sementara hasil ALU / pergeseran dilewatkan langsung ke instruksi i + 1 tanpa penundaan.kopling ketat antara petunjuk untuk membuat pipa yang sangat efisien.Secara rinci, maka, setiap siklus clock dibagi menjadi tahap terpisah, dilambangkan sebagai f1dan f2. Fungsi yang dilakukan dalam setiap tahap dirangkum dalam Tabel 15.10.R4000 menggabungkan sejumlah kemajuan teknis selama R3000. Itupenggunaan teknologi yang lebih canggih memungkinkan waktu siklus clock untuk dipotong setengah, sampai 30 ns,dan untuk waktu akses ke file register akan dipotong setengah. Selain itu, ada yang lebih besardensity pada chip, yang memungkinkan instruksi dan data cache untuk dimasukkanpada chip. Sebelum melihat pipa R4000 akhir, mari kita perhatikan bagaimana R3000pipa dapat dimodifikasi untuk meningkatkan kinerja menggunakan teknologi R4000.Gambar 15.10b menunjukkan langkah pertama. Ingat bahwa siklus dalam gambar ini adalahsetengah selama mereka pada Gambar 15.10a. Karena mereka pada chip yang sama, instruksidan tahap data cache mengambil hanya setengah dari panjang; sehingga mereka masih menempati hanya satu jamsiklus. Sekali lagi, karena speedup dari akses file register, mendaftar membaca danmenulis masih menempati hanya setengah dari siklus jam.


               Karena cache R4000 yang on-chip, terjemahan alamat virtual-to-fisikdapat menunda akses Cache. Penundaan ini dikurangi dengan menerapkan hampirdiindeks cache dan akan akses cache dan alamat terjemahan paralel. Angka15.10c menunjukkan pipa R3000 dioptimalkan dengan peningkatan ini. Karenakompresi acara, tag data cache pemeriksaan dilakukan secara terpisah pada berikutnyasiklus setelah akses Cache. Pemeriksaan ini menentukan apakah item data dalam cache.Dalam sistem superpipelined, perangkat keras yang ada digunakan beberapa kali per siklus denganmemasukkan register pipa untuk berpisah setiap tahap pipa. Pada dasarnya, setiap superpipelineTahap beroperasi pada kelipatan dari frekuensi clock dasar, beberapa tergantungpada tingkat superpipelining. Teknologi R4000 memiliki kecepatan dan kepadatanuntuk mengizinkan superpipelining derajat 2. Gambar 15.11a menunjukkan dioptimalkan R3000pipa menggunakan superpipelining ini. Catatan bahwa ini pada dasarnya dinamika yang samaStruktur seperti Gambar 15.10c.perbaikan lebih lanjut dapat dibuat. Untuk R4000, jauh lebih besar dan khususpenambah dirancang. Hal ini memungkinkan untuk menjalankan operasi ALU didua kali tingkat. Perbaikan lainnya memungkinkan pelaksanaan beban dan toko di dua kalitingkat. pipa yang dihasilkan ditunjukkan pada Gambar 15.11b.R4000 memiliki delapan tahap pipa, yang berarti bahwa sebanyak delapan instruksibisa di pipa pada saat yang sama. Kemajuan pipa pada tingkatdua tahap per siklus jam. Delapan tahap pipa adalah sebagai berikut:• Instruction Fetch babak pertama: alamat virtual disajikan untuk cache instruksidan terjemahan lookaside penyangga.• Instruction Fetch babak kedua: Cache Instruksi output instruksi danTLB menghasilkan alamat fisik.



 • Pendaftaran File: Tiga kegiatan terjadi secara paralel:- Instruksi diterjemahkan dan periksa dibuat    untuk kondisi interlock (yaitu, iniinstruksi tergantung pada hasil dari instruksi sebelumnya).- Tag cache Instruksi cek dibuat.- Operan yang diambil dari file register.• Instruksi mengeksekusi: Salah satu dari tiga kegiatan dapat terjadi:- Jika instruksi adalah operasi mendaftar-ke-register, ALU melakukanaritmatika atau operasi logika.-Jika Instruksi adalah beban atau toko, alamat virtual data yang dihitung.- Jika instruksi adalah cabang, target cabang alamat virtual dihitungdan kondisi cabang diperiksa.• Data cache pertama: alamat virtual disajikan untuk cache data dan TLB.• Data cache kedua: The TLB menghasilkan alamat fisik, dan dataCache output data.• Tag cek: Cache pemeriksaan tag dilakukan untuk beban dan toko.• Menulis kembali: Hasil Instruksi ditulis kembali untuk mendaftar file.15,7 SPARCSPARC (Scalable Processor Architecture) mengacu pada arsitektur didefinisikan oleh SunMicrosystems. Sun mengembangkan pelaksanaan SPARC sendiri tetapi juga lisensi yangarsitektur untuk vendor lain untuk memproduksi mesin SPARC-kompatibel. SPARC


           15,7 / SPARC 563arsitektur terinspirasi oleh mesin Berkeley RISC I, dan instruksi yang ditetapkan danorganisasi register berdasarkan erat pada model Berkeley RISC.SPARC Register SetSeperti dengan Berkeley RISC, SPARC memanfaatkan register jendela. setiap jendelamemberikan addressability 24 register, dan jumlah total jendela adalah implementasitergantung dan rentang 2-32 jendela. Gambar 15.12 mengilustrasikan sebuahimplementasi yang mendukung 8 jendela, menggunakan total 136 register fisik; sebagaipembahasan dalam Bagian 15.2 menunjukkan, ini tampaknya sejumlah wajar jendela.register fisik 0 sampai 7 register global bersama oleh semua prosedur.Setiap prosedur melihat register logis 0 melalui 31. register Logical 24 sampai 31,disebut sebagai ins, dibagi dengan panggilan (induk) prosedur; dan register logis8 melalui 15, disebut sebagai out, dibagi dengan yang disebut prosedur (anak).Kedua bagian tumpang tindih dengan jendela lain. register logis 16 sampai 23,
  


BAB 15 / MENGURANGI INSTRUKSI KOMPUTER SET
                disebut sebagai penduduk setempat, tidak dibagi dan tidak tumpang tindih dengan jendela lain. Lagi,sebagai pembahasan Bagian 12.1 menunjukkan, ketersediaan 8 register untuk parameterpassing harus memadai dalam kebanyakan kasus (misalnya, lihat Tabel 15.4).Gambar 15.13 adalah pandangan lain dari daftar tumpang tindih. Prosedur memanggilmenempatkan setiap parameter yang akan disahkan pada register out-nya; yang disebut memperlakukan prosedurregister ini fisik yang sama seperti ins register. Prosesor mempertahankan aruswindow pointer (CWP), yang terletak di status prosesor register (PSR), yang menunjuk kejendela prosedur saat ini mengeksekusi. Jendela masker valid (WIM),juga di PSR, yang menunjukkan jendela tidak valid.Dengan arsitektur SPARC register, biasanya tidak perlu menyimpan danmengembalikan register untuk panggilan prosedur. compiler disederhanakan karena compilerperlu khawatir hanya dengan mengalokasikan register lokal untuk prosedur yang efisiencara dan tidak perlu khawatir dengan alokasi mendaftar antara prosedur.instruksi SetTabel 15.11 mencantumkan petunjuk untuk arsitektur SPARC. Sebagian besar instruksireferensi saja mendaftar operan. Mendaftar-ke-mendaftar instruksi memiliki tigaoperan dan dapat dinyatakan dalam bentuk
  


             di mana Rd dan RS1 yang mendaftar referensi; S2 dapat merujuk baik ke register atau ke
13-bit operan langsung. Mendaftar nol (R0) bersifat bawaan dengan nilai 0. Ini
bentuk cocok untuk program khas, yang memiliki proporsi tinggi skalar lokal
dan konstanta.
Operasi ALU tersedia dapat dikelompokkan sebagai berikut:
• Selain Integer (dengan atau tanpa carry)
• Integer pengurangan (dengan atau tanpa carry)
• Boolean Bitwise AND, OR, XOR dan negations mereka
• Pergeseran kiri yang logis, tepat logis, atau kanan aritmatika


BAB 15 / MENGURANGI INSTRUKSI KOMPUTER SET 
               Semua petunjuk ini, kecuali shift, opsional dapat mengatur kondisi empatKode (ZERO, NEGATIVE, overflow, CARRY). bilangan bulat yang ditandatanganidirepresentasikan dalam 32-bit berpasangan melengkapi formulir.Hanya sederhana beban dan menyimpan instruksi referensi memori. Ada terpisahbeban dan menyimpan instruksi untuk kata (32 bit), doubleword, sindiran, dan byte. Untukyang terakhir dua kasus, ada instruksi untuk memuat jumlah ini sebagai ditandatangani ataunomor unsigned. nomor ditandatangani adalah tanda diperpanjang untuk mengisi tujuan 32-bitdaftar. nomor Unsigned yang empuk dengan nol.Satu-satunya mode pengalamatan yang tersedia, selain mendaftar, adalah perpindahanmode. Artinya, alamat efektif (EA) dari operan terdiri dari perpindahandari alamat yang terkandung dalam register:EA = (RS1) + S2atau EA = (RS1) + (RS2)tergantung pada apakah operan kedua adalah segera atau referensi daftar.Untuk melakukan beban atau toko, tahap ekstra ditambahkan ke siklus instruksi.Selama tahap kedua, alamat memori dihitung dengan menggunakan ALU; muatanatau toko terjadi di tahap ketiga. mode pengalamatan tunggal ini cukup fleksibel dandapat digunakan untuk mensintesis mode pengalamatan lainnya, seperti yang ditunjukkan pada Tabel 15.12.Ini adalah pelajaran untuk membandingkan mengatasi kemampuan SPARC dengan yang dariMIPS. MIPS membuat penggunaan 16-bit offset, dibandingkan dengan 13-bit offset padaSPARC. Di sisi lain, MIPS tidak mengizinkan alamat yang akan dibangundari isi dua register.instruksi FormatSeperti dengan MIPS R4000, SPARC menggunakan satu set sederhana format instruksi 32-bit(Gambar 15.14). Semua instruksi dimulai dengan opcode 2-bit. Bagi kebanyakan petunjuk,ini diperpanjang dengan tambahan opcode bit di tempat lain di format. Untuk Panggilinstruksi, 30-bit segera operan diperpanjang dengan dua nol bit ke kanan untukmembentuk alamat PC-relative 32-bit dalam bentuk melengkapi berpasangan. Petunjuk selaraspada batas 32-bit sehingga bentuk pengalamatan sudah cukup.Instruksi Cabang termasuk kondisi lapangan 4-bit yang sesuai denganempat standar bit kode kondisi, sehingga setiap kombinasi dari kondisi dapatdiuji. Alamat PC-relative 22-bit diperpanjang dengan dua bit nol di sebelah kanan untukmembentuk 24-bit berpasangan melengkapi alamat relatif. Fitur yang tidak biasa dari Cabanginstruksi adalah bit membatalkan. Ketika bit membatalkan tidak diatur, setelah instruksi
             cabang selalu dilaksanakan, terlepas dari apakah cabang diambil. Ini adalahoperasi cabang khas tertunda ditemukan pada banyak mesin RISC dan dijelaskan dalamBagian 15.5 (lihat Gambar 15.7). Namun, ketika bit membatalkan diatur, instruksi berikutcabang dieksekusi hanya jika cabang diambil. Menindih prosesorefek instruksi yang meskipun sudah di dalam pipa. bit membatalkan iniberguna karena itu membuat lebih mudah untuk compiler untuk mengisi slot delay berikut bersyaratcabang. Instruksi yang target cabang selalu dapat dimasukkan ke dalamslot delay, karena jika cabang tidak diambil, instruksi dapat dibatalkan. ItuAlasan teknik ini diinginkan adalah bahwa cabang kondisional umumnya diambillebih dari separuh waktu.Instruksi Sethi adalah instruksi khusus yang digunakan untuk membentuk 32-bit konstan. Inifitur yang dibutuhkan untuk membentuk konstanta data yang besar; misalnya, dapat digunakan untuk membentukbesar offset untuk instruksi beban atau toko. Instruksi Sethi menetapkan 22 tinggi-orderbit register dengan 22-bit operan langsung, dan nol keluar rendah-order 10 bit.Konstanta segera sampai 13 bit dapat ditentukan dalam salah satu format umum,dan instruksi tersebut dapat digunakan untuk mengisi sisanya 10 bit register. SEBUAHbeban atau toko instruksi juga dapat digunakan untuk mencapai mode pengalamatan langsung. untuk memuatnilai dari lokasi K di memori, kita bisa menggunakan petunjuk SPARC berikut:sethi% hi (K),% r8; memuat high-order 22 bit alamat lokasi; K ke daftar r8ld [% r8 +% lo (K)],% r8; isi beban lokasi K ke r8


BAB 15 / MENGURANGI INSTRUKSI KOMPUTER SET 
                   Makro% hi dan% lo digunakan untuk mendefinisikan operan langsung yang terdiri daribit alamat yang tepat dari lokasi. Ini menggunakan Sethi mirip dengan penggunaanlui instruksi pada MIPS.Format floating-point digunakan untuk operasi floating-point. dua sumberdan satu register tujuan yang ditunjuk.Akhirnya, semua operasi lainnya, termasuk beban, toko, aritmatika, dan logisoperasi menggunakan salah satu dari dua format terakhir yang ditampilkan pada Gambar 15.14. Salah satu formatmenggunakan dua register sumber dan tujuan register, sementara yang lain menggunakan saturegister sumber, satu 13-bit segera operan, dan satu register tujuan.15,8 RISC VERSUS KONTROVERSI CISCSelama bertahun-tahun, kecenderungan umum dalam arsitektur komputer dan organisasi memilikitelah menuju peningkatan kompleksitas prosesor: petunjuk lebih, lebih menanganimode, register lebih khusus, dan sebagainya. Gerakan RISC merupakan dasaristirahat dengan filosofi di balik tren itu. Tentu, penampilansistem RISC, dan publikasi makalah oleh para pendukungnya memuji RISCkebajikan, menyebabkan reaksi dari mereka yang terlibat dalam desain arsitektur CISC.Pekerjaan yang telah dilakukan pada menilai manfaat dari pendekatan RISC dapatdikelompokkan menjadi dua kategori:• Kuantitatif: Upaya untuk membandingkan ukuran program dan kecepatan eksekusi programpada RISC dan CISC mesin yang menggunakan teknologi sebanding• Kualitatif: Memeriksa isu-isu seperti tingkat tinggi dukungan bahasa dan optimalpenggunaan VLSI real estateSebagian besar bekerja pada penilaian kuantitatif telah dilakukan oleh kerja merekapada sistem RISC [PATT82b, HEAT84, PATT84], dan telah, oleh dan besar,menguntungkan untuk pendekatan RISC. Orang lain telah meneliti masalah ini dan datang pergiyakin [COLW85a, FLYN87, DAVI87]. Ada beberapa masalah denganmencoba perbandingan seperti [SERL86]:• Tidak ada sepasang mesin RISC dan CISC yang sebanding dalam siklus hidupbiaya, tingkat teknologi, kompleksitas gerbang, kecanggihan compiler, operasidukungan sistem, dan sebagainya.• Tidak ada tes set definitif program ada. Kinerja bervariasi dengan program.• Sulit untuk memilah efek keras dari efek karena keterampilan dalam compilerpenulisan.• Sebagian besar analisis komparatif pada RISC telah dilakukan pada "mainan" mesindaripada produk komersial. Selain itu, sebagian tersedia secara komersialmesin diiklankan sebagai RISC memiliki campuran RISC dan karakteristik CISC.Dengan demikian, perbandingan yang adil dengan, "murni-play" mesin CISC komersial(Mis, VAX, Pentium) adalah sulit.Penilaian kualitatif, hampir menurut definisi, subjektif. beberapa penelititelah mengalihkan perhatian mereka ke penilaian seperti itu [COLW85a, WALL85], tetapiHasilnya, di terbaik, ambigu, dan tentu saja tunduk bantahan [PATT85b] dan,Tentu saja, counterrebuttal [COLW85b].


15.10 / KUNCI SYARAT, PERTANYAAN REVIEW, DAN MASALAH 
                 Dalam tahun-tahun terakhir, RISC vs kontroversi CISC telah mereda kesebagian besar. Hal ini karena telah terjadi konvergensi bertahap dari teknologi.Sebagai kepadatan Chip dan hardware baku meningkatkan kecepatan, sistem RISC memilikimenjadi lebih kompleks. Pada saat yang sama, dalam upaya untuk memeras kinerja maksimum,desain CISC telah difokuskan pada isu-isu tradisional dikaitkan dengan RISC,seperti peningkatan jumlah register tujuan umum dan peningkatan penekananpada desain pipa instruksi.15,9 DIREKOMENDASIKAN READINGDua klasik makalah gambaran tentang RISC adalah [PATT85a] dan [HENN84]. survei lainArtikel ini [STAL88]. Akun dua upaya RISC perintis disediakan oleh [RADI83]dan [PATT82a].[KANE92] meliputi mesin MIPS komersial secara rinci. [MIRA92] menyediakan baik sebuahgambaran dari MIPS R4000. [BASH91] membahas evolusi dari pipa R3000 untukyang superpipeline R4000. SPARC ditutupi secara rinci dalam [DEWA90].
  


BAB 15 / MENGURANGI INSTRUKSI KOMPUTER SET
                  ulasan Pertanyaan15.1 Apa adalah beberapa karakteristik yang membedakan khas organisasi RISC?15.2 singkat jelaskan dua pendekatan dasar yang digunakan untuk meminimalkan operasi mendaftar memoripada mesin RISC.15.3 Jika register buffer lingkaran digunakan untuk menangani variabel lokal untuk prosedur bersarang,menjelaskan dua pendekatan untuk menangani variabel global.15.4 Apa adalah beberapa ciri khas dari arsitektur set instruksi RISC?15.5 Apa adalah cabang tertunda?masalah15.1 Mengingat pola panggilan-kembali pada Gambar 4.21, berapa banyak overflows dan underflows(Masing-masing yang menyebabkan register menyimpan / restore) akan terjadi dengan ukuran jendelaSebuah. 5?b. 8?c. 16?15.2 Dalam pembahasan Gambar 15.2, dinyatakan bahwa hanya dua bagian pertama dariwindow disimpan atau dikembalikan. Mengapa tidak perlu menyimpan register sementara?15.3 Kami ingin menentukan waktu eksekusi untuk program yang diberikan dengan menggunakan berbagai pipeliningskema yang dibahas dalam Bagian 15.5. MembiarkanN = jumlah instruksi dieksekusiD = jumlah memori aksesJ = jumlah instruksi jumpUntuk sederhana skema sekuensial (Gambar 15.6a), waktu eksekusi adalah 2N + D tahap.Turunkan rumus untuk dua tahap, tiga tahap, dan empat tahap pipelining.15.4 Reorganisasi urutan kode pada Gambar 15.6d untuk mengurangi jumlah NOOPs.15,5 Pertimbangkan potongan kode berikut dalam bahasa tingkat tinggi:karena aku dalam 1 ... 100 lingkaranSd S + Q (I). VALmengakhiri lingkaran;Asumsikan bahwa Q adalah array catatan 32-byte dan bidang VAL dalam 4 byte pertama darisetiap record. Menggunakan kode x86, kita bisa mengkompilasi program fragmen ini sebagai berikut:MOV ECX, 1; menggunakan daftar ECX untuk menahan sayaLP: imul EAX, ECX, 32; mendapatkan offset dalam EAXMOV EBX, Q [EAX]; beban bidang VALADD S, EBX; menambah SINC ECX; selisih ICMP ECX, 101: dibandingkan dengan 101JNE LP; loop sampai I = 100Program ini memanfaatkan instruksi imul, yang mengalikan operan keduadengan nilai langsung dalam operan ketiga dan menempatkan hasil dalam operan pertama(Lihat Soal 10.13). Sebuah advokat RISC ingin menunjukkan bahwa compiler pintardapat menghilangkan petunjuk tidak perlu kompleks seperti imul. Memberikan demonstrasidengan menulis ulang program x86 di atas tanpa menggunakan instruksi imul.15,6 Pertimbangkan loop berikut:S: = 0;untuk K: = 1 sampai 100 lakukanS: = S - K;


15.10 / KUNCI SYARAT, PERTANYAAN REVIEW, DAN MASALAH 
                      Sebuah terjemahan langsung dari ini ke dalam bahasa assembly generik akan terlihatsesuatu seperti ini:LD R1, 0; menjaga nilai S di R1LD R2,1; menjaga nilai K di R2LP SUB R1, R1, R2; S: = S - KBEQ R2, 100, EXIT; dilakukan jika K = 100ADD R2, R2, 1; lain kenaikan KJMP LP; kembali untuk memulai loopSebuah kompiler untuk sebuah mesin RISC akan memperkenalkan slot keterlambatan dalam kode ini sehinggaprosesor dapat menggunakan mekanisme cabang tertunda. JMP instruksi mudahmenangani, karena instruksi ini selalu diikuti oleh instruksi SUB; karena itu,kita hanya dapat menempatkan salinan instruksi SUB di slot penundaan setelahJMP. The BEQ menyajikan kesulitan. Kita tidak bisa meninggalkan kode seperti, karena ADDinstruksi kemudian akan dieksekusi satu kali terlalu banyak. Oleh karena itu, instruksi NOPdiperlukan. Tampilkan kode yang dihasilkan.compiler 15,7 A RISC mesin mungkin melakukan keduanya pemetaan register simbolik untuk aktualregister dan penyusunan kembali instruksi untuk efisiensi pipa. menarikPertanyaan muncul adalah urutan dua operasi harus dilakukan. Mempertimbangkanfragmen program berikut:LD SR1, A; beban A ke simbolis daftar 1LD SR2, B; beban B dalam simbolik daftar 2ADD SR3, SR1, SR2, tambahkan isi SR1 dan SR2 dan toko di SR3LD SR4, CLD SR5, DADD SR6, SR4, SR5Sebuah. Pertama melakukan daftar pemetaan dan kemudian kemungkinan instruksi penataan kembali. Bagaimanabanyak register mesin yang digunakan? Apakah ada perbaikan pipa?b. Dimulai dengan program asli, sekarang lakukan instruksi penataan kembali dan kemudian setiapmungkin pemetaan. Berapa banyak register mesin yang digunakan? Pernahkah adaperbaikan pipa?15.8 Tambahkan entri untuk prosesor berikut untuk Tabel 15.7:Sebuah. Pentium IIb. LENGAN15,9 Dalam banyak kasus, instruksi mesin umum yang tidak terdaftar sebagai bagian dari MIPSset instruksi dapat disintesis dengan instruksi MIPS tunggal. Tampilkan ini untukberikut:Sebuah. Mendaftar-ke-mendaftar bergerakb. Kenaikan, penurunanc. Melengkapid. Meniadakane. Bersih15.10 pelaksanaan A SPARC memiliki K mendaftar jendela. Berapa jumlah N fisikregister?15.11 SPARC kurang sejumlah instruksi umum ditemukan pada mesin CISC.Beberapa ini adalah mudah disimulasikan baik menggunakan daftar R0, yang selalu diatur ke 0,atau operan konstan. Petunjuk ini disimulasikan disebut pseudoinstructions dandiakui oleh assembler SPARC. Tampilkan bagaimana untuk mensimulasikan pseudoinstructions berikut,masing-masing dengan instruksi SPARC tunggal. Dalam semua ini, src dan dst merujukuntuk register. (Petunjuk: Sebuah toko untuk R0 tidak berpengaruh.)Sebuah. MOV src, dstb. MEMBANDINGKAN SRC1, SRC2c. UJI SRC1d. TIDAK dste. NEG dstf. INC dstg. Desember dsth. CLR dstsaya. NOP


15.12 BAB 15 / MENGURANGI INSTRUKSI KOMPUTER SET
                    Pertimbangkan potongan kode berikut:jika K> 10L: = K + 1lainL: = K - 1;Sebuah terjemahan langsung dari pernyataan ini menjadi SPARC assembler bisa mengambilmengikuti bentuk:sethi% hi (K),% r8; memuat high-order 22 bit alamat lokasi; K ke daftar r8ld [% r8 +% lo (K)],% r8; isi beban lokasi K ke r8CMP% r8, 10; bandingkan isi r8 dengan 10ble L1; cabang jika (r8) ... 10nopsethi% hi (K),% r9ld [% r9 +% lo (K)],% r9; isi beban lokasi K ke r9inc% r9; tambahkan 1 ke (r9)sethi% hi (L),% R10st% r9, [% R10 +% lo (L)]; store (r9) ke lokasi Lb L2nopL1: sethi% hi (K),% R11ld [% R11 +% lo (K)],% r12; isi beban lokasi K ke r12Desember% r12; kurangi 1 dari (r12)sethi% hi (L),% r13st% r12, [% r13 +% lo (L)]; store (r12) ke lokasi LL2:kode berisi nop setelah setiap instruksi cabang untuk mengizinkan cabang tertundaoperasi.Sebuah. compiler optimasi standar yang tidak ada hubungannya dengan mesin RISC adalahumumnya efektif untuk dapat melakukan dua transformasi tersebut di ataskode. Perhatikan bahwa dua dari beban yang tidak perlu dan bahwa dua toko dapatdigabung jika toko tersebut akan dipindahkan ke tempat yang berbeda dalam kode. Tampilkan programsetelah membuat dua perubahan tersebut.b. Sekarang mungkin untuk melakukan beberapa optimasi khas SPARC. nop yangsetelah ble bisa diganti dengan memindahkan instruksi lain ke dalam slot delaydan pengaturan bit membatalkan pada instruksi ble (dinyatakan sebagai ble, a L1). TampilkanProgram setelah perubahan ini.c. Sekarang ada dua petunjuk yang tidak perlu. Hilangkan dan tampilkan dihasilkan tersebutprogram.


    

Tidak ada komentar:

Posting Komentar