Kamis, 05 Januari 2012

Pertemuan 10

SUPERSCALAR

1. Pengertian

Superscalar adalah sebuah unitprocessor yang dapat mengeksekusi dua atau lebih operasi scalar dalm bentuk paralel. Superscalar merupakan salah satu rancangan untuk meningkatkan kecepatan CPU.

Kebanyakan dari komputer saat ini menggunakan mekanisme superscalar ini. Standar pipeline yang digunakan adalah untuk pengolahan bilangan matematika integer (bilangan bulat, bilangan yang tidak memiliki pecahan), kebanyakan CPU juga memiliki kemampuan untuk pengolahan untuk data floating point (bilangan berkoma). Pipeline yang mengolah integer dapat juga digunakan untuk mengolah data bertipe floating point ini, namun untuk aplikasi tertentu, terutama untuk aplikasi keperluan ilmiah CPU yang memiliki kemampuan pengolahan floating point dapat meningkatkan kecepatan prosesnya secara dramatis.

Peristiwa menarik yang bisa dilakukan dengan metoda superscalar ini adalah dalam hal memperkirakan pencabangan instruksi (brach prediction) serta perkiraan eksekusi perintah (speculative execution). Peristiwa ini sangat menguntungkan buat program yang membutuhkan pencabangan dari kelompok intruksi yang dijalankankannya.

Program yang terdiri dari kelompok perintah bercabang ini sering digunakan dalam pemrograman. Contohnya dalam menentukan aktifitas yang dilakukan oleh suatu sistem berdasarkan umur seseorang yang sedang diolahnya, katakanlah jika umur yang bersangkutan lebih dari 18 tahun, maka akan diberlakukan instruksi yang berhubungan dengan umur tersebut, anggaplah seseorang tersebut dianggap telah dewasa, sedangkan untuk kondisi lainnya dianggap belum dewasa. Tentu perlakuannya akan dibedakan sesuai dengan sistem yang sedang dijalankan.

Lalu apa yang dilakukan oleh CPU untuk hal ini? Komputer akan membandingkan nilai umur data yang diperolehnya dengan 18 tahun sehingga komputer dapat menentukan langkah dan sikap yang harus diambilnya berdasarkan hasil perbandingan tersebut. Sikap yang diambil tentu akan diambil berdasarkan pencabangan yang ada.

Pada CPU yang mendukung perintah pencabangan ini, CPU membutuhkan lumayan banyak clock cycle, mengingat CPU menempatkan semuanya pada pipeline dan menemukan perintah berikutnya yang akan dieksekusinya. Sirkuit untuk branch prediction melakukan pekerjaan ini bekerja sama dengan pipeline, yang dilakukan sebelum proses di ALU dilaksanakan, dan memperkirakan hasil dari pencabangan tersebut.

Jika CPU berfikir bahwa branch akan menuju suatu cabang, biasanya berdasarkan pekerjaan sebelumnya, maka perintah berikutnya sudah dipersiapkan untuk dieksekusi berikut data-datanya, bahkan dengan adanya pipeline ini, bila tidak diperlukan suatu referensi dari instruksi terakhir, maka bisa dilaksanakan dengan segera, karena data dan instruksi yang dibutuhkan telah dipersiapkan sebelumnya.

Dalam hal speculative execution, artinya CPU akan menggunakan melakukan perhitungan pada pipeline yang berbeda berdasarkan kemungkinan yang diperkirakan oleh komputer. Jika kemungkinan yang dilakukan oleh komputer tepat, maka hasilnya sudah bisa diambil langsung dan tinggal melanjutkan perintah berikutnya, sedangkan jika kemungkinan yang diperkirakan oleh komputer tidak tepat, maka akan dilaksanakan kemungkinan lain sesuai dengan logika instruksi tersebut.

Teknik yang digunakan untuk pipeline dan superscalar ini bisa melaksanakan branch prediction dan speculative execution tentunya membutuhkan ekstra transistor yang tidak sedikit untuk hal tersebut.

Sebagai perbandingan, komputer yang membangkitkan pemrosesan pada PC pertama yang dikeluarkan oleh IBM pada mesin 8088 memiliki sekitar 29.000 transistor. Sedangkan pada mesin Pentium III, dengan teknologi superscalar dan superpipeline, mendukung branch prediction, speculative execution serta berbagai kemampuan lainnya memiliki sekitar 7,5 juta transistor. Beberapa CPU terkini lainnya seperti HP 8500 memiliki sekitar 140 juta transistor.

Superscalar ini mampu menjlankan Instruction Level Parallelism dengan satu prosesor. Superscalar dapat diaplikasikan di RISC dan CISC, tapi pada umumnya RISC.

2. Alasan desain Superscalar

Sebagian besar operasi menggunakan besaran/nilai skalar Operasi ini memungkinkan peningkatan kinerja sistem hingga level tertentu Superscalar Implementation.

Proses fetch dari beberapa instruksi secara bersamaan. Logika untuk menentukan ketergantungan sebenarnya yang meliputi nilai register Mekanisme untuk mengkomunikasikan nilai tersebut. Mekanisme untuk menginisialisasi instruksi paralel. Tersedianya sumber untuk eksekusi paralel dari beberapa instruksi. Mekanisme processing instruksi dengan urutan yg sesuai.

3. Contoh Instruksi

Add R1, R2, R3

Misalkan, instruksi

yang akan menambahkan isi register R1 dan R2 dan menempatkan jumlahnya dalam register R3. Isi dari register R1 dan R2 mula-mula akan ditransfer ke Unit aritmetika dan logika. Setelah operasi penambahan dilakukan, hasil penjumlahan tersebut akan ditransfer ke register R3. Prosesor dapat membaca instruksi selanjutnya dari memori, sementara operasi penambahan dilakukan. Kemudian jika instruksi tersebut juga menggunakan ALU, operand-nya dapat ditransfer ke input ALU pada waktu yang sama dengan hasil instruksi Add ditransfer ke register R3.

