Jumat, 05 Februari 2010

LEVEL ISA pada Arsitektur Komputer

Level Instruction Set Architecture
Bagian ini akan menguraikan secara lengkap level Instuction Set Architecture (ISA). Level ini terletak di antara level mikroarsitektur dan level system operasi, seperti yang di tunjukkan pada gambar 1-2 pada buku Organisasi Komputer Terstruktur I. Secara historis, level ini telah di kembangkan sebelum level-level lainnya dan sebenarnya merupakan satu-satunya level. Karena itu tidak mengherankan sekarang level ini disebut sebagai “rancangan” dari sebuah mesin (komputer) atau kadang-kadang (secara salah) sebagai ”bahasa asembli”.
Level ISA memiliki signifikansi khusus sehingga begitu penting bagi para perancang system. Level ini adalah interface antara software dan hardware. Meskipun memungkinkan hardware menjalankan secara langsung program-program ysng ditulis dalam C, C++, FORTRAN 90, atau bahasa tingkat tinggi tertentu lainnya, namun itu bukan ide yang bagus. Keunggulan kinerja dari kompilasi atas interpretasi dengan demikian akan hilang. Di samping itu, seperti yang telah sering dipraktikkan, sebagian besar komputer harus dapat menjalankan program-program yang ditulis dalam berbagai ragam bahasa, bukan hanya satu bahasa.
Pendekantan utama yang digunakan oleh semua perancang sistem adalah membuat program-program dalam berbagai bahasa tingkat tinggi agar dapat diterjemahkan ke bentuk menengah yang umum – level ISA – dan membuat hardware yang dapat menjalankan program-program level ISA secara langsung. Level ISA menspesifikasikan interface antara kompiler-kompiler dan hardware. Level ini adalah bahasa yang harus dimengerti oleh keduanya. Hubungan antara kompiler-kompiler, level ISA, dan hardware ditunjukkan pada Gambar 5-1.
Ketika merancang komputer baru, para perancang meminta para penulis kompiler dan para oembuat hardware untuk mencari bentuk apa yang mereka inginkan agar dimasukkan dalam level ISA. Jika para penulis kompiler menginginkan bentuk istimewa tertentu yang tidak dapat diimplementasikan oleh para perancang hardware dalam cara hemat biaya (contoh, instruksi cabang dan instruksi dopayroll), maka bentuk tersebut tidak dimasukkan dalam level tersebut. Begitu pula, jika para pembuat hardware memiliki bentuk rancangan baru untuk dimasukkan (contoh, sebuah memori dimana word-word yang alamat-alamatnya adalah bilangan-bilangan pokok adalah sangat cepat), tetapi para pembuat software tidak dapat menemukan cara bagaimana menghasilkan kode untuk menggunakan bentuk itu, kode tersebut hanya masih sebatas perencanaan. Stelah melalui banyak negoisasi dan simulasi, sebuah ISA yang dioptimalisasikan untuk bahasa-bahasa pemrograman yang diinginkan akan muncul dan diimplementsaikan.
Kompatibilitas backward adalah kemampuan hardware untuk tetap menjalankan program-program yang lama/terdahulu. Yang dimaksudkan disini adalah bahwa mesin baru tersebut harus mampu menjalankan program-program lama tanpa perubahan. Namun, tidak menjadi masalah bila mesin baru itu memilki instruksi-instruksi baru dan bentuk-bentuk lain yang hanya dapat dimamfaatkan oleh software baru. Dalam kaitannya dengan gambar 5.1, sejauh para perancang ISA memiliki kompatibilitas backward dengan model-model lama, para perancang bebas untuk melakukan apa saja yang mereka kehendaki dengan hardware karena hampir tidak seorangpun peduli dengan hardware yang sebenarnya. Tujuannya adalah memastikan bahwa program-program lama dapat dioperasikan pada mesin baru tersebut.
Faktor-faktor yang menjadi indikator bahwa ISA disebut bagus ada 2, yaitu Pertama, sebuah ISA yang bagus harus menspesifikasikan sejumlah instruksi yang dapat diimplementasikan secara efisien dalam teknologi-teknologi saat ini dan yang akan datang, yang menghasilkan rancangan-rancangan yang menghemat biaya selama beberapa generasi.
Kedua, sebuah ISA yang bagus harus menyediakan suatu target yang jelas untuk kode yang dikomplikasikan. Standarisasi dan kelengkapan dari serangkaian pilihan merupakan sifat-sifat penting yang tidak selalu ada dalam sebuah ISA.

TINJAUAN ATAS LEVEL ISA

Tinjauan pada model ISA akan kita lihat model-model memori, register-register, dan instruksi-instruksi.

Sifat-sifat dari Level ISA

