Memory Models
Kebanyakan model memori yang modern jatuh
ke salah satu dari tiga kategori:
1. Model memori flat
-Antarmuka yang sederhana untuk programmer, desain bersih
-Fleksibilitas terbesar
- Hardware minimum dan CPU real estate untuk aplikasi pengendali sederhana
-Kecepatan eksekusi maksimum
-Tidak cocok untuk komputasi umum atau sistem operasi multitasking, kecuali ditingkatkan dengan tambahan hardware manajemen memori / software; tapi ini hampir selalu terjadi di prosesor CISC modern, yang menerapkan manajemen memori maju dan teknologi perlindungan lebih model memori flat. Linux mis menggunakan model memori flat, melihat memori x86 segmentasi # Praktek.
2. Model memori paged
-Cocok untuk multitasking, desain sistem operasi umum, perlindungan sumber daya dan alokasi
-Cocok untuk implementasi memori virtual
- Lebih CPU real estate, kecepatan sedikit lebih rendah
-Lebih kompleks untuk program
-Batas halaman kaku, tidak selalu yang paling memori efisien
- Ini adalah model memori CPU Pentium Pro dan yang lebih baru x86 digunakan dalam 32-bit mode pengalamatan ketika menangani memori menggunakan alamat 36-bit. Ini disebut Physical Address Extension
3. Model memori Segmented X86
Artikel utama: Intel Memory Model
-Mirip dengan memori paged, tapi paging dicapai dengan penambahan implisit dua yang relatif bergeser register: segmen: offset
-Batas halaman variabel, lebih efisien dan fleksibel daripada model memori paged
-Cukup kompleks dan canggung dari titik programmer pandang
- Lebih sulit bagi compiler
-Halaman dapat tumpang tindih / perlindungan sumber daya miskin dan isolasi
-Banyak ke satu alamat terjemahan korespondensi: Banyak segmen: kombinasi diimbangi menyelesaikan ke alamat fisik yang sama
-Kesempatan lebih besar untuk kesalahan pemrograman
-Diimplementasikan dalam asli Intel 8086, 8088, 80186, 80286 dan didukung oleh 80.386 dan semua mesin x86 berikutnya sampai sekarang hari Pentium dan Core 2 prosesor. model memori ini tetap sejak di mesin x86, yang kini menyediakan operasi multi-mode dan jarang beroperasi dalam modus tersegmentasi kompatibel pula. [klarifikasi diperlukan] Lihat segmentasi memori x86 untuk rincian.
Dalam arsitektur x86, ketika beroperasi dalam mode real (kompatibel), alamat fisik dihitung sebagai: [2]
Alamat = 16 × segmen + diimbangi
(Yaitu 16-bit segmen register bergeser ditinggalkan oleh 4 bit dan ditambahkan ke 16-bit offset, sehingga alamat 20-bit.)
1. Model memori flat
-Antarmuka yang sederhana untuk programmer, desain bersih
-Fleksibilitas terbesar
- Hardware minimum dan CPU real estate untuk aplikasi pengendali sederhana
-Kecepatan eksekusi maksimum
-Tidak cocok untuk komputasi umum atau sistem operasi multitasking, kecuali ditingkatkan dengan tambahan hardware manajemen memori / software; tapi ini hampir selalu terjadi di prosesor CISC modern, yang menerapkan manajemen memori maju dan teknologi perlindungan lebih model memori flat. Linux mis menggunakan model memori flat, melihat memori x86 segmentasi # Praktek.
2. Model memori paged
-Cocok untuk multitasking, desain sistem operasi umum, perlindungan sumber daya dan alokasi
-Cocok untuk implementasi memori virtual
- Lebih CPU real estate, kecepatan sedikit lebih rendah
-Lebih kompleks untuk program
-Batas halaman kaku, tidak selalu yang paling memori efisien
- Ini adalah model memori CPU Pentium Pro dan yang lebih baru x86 digunakan dalam 32-bit mode pengalamatan ketika menangani memori menggunakan alamat 36-bit. Ini disebut Physical Address Extension
3. Model memori Segmented X86
Artikel utama: Intel Memory Model
-Mirip dengan memori paged, tapi paging dicapai dengan penambahan implisit dua yang relatif bergeser register: segmen: offset
-Batas halaman variabel, lebih efisien dan fleksibel daripada model memori paged
-Cukup kompleks dan canggung dari titik programmer pandang
- Lebih sulit bagi compiler
-Halaman dapat tumpang tindih / perlindungan sumber daya miskin dan isolasi
-Banyak ke satu alamat terjemahan korespondensi: Banyak segmen: kombinasi diimbangi menyelesaikan ke alamat fisik yang sama
-Kesempatan lebih besar untuk kesalahan pemrograman
-Diimplementasikan dalam asli Intel 8086, 8088, 80186, 80286 dan didukung oleh 80.386 dan semua mesin x86 berikutnya sampai sekarang hari Pentium dan Core 2 prosesor. model memori ini tetap sejak di mesin x86, yang kini menyediakan operasi multi-mode dan jarang beroperasi dalam modus tersegmentasi kompatibel pula. [klarifikasi diperlukan] Lihat segmentasi memori x86 untuk rincian.
Dalam arsitektur x86, ketika beroperasi dalam mode real (kompatibel), alamat fisik dihitung sebagai: [2]
Alamat = 16 × segmen + diimbangi
(Yaitu 16-bit segmen register bergeser ditinggalkan oleh 4 bit dan ditambahkan ke 16-bit offset, sehingga alamat 20-bit.)
Memory Consistency
Dalam ilmu komputer, model konsistensi yang digunakan dalam sistem
terdistribusi seperti sistem memori bersama terdistribusi atau penyimpanan data
terdistribusi (seperti filesystem, database, sistem replikasi optimis atau Web
caching). Sistem
ini mendukung model yang diberikan jika operasi pada memori mengikuti aturan
tertentu. Model
konsistensi data menentukan kontrak antara programmer dan sistem, dimana sistem
jaminan bahwa jika programmer mengikuti aturan, memori akan konsisten dan hasil
operasi memori akan diprediksi.
Bahasa tingkat tinggi, seperti C ++ dan Java, sebagian mempertahankan kontrak dengan menerjemahkan operasi memori ke operasi tingkat rendah dengan cara yang melindungi semantik memori. Untuk terus untuk kontrak, kompiler dapat menyusun ulang beberapa petunjuk memori, dan panggilan perpustakaan seperti pthread_mutex_lock () merangkum sinkronisasi yang diperlukan.
Memverifikasi konsistensi berurutan adalah diputuskan secara umum, bahkan untuk protokol cache-koherensi terbatas-negara.
Model konsistensi mendefinisikan aturan untuk urutan jelas dan visibilitas update, dan itu adalah sebuah kontinum dengan penjualan.
Bahasa tingkat tinggi, seperti C ++ dan Java, sebagian mempertahankan kontrak dengan menerjemahkan operasi memori ke operasi tingkat rendah dengan cara yang melindungi semantik memori. Untuk terus untuk kontrak, kompiler dapat menyusun ulang beberapa petunjuk memori, dan panggilan perpustakaan seperti pthread_mutex_lock () merangkum sinkronisasi yang diperlukan.
Memverifikasi konsistensi berurutan adalah diputuskan secara umum, bahkan untuk protokol cache-koherensi terbatas-negara.
Model konsistensi mendefinisikan aturan untuk urutan jelas dan visibilitas update, dan itu adalah sebuah kontinum dengan penjualan.
Ada dua metode untuk menentukan dan mengkategorikan model konsistensi;
masalah dan melihat.
Masalah: Metode masalah menjelaskan pembatasan yang mendefinisikan bagaimana proses dapat mengeluarkan operasi.
View: View metode yang mendefinisikan urutan operasi terlihat proses.
Misalnya, model konsistensi dapat menentukan bahwa proses tidak diperbolehkan untuk mengeluarkan sebuah operasi sampai semua operasi yang dikeluarkan sebelumnya selesai.
model konsistensi yang berbeda menegakkan kondisi yang berbeda. Salah satu model Konsistensi dapat dianggap lebih kuat dari yang lain jika memerlukan semua kondisi model itu dan banyak lagi. Dengan kata lain, model dengan kurang kendala dapat dianggap sebagai model konsistensi lemah.
Masalah: Metode masalah menjelaskan pembatasan yang mendefinisikan bagaimana proses dapat mengeluarkan operasi.
View: View metode yang mendefinisikan urutan operasi terlihat proses.
Misalnya, model konsistensi dapat menentukan bahwa proses tidak diperbolehkan untuk mengeluarkan sebuah operasi sampai semua operasi yang dikeluarkan sebelumnya selesai.
model konsistensi yang berbeda menegakkan kondisi yang berbeda. Salah satu model Konsistensi dapat dianggap lebih kuat dari yang lain jika memerlukan semua kondisi model itu dan banyak lagi. Dengan kata lain, model dengan kurang kendala dapat dianggap sebagai model konsistensi lemah.
Tipe-tipe memory consistency adalah sebagai berikut :
Branch
Prediction pada CPU
Dalam
arsitektur komputer, sebuah prediktor cabang adalah sirkuit digital yang
mencoba untuk menebak arah mana cabang (misalnya struktur if-then-else) akan
pergi sebelum ini diketahui pasti. Tujuan dari prediktor cabang untuk meningkatkan
aliran dalam pipa intruksi. rediktor cabang penting dalam mikroprosesor
pipelined hari ini untuk encapai kinerja tinggi. Dua arah percabangan biasanya
diimplementasikan dengan instruksi lompat bersyarat. Sebuah lompat bersyarat
dapat menjadi "tidak diambil" dan melanjutkan eksekusi dengan
cabangpertama dari kode yang mengikuti segera setelah lompat bersyarat - atau
dapat "diambil" dan melompat ke tempat yang berbeda di memori program
dimana cabang kedua ode adalahdisimpan. Hal ini tidak diketahui secara pasti
apakah lompat bersyarat akan diambil atau tidak diambil sampai kondisi telah
dihitung dan lompat bersyarat telah lulus tahap eksekusi dalam pipa instruksi.
Tanpa prediksi cabang, prosesor harus menunggu sampai instruksi lompat
bersyarat telah melewati tahap mengeksekusi sebelum instruksi berikutnya dapat
memasuki tahap fetch dalam pipa. Prediktor cabang upaya untuk menghindari
pemborosan waktu dengan mencoba untuk menebak apakah lompat bersyarat yang
paling mungkin diambil atau tidak diambil. Cabang yang diduga sebagai yang
paling mungkin adalah kemudian diambil dan spekulasi dieksekusi. Jika kemudian
mendeteksi bahwa salah menebak maka instruksi dieksekusi spekulatif atau
sebagian dieksekusi dibuang dan pipa dimulai atas dengan cabang yang benar. Waktu
yang terbuang dalam kasus misprediction cabang sama dengan jumlah tahap dalam
pipa dari tahap ke tahap fetch mengeksekusi. Mikroprosesor modern cenderung
memiliki pipa yang cukup panjang sehingga penundaan misprediction adalah antara
10 dan 20 siklus clock. Semakin lama pipa tinggi kebutuhan untuk prediksi
cabang yang baik. Pertama kali instruksi lompat bersyarat ditemui, tidak ada
banyak informasi untuk dasar prediksi di. Tapi prediksi cabang menyimpan
catatan dari apakah cabang diambil atau tidak diambil. Ketika bertemu dengan
lompat bersyarat yang telah melihat beberapa kali sebelum kemudian dapat dasar
prediksi pada sejarah masa lalu. Prediktor cabang mungkin, misalnya, mengakui
bahwa lompat bersyarat diambil lebih sering daripada tidak, atau bahwa itu
adalah diambil setiap kali kedua. Prediksi cabang tidak sama dengan prediksi
cabang target.Prediksi cabang upaya untuk menebak apakah lompatan bersyarat
akan diambil atau tidak. Cabang prediksi target yang mencoba untuk menebak
target lompatan bersyarat atau tanpa syarat diambil sebelum dihitung oleh
decoding dan mengeksekusi instruksi itu sendiri. Cabang cabang prediksi dan
prediksi target sering dikombinasikan ke dalam sirkuit yang sama.
CISC dan
RISC
Pada saat ini ada dua konsep populer yang berhubungan
dengan desain CPU dan set instruksi:
1. Complex Instruction Set Computing (CISC).
2. Reduce
Instruction Set Computing (RISC).
Semua sistem yang lama (komputer
mainframe, komputer mini atau komputer mikro) relatif mempunyai sistem CISC.
Walaupun sistem sekarang terdiri atas kedua jenis tersebut. Sistem RISCsaat ini
lebih populer karena tingkat kerjanya, dibandingkan dengan sistem CISC. Namun
karena biayanya tinggi, sistem RISC hanya digunakan ketika diperlukan kecepatan
khusus, keandalan dan sebagainya.
CISC (Complex Instruction-Set
Computer)
Complex Instruction Set Computer (CISC) adalah sebuah arsitektur dari set instruksi dimana setiap instruksi akan menjalankan beberapa operasi tingkat rendah, seperti pengambilan dari memory, operasi aritmetika, dan penyimpanan ke dalam memory, semuanya sekaligus hanya di dalam sebuah instruksi. Tujuan utama dari arsitektur CISC adalah melaksanakan suatu perintah cukup dengan beberapa baris bahasa mesin sedikit mungkin. Hal ini bisa tercapai dengan cara membuat perangkat keras prosesor mampu memahami dan menjalankan beberapa rangkaian operasi. Untuk tujuan contoh kita kali ini, sebuah prosesor CISC sudah dilengkapi dengan sebuah instruksi khusus, yang kita beri nama MULT. Saat dijalankan, instruksi akan membaca dua nilai dan menyimpannya ke 2 register yag berbeda, melakukan perkalian operan di unit eksekusi dan kemudian mengambalikan lagi hasilnya ke register yang benar.
Complex Instruction Set Computer (CISC) adalah sebuah arsitektur dari set instruksi dimana setiap instruksi akan menjalankan beberapa operasi tingkat rendah, seperti pengambilan dari memory, operasi aritmetika, dan penyimpanan ke dalam memory, semuanya sekaligus hanya di dalam sebuah instruksi. Tujuan utama dari arsitektur CISC adalah melaksanakan suatu perintah cukup dengan beberapa baris bahasa mesin sedikit mungkin. Hal ini bisa tercapai dengan cara membuat perangkat keras prosesor mampu memahami dan menjalankan beberapa rangkaian operasi. Untuk tujuan contoh kita kali ini, sebuah prosesor CISC sudah dilengkapi dengan sebuah instruksi khusus, yang kita beri nama MULT. Saat dijalankan, instruksi akan membaca dua nilai dan menyimpannya ke 2 register yag berbeda, melakukan perkalian operan di unit eksekusi dan kemudian mengambalikan lagi hasilnya ke register yang benar.
Karakteristik CISC yg "sarat
informasi" ini memberikan keuntungan di mana ukuran program-program yang
dihasilkan akan menjadi relatif lebih kecil, dan penggunaan memory akan semakin
berkurang. Karena CISC inilah biaya pembuatan komputer pada saat itu (tahun
1960) menjadi jauh lebih hemat. Memang setelah itu banyak desain yang
memberikan hasil yang lebih baik dengan biaya yang lebih rendah, dan juga
mengakibatkan pemrograman level tinggi menjadi lebih sederhana, tetapi pada
kenyataannya tidaklah selalu demikian.
Contoh-contoh prosesor CISC adalah : System/360, VAX,
PDP-11, varian Motorola 68000 , dan CPU AMD dan Intel x86.
CISC mempunyai karakteristrik :
1. Instruksi berukuran tunggal
2. Ukuran yang umum adalah 4 byte.
3. Jumlah mode pengalamatan data yang sedikit,
biasanya kurang dari lima buah.
4. Tidak terdapat pengalamatan tak langsung.
5. Tidak terdapat operasi yang menggabungkan operasi
load/store dengan operasi aritmetika (misalnya, penambahan dari memori, penambahan
ke memori).
RISC (Reduce
Instruction Set Computer)
RISC Reduced Instruction Set Computingatau
"Komputasi set instruksi yang disederhanakan. Merupakan sebuah arsitektur
komputer atau arsitektur komputasi modern dengan instruksi-instruksi dan jenis
eksekusi yang paling sederhana. Biasanya digunakan pada komputer berkinerja
tinggi seperti komputer vektor.
Bahasa pemprograman
memungkinkan programmer dapat mengekspresikan algoritma lebih singkat, lebih
memperhatikan rincian, dan mendukung penggunaan pemprograman terstruktur,
tetapi ternyata muncul masalah lain yaitu semantic gap, yaitu perbedaan antara
operasi-operasi yang disediakan oleh HLL dengan yang disediakan oleh arsitektur
komputer, ini ditandai dengan ketidakefisienan eksekusi, program mesin yang
berukuran besar,dan kompleksitas kompiler.
Set-set instruksi yang kompleks tersebut dimaksudkan
untuk :
1. Memudahkan pekerjaan kompiler
2. Meningkatkan efisiensie ksekusi, karena operasi
yang kompleks dapat diimplementasikan didalam mikrokode.
3. Memberikan dukungan bagi HLL yang lebih kompleks
dan canggih.
RISC mempunyai karakteristik :
1. One cycle execution time : satu putaran eksekusi.
2. Prosessor RISC mempunyai CPI (clock per
instruction) atau waktu per instruksi untuk setiap putaran. Hal ini dimaksud
untuk mengoptimalkan setiap instruksi pada CPU.
3. Pipelining adalah sebuah teknik yang
memungkinkan dapat melakukan eksekusi secara simultan. Sehingga proses
instruksi lebih efiisien
4. Large number of registers: Jumlah register yang
sangat banyak
5. RISC didesain dimaksudkan untuk dapat menampung
jumlah register yang sangat banyak untuk mengantisipasi agar tidak terjadi
interaksi yang berlebih dengan memory.
6. Rangkaian instruksi built-in pada processor yang
terdiri dari perintah-perintah yang lebih ringkas dibandingkan dengan CISC.
7. RISC memiliki keunggulan dalam hal kecepatannya
sehingga banyak digunakan untuk aplikasi-aplikasi yang memerlukan kalkulasi
secara intensif.
Ø Perbandingan antara RISC dengan CISC
Cara sederhana untuk melihat
kekurangan dan kelebihan dari CISC dan RISC adalah dengan membandingkannya
secara langsung. Pada tahap perbandingan ini dicoba dengan menghitung perkalian
dua bilangan dalam memori. Memori tersebut terbagi menjadi beberapa lokasi yang
diberi nomor 1(baris): 1 (kolom) hingga 6:4. Unit eksekusi bertanggung-jawab
untuk semua operasi komputasi. Namun, unit eksekusi hanya beroperasi untuk data
yang sudah disimpan kedalam salah satu dari 6 register (A, B, C, D, Eatau F).
Misalnya, kita akan melakukan perkalian (product) dua angka, satu di simpan di
lokasi 2:3 sedangkan lainnya di lokasi 5:2, kemudian hasil perkalian tersebut
dikembalikan lagi kelokasi 2:3.
1.Menggunakan
Pendekatan RISC
Prosesor RISC hanya
menggunakan instruksi-instruksi sederhana yang bisa dieksekusi dalam satu
siklus. Dengan demikian, instruksi ‘MULT’ sebagaimana dijelaskan sebelumnya
dibagi menjadi tiga instruksi yang berbeda, yaitu“LOAD”, yang digunakan untuk
memindahkan data dari memori kedalam register, “PROD”, yang digunakan untuk
melakukan operasi produk (perkalian) dua operan yang berada di dalam register
(bukan yang ada di memori) dan “STORE”, yang digunakan untuk memindahkan data
dari register kembali kememori. Berikut ini adalah urutan instruksi yang harus
dieksekusi agar yang terjadi sama dengan instruksi “MULT” pada prosesor RISC
(dalam 4 baris bahasa mesin):
LOAD A, 2:3
LOAD B, 5:2
PROD A, B
STORE 2:3, A
2.Menggunakan
Pendekatan CISC
Tujuan utama dari arsitektur CISC
adalah melaksanakan suatu perintah cukup dengan beberapa baris bahasa mesin
sedikit mungkin. Hal ini bisa tercapai dengan cara membuat perangkat keras
prosesor mampu memahami dan menjalankan beberapa rangkaian operasi.
Sebuah prosesor CISC sudah
dilengkapi dengan sebuah instruksi khusus, yang diberi nama MULT. Saat
dijalankan, instruksi akan membaca dua nilai dan menyimpannya ke 2 register
yang berbeda, melakukan perkalian operan di unit eksekusi dan kemudian
mengambalikan lagi hasilnya ke register yang benar. Jadi instruksi-nya cukup
satu saja.
MULT 2:3,
5:2
CISC
- Penekanan
pada perangkat keras (hardware)
- Termasuk
instruksi kompleks multi-clock
-
Memori-ke-memori: “LOAD” dan “STORE” saling bekerjasama
- Ukuran
kode kecil, kecepatan rendah
- Transistor
digunakan untuk menyimpan instruksi-instruksi kompleks
RISC
- Penekanan
pada perangkat lunak (software)
-
Single-clock, hanya sejumlah kecil instruksi
- Register
ke register: “LOAD” dan “STORE” adalah instruksi - instruksi terpisah
- Ukuran
kode besar, kecepatan (relatif) tinggi
- Transistor banyak dipakai untuk register memori
0 komentar:
Posting Komentar