Pada kasus ideal, jika semua instruksi ditumpuk ke derajat yang maksimum yang mungkin dilakukan, maka eksekusi dilanjutnkan pada kecepatan penyelesaian satu instruksi dalam tiap siklus detak prosesor. Instruksi individual, mungkin masih memerlukan beberapa siklus detak agar selesai dilakukan. Tetapi untuk tujuan perhitungan, prosesor superskalar umumnya mampu melakukannya dalam tiap siklus.

Prosesor superskalar umumnya menggunakan beberapa unit fungsional, menciptakan jalur paralel di mana berbagai instruksi yang berbeda dapat dieksekusi secara paralel. Dengan pengaturan tersebut, maka dimungkinkan untuk memulai eksekusi beberapa instruksi secara paralel tiap siklus detak. Tentu saja, eksekusi paralel harus mempertahankan kebenaran logikan program, sehingga hasil yang diperoleh harus sama dengan hasil dari eksekusi secara serial.

4. Contoh CPU yang menerapkan arsitektur superscalar :

486, Pentium, Pentium Pro, keluarga Intel Pentium, Intel Pentium Pro, Intel Pentium II, Intel Pentium III, Intel Itanium, Intel Xeon, Intel Pentium 4, Intel Pentium M, Intel Core dari Intel Corporation; keluarga AMD K5, AMD K6, AMD Athlon, AMD Athlon 64, dan AMD Opteron
Superscalar Processor Design

• Use PowerPC 604 as case study

• Speculative Execution, Register Renaming, Branch Prediction

More Superscalar Examples

• MIPS R10000

• DEC Alpha 21264

5. Implementasi Superscalar

Proses fetch dari beberapa instruksi secara bersamaan.
Logika untuk menentukan ketergantungan sebenarnya yang meliputi nilai register.
Mekanisme untuk mengkomunikasikan nilai tersebut.
Mekanisme untuk menginisialisasi instruksi paralel.
Tersedianya sumber untuk eksekusi paralel dari beberapa instruksi.
Mekanisme processing instruksi dengan urutan yg sesuai.
Pada penjelasan diatas bias diterangkan bahwa untuk superscalar dapat digunakan untuk berbagai keperluan dan dapat diimplementasikan pada perangkat prosessor seperti :

Pentium 4

Pada Pentium, implementasi superscalar dapat dijabarkan sebagai berikut :

80486 – CISC.
Pentium.
ada beberapa komponen superscalar.
2 unit eksekusi integer yang terpisah.
Pentium Pro – Full superscalar.
Memperhalus models subsequent & Meningkatkan design superscalar.
6. Permasalahan pada Superscalar

Kemampuan dari computer superscalar dapat dilihat dari banyaknya instruksi yang dapat diproses secara parallel. Superscalar hingga derajat tertentu dapat terjadi jika computer mampu mengatasi permasalahan ketergantungan yang ada pada suatu instruksi, diantaranya adalah : ketergantungan data, ketergantungan procedural, ketergantungan sumber unit, ketergantungan output dan antiketergantungan. Dari lima ketergantungan tersebut, sampai sekarang belum ada computer yang mampu mengatasinya secara total. Bagaimanapun computer akan menemukan beberapa ketergantungan dalam menyelesaikan suatu program.

Dari rancangan computer yang ada, hanya mampu meminimalisasikan beberapa ketergantungan saja, walaupun demikian ternyata dengan usaha ini mampu diciptakan computer dengan kinerja yang jauh lebih baik dari generasi-generasi sebelumnya. Adapun usaha yang dilakukan dalam peningkatan kinerja superscalar tersebut diantaranya : desain pipeline (out of order issue and out of order completion), memperbanyak tahapan pada pipeline, penduplikasian sumber unit (contoh : unit fungsional /ALU, memori, bus, cache, dll), desain micro operation (pada system CICS), desain unit prediksi percabangan, dan renaming allocation. Kebanyakan computer lebih menekankan pada upaya penduplikasian unit fungsional baik integer maupun floating point. Untuk itu pada pembahasan ini akan kita bahas salah satu upaya peningkatan kinerja prosesor superscalar secara khusus dalam hal reconfigurasi floating point unit (FPU).

Minggu, 18 Desember 2011

pertemuan 9

RISC dan CISC

RISC singkatan dari Reduced Instruction Set Computer. Merupakan bagian dari arsitektur mikroprosessor, berbentuk kecil dan berfungsi untuk negeset istruksi dalam komunikasi diantara arsitektur yang lainnya.
Sejarah RISC
Proyek RISC pertama dibuat oleh IBM, stanford dan UC –Berkeley pada akhir tahun 70 dan awal tahun 80an. IBM 801, Stanford MIPS, dan Barkeley RISC 1 dan 2 dibuat dengan konsep yang sama sehingga dikenal sebagai RISC. RISC mempunyai karakteristik :

one cycle execution time : satu putaran eksekusi. Prosessor RISC mempunyai CPI (clock per instruction) atau waktu per instruksi untuk setiap putaran. Hal ini dimaksud untuk mengoptimalkan setiap instruksi pada CPU.
pipelining:adalah sebuah teknik yang memungkinkan dapat melakukan eksekusi secara simultan.Sehingga proses instruksi lebih efiisien
large number of registers: Jumlah register yang sangat banyak. RISC di Desain dimaksudkan untuk dapat menampung jumlah register yang sangat banyak untuk mengantisipasi agar tidak terjadi interaksi yang berlebih dengan memory.