Pada dasarnya, level ISA ditentukan oleh sudut pandang yang digunakan oleh pemrograman bahasa mesin. Kode level ISA adalah apa yang di-output oleh kompiler (dengan mengabaikan call-call sistem operasi dan mengabaikan bahasa asembli simbolis untuk sementara waktu). Untuk membuat kode level ISA, penulis kompiler harus mengetahui apa itu model memori, register-register apa yang ada, apa jenis-jenis data dan instruksi-instruksi yang tersedia dan lain sebagainya.
Untuk beberapa arsitektur, level ISA dispesifikasikan oleh sebuah dokumen pendefinisian formal, yang sering diproduksi oleh suatu konsorsium industri. Untuk arsitektur-arsitektur lainnya level ISA tidak dispesifikasikan demikian. Contoh, V9 SPARC (Versi 9 SPARC) dan JVM memiliki definisi-definisi resmi (Weaver dan Germond, 1994; dan Lindholm dan Yellin, 1997). Tujuan dari dokumen pendefinisian adalah untuk membantu implementer-implementer berbeda membuat mesin yang mampu menjalankan software yang persis sama dan memperoleh hasil-hasil yang sama.
Dalam kasus SPARC, tujuannya adalah untuk memudahkan para vendor chip memproduksi chip-chip SPARC memiliki fungsi yang identik, meskipun kinerja dan harga yang berbeda. Karena itu, dokumen pendefinisian menjelaskan apa yang dimaksudkan dengan model memori, register-register apa yang ada, apa jenis-jenis data dan instruksi-instruksi yang tersedia dan lain sebagainya, tetapi bukannya bagaimana bentuk dan mikroarsitektur itu.
Dokumen-dokumen pendefinisian semacam itu berisi bagian-bagian normatif, yang menetapkan ketentuan-ketentuan, dan bagian informatif, yang dimaksudkan untuk membantu pembaca namun bukan bagian dari definisi formal. Bagian-bagian normatif selalu menggunakan kata-kata seperti shall, may not,dan should untuk mewajibkan, melarang, dan menyarankan aspek-aspek dari mikroarsitektur. Contoh, sebuah kalimat seperti :
Executing a reserved apcode shall cause a trap, menyatakan bahwa jika sebuah program mengeksekusi sebuah opcode yang tidak didefinisikan, hal tersebut bisa menimbulkan jebakan dan tidak bisa diabaikan begitu saja atau dengan tetap membiarkan kalimat ini terbuka, dengan demikian kalimat ini akan berbunyi
The effect executing a reserved opcode is implementation defined, Ini berati bahwa penulis compiler tidak bisa memperkirakanperilaku tertentu, jadi memperkirakan implementer-implementer berbeda kebebasan untuk membuat pilihan-pilihan berbeda.
Sifat penting lainnya dari level ISA adalah bahwa pada sebagian besar mesin paling tidak terdapat dua mode. Kernel mode dimaksudkan untuk menjalankan sistem operasi dan memungkinkan semua instruksi untuk dijalankan. Mode pemakai (user mode) dimaksudkan untuk menjalankan program-program aplikasi dan tidak mengijinkan instruksi-intruksi sensitif tertentu (seperti instruksi-instruksi yang memanipulasi cache secara langsung) untuk dijalankan.

Model-model Memori
Semua komputer membagi memori hingga menjadi sel-sel yang memiliki alamat-alamat yang berurutan. Ukuran sel umum saat ini adalah 8 bit, tetapi ukuran-ukuran sel dari 1 bit hingga 60 bit telah digunakan di masa lalu. Sebuah sel 8 bit disebut byte.
Byte-byte umumnya dikelompokkan ke dalam word-word 4 byte(32 bit) atau 8 byte(64 bit) yang disertai dengan instruksi-instruksi untuk memanipulasi word-word keseluruhan. Banyak arsitektur mengharuskan word-word diatur menurut batas-batas alamiahnya, sehingga contoh sebuah word 4 byte mungkin dimulai pada alamat 0,4,8, dsb. Tetapi bukan pada alamat 1 atau 2. Begitu pula pada sebuah word 8 byte bisa dimulai pada alamat 0,8, atau 16 tetapi bukan pada alamat 4 atau 6.
Pengaturan diperlukan, karena memori dapat beroperasi lebih efisien. Pentium II adlah contoh yang mengambil 8 byte sekaligus dari memori, menggunakan alamat fisik 36 bit, tetapi ia hanya memiliki 33 bit alamat. Pentium II tidak dapat membuat suatu referensi memori yang berurutan, karena 3 bit orde lebih rendah tidak ditentukan secara jelas. Bit-bit tersebut selalu 0, yang memaksa semua alamat memori harus berupa kelipatan dari 8 byte.
Tetapi ketentuan pengaturan ini, kadang-kadang menimbulkan masalah. Pada Pentium II, program ISA diijinkan untuk mereferensi word yang dimulai pada apapun , suatu sifat yang mirip dengan sifat pada chip 8088, yang memiliki sebuah bus data dengan lebar 1 byte. Jika sebuah program Pentium II membaca word 4 byte pada alamat 7, hardware harus membuat satu referensi memori agar dapat memperoleh byte-byte 0 hingga 7, dan suatu referensi memori kedua untuk memperoleh byte-byte 8 hingga 15. Untuk itu, CPU harus menyaring 4 byte yang dibutuhkan dari 16 byte yang terbaca dari memori dan memasang byte-byte tersebut diurutan sebelah kanan untuk membentuk sebuah word 4 byte.
Sebagian besar mesin memiliki sebuah ruang alamat linier tunggal pada level ISA, yang berkembang dari alamat 0 hingga ke maksimum tertentu, biasanya 232 byte atau 264 byte. Tetapi beberapa mesin memiliki ruang alamat yang terpisah untuk instruksi-instruksi dan data, sehingga satu pengambilan instruksi pada alamat 8 berlangsung pada sebuah ruang alamat berbeda dibanding pengambilan data pada alamat 8. Skema ini lebih rumit namun memiliki 2 buah keunggulan. Pertama, dimungkinkan untuk memiliki 232 byte program dan 232 byte data tambahan meskipun hanya menggunakan alamat 32 bit. Kedua, karena semua penulisan secara otomatis dilakukan pada ruang data, mustahil untuk secara kebetulan menulis atas program tersebut, sehingga menghapus satu sumber bug-bug program.
Perhatikan bahwa memiliki ruang alamat yang terpisah untuk instruksi dan data tidak sama dengan memiliki cache level 1 terpisah. Dalam kasus pertama ukuran total ruang alamat dilipat-gandakan dan pe,bacaan pada alamat tertentu menghasilkan hasil yang berbeda, tergantung pada apakah suatu instruksi atau sebuah word sedang dibaca. Dengan sebuah cache terpisah, masih terdapat satu ruang alamat, hanya cache-cache yang berbeda menangani bagian-bagian berbeda dari ruang alamat itu.
Aspek lain dari model memori level ISA adalah semantik memori. Merupakan hal yang wajar bila mengharapkan bahwa suatu instruksi LOAD yang terjadi setelah instruksi STORE dan yang mereferensi alamat yang sama akan mengembalikan nilai yang baru saja disimpan. Tetapi banyak rancangan mikroinstruksi disusun kembali sehingga dapat menimbulkan suatu kondisi dimana memori tidak akan menunjukkan karakteristik dan sifat yang diharapkan. Masalah tersebut menjadi semakin buruk bila terjadi pada sebuah multiprosesor masing-masing dari berbagai macam CPU mengirim serangkaian permintaan pembacaan dan penulisan (yang mungkin disusun ulang) kesebuah memori bersama
Semua permintaan memori dapat diserialkan, sehingga setiap permintaan bisa diselesaikan sebelum permintaan berikutnya dikeluarkan. Strategi ini akan merusak kinerja tetapi menghasilkan semantik memori yang paling sederhana.
Untuk memaksa suatu pengurutan pada memori, program harus menjalankan instruksi SYNC, yang menghambat pengeluaran semua operasi memori baru sampai seluruh operasi sebelumnya telah selesai dilaksanakan. Rancangan ini membebani kompiler karena mereka harus memahami bagaimana mikroarsitektur utama bekerja secara mendetail, namun rancangan ini memberi kebebasan penuh kepada para perancang untuk mengoptimalkan pemakaian memori.
Model-model memori lanjutan juga memungkinkan, dimana hardware secara otomatis menghambat pengeluaran referensi memori tertentu.

