Feeds RSS
Feeds RSS

Jumat, 11 Juni 2010

MANAJEMEN MEMORY


Memori adalah pusat dari operasi pada sistem komputer modern. Memori adalah array besar dari word atau byte, yang disebut alamat. CPU mengambil instruksi dari memory berdasarkan nilai dari program counter. Instruksi ini menyebabkan penambahan muatan dari dan ke alamat memori tertentu.
Instruksi eksekusi yang umum, contohnya, pertama mengambil instruksi dari memori. Instruksi dikodekan dan mungkin mengambil operand dari memory. Setelah instruksi dieksekusi pada operand, hasilnya ada yang dikirim kembali ke memory. Sebagai catatan, unit memory hanya merupakan deretan alamat memory; tanpa tahu bagaimana membangkitkan (instruction counter, indexing, indirection, literal address dan lainnya) atau untuk apa (instruksi atau data). Oleh karena itu, kita dapat mengabaikan bagaimana alamat memori dibangkitkan oleh program, yang lebih
menarik bagaimana deretan alamat memori dibangkitkan oleh program yang sedang berjalan. Pengikatan Alamat (Address Binding) Pengikatan alamat adalah cara instruksi dan data (yang berada di disk sebagai file yang dapat dieksekusi) dipetakan ke alamat memori. Sebagian besar sistem memperbolehkan sebuah proses user (user process) untuk meletakkan di sembarang tempat dari memori fisik. Sehingga, meskipun alamat dari komputer dimulai pada 00000, alamat pertama dari proses user tidak perlu harus dimulai 00000. Pada beberapa kasus, program user akan melalui beberapa langkah sebelum dieksekusi (Gambar 7-1). Alamat pada source program umumnya merupakan alamat simbolik. Sebuah compiler biasanya melakukan pengikatan alamat simbolik (symbolic address) ke alamat relokasi dipindah (relocatable address). Misalnya compiler mengikatkan alamat simbolik ke alamat relokasi “14 byte from the beginning of this module”. Editor Linkage mengikatkan alamat relokasi ini ke alamat absolute (absolute addresses) “74014”. Instruksi pengikatan instruksi dan data ke alamat memori dapat dilakukan pada
saat :
• Compile time : Jika lokasi memori diketahui sejak awal, kode absolut dapat dibangkitkan, apabila terjadi perubahan alamat awal harus dilakukan kompilasi ulang. Misalnya : program format .com pada MS-DOS adalah kode absolut yang diikat pada saat waktu kompilasi
• Load time : Harus membangkitkan kode relokasi jika lokasi memori tidak diketahui pada saat waktu kompilasi.
• Execution time : Pengikatan ditunda sampai waktu eksekusi jika proses dapat dipindahkan selama eksekusi dari satu segmen memori ke segmen memori lain.Memerlukan dukungan perangkat keras untuk memetakan alamat (misalnya register basis dan limit).
Dinamic Loading
Untuk memperoleh utilitas ruang memori, dapat menggunakan dynamic loading. Dengan dynamic loading, sebuah rutin tidak disimpan di memori sampai dipanggil. Semua rutin disimpan pada disk dalam format relocatable load. Mekanisme dari dynamic loading adalah program utama di-load dahulu dan dieksekusi. Bila suatu routine perlu memanggil routine lain, routine yang dipanggil lebih dahulu diperiksa apakah rutin yang dipanggil sudah di-load. Jika tidak, relocatable linking loader dipanggil untuk me-load rutin yg diminta ke memori dan meng-ubah tabel alamat.
Keuntungan dari dynamic loading adalah rutin yang tidak digunakan tidak pernah di-load. Skema ini lebih berguna untuk kode dalam jumlah besar diperlukan untuk menangani kasus-kasus yang jarang terjadi seperti error routine. Dinamic loading tidak memerlukan dukungan khusus dari sistem operasi.
Dinamic Linking
Sebagian besar sistem operasi hanya men-support static linking, dimana sistem library language diperlakukan seperti obyek modul yang lain dan dikombinasikan dengan loader ke dalam binary program image. Konsep dynamic linking sama dengan dynamic loading. Pada saat loading, linking ditunda sampai waktu eksekusi. Terdapat kode kecil yang disebut stub digunakan untuk meletakkan rutin library di memori dengan tepat. Stub diisi dengan alamat rutin dan mengeksekusi rutin. Sistem operasi perlu memeriksa apakah rutin berada di alamat memori.
Dinamic linking biasanya digunakan dengan sistem library, seperti language subroutine library. Tanpa fasilitas ini, semua program pada sistem perlu mempunyai copy dari library language di dalam executable image. Kebutuhan ini menghabiskan baik ruang disk maupun memori utama.
Bagaimanapun, tidak seperti dynamic loading, dynamic linking membutuhkan beberapa dukungan dari sistem operasi, misalnya bila proses-proses di memori utama saling diproteksi, maka sistem operasi melakukan pengecekan apakah rutin yang diminta berada diluar ruang alamat.
Overlay
Sebuah proses dapat lebih besar daripada jumlah memori yang dialokasikan untuk proses, teknik overlay biasanya digunakan untuk kasus ini. Teknik Overlay biasanya digunakan untuk memungkinkan sebuah proses mempunyai jumlah yang lebih besar dari memori fisik daripada alokasi memori yang diperuntukkan.overlay adalah menyimpan di memori hanya instruksi dan data yang diperlukan pada satu waktu. Jika intruksi lain diperlukan, maka instruksi tersebut diletakkan di ruang memori menggantikan instruksi yang tidak digunakan lagi. Sebagai contoh misalnya terdapat two-pass assembler. Selama pass 1, dibangun table symbol, dan selama pass 2 dibangkitkan kode bahasa mesin. Kita dapat membagi assembler ke dalam kode pass 1, kode pass 2, tabel symbol dan rutin umum yang digunakan baik pada pass 1 maupun pass 2. Diasumsikan ukuran komponen sebagai berikut :
Pass 1 70K
Pass 2 80K
Tabel symbol 20K
Rutin umum 30K