Complex instruction-set computing atau Complex Instruction-Set Computer (CISC; "Kumpulan instruksi komputasi kompleks") 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. Karakteristik CISC dapat dikatakan bertolak-belakang dengan RISC.
Sebelum proses RISC didesain untuk pertama kalinya, banyak arsitek komputer mencoba menjembatani celah semantik", yaitu bagaimana cara untuk membuat set-set instruksi untuk mempermudah pemrograman level tinggi dengan menyediakan instruksi "level tinggi" seperti pemanggilan procedure, proses pengulangan dan mode-mode pengalamatan kompleks sehingga struktur data dan akses array dapat dikombinasikan dengan sebuah instruksi. 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. Contohnya, arsitektur kompleks yang didesain dengan kurang baik (yang menggunakan kode-kode mikro untuk mengakses fungsi-fungsi hardware), akan berada pada situasi di mana akan lebih mudah untuk meningkatkan performansi dengan tidak menggunakan instruksi yang kompleks (seperti instruksi pemanggilan procedure), tetapi dengan menggunakan urutan instruksi yang sederhana.
Satu alasan mengenai hal ini adalah karena set-set instruksi level-tinggi, yang sering disandikan (untuk kode-kode yang kompleks), akan menjadi cukup sulit untuk diterjemahkan kembali dan dijalankan secara efektif dengan jumlah transistor yang terbatas. Oleh karena itu arsitektur -arsitektur ini memerlukan penanganan yang lebih terfokus pada desain prosesor. Pada saat itu di mana jumlah transistor cukup terbatas, mengakibatkan semakin sempitnya peluang ditemukannya cara-cara alternatif untuk optimisasi perkembangan prosesor. Oleh karena itulah, pemikiran untuk menggunakan desain RISC muncul pada pertengahan tahun 1970 (Pusat Penelitian Watson IBM 801 - IBMs)
Contoh-contoh prosesor CISC adalah System/360, VAX, PDP-11, varian Motorola 68000 , dan CPU AMD dan Intel x86.
Istilah RISC dan CISC saat ini kurang dikenal, setelah melihat perkembangan lebih lanjut dari desain dan implementasi baik CISC dan CISC. Implementasi CISC paralel untuk pertam` kalinya, seperti 486 dari Intel, AMD, Cyrix, dan IBM telah mendukung setiap instruksi yang digunakan oleh prosesor-prosesor sebelumnya, meskipun efisiensi tertingginya hanya saat digunakan pada subset x86 yang sederhana (mirip dengan set instruksi RISC, tetapi tanpa batasan penyimpanan/pengambilan data dari RISC). Prosesor-prosesor modern x86 juga telah menyandikan dan membagi lebih banyak lagi instruksi-instruksi kompleks menjadi beberapa "operasi-mikro" internal yang lebih kecil sehingga dapat instruksi-instruksi tersebut dapat dilakukan secara paralel, sehingga mencapai performansi tinggi pada subset instruksi yang lebih besar.

Senin, 05 Desember 2011

Pertemuan 8

Struktur Program Assembly

Sarana yang ada dalam program assembly sangat minim, tidak seperti dalam bahasa pemrograman tingkat atas (high level language programming) semuanya sudah siap pakai. Penulis program assembly harus menentukan segalanya, menentukan letak program yang ditulisnya dalam memori-program, membuat data konstan dan tablel konstan dalam memori-program, membuat variabel yang dipakai kerja dalam memori-data dan lain sebagainya.

Program sumber assembly
Program-sumber assembly (assembly source program) merupakan kumpulan dari baris-baris perintah yang ditulis dengan program penyunting-teks (text editor) sederhana, misalnya program EDIT.COM dalam DOS, atau program NOTEPAD dalam Windows. Kumpulan baris-printah tersebut biasanya disimpan ke dalam file dengan nama ekstensi *.ASM atau nama lain misalnya *.A51 dan lain sebagainya, tergantung pada program Assembler yang akan dipakai untuk mengolah program-sumber assembly tersebut.

Setiap baris-perintah merupakan sebuah perintah yang utuh, artinya sebuah perintah tidak mungkin dipecah menjadi lebih dari satu baris. Satu baris perintah bisa terdiri atas 4 bagian, bagian pertama dikenali sebagai label atau sering juga disebut sebagai symbol, bagian kedua dikenali sebagai kode operasi, bagian ketiga adalah operand dan bagian terakhir adalah komentar.

Antara bagian-bagian tersebut dipisahkan dengan sebuah spasi atau tabulator.

Bagian label
Label dipakai untuk memberi nama pada sebuah baris-perintah, agar bisa mudah menyebitnya dalam penulisan program. Label bisa ditulis apa saja asalkan diawali dengan huruf, biasa panjangnya tidak lebih dari 16 huruf. Huruf-huruf berikutnya boleh merupakan angka atau tanda titik dan tanda garis bawah. Kalau sebuah baris-perintah tidak memiliki bagian label, maka bagian ini boleh tidak ditulis namun spasi atau tabulator sebagai pemisah antara label dan bagian berikutnya mutlak tetap harus ditulis.

Dalam sebuah program sumber bisa terdapat banyak sekali label, tapi tidak boleh ada label yang kembar.

Sering sebuah baris-perintah hanya terdiri dari bagian label saja, baris demikian itu memang tidak bisa dikatakan sebagai baris-perintah yang sesungguhnya, tapi hanya sekedar memberi nama pada baris bersangkutan.

Bagian label sering disebut juga sebagai bagian symbol, hal ini terjadi kalau label tersebut tidak dipakai untuk menandai bagian program, melainkan dipakai untuk menandai bagian data.

Bagian kode operasi
Kode operasi (operation code atau sering disingkat sebagai OpCode) merupakan bagian perintah yang harus dikerjakan. Dalam hal ini dikenal dua macam kode operasi, yang pertama adalah kode-operasi untuk mengatur kerja mikroprosesor / mikrokontroler. Jenis kedua dipakai untuk mengatur kerja program assembler, sering dinamakan sebagai assembler directive.

Kode-operasi ditulis dalam bentuk mnemonic, yakni bentuk singkatan-singkatan yang relatip mudah diingat, misalnya adalah MOV, ACALL, RET dan lain sebagainya. Kode-operasi ini ditentukan oleh pabrik pembuat mikroprosesor/mikrokontroler, dengan demikian setiap prosesor mempunyai kode-operasi yang berlainan.

Kode-operasi berbentuk mnemonic tidak dikenal mikroprosesor/mikrokontroler, agar program yang ditulis dengan kode mnemonic bisa dipakai untuk mengendalikan prosesor, program semacam itu diterjemahkan menjadi program yang dibentuk dari kode-operasi kode-biner, yang dikenali oleh mikroprosesor/mikrokontroler.

Tugas penerjemahan tersebut dilakukan oleh program yang dinamakan sebagai Program Assembler.

Di luar kode-operasi yang ditentukan pabrik pembuat mikroprosesor/mikrokontroler, ada pula kode-operasi untuk mengatur kerja dari program assembler, misalnya dipakai untuk menentukan letak program dalam memori (ORG), dipakai untuk membentuk variabel (DS), membentuk tabel dan data konstan (DB, DW) dan lain sebagainya.

Bagian operand
Operand merupakan pelengkap bagian kode operasi, namun tidak semua kode operasi memerlukan operand, dengan demikian bisa terjadi sebuah baris perintah hanya terdiri dari kode operasi tanpa operand. Sebaliknya ada pula kode operasi yang perlu lebih dari satu operand, dalam hal ini antara operand satu dengan yang lain dipisahkan dengan tanda koma.

Bentuk operand sangat bervariasi, bisa berupa kode-kode yang dipakai untuk menyatakan Register dalam prosesor, bisa berupa nomor-memori (alamat memori) yang dinyatakan dengan bilangan atau pun nama label, bisa berupa data yang siap di-operasi-kan. Semuanya disesuaikan dengan keperluan dari kode-operasi.

Untuk membedakan operand yang berupa nomor-memori atau operand yang berupa data yang siap di-operasi-kan, dipakai tanda-tanda khusus atau cara penulisan yang berlainan.

Di samping itu operand bisa berupa persamaan matematis sederhana atau persamaan Boolean, dalam hal semacam ini program Assembler akan menghitung nilai dari persamaan-persamaan dalam operand, selanjutnya merubah hasil perhitungan tersebut ke kode biner yang dimengerti oleh prosesor. Jadi perhitungan di dalam operand dilakukan oleh program assembler bukan oleh prosesor!

Bagian komentar
Bagian komentar merupakan catatan-catatan penulis program, bagian ini meskipun tidak mutlak diperlukan tapi sangat membantu masalah dokumentasi. Membaca komentar-komentar pada setiap baris-perintah, dengan mudah bisa dimengerti maksud tujuan baris bersangkutan, hal ini sangat membantu orang lain yang membaca program.

Pemisah bagian komentar dengan bagian sebelumnya adalah tanda spasi atau tabulator, meskipun demikian huruf pertama dari komentar sering-sering berupa tanda titik-koma, merupakan tanda pemisah khusus untuk komentar.

Untuk keperluan dokumentasi yang intensip, sering-sering sebuah baris yang merupakan komentar saja, dalam hal ini huruf pertama dari baris bersangkutan adalah tanda titik-koma.

Minggu, 06 November 2011

pertemuan 7

Sistem Operasi berikut berisi tentang PCB (Process Control Block) yang berada pada sistem Operasi Linux. Process Control Block berkaitan erat dengan manajemen proses. Proses adalah program yang sedang dieksekusi, yang meliputi aktivitas yang berkaitan dengan program Counter; stack yang berisi data sementara seperti parameter fungsi, return address, dan variabel local; dan data section yang menyimpan variabel-variabel global.

Sistem operasi dapat menjalankan satu proses tunggal pada satu waktu tetapi juga dapat menjalankan beberapa proses (multi-proses) dalam satu waktu. Sistem Operasi mengeksekusi proses dengan dua cara yaitu:

Batch System yang mengeksekusi jobs

Time-shared System yang mengatur pengeksekusian program pengguna (user programs) atau tasks.

Pada umumnya sistem komputer hanya memiliki satu prosesor yang dapat menjalankan satu instruksi pada satu waktu. Untuk dapat menangani multi-proses dalam satu waktu, prosesor bekerja dengan cara menjalankan satu proses pada satu waktu dan berganti dengan cepat untuk menangani proses yang lain demikian proses akan ditangani secara bergantian oleh prosesor. Pada satu waktu setiap proses dalam multi-proses memiliki status proses yang berbeda-beda. Status proses tersebut adalah:

New : status yang dimiliki pada saat proses baru saja dibuat.
Running : status pada saat instruksi-instruksi dari sebuah proses dieksekusi.
Waiting : status pada saat proses menunggu suatu sebuah event seperti proses I/O.
Ready : status pada saat proses siap untuk dieksekusi oleh prosesor
Terminated : status yang dimiliki pada saat proses telah selesai dieksekusi.
Agar prosesor dapat menangani multi-proses dengan baik dan lancar diperlukan manajemen proses. Untuk melakukan pengaturan eksekusi proses, setiap proses memiliki sebuah PCB (Process Control Block) pada sistem operasi. Process Control Block adalah struktur data yang digunakan oleh sistem oprasi untuk melakukan manajemen proses. PCB memuat informasi sebuah proses yang spesifik, termasuk hal-hal di bawah ini:

Process state
Proses ID (PID), sebagai nomor identitas
Program counter
CPU registers
CPU scheduling information.
Prioritas eksekusi proses, menunjukkan seberapa sering proses dikerjakan prosesor. Proses yang memiliki nilai prioritas lebih tinggi akan dikerjakan terlebih dahulu.
Memory-management information
Accounting information
I/O status information
Untuk melihat secara langsung sebuah PCB menyimpan informasi dari suatu proses, berisi seperti yang disebutkan diatas, kami (kelompok PCB : Dany Kurniawan, Yonan, dan M. Arif) mencoba untuk menjalankan Open Office, dan melihat kejadian-kejadian sebagai berikut:


Informasi yang kami dapatkan adalah:

Nama Process (Command) : soffice.bin

Proses ID(PID) : 3388

melihat isi /proc dalam directory 3388 yang merupakan proses dari open office. Isi dari proses 3388 dpt diihat

Status (S) : S (Sleep)

Memori (%MEM) : 11.6

Minggu, 30 Oktober 2011

Pertemuan 6

Input/Output Problems

Berbagai macam peripheral
Menyampaikan berbagai data dalam jumlah
Pada kecepatan yang berbeda
Dalam format yang berbeda
Lebih lambat dari CPU dan RAM Semua
Need I / O modul

Input/Output Module

Interface ke CPU dan Memori
Interface ke satu atau lebih peripheral

External Devices

dapat dibaca manusia
Layar, printer, keyboard
dibaca mesin
Monitoring dan kontrol
komunikasi
modem
Network Interface Card (NIC)

I/O Module Function

 Control & Timing
 CPU Communication
 Device Communication
 Data Buffering
 Error Detection

I/O Steps

CPU memeriksa I / O Status modul device
Modul I / O Status pengembalian
Jika siap, CPU meminta transfer data
Modul I / O mendapatkan data dari device
Modul I / O transfer data ke CPU
Variasi untuk output, DMA, dll

I/O Module Decisions

Menyembunyikan atau mengungkapkan device properties ke CPU
Dukungan beberapa device atau tunggal
Kontrol fungsi perangkat atau meninggalkan untuk CPU
Juga O / S keputusan
misalnya Unix memperlakukan segala sesuatu yang dapat sebagai file

Input Output Techniques

Programmed
interrupt driven
Direct Memory Access (DMA)

Programmed I/O

CPU memiliki kontrol langsung atas I / O
penginderaan Status
Membaca / menulis perintah
mentransfer data
CPU menunggu modul I / O untuk operasi lengkap
Limbah waktu CPU

Programmed I/O – detail

CPU meminta I / O operasi
Modul I / O melakukan operasi
I / O modul set bit status yang
CPU memeriksa bit status yang secara berkala
Modul I / O tidak memberitahu CPU secara langsung
Modul I / O tidak mengganggu CPU
CPU mungkin menunggu atau kembali lagi nanti

I/O Commands

CPU masalah alamat
Mengidentifikasi modul (& perangkat jika> 1 per modul)
CPU masalah perintah
Kontrol - modul memberitahu apa yang harus dilakukan
misalnya berputar disk
Uji - Status cek
misalnya kekuasaan? Kesalahan?
Baca / Tulis
Modul transfer data melalui buffer dari / ke perangkat

Addressing I/O Devices

Di bawah diprogram I / O transfer data sangat seperti akses memori (sudut pandangCPU)
Setiap perangkat diberi pengenal unik
Perintah CPU berisi pengenal (alamat)

I/O Mapping

Memori dipetakan I / O
Perangkat dan berbagi ruang alamat memori
I / O tampak seperti memori baca / tulis
Tidak ada perintah khusus untuk I / O
Banyak pilihan perintah akses memori yang tersedia
Terisolasi I / O
Pisahkan alamat spasi
Butuh I / O atau memori baris pilih
Khusus perintah untuk I / O
terbatas diatur

Interrupt Driven I/O

Mengatasi CPU menunggu
Tidak memeriksa ulang perangkat CPU
I / O modul interupsi saat siap

Interrupt Driven I/O Basic Operation

Masalah CPU membaca perintah
Modul I / O mendapatkan data dari CPU sementara tidak bekerja perifer lainnya
Modul I / O menyela CPU
CPU permintaan data
Transfer modul I / O data

CPU Viewpoint

Masalah membaca perintah
Melakukan pekerjaan lain
Periksa interupsi pada akhir setiap siklus instruksi
Jika terganggu: -
Simpan konteks (register)
proses mengganggu
Mengambil data & menyimpan
Lihat catatan Sistem Operasi

Design Issues

Bagaimana Anda mengidentifikasi modul menerbitkan mengganggu?
Bagaimana Anda menangani beberapa interupsi?
yakni sebuah interrupt handler yang terganggu

Identifying Interrupting Module (1)

Berbeda baris untuk setiap modul
PC
Batas jumlah perangkat
Software jajak pendapat
CPU meminta modul masing-masing pada gilirannya
lambat

Identifying Interrupting Module (2)

Daisy Chain atau jajak pendapat perangkat keras
Interrupt Akui diturunkan rantai
Modul bertanggung jawab tempat vektor di bus
CPU menggunakan vektor untuk mengidentifikasi rutin handler
bus Master
Modul harus mengajukan klaim bus sebelum dapat meningkatkan mengganggu
misalnya PCI & SCSI

Multiple Interrupts

Setiap baris interrupt memiliki prioritas
Garis prioritas yang lebih tinggi dapat mengganggu jalur prioritas yang lebih rendah
Jika bus mastering hanya master saat ini dapat mengganggu

Example - PC Bus

80x86 memiliki satu baris interrupt
8086 menggunakan sistem berbasis satu controller interupsi 8259A
8259A memiliki 8 baris interrupt

Sequence of Events

Menerima interupsi 8259A
8259A menentukan prioritas
8259A sinyal 8086 (INTR menimbulkan baris)
CPU Mengakui
8259A menempatkan vektor yang benar pada data bus
Proses CPU mengganggu

ISA Bus Interrupt System

Bus ISA chain dua 8259As bersama-sama
Link adalah melalui interupsi 2
Memberikan 15 baris
16 baris kurang satu untuk link
IRQ 9 digunakan untuk kembali rute apa pun mencoba untuk menggunakan IRQ 2
kompatibilitas mundur
Incorporated di chip set

Direct Memory Access

Interrupt driven dan diprogram I / O memerlukan intervensi CPU aktif
Transfer rate terbatas
CPU diikat
DMA adalah jawabannya

DMA Function

Modul tambahan (hardware) di bus
DMA controller mengambil alih dari CPU untuk I / O

DMA Operation

DMA controller memberitahu CPU: -
Baca / Tulis
alamat perangkat
Mulai alamat blok memori untuk data
Jumlah data yang ditransfer
CPU melanjutkan pekerjaan lain
DMA controller mentransfer berhubungan dengan
DMA controller mengirimkan interupsi ketika selesai

DMA Transfer Cycle Stealing

DMA controller mengambil alih bus untuk siklus
Transfer data satu kata
Tidak interrupt
CPU tidak context switch
CPU ditangguhkan sebelum ia mengakses bus
yaitu sebelum mengambil operand atau data atau menulis data
Memperlambat CPU, tetapi tidak sebanyak mentransfer CPU melakukan

I/O Channels

I / O device semakin canggih
misalnya Kartu grafis 3D
Menginstruksikan CPU I / O controller untuk melakukan transfer
I / O controller tidak seluruh transfer
meningkatkan kecepatan
Membawa beban dari CPU
Dedicated prosesor lebih cepat

Small Computer Systems Interface (SCSI)

paralel antarmuka
8, 16, 32 bit data baris
daisy dirantai
Perangkat independen
Perangkat dapat berkomunikasi satu sama lain juga sebagai tuan rumah

SCSI – 1

awal 1980-an
8 bit
5MHz
Data rate 5MBytes.s-1
tujuh perangkat
Delapan termasuk antarmuka host

SCSI – 2

1991
16 dan 32 bit
10MHz
Data rate 20 atau 40 Mbytes.s-1
(Check out Ultra / Wide SCSI)

SCSI Signaling (1)

Antara inisiator dan target
Biasanya host & perangkat
Bis gratis? (c.f. Ethernet)
Arbitrase - mengendalikan bus (c.f. PCI)
memilih target
seleksi ulang
Memungkinkan rekoneksi setelah suspensi
misalnya jika permintaan membutuhkan waktu untuk mengeksekusi, bus dapat dilepaskan

SCSI Signaling (2)

Perintah - target meminta dari inisiator
data permintaan
Status permintaan
Pesan permintaan (kedua cara)

Configuring SCSI

Bus harus diakhiri di setiap akhir
Biasanya salah satu ujungnya adalah host adapter
Pasang di terminator atau beralih (es)
SCSI Id harus diatur
Jumper atau switch
Unik pada rantai
0 (nol) untuk perangkat boot
Jumlah yang lebih tinggi merupakan prioritas tinggi pada arbitrase

IEEE 1394 FireWire

Kinerja bus seri tinggi
cepat
biaya rendah
Mudah untuk menerapkan
Juga digunakan dalam kamera digital, VCR dan TV

FireWire Configuration

rantai daisy
Sampai dengan 63 perangkat pada port tunggal
Benar-benar 64 yang satu adalah antarmuka itu sendiri
Sampai 1022 bus dapat dihubungkan dengan jembatan
konfigurasi otomatis
Tidak ada bus terminator
Mungkin struktur pohon

FireWire 3 Layer Stack

fisik
Transmisi menengah, listrik dan karakteristik sinyal
link
Transmisi data dalam paket
transaksi
Permintaan-respon protocol

FireWire - Physical Layer

Data rate dari 25 hingga 400Mbps
Dua bentuk arbitrase
Berdasarkan struktur pohon
Akar bertindak sebagai arbiter
Pertama datang pertama dilayani
Prioritas alami kontrol permintaan simultan
yaitu yang terdekat untuk root
arbitrase yang adil
mendesak arbitrase

FireWire - Link Layer

Dua jenis transmisi
asynchronous
Jumlah variabel data dan beberapa byte data transaksi ditransfer sebagai sebuah paket
Untuk mengatasi eksplisit
Pengakuan kembali
isochronous
Variabel jumlah data dalam urutan paket ukuran yang tetap secara berkala
Sederhana menangani
tidak ada pengakuan

Foreground Reading

Check out Universal Serial Bus (USB)
Bandingkan dengan standar komunikasi lainnya misalnya Ethernet

Minggu, 23 Oktober 2011

Pertemuan 5

Jenis Memori External
 Magnetic Disk
 RAID
 Removable
 Optical
 CD-ROM
 CD-Writable (WORM)
 CD-R/W
 DVD
 Magnetic Tape
Magnetic Disk
 Metal atau plastic dilapisi dg material yg bersifat magnet (iron oxide)
 Jenis kemasan
 Floppy
 Winchester hard disk
 Removable hard disk
Format dan Organisasi Data
 Lingkaran konsentris atau track
 Ada Gap antar track
 Gap sempit, kapasitas bertambah
 Jumlah bit per track sama (kerapatan bervariasi)
 Kecepatan putar tetap
 Track dibagi menjadi beberapa sector
 Ukuran minimum block adalah satu sector
 Satu block bisa berisi lebih dari satu sector
Fixed/Movable Head Disk
 Fixed head
 Ada satu head (r/w) per track
 Head diletakkan pada tangkai yg tetap
 Movable head
 Hanya ada satu head per side
 Diletakkan pada tangkai yg dpt bergerak
Removable / Non removable
 Removable disk
 Dapat dilepas dari drive dan diganti dg disk lain
 Memberikan kapasitas simpanan yg tak terbatas
 Mudah melakukan transfer data antar sistem
 Nonremovable disk
 Terpasanang permanen dalam drive
Floppy Disk
 8”, 5.25”, 3.5”
 Kapasitas kecil
 sampai 1.44Mbyte (ada yg 2.88M)
 Lambat
 Umum dipakai
 Murah
Winchester Hard Disk (1)
 Dikembangkan oleh IBM di Winchester (USA)
 Dikemas dalam satu unit
 Berisi satu cakram atau lebih
 Head sangat kecil
 Handal
Winchester Hard Disk (2)
 Umum digunakan
 Murah
 Sbg external storage yg sangat cepat
 Kapasitas semakin besar
 Dalam orde GB
Removable Hard Disk
 ZIP
 Murah
 Banyak digunakan
 100MB
 JAZ
 Mahal
 1G
 L-120 (a: drive)
 Juga dpt untuk membaca 3.5” floppy
Pencarian Sector
 Harus dapat mengenali awal suatu track dan sector
 Format disk
 Menambahkan informasi tambahan
 Memberi tanda awal track dan sector
Karakteristik
 Fixed head atau movable head
 Removable disk atau fixed disk
 Single side atau double side
 Single platter atau multiple platter
 Mekanisme head
 Contact (Floppy)
 Fixed gap
 Flying (Winchester)
Multiple Platter
 Satu head per side
 Semua head di-join dan di-align
 Track-track yg setiap platter membentuk cylinder
 Data dipecah berdasarkan cylinder
 Mengurangi gerakan head
 Meningkatkan kecepatan (transfer rate)
Kecepatan
 Seek time
 gerakan head ke track yg dituju
 (Rotational) latency
 Putar platter sampai posisi data dibawah head
 Access time = Seek + Latency
 Transfer rate
RAID
 Redundant Array of Independent Disks
 Redundant Array of Inexpensive Disks
 Ada 6 level
 Tidak berhirarki
 Sejumlah disks (fisik) yg dipandang sbg satu drive (logical) oleh Sistem Operasil
 Data tersebar diantara disk fisik
RAID 0
 No redundancy
 Data striped across all disks
 Round Robin striping
 Increase speed
 Multiple data requests probably not on same disk
 Disks seek in parallel
 A set of data is likely to be striped across multiple disks
RAID 1
 Mirrored Disks
 Data is striped across disks
 2 copies of each stripe on separate disks
 Read from either
 Write to both
 Recovery is simple
 Swap faulty disk & re-mirror
 No down time
 Expensive
RAID 2
 Disks are synchronized
 Very small stripes
 Often single byte/word
 Error correction calculated across corresponding bits on disks
 Multiple parity disks store Hamming code error correction in corresponding position
 Lots of redundancy
 Expensive
 Not used
RAID 3
 Similar to RAID 2
 Only one redundant disk, no matter how large the array
 Simple parity bit for each set of corresponding bits
 Data on failed drive can be reconstructed from surviving data and parity info
 Very high transfer rates
RAID 4
 Each disk operates independently
 Good for high I/O request rate
 Large stripes
 Bit by bit parity calculated across stripes on each disk
 Parity stored on parity disk
RAID 5
 Like RAID 4
 Parity striped across all disks
 Round robin allocation for parity stripe
 Avoids RAID 4 bottleneck at parity disk
 Commonly used in network servers
 N.B. DOES NOT MEAN 5 DISKS!!!!!
Optical Storage CD-ROM
 Originally for audio
 650Mbytes giving over 70 minutes audio
 Polycarbonate coated with highly reflective coat, usually aluminum
 Data stored as pits
 Read by reflecting laser
 Constant packing density
 Constant linear velocity
CD-ROM Drive Speeds
 Audio is single speed
 Constant linier velocity
 1.2 ms-1
 Track (spiral) is 5.27km long
 Gives 4391 seconds = 73.2 minutes
 Other speeds are quoted as multiples
 e.g. 24x
 The quoted figure is the maximum the drive can achieve
Random Access on CD-ROM
 Difficult
 Move head to rough position
 Set correct speed
 Read address
 Adjust to required location
 (Yawn!)
CD-ROM for & against
 Large capacity (?)
 Easy to mass produce
 Removable
 Robust
 Expensive for small runs
 Slow
 Read only
Other Optical Storage
 CD-Writable
 WORM
 Now affordable
 Compatible with CD-ROM drives
 CD-RW
 Erasable
 Getting cheaper
 Mostly CD-ROM drive compatible
DVD - what’s in a name?
 Digital Video Disk
 Used to indicate a player for movies
 Only plays video disks
 Digital Versatile Disk
 Used to indicate a computer drive
 Will read computer disks and play video disks
 Dogs Veritable Dinner
 Officially - nothing!!!
DVD – technology
 Multi-layer
 Very high capacity (4.7G per layer)
 Full length movie on single disk
 Using MPEG compression
 Finally standardized (honest!)
 Movies carry regional coding
 Players only play correct region films
 Can be “fixed”
DVD – Writable
 Loads of trouble with standards
 First generation DVD drives may not read first generation DVD-W disks
 First generation DVD drives may not read CD-RW disks
 Wait for it to settle down before buying!
Foreground Reading
 Check out optical disk storage options
 Check out Mini Disk
Magnetic Tape
 Serial access
 Slow
 Very cheap
 Backup and archive
Digital Audio Tape (DAT)
 Uses rotating head (like video)
 High capacity on small tape
 4Gbyte uncompressed
 8Gbyte compressed
 Backup of PC/network servers

Minggu, 16 Oktober 2011

Pertemuan 4

Pertemuan 4
MEMORY
Karakteristik Memori

 Lokasi
 Kapasitas
 Unit transfer
 Metode Akses
 Kinerja
 Jenis fisik
 Sifat-sifat fisik
 Organisasi
Lokasi
 CPU (register)
 Internal (main memori)
 External (secondary memori)
Kapasitas
 Ukuran Word
 Satuan alami organisasi memori
 Banyaknya words
 atau Bytes
Satuan Transfer
 Internal
 Jumlah bit dalam sekali akses
 Sama dengan jumlah saluran data (= ukuran word)
 External
 Dalam satuan block yg merupakan kelipatan word
 Addressable unit
 Lokasi terkecil yang dpt dialamati secara uniq
 Secara internal biasanya sama dengan Word
 Untuk disk digunakan satuan Cluster
Metode Akses
 Sekuensial
 Mulai dari awal sampai lokasi yang dituju
 Waktu akses tergantung pada lokasi data dan lokasi sebelumnya
 Contoh tape
 Direct
 Setiap blocks memilki address yg unique
 Pengaksesan dengan cara lompat ke kisaran umum (general vicinity) ditambah pencarian sekuensial
 Waktu akses tdk tergantung pada lokasi dan lokasi sebelumnya
 contoh disk
 Random
 Setiap lokasi memiliki alamat tertentu
 Waktu akses tdk tergantung pada urutan akses sebelumnya
 Contoh RAM
 Associative
 Data dicarai berdasarkan isinya bukan berdasarkan alamatnya
 Waktu akses tdk tergantung terhadap lokasi atau pola akses sebelumnya
 Contoh: cache
Hierarki Memori
 Register
 Dalam CPU
 Internal/Main memory
 Bisa lebih dari satu level dengan adanya cache
 “RAM”
 External memory
 Penyimpan cadangan
Performance
 Access time
 Waktu untuk melakukan operasi baca-tulis
 Memory Cycle time
 Diperlukan waktu tambahan untuk recovery sebelum akses berikutnya
 Access time + recovery
 Transfer Rate
 Kecepatan transfer data ke/dari unit memori
Jenis Fisik
 Semiconductor
 RAM
 Magnetic
 Disk & Tape
 Optical
 CD & DVD
 Others
 Bubble
 Hologram
Karakteristik
 Decay
 Volatility
 Erasable
 Power consumption
Organisasi
 Susunan fisik bit-bit untuk membentuk word
Kendala Rancangan
 Berapa banyak?
 Capacity
 Seberapa cepat?
 Time is money
 Berapa mahal?
Hierarki
 Registers
 L1 Cache
 L2 Cache
 Main memory
 Disk cache
 Disk
 Optical
 Tape
Locality of Reference
 Selama berlangsungnya eksekusi suatu program, referensi memori cenderung untuk mengelompok (cluster)
 Contoh: loops
Memori Semiconductor
 RAM
 Penamaan yang salah karena semua memori semiconductor adalah random access (termasuk ROM)
 Read/Write
 Volatile
 Penyimpan sementara
 Static atau dynamic
Dynamic RAM
 Bit tersimpan berupa muatan dalam capacitor
 Muatan dapat bocor
 Perlu di-refresh
 Konstruksi sederhana
 Ukuran per bit nya kecil
 Murah
 Perlu refresh-circuits
 Lambat
 Main memory
Static RAM
 Bit disimpan sebagai switches on/off
 Tidk ada kebocoran
 Tdk perlu refreshing
 Konstruksi lebih complex
 Ukuran per bit lebih besar
 Lebih mahal
 Tidak memerlukan refresh-circuits
 Lebih cepat
 Cache
Read Only Memory (ROM)
 Menyimpan secara permanen
 Untuk
 Microprogramming
 Library subroutines
 Systems programs (BIOS)
 Function tables
Jenis ROM
 Ditulisi pada saat dibuat
 Sangat mahal
 Programmable (once)
 PROM
 Diperlukan peralatan khusus untuk memprogram
 Read “mostly”
 Erasable Programmable (EPROM)
 Dihapus dg sinar UV
 Electrically Erasable (EEPROM)
 Perlu waktu lebih lama untuk menulisi
 Flash memory
 Menghapus seleuruh memori secara electris
Organisasi
 16Mbit chip dapat disusun dari 1M x 16 bit word
 1 bit/chip memiliki 16 lots dengan bit ke 1 dari setiap word berada pada chip 1
 16Mbit chip dapat disusun dari array: 2048 x 2048 x 4bit
 Mengurangi jumlah addres pins
 Multiplex row address dg column address
 11 pins untuk address (211=2048)
 Menambah 1 pin kapasitas menjadi 4x
Refreshing
 Rangkaian Refresh diamsukkan dalam chip
 Disable chip
 Pencacahan melalui baris
 Read & Write back
 Perlu waktu
 Menurunkan kinerja
Koreksi kesalahan
 Rusak berat
 Cacat/rusak Permanent
 Rusak ringan
 Random, non-destructive
 Rusak non permanent
 Dideteksi menggunakan Hamming code
Operasi pada Cache
 CPU meminta isi data dari lokasi memori tertentu
 Periksa data tersebut di cache
 Jika ada ambil dari cache (cepat)
 Jika tidak ada, baca 1 block data dari main memory ke cache
 Ambil dari cache ke CPU
 Cache bersisi tags untuk identitas block dari main memory yang berada di cache
Desain Cache
 Ukuran (size)
 Fungsi Mapping
 Algoritma penggantian (replacement algrthm)
 Cara penulisan (write policy)
 Ukuran Block
 Jumlah Cache
Size
 Cost
 Semakin besar semakin mahal
 Speed
 Semakin besar semakin cepat
 Check data di cache perlu waktu
Fungsi Mapping
 Ukuran Cache 64kByte
 Ukuran block 4 bytes
 diperlukan 16k (214) alamat per alamat 4 bytes
 Jumlah jalur alamat cache 14
 Main memory 16MBytes
 Jalur alamat perlu 24 bit
 (224=16M)
Direct Mapping
 Setiap block main memory dipetakan hanya ke satu jalur cache
 Jika suatu block ada di cache, maka tempatnya sudah tertentu
 Address terbagi dalam 2 bagian
 LS-w-bit menunjukkan word tertentu
 MS-s-bit menentukan 1 blok memori
 MSB terbagi menjadi field jalur cache r dan tag sebesar s-r (most significant)
Table Cache Line pada Direct Mapping
 Cache line blocks main memori
 0 0, m, 2m, 3m…2s-m
 1 1,m+1, 2m+1…2s-m+1
 m-1 m-1, 2m-1,3m-1…2s-1
Keuntungan & Kerugian Direct Mapping
 Sederhana
 Murah
 Suatu blok memiliki lokasi yang tetap
 Jika program mengakses 2 block yang di map ke line yang sama secara berulang-ulang, maka cache-miss sanagat tinggi
Associative Mapping
 Blok main memori dpt di simpan ke cache line mana saja
 Alamat Memori di interpresi sbg tag dan word
 Tag menunjukan identitas block memori
 Setiap baris tag dicari kecocokannya
 Pencarian data di Cache menjadi lama
Set Associative Mapping
 Cache dibagi dalam sejumlah sets
 Setiap set berisi sejumlah line
 Suatu blok di maps ke line mana saja dalam set
 misalkan Block B dapat berada pada line mana saja dari set i
 Contoh: per set ada 2 line
 2 way associative mapping
 Suatu block dpt berada pada satu dari 2 lines dan hanya dalam 1 set
Replacement Algorithms (1)
Direct mapping
 Tidak ada pilihan
 Setiap block hanya di map ke 1 line
 Ganti line tersebut