Register-register
Semua computer memiliki beberapa register yang dapat dilihat pada level ISA. Register-register ini ditempatkan disana dengan maksud untuk mengontrol pelaksanaan program, menangani hasil-hasil sementara, dan untuk tujuan-tujan lain. Pada umumnya register-register yang terlihat pada level mikroarsitektur, seperti TOS dan MAR dalam Organisasi Komputer Terstruktur I, tidak terlihat pada level ISA. Tetapi sebagian diantaranya, seperti pencacah program dan pointer stack, terlihat pada kedua level tersebut. Disisi lain, register-register yang terlihat pada level ISA selalu terlihat pada level mikroarsitektur karena disanalah tempat mereka diimplementasikan.

Register-register level ISA secara umum dapat dibagi kedalam dua kategori: register-register dengan tujuan khusus dan register-register dengan tujuan umum(serba guna). Register-register yang mempunyai tujuan khusus termasuk segala sesuatu seperti pencacah program dan pointer stack, serta register-register lain dengan fungsi khusus. Sebaliknya, register-register yang mempunyai tujuan umum ditempatkan disana untuk menangani variabel-variabel lokal utama, dan hasil kalkulasi-kalkulasi lanjutan. Fungsi utama dari register-register tujuan umum ini adalah untuk menyediakan akses yang cepat kedata yang paling banyak digunakan (terutama, untuk manghindari akses-akses memori). Mesin-mesin RISC, dengan CPU-CPUnya yang cepat dan momori-memori lamban, biasanya memilki paling tidak 32 register tujuan umum dan trend dalam rancangan-rancangan CPU baru adalah memiliki register-register yang jauh lebih banyak.
Pada beberapa mesin, register-register dengan tujuan umum sangat simetris dan dapat saling bertukar. Jika register-register semuanya sebanding, sebuah kompiler dapat mengguanak R1 untuk menangani suatu hasil sementara, namun sebaiknya kompiler tersebut menggunakan R25. pilihan register tidak menjadi masalah.
Tetapi, pada mesin-mesin lain sebagian dari register-register multi guna mungkin masih sedikit spesial. Contoh pada pentium II, terdapat sebuah register yang di sebut EDX yang dapat di gunkan sebagai sebuah register umum, tetapi yang juga memperoleh separuh produk dalam suatu multiplikasi dan yang menguasai separuh dividen dalam suatu bagian.
Bahkan ketika register-register multi guna dapat saling bertukaran seluruhnya, merupakan hal yang umum bagi sistem operasi atau kompiler-kompiler untuk mengadopsi konveksi-konveksi tentang bagaimana mereka digunakan. Contoh, beberapa register mungkin memiliki parameter-parameter untuk prosedur-prosedur yang dipanggil dan register-register lain mungkin digunakan sebagai register-register cadangan. Jika sebuah kompiler menempatkan sebuah variabel lokal yang penting dalam R1 dan kemudian memanggil suatu prosedur perpustakaan yang mengira R1 adalah sebuah register cadangan yang disediakan baginya, ketika prosedur perpustakaan kembali, R1 mungkin berisis sesuatu yang tidak berarti. Jika terdapat konvesi-konvesi pada seluruh sistem tentang bagaimana register-register harus digunakan, kompiler-kompiler dan pemrograman bahasa asembli disarankan untuk mencantumkan mereka.
Selain register-register level ISA yang dapat dilihat pada program-program pemakai, selalu ada sejumlah besar register dengan tujuan khusus yang tersedia hanya dalam mode kernel. Register-register ini mengontrol berbagai macam cache, memori, piranti-piranti I/O, bentuk-bentuk hardware lainnya dari mesin tersebut. Mereka digunakan hanya oleh sistem operasi, sehingga kompiler-kompiler dan para pemakai tidak harus mengetahui tentang mereka.
Satu register kontrol yang tampaknya merupakan keturunan kernel/pemakai adalah register flags atau PSW (Program Status Word). Register ini memiliki berbagai macam bit yang dibutuhkan oleh CPU. Bit-bit paling penting adalah kode-kode kondisi. Bit-bit ini di-set pada setiap siklus ALU dan mencerminkan status dari hasil operasi terkini. Bit-bit kode kondisi bisa antara lain