Apabila semua diletakkan di memori memerlukan 200K. Jika hanya tersedia tempat 150K, proses tidak dapat dijalankan. Pass 1 dan pass 2 tidak perlu berada di memori pada waktu yang sama. Dengan menggunakan overlay, rutin dibagi dalam 2 overlay. Overlay A adalah tabel symbol, rutin umum dan pass1 (membutuhkan total 120K) dan overlay B terdiri dari tabel symbol, rutin umum dan pass 2 (membutuhkan 130K). Ditambahkan 10K untuk driver overlay dan dimulai dari overlay A.Overlay tidak membutuhkan dukungan khusus dari sistem operasi. User dapat mengimplementasikannya secara lengkap menggunakan struktur file sederhana, membaca dari file ke memori dan meloncat ke memori dan mengeksekusi instruksi read yang lebih baru. Sistem operasi memberitahu hanya jika terdapat I/O yang melebihi biasanya. Penggunaan overlay terbatas untuk beberapa sistem yang mempunyai jumlah memori fisik terbatas dan kekurangan dukungan H/W untuk teknik yang lebih lanjut.

sistem register


Register adalah sekumpulan sel biner yang dipakai untuk menyimpan informasi yang disajikan dalam kode-kode biner. Penulisan (pemuatan) informasi itutidak lain daripada penyetelan keadaan kumpulan flip-flop dalam register itu secara serentak sebagai satu kesatuan. Setiap flip-flop dalam register membentuk satu sel dan dapat menyimpan 1 angka biner (binary digit, bit). Satu register yang tersusun atas n sel dapat menyimpan n bit data yang dapat menyatakan salah satu
dari 2n macam kode yang dapat dibentuk dari n bit tersebut, yang untuk data desimal dapat berharga dari 0 sampai dengan 2n-1. Register 8 bit, misalnya, dapat menyimpan salah satu dari 256 macam kode atau harga desimal 0 sampai dengan 255. Register dapat menyimpan informasi dalam kode biner dan menampilkannya kembali dan dikatakan dapat melakukan operasi baca dan tulis.
Dalam lingkungan komputer digital, register menjadi bagian yang sangat penting. Dalam lingkungan ini, istilah register digunakan khusus bagi register dalam prosesor yang mempunyai fungsi khusus dengan kemampuan tambahan di samping kemampuan baca/tulis. Register yang hanya mempunyai kemampuan baca/tulis disebut memory (pengingat) atau storage (penyimpan). Penyimpanan data dalam memori bersifat jauh lebih permanen dibanding penyimpanan dalam register. Pada umumnya, dalam satu prosesor disediakan register dalam jumlah yang sangat terbatas sedangkan memori disediakan dalam ukuran yang sangat besar, dalam ukuran KB (Kilo Byte) sampai MB (Mega Byte) yang masingmasing byte terdiri atas 8 sel. Dalam pandangan rangkaian logika, memori dan register khusus tetap sama dan disebut register.
Dalam lingkungan komputer digital, secara garis besar dikenal dua macam memori: RAM (Random Access Memory) dan ROM (Read Only Memory). Dalam Bab 5 telah diterangkan bahwa ROM adalah rangkaian kombinasi tanpa adanya sel pengingat. RAM-lah yang merupakan memori dalam arti mempunyai sel pengingat. Nama RAM sebenarnya kurang tepat karena kalau ditinjau dari cara
aksesnya, ROM juga dapat diakses secara acak (random). Tetapi karena nama RAM lebih luas dikenal di masyarakat, nama tersebut tetap dipertahankan. Nama yang tepat sebenarnya adalah memori baca-tulis (Read-Write Memory). Pada dasarnya, RAM adalah sekumpulan flip-flop.
terpilih sajalah yang boleh diberikan sinyal baca atau tulis yang aktif. Jadi pulsa penabuh untuk masing-masing flip-flop dapat diperoleh dari peng-AND-an sinyal tulis dan pemilih alamat. Operasi baca tidak perlu dilakukan pada saat bersamaan dengan operasi tulis. Karena itu, data masukan juga perlu dihalang (disabled) masuk ke flip-flop pada saat operasi bukan operasi tulis. Ini dapat dilakukan dengan meng-AND-kan data masukan dengan sinyal penabuh flip-flop. Dalam operasi baca juga, hanya keluaran sel terpilih sajalah yang boleh ditampilkan pada keluaran RAM. Jadi keluaran masing-masing sel harus di-AND-kan dengan sinyal baca dan sinyal pemilih alamatnya.
Register Geser Masukan Seri
Register geser (Shift Register), disamping dapat menyimpan data biner, juga dapat melakukan proses penggeseran data. Penggeseran data diperlukan baik dalam pengiriman data secara berderet (serial) maupun dalam perhitungan aljabar perkalian dan pembagian. Dalam komunikasi data (umumnya secara seri), data beberapa bit (umumnya 8 bit) dikirim melalui saluran komunikasi bir demi bit. Data yang disimpan/diolah dalam komputer selalu bersifat paralel. Agar dapat dikirim melalui satu saluran komunikasi, maka data beberapa bit itu harus digeser keluar satu demi satu. Begitu juga di sisi penerima, bit demi bit data yang diterima dari saluran komunikasi harus digeser sampai membentuk satu satuan data paralel agar dapat
disimpan/diolah dalam register komputer. Jadi dalam komunikasi data, register geser memegang peranan yang sangat penting. Dalam perhitungan aritmatika (aljabar), komputer selalu melaksanakan operasi perkalian dan pembagian dengan melakukan penambahan/pengurangan disertai penggeseran ke kiri/kanan secara berulang-ulang. Perlu dicatat bahwa bila suatu data bilangan yang digeser ke kiri, maka harga bilangan itu akan digandakan menjadi dua kali harga semula dan bila suatu bilangan biner digeser ke kanan,
maka harganya menjadi setengah dari harga sebelum digeser. Sebagai contoh, kalau biner 0110, yang setaranya dalam desimal adalah 6, digeser ke kanan satu kedudukan maka harganya menjadi 0011 (= 310), sedangkan bila digeser ke kiri, harganya menjadi 1100 (1210). Perhatikan bahwa penggeseran yang normal dilakukan dengan menambahkan bit 0 pada posisi paling kanan pada penggeseranke kiri dan pada kedudukan paling kiri pada penggeseran ke kanan. Karena cacah bit yang dapat ditampung oleh suatu register sudah tertentu, maka bit di ujung lain
akan hilang, yaitu bit paling kanan pada penggeseran ke kanan dan bit paling kiri
pada penggeseran ke kiri. Pengertian penggeseran akan lebih mudah dimengerti dengan memperhatikan contoh-contoh berikut ini. Andaikan register kita dapat menampung 8 bit data, artinya terdiri atas 8 flip-flop, dan andaikan pula bahwa sebelum melakukan penggeseran, register itu berisi 1001 1010, maka untuk operasi geser kanan dan kiri,Register geser (Shift Register), disamping dapat menyimpan data biner, juga dapat melakukan proses penggeseran data. Penggeseran data diperlukan baik dalam pengiriman data secara berderet (serial) maupun dalam perhitungan aljabar perkalian dan pembagian.
Dalam komunikasi data (umumnya secara seri), data beberapa bit (umumnya 8 bit) dikirim melalui saluran komunikasi bir demi bit. Data yang disimpan/diolah dalam komputer selalu bersifat paralel. Agar dapat dikirim melalui satu saluran komunikasi, maka data beberapa bit itu harus digeser keluar satu demi satu. Begitu juga di sisi penerima, bit demi bit data yang diterima dari saluran komunikasi harus digeser sampai membentuk satu satuan data paralel agar dapat disimpan/diolah dalam register komputer. Jadi dalam komunikasi data, register geser memegang peranan yang sangat penting.
Dalam perhitungan aritmatika (aljabar), komputer selalu melaksanakan operasi perkalian dan pembagian dengan melakukan penambahan/pengurangan disertai penggeseran ke kiri/kanan secara berulang-ulang. Perlu dicatat bahwa bila suatu data bilangan yang digeser ke kiri, maka harga bilangan itu akan digandakan menjadi dua kali harga semula dan bila suatu bilangan biner digeser ke kanan, maka harganya menjadi setengah dari harga sebelum digeser. Sebagai contoh, kalau biner 0110, yang setaranya dalam desimal adalah 6, digeser ke kanan satu kedudukan maka harganya menjadi 0011 (= 310), sedangkan bila digeser ke kiri, harganya menjadi 1100 (1210). Perhatikan bahwa penggeseran yang normal dilakukan dengan menambahkan bit 0 pada posisi paling kanan pada penggeseran ke kiri dan pada kedudukan paling kiri pada penggeseran ke kanan. Karena cacah bit yang dapat ditampung oleh suatu register sudah tertentu, maka bit di ujung lain
akan hilang, yaitu bit paling kanan pada penggeseran ke kanan dan bit paling kiri pada penggeseran ke kiri.
Pengertian penggeseran akan lebih mudah dimengerti dengan memperhatikan contoh-contoh berikut ini. Andaikan register kita dapat menampung 8 bit data, artinya terdiri atas 8 flip-flop, dan andaikan pula bahwa sebelum melakukan penggeseran, register itu berisi 1001 1010, maka untuk operasi geser kanan dan kiri.
Register Geser masukan paralel
Register geser (Shift register) yang diuraikan di atas menerima masukan secara seri. Dalam komunikasi data antara prosesor dalam komputer dengan peralatan masukan/ keluaran (I/O devices) disekelilingnya atau antar komputer, sering dibutuhkan register geser yang dapat dimuati data 1 kata (umumnya 8 bit) secara lengkap. Untuk itu dibutuhkan kemampuan menyetel keadaan masingmasing flip-flop menurut bit data yang sesuai. Kemampuan ini biasanya disebut sebagai kemampuan PRESET. Jadi, untuk masing-masing flipflop
ada 3 masukan yang dapat dipilih: keluaran flip-flop di kiri (geser kanan), keluaran flip-flop di kanan (geser kiri) dan masukan paralel dari luar. Karena itu dibutuhkan paling tidak 2 bit kendali pemilihan. Untuk 2 bit pemilih dapat dipilih 4 macam operasi, sehingga masih tersedia 1 macam operasi tambahan yang dapat dipilih. Modus operasi tambahan ini dapat digunakan untuk operasi diam (tanpa operasi) dengan menghalangi (inhibit) penabuh.Register geser (Shift register) yang diuraikan di atas menerima masukan secara seri. Dalam komunikasi data antara prosesor dalam komputer dengan peralatan masukan/ keluaran (I/O devices) disekelilingnya atau antar komputer, sering dibutuhkan register geser yang dapat dimuati data 1 kata (umumnya 8 bit) secara lengkap. Untuk itu dibutuhkan kemampuan menyetel keadaan masingmasing flip-flop menurut bit data yang sesuai. Kemampuan ini biasanya disebut sebagai kemampuan PRESET. Untuk membuat register geser demikian, maka kepada rangkaian register geser yang diuraikan di depan [Gambar 8.5(b)] perlu ditambahkan kendali pemilih masukan bagi masing-masing flip-flop apakah dari data luar atau dari keluaran flip-flop tetangganya. Jadi, untuk masing-masing flip flop ada 3 masukan yang dapat dipilih: keluaran flip-flop di kiri (geser kanan), keluaran flip-flop di kanan (geser kiri) dan masukan paralel dari luar. Karena itu dibutuhkan paling tidak 2 bit kendali pemilihan. Untuk 2 bit pemilih dapat dipilih 4 macam operasi, sehingga masih tersedia 1 macam operasi tambahan yang dapat dipilih. Modus operasi tambahan ini dapat digunakan untuk operasi diam (tanpa operasi) dengan menghalangi (inhibit) penabuh.