N – Set apabila hasil Negatif
Z – Set apabila hasil Zero
V – Set apbila hasil menimbulkan suatu oVerflow
C – Set apabila hasil menyebabkan sebuah pembawa selain dari bit 3
(pembawa pembantu, Auxiliary carry)
P – Set apabila hasil memiliki paritas genap

Kode-kode kondisi penting karena intruksi-intruksi cabang perbandingan dan bersyarat menggunakan kode kondisi.

Intruksi-intruksi
Bentuk utama dari level ISA adalah kumpulan intruksi-intruksi mesinnya. Intruksi-intruksi ini menspesifikasikan apa yang dapat dilakukan mesin tersebut. Selalu ada intruksi-intruksi LOAD dan STORE untuk memindahkan data dari memori dan register-register serta intruksi-intruksi MOVE untuk menyalin data di antara register-register
Kasus
-Pada Instruksi-instruksi Manajemen Direktori kita kenal istilah On-line, Off-line,
dan bagaimana proses pengaturan simpanannya, jelaskan !


Tinjauan mengenai level ISA Pentium II
Proses Pentium II telah berkembang selama beberapa generasi. ISA dasar mempertahankan dukungan penuh untuk melaksanakan progarm-program yang ditulis untuk prosesor-prosesor 8086 dan 8088 (yang memiliki ISA yang sama), ISA dasar ini tetap mempertahankan sisa-sisa dari 8080, sebuah prosesor 8 bit yang sangat terkenal pada 1970-an. Pada gilirannya, prosesor 8080 sangat dipengaruhi oleh keterbatasan-keterbatasan kompatibilitas dengan prosesor 8008 pertama, yang didasarkan pada chip 4004, sebuah chip 4 bit yang digunakan kembali ketika dinosaurus mengembara di dunia.
Dari sudut pandang software, prosesor-prosesor 8086 dan 8088 adalah mesin-mesin 16 bit langsung (meskipun prosesor 8088 memiliki bus 8 bit). Penggantinya, prosesor 80286 juga adalah sebuah mesin 16 bit. Keunggulan utamanya adalah ruang alamat yang lebih besar, meskipun beberapa program pernah menggunakannya karena mesin ini terdiri dari 16.384 segmen 64K dan bukan memori 2^24 byte linier.
Prosesor 80386 adalah mesin 32 bit pertama dalam keluarga intel. Semua mesin penggantinya (80486, Pentium, Pentium pro, Pentium II, Celeron, dan Xeon) pada dasarnya adalah arsitektur 32 bit yang sama seperti 80386, yang disebut IA-32, jadi arsitektur inilah yang akan menjadi perhatian utama kita disini. Satu-satunya perubahan arsitektur utama sejak 80386 adalah diperkenalkannya intruksi-intruksi MMX dalam versi-versi terakhir dari Pentium, dan yang selanjutnya di masukan di dalam Pentium II dan prosesot-prosesor berikutnya.
Pentium II memiliki tiga mode operasi, dua diantaranya membuat mesin ini tampak seperti sebuah prosesor 8088. pertama adalah model nyata dimana di dalam model nyata telah di lakukan penambahan-penambahan untuk semua bentuk (sejak 8088 dihilangkan) dan Pentium II bertindak seperti sebuah prosesor 8088 sederhan. Jika program apapun melakukan kesalahan, mesin keseluruhan akan mengalami tabrakan
Satu langkah lebih maju adalah mode kedua yaitu: mode 8086 virtual, yang memungkinnya dapat menjalankan program-program 8088 yang lama secara terproteksi. Dalam mode ini, suatu system operasi riil berada dibawah kendali mesin keseluruhan. Untuk menjalankan program 8088 lama, sistem operasi itu menciptakan suatu lingkungan terisolasi khusus yang berfungsi seperti sebuah prosesor 8088, kecuali bahwa jika programnya mengalami tabrakan, sistem operasi akan diberitahu dan bukan mesin yang mengalami tabrakan. Ketika seorang pemakai windows memulai sebuah windows MS-DOS, program yang dijalankan disana dimulai dalam mode 8086 virtual untuk mencegah windows sendiri dari menjalankan program-program MS-DOS secara salah
Mode terakhir adalah mode terproteksi, dimana pentium II sebenarnya berfungsi seperti sebuah pentium II dan bukan seperti prosesor 8088 yang sangat mahal. Empat level istimewa tersedia dan dikontrol oleh bit-bit dalam PSW. Level 0 berkaitan dengan mode kernel pada komputer-komputer lain dan memiliki akses penuh kemesin tersebut. Level 0 ini digunakan oleh sistem operasi. Level 3 diperuntukkan bagi program-program pemakai. Level ini memblok akses ke intruksi-intruksi penting tertentu dan mengontrol register-register untuk mencegah sebuah program pemakai yang curang mengganggu mesin keseluruhan. Level 1 dan Level 2 jarang di gunakan.
Pentium dua memilki ruang alamat yang sangat luas, dengan memori yang dibagi menjadi 16.384 segmen, yang masing-masing dimulai dari alamt 0 hingga alamt 2^32-1. Tetapi, sebagian besar system operasi (termasuk UNIX dan seluruh versi Windows) mendukung hanya satu segmen, sehingga sebagian besar program aplikasi secara efektif melihat sebuah ruang alamat linier seluas 2^32, dan kadang-kadang sebagian dari ruangan ini dikuasai oleh system operasi. Setiap byte dalam ruang alamat memiliki alamatnya sendiri, dengan word-word yang memilki panjang 32 bit. Word-word disimpan dalam format endian kecil (byte orde rendah memiliki alamat rendah)

Tinjauan atas UltraSPARC II Level ISA
Arsitektur SPARC diperkenalkan pertama kali pada tahun 1987 oleh sun Microsystem. Arsitektur itu adalah salah satu dari arsitektur-arsitektur komersial pertama berlabel arsitektur RISC. Arsitektur ini dibuat berdasarkan riset yang dilakukan di berkeley pada tahun 1980-an (patterson, 1985; dan patterson dan sequin, 1982). SPARC yang asli adalah sebuah arsitektur 32-bit, tetapi ultra SPARC II adalah sebuah mesin 64-bit yang dibuat berdasarkan versi 9 dari arsitektur itu.
Struktur memori dari ultra SPARC II cukup jelas dan sederhana : memori yang dapat di alamatkan adalah sebuah larik linier dari 2^64 byte. Namun, memori ini terlalu besar (18.446.744.073.709.551.616 byte) sehingga tidak ada mesin saat ini yang dapat mengimplementasikannya. Implementasi-implementasi saat ini memilki keterbatasan ukuran alamat yang dapat di akses (2^44 byte pada UltraSPARC II), tetapi yang akan meningkat pada model-model di masa mendatang. Urutan byte default adalah endian besar, tetapi urutan tersebut dapat diubah menjadi endian kecil dengan mengisi sebuah bit dalam PSW.
Penting bahasa ISA memilki batas yang lebih besar dari yang dibutuhkan implementasi-implementasi, karena implementasi-implementasi di masa mendatang hampir pasti akan perlu meningkatkan ukuran memori yang bisa di akses prosesor. Salah satu dari masalah-masalah paling serius yang di jumpai pada rancangan-rancangan yang berhasil adalah bahwa ISA mereka membatasi ukuran memori yang dapat dialamatkan. Dalam ilmu komputer, satu-satunya kesalahan yang tidak bisa diatasi seseorang adalah ukuran bit yang tidak mencukupi.
ISA SPARC jelas, meskipun pengaturan register-register agak rumit dalam rangka untuk membuat panggilan-panggilan prosedur menjadi lebih efesien. Pengalaman telah menunjukan bahwa organisasi register lebih rumit dibanding yang seharusnya, ini dikarenakan adanya ketentuan kompatibilitas backward menyebabkan sulit untuk meniadakan hal itu.
UltraSPARC Iimemiliki dua kelompok register: 32 register serba guna 64 bit dan 32 register titk mengambang. Register-register serba guna disebut R0 hingga R31 meskipun nama-nama lain digunakan dalam konteks-konteks tertentu.
Semua register serba guna memiliki lebar 64 bit, dan kecuali untuk R0, yang sebenarnya 0, dapat dibaca dan ditulis oleh berbagai macam intruksi load dan store. Penggunaan-penggunaan yang diberikan sebagian didasarkan pada konvensi, tetapi sebagian juga didasarkan pada bagaimana hardware memfungsikan register-register tersebut. Secara umum, kuranglah tepat bila memfungsikan register-register tidak sesuai dengan ketentuan-ketentuan tersebut. Kecuali memiliki sebuah Black Belt dalam SPARC Guru dan benar-benar mengetahui apayang sedang dikerjakan. Merupakn tanggung jawab dari kompiler atau pemrogram untuk memastikan bahwa program mengakses register-register dengan benar dan menjalankan jenis aritmatik yang benar atas register-register tersebut.
Variabel-variabel global di gunakan untuk mengontrol konstanta-konstanta, variabel-variabel, dan pointer-pointer yang di butuhakn dalam semua prosedur, meskipun mereka bias dijumpai dan di muat kembali pada entri-entri prosedur dan ada jika di butuhkan. Register-register Ix dan Ox di gunakan untuk melewatkan parameter-parameter ke produsen-produsen untuk menghindari referensi-referensi memori.
Tiga register resmi di gunakan untuk tujuan-tujuan khusus. Register-register FP dan SP membatasi kerangka saat ini. Register FP menunjuk ke baris frame saat ini dan di gunakan untuk mengalamtka variabel-variabel lokal. Register SP mengindikasikan puncak saat ini dari stack dan berfluktuasi ketika word-word di dorong ke stack tersebut atau dilepas dari stack itu. Sebaliknya, FP hanya berubah pada saat pemanggilan dan pengembalian prosedur. Register bertujuan khusus ketiga adalah R31. register ini di gunakan untuk pemanggilan prosedur untuk menangani alamat pengembalian.
Bagaimana dengan ini:
Apa dimaksud dengan rangkaian Flip-Flop dan Register Geser Kanan, dan apa hubungan keduanya, jelaskan dan gambarkan rangkaiannya dan sama pula dengan Register Geser Kiri

UltraSPARC II sebenarnya memiliki lebih dari 32 register serba guna, meskipun hanya 32 saja yang sangat mungkin untuk program tersebut pada setiap waktu. Bentuk ini, yang disebut sebagai register Windows, dimaksudkan untuk mendukung panggilan-panggilan prosedur. Gagasan dasarnya adalah untuk menyaingi sebuah stack, tetapi dengan menggunakan register-register. Yaitu, sebenarnya ada begitu banyak kumpulan register, seperti halnya terdapat begitu banyak frame pada sebuah stack. Hanya ada 32 register umum yang sangat mungkin di gunakan kapan saja. Register CWP (Current Window Pointer) tetap melacak kumpulan register mana saat ini yang sedang di gunakan.
Intruksi pemanggilan prosedur menyembunyikan kumpulan-kumpulan register lama dan menyediakan suatu kumpulan register baru untuk di gunakan oleh prosedur yang dipanggil dengan mengurangi CWP. Tetapi, beberapa register diangkut dari prosedur pemanggil ke prosedur yang di panggil, dengan menggunaka suatu cara yang efisien untuk melewatkan parameter-parameter di antara prosedur-prosedur. Teknik ini bekerja dengan menamakan kembali sebagai sebagian dari register-register tersebut. Setelah pemanggilan prosedur, register-register output lama yaitu R8 sampai R15 masih memungkinkan, tetapi kini mereka menjadi register-register input yaitu R24 hingga R31. Namun, delapan register global tidak berubah, yaitu mereka tetap merupakan kumpulan register-register yang sama.
Kasus
- Apa yang dimaksud dengan MemoryVirtual, Halaman Bebas, Halaman dicadangkan dan
Halaman telah digunakan pada konteks memory virtual Windows NT, jelaskan !

Tidak seperti memori, yang bersifat agak tidak terbatas, ketika prosedur-prosedur terlalu berbeli-belit, mesin tersebut akan beroperasi diluar windows register agar dapat berfungsi. Di situ kumpulan terlama di buang ke dalam memori untuk memberi ruang kosong bagi kumpulan register yang baru. Begitu pula, setelah banyak pengembalian prosedur, suatu kumpulan register mungkin perlu di ambil dari memori. Secara keseluruhan, kompleksitas ini sangat menggangu dan mungkin lebih sulit dari yang seharusnya. Kompleksitas ini hanya membantu ketika calls tidak berurutan.
UltraSPACT II juga memiliki 32 register titik mengambang, yang bisa menangani nilai-nilai 32 bit atau 64 bit. Juga memungkinkan untuk menggunakan pasangan-pasangan dari register-register ini untuk mendukung nilai-nilai 128 bit.
Arsitektur UltraSPARC II adalah arsitektur load/store. Yaitu, operasi-operasi yang mengakses memori secara langsung adalah hanya operasi-operasi LOAD dan STORE, intruksi-intruksi untuk memindahkan data antara register-register dan memori. Semua operand untuk intruksi-intruksi aritmetik dan logika harus berasal dari register-register, atau di pasok oleh intruksi, dan semua hasil harus disimpan dalam sebuah register.
Contoh
Buatlah sirkuit gate dan table kebenarannya dengan menggunakan nilai dari Bolean dibawah ini sebagai hasil AKHIR pada sirkuit tersebut :
a. A or (B or C)
b. (A and B) or (A and C)
d. (A and B) or C
e. (A or B) and (A or C)


Tinjauan atas Mesin Virtual Java
Level ISA JVM tidak biasa, tetapi jelas dan sederhana. Model memori JVM sama s eperti model IJVM . Memori memiliki empat daerah: frame variable local, stack operand, daerah metode, dan pool konstan. Implementasi-implementasi Mic-x dari IJVM memiliki register-register LV, SP, PC, dan CPP yang menunjukan ke daerah-daerah ini. Seluruh akses memori harus dibuat sebagai pengganti dari salah satu register-register ini, pointer-pointer atau alamat-alamat memori absolute tidak pernah digunakan. Meskipun JVM tidak membutuhkan register-register ini. Atau sesuatu yang mirip oleh register.
Tidak di gunakannya pointer-pointer untukmendapatkan variable-variabel local dan konstanta-konstanta bukanlah suatu kebetulan. Sangat penting untuk mencapai salah satu dari tujuan-tujuan rancangan utama java. Kemampuan bagi para pemakai untuk men-download sebuah program JVM (binier) dari internet dan menjalankannya secara aman, dan proram itu tidak perlu harus memata-matai atau sebaliknya merusak mesin tempat ia menjalankan operasinya. Dengan membatasi penggunaan pointer, keamanan bisa diperoleh.
Pengalamatan
Mode-mode Pengalamatan
Mode-mode Pengalamatan adalah bentuk-bentuk dari pengalamatan.
Pengalamatan Segera
Operand Segera adalah sebuah operand yang mempunyai alamat instruksi berisikan operand itu sendiri. Operand segera secara otomatis diambil dari memori secara bersamaan dengan instruksi tersebut diambil, karena operand tersebut segera tersedia untuk digunakan. Ciri pengalamatan ini adalah tidak membutuhkan referensi memori ekstra untuk mengambil operand. Kelemahannya adalah bahwa hanya sebuah konstanta yang dapat disuplai dengan cara ini. Begitu pula, jumlah nilai-nilai dibatasi oleh ukuran bidang.
Pengalamatan Langsung
Pengalamatan Langsung adalah sebuah metode untuk menspesifikasi sebuah operand di dalam memori dengan cara memberikan alamat operand itu seluruhnya. Pengamatan langsung hanya bias digunakan untuk mengakses variable-variabel global yang alamatnya diketahui pada waktu bersamaan.
Pengalamatan Register
Mode Register adalah sebuah mode menspesifikasikan sebuah operand di dalam register bukan di lokasi memori. Metode ini tidak hanya digunakan hanya pada saat sebuah operand dipindahkan dari memori ke dalam sebuah register atau dari register ke memori. Bahkan untuk instruksi-instruksi tersebut, salah satu operand adalah register yang merupakan sumber dan tujuan word memori.
Pengalamatan Tidak Langsung Register
Dalam mode ini, operand yang dispesifikasikan berasal dari memori atau bertujuan ke memori, tetapi alamatnya tidak dihubungakan ke dalam instruksi, sebagaimana terjadi di dalam pengalamatan langsung. Malahan, alamat tercakup di dalam sebuah register. Maka, alamat sebuah operand yang tidak dihubungkan ke dalam instruksi disebut pointer. Keuntungan pengalamatan ini adalah bahwa mode ini bisa mereferensi memori tanpa kehilangan alamat memori penuh dalam instruksi. Dan juga dapat menggunakan word-word memori berbeda pada eksekusi-eksekusi berbeda terhadap instruksi tersebut. *Self Modifying adalah suatu kondisi dari sebuah program yang memodifikasi sendiri.
Pengalamatan dengan Indeks
Pengalamatan dengan Indeks (Indexed Addressing) adalah pengalamatan memori dengan memberikan sebuah register (eksplisit atau implisit) dan sebuah pengganti konstanta.
Based-Indexed Addressing
Based-Indexed Addressing dalah sebuah mode pengalamatan dimana alamat memori dihitung dengan menambahkan dua register ditambah sebuah pengganti (opsional). Salah satu register itu adalah induk dan register yang lain adalah indeks. Jika terdapat sebuah mode pengalamatan tidak langsung melalui jumlah dua register tanpa pengganti, maka hal itu adalah sangat ideal.
Pengalamatan Stack
Notasi Polandia Terbalik
Postfiks atau Reverse Polish Notation adalah notasi dengan bentuk operator berada sesudah operand-operand. *Infiks adalah sebuah notasi dengan bentuk operator berada diantara operand-operand. Notasi Polandia terbalik memiliki sejumlah keunggulan disbanding notasi infiks untuk menyatakan rumus-rumus aljabar. Pertama, setiap rumus dapat dinyatakan tanpa tanda kurung. Kedua, notasi ini cocok untuk mengevaluasi rumus-rumus pada computer yang memiliki stack-stack. Ketiga, operator infiks memiliki keistimewaan, yang selalu berubah-ubah dan tidak diinginkan.
Evaluasi terhadap Rumus-rumus notasi Polandia Terbalik
Notasi Polandia Terbalik adalah notasi yang tepat untuk mengevaluasi rumus-rumus pada sebuah komputer yang memiliki stack. Rumus itu terdiri dari simbol-simbol n, yang masing-masing bisa berupa sebuah operand atau sebuah operator. Algoritma untuk mengevaluasi sebuah rumus notasi Polandia terbalik dengan menggunakan stack adalah sangat mudah. Caranya adalah, scan-lah deretan notasi Polandia terbalik itu dari kiri ke kanan. Ketika menjumpai sebuah operand doronglah operand itu ke stack. Jika yang dijumpai operator, jalankan instruksi yang sama.
Mode-mode Pengalamatan untuk Instruksi-instruksi Cabang
Pengalamatan tidak langsung register memungkinkan program untuk mengkomputasi alamat tujuan, menempatkannya di dalam sebuah register dan kemudian masuk ke sana. Mode lainnya adalah mode berindeks, yang menggantikan sebuah jarak yang telah diketahui sbuah register. Mode ini memiliki ciri-ciri yang sama seperti seperti mode pengalamatan tidak langsung register.
Ortogonalitas Opcode-opcode dan Mode-mode Pengalamatan
Dari sudut pandang software, instruksi-instruksi dan pengalamatan harus memiliki struktur yang tetap, dengan sejumlah kecil format instruksi. Struktur semacam itu akan semakin memudahkan sebuah kompiler unuk menghailkan kode bagus. Semua opcode harus memungkinkan semua mode pengalamatan bila memang diperlukan. Disamping itu, semua register harus tersedia untuk seluruh mode register (termasuk Frame Pointer (FP), Stack Pointer (SP), dan Program Counter (PC).


Satu-satunya masalah disini adalah bahwa untuk pengalamatan langsung, kita membutuhkan bit-bit yang lebih banyak untuk alamat. Apa yang dilakukan oleh PDP-11 dan VAX adalah menambahkan sebuah word tambahan pada instruksi untuk alamat dari setiap operand yang dialamatkan secara langsung.
Mode-mode Pengalamatan Pentium II
Mode-mode pengalamatan Pentium II sangat tidak teratur dan berbeda antara satu dengan yang lainnya tergantung apakah suatu instruksi tertentu berada di dalam mode 16 bit atau mode 32 bit. Mode-mode yang didukung meliputi mode pengalamatan segera, pengalamatan langsung, pengalamatan register, pengalamatan tidak langsung register, pengalamatan berindeks, dan sebuah mode khusus untuk mengalamatkan elemen-elemen larik. Masalahnya adalah tidak semua mode berlaku untuk semua instruksi dan tidak semua register dapat digunakan dalam semua mode. Hal ini membuat pekerjaan penulis kompiler semakin sulit dan kode yang dihasilkan semkain buruk.

Mode-mode SIB (Scali, Index, Base) sangat penting untuk mengakses elemen-elemen larik. Contoh, perhatikan pernyataan Java

For (i = 0; i < n; i++) a[i] = 0;
Dimana a adalah sebuah larik dari bilangan-bilangan bulat 4 byte yang terdapat didalam prosedur saat ini.
Mode-mode Pengalamatan UltraSPARC II
Dalam ISA UltraSPARC II, semua instruksi menggunakan mode pengalamatan segera atau register untuk instruksi-instruksi yang mengalamatkan memori. Untuk mode pengalamatan segera, sebuah konstanta 13 bit (yang bertanda) menyediakan data. Tidak ada mode-mode lain untuk instruksi-instruksi aritmetik, logika, dan instruksi-instruksi yang sama.
Tiga macam instruksi mengalamatkan memori: instruksi LOAD, instruksi STORE, dan satu instruksi sinkronisasi multiprosesor. Instruksi-instruksi LOAD dan STORE memiliki dua mode untuk mengalamatkan momori. Mode pertama menghitung jumlah dari dua register dan kemudian mengalamatkannya secara tidak langsung melalui mode tersebut. Mode kedua adalah mode pengindeksan tradisional, dengan pengganti 13 bit (yang bertanda).
Mode-mode Pengalamatan JVM
JMV tidak memiliki mode-mode pengalamatan umum. Karena JVM tidak memiliki register-register yang nyata, mode pengalamatan register dan mode pengalamatan tidak langsung register tidak mungkin dilakukan. Beberapa instruksi lain untuk menspesifikasikan sebuah variabel yang berkaitan dengan register implisit tertentu, biasanya LV atau CPP. Cabang-cabang juga menggunakan mode berindeks, dengan PC yang digolongkan sebagai register.
Pembahasan Mengenai Mode-mode Pengalamatan
Sekarang kita telah mengenali beberapa mode pengalamatan. Mode-ode yang digunakan oleh Pentium II, UltraSPARC II, dan JVM. Tetapi seperti telah dikemukakan diatas, tidak setiap mode dapat digunakan dalam setiap instruksi.
JENIS-JENIS INSTRUKSI
Instruksi-instruksi level ISA kira-kira dapat dibagi menjadi setengah lusin kelompuk yang relatif sama antara mesin yang satu dengan mesin lainnya., meskipun ada perbedaan dalam hal-hal khusus. Disamping itu, setiap komputer memiliki beberapa instruksi istimewa, yang ditambahkan demi kompatibilitas dengan model-model sebelumnya, atau karena arsitek memiliki ide cemerlang, atau mungkin sebuah lembaga pemerintah membayar perusahaan pembuat untuk memasukannya. Kita akan mencoba secara singkat membahas semua kategori umum dibawah ini.
5.5.1. Instruksi-instruksi Pemindahan Data
Menyalin sebuah data dari satu tempat ketempat lain sangat penting pada semua operasi. Dengan menyalin kita bermaksud membuat sebuah data baru, dengan pola bit yang sama dengan data asli. Penggunaan istilah ” pemindahan” disini agak berbeda dari penggunaan resminya di dalam bahasa inggris. Instruksi-instruksi pemindahan data sebaiknya disebut instruksi-instruksi ”duplikasi data”, tetapi ”pemindahan data” telah bisa digunakan.
Ada dua alasan bahwa data boleh disalin dari satu lokasi kelokasi lain. Alasan pertama yang mendasatr adalah: penentuan nilai-nilai untuk variabel-variabel. Penentuan
A = B
Diimplementadikan dengan menyalin nilai pada alamat memori B kelokasi A karena pemrograman telah meminta untuk melakukan ini. Alasan kedua untuk menyalin data adalah mentahapkan data itu demi akses dan peggunaan yang efisien.
Instruksi-instruksi pemindahan data agaknya harus mengindikasikan jumlah data yang akan dipindahkan. Instruksi-instruksi yang tersedia untuk beberapa level ISA bertujuan untuk memindahkan berbagai macam jumlah data yang berkisar dari 1 bit ke memori seluruhnya.
Operasi-operasi Diadik
Operasi-operasi diadik adalah operasi-operasi yang menggabungkan dua operand untuk memberikan suatu hasil. Semua level ISA memiliki instruksi-instruksi untuk menjalankan penjumlahan dan pengurangan pada bilangan-bilangan bulat. Perkalian dan pembagian bilangan-bilangan bulat juga hampir standar. Tampaknya tidak diperlukan lagi untuk menjelaskan mengapa komputer-komputer dilengkapi dengan instruksi-instruksi aritmetik. Instruksi aritmetik termasuk didalam kelompok operasi-operasi diadik.
Kelompok operasi-operasi diadik yang lain mencakup instruksi-instruksi Boolean. Meskipun 16 fungsi Boolean dengan dua variabel ada, beberapa, jika ada, mesin memiliki instruksi-instruksi untuk seluruh 16 fungsi tersebut. Biasanya, terdapat AND, OR, dan NOT; kadang-kadang juga ada EXCLUSIVE OR, NOR, dan NAND.
operasi-operasi monadic
Operasi-operasi monadik memiliki suatu operand an menghasilkan satu hasil. Karena satu alamat lebih sedikit yg harus di spesifikasikan di bandingkan dengan operasi-operasi diadik, intruksi-intruksi kadang lebih pendek,akan tetapi informasi lain sering harus di spesifikasikan.
Pada operasi monadic intruksi-intruksiuntuk menggeser atau merotasikan isi-isi dari sebuah word atau byte yang sangat bermanfaat dan dilakukan dlm beberapa variasi. Perbedaan antara pergeseran dan rotasi di gambarkan di bawah ini

00000000 00000000 00000000 01110011 A
00000000 00000000 00000000 00011100 A bergesr 2 bit ke kanan
11000000 00000000 00000000 00011100 A berotasi 2 bit ke kanan

Baik pegeseran manapun berotasi ke kiri dan ke kanan sangat penting. Jika sebuah word n-bit berotasi ke kiri k bit,hasilnya akan sama jika word tersebut telah berotasi ke kanan n-k bit
Pergeseran-pergeseran ke kanan sering dilakukan dengan perluasan tanda.
Ini berarti posisi-posisi yang di tinggalkan di ujung kiri word tersebut telah di isi oleh bit tanda semula,0 atau 1.

11111111 11111111 11111111 11110000 A
00111111 11111111 11111111 11111100 A bergeser tanpa perluasan tanda
11111111 11111111 11111111 11111100 A bergeser dengan perluasan tanda

Pergeseran penting di pakai dlm perkalian dan pembagian dengan pangkat 2. jika sebuah bilangan bulat positif bergeser k kiri sejauh k bit,hasilnya kecuali bila berlebihan.

2 komentar:

INFO IT