Kamis, 01 Desember 2011

SISTEM MEMORI

I. System Memori
Sistem Memori ( Memori ) adalah komponen-komponen elektronik yang menyimpan perintah- perintah yang menunggu untuk di eksekusi oleh prosesor,data yang diperlukan oleh insruksi (perintah) tersebut dan hasil-hasil dari data yang diproses ( informasi ). Memori biasanya terdiri atas satu chip atau beberapa papan sirkuit lainnya dalam prosesor. Memori komputer bisa diibaratkan sebagai papan tulis, dimana setiap orang yang masuk kedalam ruangan bisa membaca dan memanfaatkan data yang ada dengan tanpa merubah susunan yang tersaji. Data yang diproses oleh komputer, sebenarnya masih tersimpan didalam memori, dan dalam hal ini komputer hanya membaca data dan kemudian memprosesnya. Satu kali data tersimpan didalam memori komputer, maka data tersebut akan tetap tinggal disitu selamanya. Setiap kali memori penuh, maka data yang ada bisa dihapus sebagian ataupun seluruhnya untuk diganti dengan data yang baru.
• Klasifikasi Memory
- Memory Utama
Merupakan media penyimpanan dalam bentuk array yang disusun word atau byte, kapasitas daya simpannya bisa jutaan susunan. Setiap word atau byte mempunyai alamat tersendiri. Data yang disimpan pada memori utama ini bersifat volatile, artinya data yang disimpan bersifat sementara dan dipertahankan oleh sumber-sumber listrik, apabila sumber listrik dimatikan maka datanya akan hilang.
a. RAM (Random Access Memory
* Ram diakses melalui alamat,
*Semua lokasi yang dapat dialamati dapat diakses secara acak (random),
*Membutuhkan waktu akses yang sama.
b. CAM (Content Address Memory)
*Memori diakses berdasarkan isi bukan alamat,
*Pencarian data dilakukan secara simultan dan parallel,
*CAM disebut juga memori asosiatif.
c. Cache
*Buffer berkecepatan tinggi yang digunakan untuk menyimpan data yang diakses pada saat itu dan data yang berdekatan dalam memori utama.
*Waktu akses memori cache lebihcepat5 –10 kali dibandingkan memori utama.
Implementasi Memory utama :
a. Stack
Merupakan struktur data tidak tetap yang kembali dan digunakan untuk menyimpan parameter yang dilalui alamat dalam subroutine call dan return, memanipulasi alamat serta operasi aritmatika.
b. Modular
* Dalam sistem modular RAM dipisah menjadi modul-modul yang berbeda yaitu MAR dan MBR.
* Penggunaan memori modular biasanya pada sistem pipeline dan prosesor array.
c. Virtual
Prinsip dasr memori virtual adalah mengalamati ruang penyimpanan logikal yang secara fisik lebih besar dari daripada ruang penyimpanan riil.


- Memory Pembantu
* Bersifat mom-volatile yaitu jika tidak ada listrik, maka isi memori tidak hilang.
* Tidak mempengaruhi langsung fungsi CPU.

a. Pita Magnetik
- Merupakan suatu lajur plastik tipis, lebar ½ inchi, yang dilapisi dengan medium perekaman magnetik .
- Biasa terbagi menjadi 7/9 track panjang pita.
- Kerapatan rekaman (bpi) yaitu 800,1600 dan 6250 bpi.
- Terdapat satu bit paritas untuk pendeteksian kesalahan .
b. Disk
- Merupakan sebuah lembaran platter.
- Terdiri atas sebuah kendali disk (interface) dan satu atau lebih disk (platter).
- Proses penulisan ke disk yaitu disk drive akan menimbulkan kemagnetan pada titik di atas permukaan disk yang secara langsung di bawah head.
- Proses pembacaan dan disk head diatur agar dapat mendeteksi perubahan arah kemagnetan.
c. Floopy Disk
- Merupakan lembaran datar yang tipis dan fleksibel.
- Hampiran sama dengan harddisk tetapi kapasitas penyimpanannya lebih rendah.
Organisasi disk yaitu :
1. Track : sejumlah lingkaran yang konsentris.
2. Sektor : pembagian permukaan disk secara belahan yang mempunyai ukuran yang sama.
3. Silinder : dibentuk oleh track-track yang berhubungan pada setiap permukaan.
• Design Memory
A. Kecepatan Memori Lawan Kecepatan CPU
- Awal tahun 1960 –1980, kecepatan memori dan CPU meningkat, namun rasio keseluruhan antara keduanya relatif.
- Pada era ini kecepatan memori biasanya kurang lebih 10 kali lebih lambat dari kecepatan CPU.
- CDC 6600, 76000, CRAY 1 dan CRAY X-MP untuk super komputer waktu akses memorinya 10 sampai 14 kali waktu siklus CPU
- VAX 11/780, 8600 dan 8700 untuk mini komputer waktu akses memorinya 4 sampai 7 kali siklus CPU.
- Pertengahan tahun 1980, kecepatan CPU jauh meningkat hingga 50 kali kecepatan memori, contoh CRAY
Keuntungan dari perubahan ini adalah :
- Memori besar umumnya memerlukan hardware khusus untuk mendeteksi dan mengoreksi kesalahan, yang menambah waktu akses memori efektif.
- CPU yang paling cepat merupakan pipelined
B. Ruang Alamat Memori
Semakin besar ruang alamat memori yang disediakan maka akan semakin baik namun harus diperhatikan pula bahwa dalam perubahan tersebut tidak harus merubah secar keseluruhan dan mendasar daripada arsitektur yang telah dibangun.
C. Keseimbangan Antara Kecepatan Dan Biaya
Sifat dari teknologi memori
1. Harga unitnya turun dengan sangat cepat, sedangkan kecepatannya secara perlahan meningkat.
2. Adanya berbagai kecepatan dan biaya dalam peralatan memori.

II. System Input / Output
• Modul I/O
- Interface dengan CPU dan Memori
- Interface kesatu atau lebih peripheral
• Fungsi Modul I/O
- Control dan timing
- Komunikasi CPU
- Device untuk komunikasi
- Data buffering
- Deteksi error
• Langkah-langkah penanganan I/O
- CPU mengecek status modul I/O device.
- I/O module mengirimkan statusnya.
- Jika ready, CPU meminta transfer data.
- I/O modul mengambil data dari device.
- I/O modul transfer data ke CPU dalam variasi output yang diinginkan.
• Metode pengaksesan I/O
1. Memori Mapped I/O
Piranti I/O dihubungkan sebagai lokasi memori virtual
sehingga port I/O tergantung memori utama.
Karakteristik :
- Port I/O menempati bagian tertentu pada bus Alamat, diakses seolah-olah lokasi memori.
- Piranti input menjadi bagian dari memori yang memberi data ke bus data.
- Piranti output menjadi bagian dari memori yang memiliki data di dalamnya.
2. I/O Mapped I/O
- Piranti I/O dihubgungkan sebagai lokasi terpisah dari lokasi memori, sehingga port I/O tidak tergantung pada keadaan memori utama.
- Karakteristik :
•Port I/O tidak tergantung memori utama
•Transfer informasi dibawah kendali sinyal control dengan instruksi input dan output.
•Operasi I/O tergantung sinyal kendali dari CPU.
•Jenis instruksi :
- Instruksi I/O mengaktifkan baris kendalinread/write pada port I/O.
- Instruksi memory mengaktifkan baris kendali read/write pada memori.

• Metode operasi system I/O
1. I/O Terprogram
CPU mengendalikan operasi I/O secara keseluruhan dengan menjalankan serangkaian instruksi I/O dengan suatu program tertentu.
2. I/O Interupsi
CPU akan bereaksi ketika suatu piranti mengeluarkan permintaan untuk pelayanan.
3. Direct Memory Access (DMA)
Metode transfer data secara langsung antara memori dan piranti tanpa pengawasasn dan pengendalian CPU.
• Transfer Data
- Format Transfer Data
a. Parallel : semua bit pada karakter dikirim secara berssamaan dalam batas waktu transmisi tertentu.
b. Serial : data dikirim secara berurutan dalam satu baris komunikasi tunggal, sehingga antara pengirim dan penerima harus membagi batas waktu pengiriman karakter menjadi beberapa sub interval pengiriman/penerimaan.
- Mode Transfer
a. Synchronous : Baris kendali dipakai untuk emsinkronkan waktu pada semua kejadian yang terjadi selama periode tertentu. Setiap piranti harus bereaksi dengan kecepatan yang sama pada periode yang diberikan CPU. Namun karena kecepatan piranti I/O yang bervariasi sedang data dikirim secara serial dan bergantian dalam periode yang sudah ditetapkan, maka kecepatan transfer di set pada piranti I/O dengan kecepatan terendah.
b. Asynchronous : Proses back-and-forth (pulang-pergi) dalam meneruskan sinyal kendali dari pengirim ke penerima. Tekniknya bernama handshaking dengan melakukan terlebih dahulu pengecekan validitas data yang akan transfer. Kelemahan : perlu banyak kendali. Kelebihan : memungkinkan penggunaan piranti I/O yang memiliki berbagai variasi kecepatan dalam sistem yang sama.
• Interfacing Piranti I/O
Defenisi : Suatu alat yang digunakan untuk menghubungkan suatu piranti dengan CPU melalui BUS.
Fungsi Umum : Mensinkronkan data transfer antara CPU dan piranti I/O
Fungsi Detail :
•Penyedia status piranti I/O bagi CPU
•Memiliki kemampuan interupsi / DMA
•Mampu me-transfer instruksi CPU ke piranti
•Mampu berfungsi sebagai buufer storage data transfer.
•Mampu melakukan pengujian kesamaan data.
•Mampu men-decode dan mgng-encode data.
• Sistem prosesor I/O
General Purpose komputer yang berisi sejumlah saluran DMA, CPU tersendiri, kumpulan intruksi dan menjalankannya secara paralel pada CPU utama.
Fungsinya adalah sebagai piranti front end yang menangani setiap aspek I/O khusus yang disebut I/O channel.




Referensi :
http://khaeroni.blogspot.com/2011/02/sistem-memori-dan-cache.html
http://echaiil.blogspot.com/2008/12/klasifikasi-memori.html
http://kambing.ui.ac.id/bebas/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-2/ch05.html
http://www.scribd.com/doc/34681618/7-Sistem-Input-Output

Jumat, 28 Oktober 2011

ARSITEKTUR SET INSTRUKSI

ARSITEKTUR SET INSTRUKSI
Set instruksi didefinisikan sebagai suatu aspek dalam arsitektur computer yang dapat dilihat oleh para pemrogram.
Dua bagian utama arsitektur komputer:
1. Instruction set architecture (ISA) / arsitektur set instruksi
ISA meliputi spesifikasi yang menentukan bagaimana programmer bahasa mesin akan berinteraksi oleh computer. ISA menentukan sifat komputasional computer.
2. Hardware system architecture (HSA) / arsitektur system hardware
HAS berkaitan dengan subsistem hardware utama computer (CPU, system memori dan IO). HSA mencakup desain logis dan organisasi arus data dari subsistem.
JENIS INSTRUKSI
- Data processing/pengoahan data : instruksi aritmetika dan logika.
- Data storage/penyimpanan data : instruksi-instruksi memori.
- Data movement/perpindahan data : instruksi I/O.
- Control/control : instruksi pemeriksaan dan percabangan.
Instruksi aritmetika memiliki kemampuan untuk mengolah data numeric. Sedangkan instruksi logika beroperasi pada bit-bit word sebagai bit, bukan sebagai bilangan. Operasi-operasi tersebut dilakukan teutama untuk data di register CPU.
Instruksi-instruksi memori diperlukan untuk memindah data yang terdapat di memori dan register.
Instruksi-instruksi I/O diperlukan untuk memindahkan program dan data kedalam memori dan mengembalikan hasil komputasi kepada pengguna.
TEKNIK PENGALAMATAN
Ada 3 teknik dasar untuk pengalamatan, yaitu:
1. Pemetaan langsung (direct mapping), terdiri dari dua cara yakni Pengalamatan Mutlak (absolute addressing) dan Pengalamatan relatif (relative addressing).
- Pengalamatan Mutlak
Untuk teknik pengalamatan ‘alamat mutlak’ ini, tidak terlalu mempermasalahkan kunci atribut karena diminta langsung menuliskan di mana alamat record yang akan di masukkan. Jika kita menggunakan hard disk atau magnetic drum, ada dua cara dalam menentukan alamat memorinya, yaitu (1) cylinder addressing dan (2) sector addressing. Jika kita menggunakan cylinder addressing, maka kita harus menetapkan nomor-nomor dari silinder (cylinder), permukaan (surface), dan record, sedangkan bila kita menggunakan sector addressing, maka kita harus menetapkan nomor-nomor dari sektor (sector), lintasan (track), dan permukaan (surface). Teknik ini mudah dalam pemetaan (pemberian) alamat memorinya. Sulitnya pada pengambilan (retrieve) data kembali, jika data yang kita masukkan banyak, kita bisa lupa di mana alamat record tertentu.
-pengalamatan relatif
Teknik ini menjadikan atribut kunci sebagai alamat memorinya, jadi, data dari NIM dijadikan bertipe numeric(integer) dan dijadikan alamat dari record yang bersangkutan. Cara ini memang sangat efektif untuk menemukan kembali record yang sudah disimpan, tetapi sangat boros penggunaan memorinya. Tentu alamat memori mulai dari 1 hingga alamat ke sekian juta tidak digunakan karena nilai dari NIM tidak ada yang kecil. Pelajari keuntungan dan kerugian lainnya.Teknik ini termasuk dalam katagori address space dependent.
2. Pencarian Tabel (directory look-up)
Teknik ini dilakukan dengan cara mengambil seluruh kunci atribut dan alamat memori yang ada dan dimasukkan ke dalam tabel tersendiri. Jadi tabel itu (misal disebut dengan tabel INDEX) hanya berisi kunci atribut (misalkan NIM) yang telah disorting (diurut) dan alamat memorinya. Jadi, sewaktu dilakukan pencarian data, tabel yang pertama dibaca adalah tabel INDEX itu, setelah ditemukan atribut kuncinya, maka data alamat yang ada di sana digunakan untuk meraih alamat record dari data (berkas/ file/ tabel) yang sebenarnya. Pencarian yang dilakukan di tabel INDEX akan lebih cepat dilakukan dengan teknik pencarian melalui binary search (dibagi dua-dua, ada di mata kuliah Struktur dan Organisasi Data 2 kelak) ketimbang dilakukan secara sequential. Nilai key field (kunci atribut) bersifat address space independent (tidak terpengaruh terhadap perubahan organisasi file-nya), yang berubah hanyalah alamat yang ada di INDEX-nya.
3. Kalkulasi (calculating).
Kalau pada teknik pencarian tabel kita harus menyediakan ruang memori untuk menyimpan tabel INDEX-nya, maka pada teknik ini tidak diperlukan hal itu. Yang dilakukan di sini adalah membuat hitungan sedemikian rupa sehingga dengan memasukkan kunci atribut record-nya, alamatnya sudah dapat diketahui. Tinggal masalahnya, bagaimana membuat hitungan dari kunci atribut itu sehingga hasilnya bisa efisien (dalam penggunaan memori) dan tidak berbenturan nilainya (menggunakan alamat yang sama).
DESAIN SET INSTRUKSI
Desain set instruksi merupakan masalah yang sangat komplek yang melibatkan banyak aspek, diantaranya adalah :
1. kelengkapan set instruksi
2. ortogonalitas (sifat indepedensi instruksi)
3. kompatibilitas :
- source code compatibility
- object code compatibility
Selain ketiga aspek tersebut juga melibatkan hal-hal sebagai berikut :
a. Operation Repertoire: Berapa banyak dan operasi apa saja yang disediakan, dan berapa sulit
operasinya
b. Data Types : tipe/jenis data yang dapat diolah.
c. Instruction Format : panjangnya, banyaknya alamat, dsb.
d. Register : Banyaknya register yang dapat digunakan .
e.Addressing : Mode pengalamatan untuk operand.


CPU
Central processing unit (CPU) adalah bagian dari sebuah komputer sistem yang melaksanakan instruksi dari program komputer , untuk melakukan aritmatika, logis, dan dasar input / output dari sistem operasi.
PENGERTIAN BUS
Pada motherboard terdapat saluran-saluran penghubung yang menghubungkan satu komponen dengan komponen lainnya. Saluran penghubung ini berupa garis-garis yang tercetak pada PCB motherboard. Melalui saluran-saluran inilah data, informasi, dan instruksi-instruksi yang diberikan pada komputer ditransfer/melintas dari komponen satu ke komponen lainnya. Data dan instruksi tersebut diangkut dalam wujud sinyal-sinyal elektronis yang mempunyai makna tertentu. Sekelompok saluran yang mempunyai fungsi yang sama disebut jalur atau bus. Saluran-saluran penghubung tadi disebut pula dengan istikah konduktor.
ORGANISASI BUS
Organsiasi bus merupakan sekumpulan dari bagian-bagian bus dimana tersusun menjadi satu,yang memungkinkan suatu bus dapat bekerja dan dapat dilakukan. Adapun bagian tersebut yaitu seperti Pengertian jalur tidak sama dengan saluran. Dalam hal ini, jalur adalah kata jamak dari saluran. Pahamilah penjelasan berikut ini: Jalur data (data bus) yang terdiri dari beberapa (sejumlah) saluran data, jalur adres (address bus) terdiri dari beberapa (sejumlah) saluran adreess dan jalur kontrol (control bus) terdiri dari beberapa (sejumlah) saluran control.

STRUKTUR BUS
Sebuah bus biasanya terdiri atas beberapa saluran. Sebagai contoh bus data terdiri atas 8 saluran sehingga dalam satu waktu dapat mentransfer data 8 bit. Secara umum fungsi saluran bus dikatagorikan dalam tiga bagian, yaitu saluran data, saluran alamat dan saluran control. Saluran data(data bus) adalah lintasan bagi perpindahan data antar modul. Secara kolektif lintasan ini disebut bus data. Umumnya jumlah saluran terkait dengan panjang word, misalnya 8, 16, 32 saluran dengan tujuan agar mentransfer word dalam sekali waktu. Jumlah saluran dalam bus data dikatakan lebar bus, dengan satuan bit, misal lebar bus 16 bit.
KONEKSI BUS
Bus merupakan lintasan komunikasi yang menghubungkan dua atau lebih komponen komputer. Sifat penting dan merupakan syarat utama bus adalah media transmisi yang dapat digunakan bersama oleh sejumlah perangkat yang terhubung apadanya.
Karena digunakan bersama, diperlukan aturan main agar tidak terjadi tabrakan data atau kerusakan data yang ditransmisikan. Walaupun digunakan bersama namun dalam satu waktu hanya ada sebuah perangkat yang dapat menggunakan bus.
TIPE BUS
Berdasar jenis busnya, bus dibedakan menjadi bus yang khusus menyalurkan data tertentu, misalnya paket data saja, atau alamat saja, jenis ini disebut dedicated bus. Namun apabila bus dilalukan informasi yang berbeda baik data, alamat maupun sinyal kontrol dengan metode mulipleks data maka bus ini disebut multiplexed bus.
Keuntungan mulitiplexed bus adalah hanya memerlukan saluran sedikit sehingga dapat menghemat tempat, namun kerugiannya adalah kecepatan transfer data menurun dan diperlukan mekanisme yang komplek untuk mengurai data yang telah dimulitipleks.
Saat ini yang umum, bus didedikasikan untuk tiga macam, yaitu bus data, bus alamat dan bus
kontrol.


ALU (Aritmetik Logic Unit)
adalah sebuah sirkuit digital yang melakukan aritmatika dan logika operasi. ALU adalah sebuah blok bangunan fundamental dari central processing unit komputer, dan bahkan yang paling sederhana mikroprosesor mengandung satu untuk tujuan seperti timer mempertahankan. Prosesor ditemukan di dalam CPU modern dan unit pengolahan grafis ( GPU ) mengakomodasi ALUS sangat kuat dan sangat kompleks, sebuah komponen tunggal mungkin berisi sejumlah alus.

- Fixed Point
adalah tipe data yang nyata untuk nomor yang telah tetap jumlah digit setelah (dan kadang-kadang juga sebelum) titik radix (setelah titik desimal dalam notasi desimal bahasa Inggris '.'). Representasi fixed-point nomor dapat dibandingkan dengan (dan lebih menuntut komputasi) lebih rumit floating point representasi nomor.
Fixed-point nomor berguna untuk mewakili nilai-nilai pecahan, biasanya dalam basis 2 atau basis 10, ketika menjalankan prosesor tidak memiliki unit floating point (FPU) atau jika fixed-point menyediakan peningkatan kinerja atau akurasi untuk aplikasi di tangan. Paling rendah-biaya tertanam mikroprosesor dan mikrokontroler tidak memiliki FPU.

- Floating Point
floating point menjelaskan metode mewakili bilangan real dalam cara yang dapat mendukung berbagai nilai. Nomor, pada umumnya, mewakili sekitar untuk tetap jumlah digit yang signifikan dan ditingkatkan menggunakan eksponen . Dasar untuk scaling biasanya 2, 10 atau 16. Jumlah yang khas yang dapat diwakili tepat adalah dalam bentuk:
Signifikan digit × basis eksponen

Floating point merujuk pada fakta bahwa titik radix (titik desimal, atau, lebih umum di komputer, titik biner) dapat "mengambang", yaitu, dapat ditempatkan di mana saja relatif terhadap angka signifikan dari nomor tersebut. Posisi ini ditunjukkan secara terpisah dalam representasi internal, dan floating-point sehingga representasi dapat dianggap sebagai realisasi komputer notasi ilmiah.

CU (Control Unit)
adalah salah satu bagian dari CPU yang bertugas untuk memberikan arahan/kendali/ kontrol terhadap operasi yang dilakukan di bagian ALU (Arithmetic Logical Unit) di dalam CPU tersebut. Output dari CU ini akan mengatur aktivitas dari bagian lainnya dari perangkat CPU tersebut.
Pada awal-awal desain komputer, CU diimplementasikan sebagai ad-hoc logic yang susah untuk didesain. Sekarang, CU diimplementasikan sebagai sebuah microprogram yang disimpan di dalam tempat penyimpanan kontrol (control store). Beberapa word dari microprogram dipilih oleh microsequencer dan bit yang datang dari word-word tersebut akan secara langsung mengontrol bagian-bagian berbeda dari perangkat tersebut, termasuk di antaranya adalah register, ALU, register instruksi, bus dan peralatan input/output di luar chip. Pada komputer modern, setiap subsistem ini telah memiliki kontrolernya masing-masing, dengan CU sebagai pemantaunya (supervisor).

REGISTER
Adalah memori yang kecil pada computer yang bekerja dengan kecepatan sangat tinggi yang digunakan untuk melakukan eksekusi terhadap program-program komputer dengan menyediakan akses yang cepat terhadap nilai-nilai yang umum digunakan. Umumnya nilai-nilai yang umum digunakan adalah nilai yang sedang dieksekusi dalam waktu tertentu.

- Set Register
Prosesor memiliki 16 register 16-bit, meskipun hanya 12 dari mereka adalah tujuan yang benar-benar umum. Empat pertama telah mendedikasikan menggunakan:
• r0 (alias PC) adalah program counter. Anda bisa melompat dengan menentukan r0, dan konstanta yang diambil langsung dari aliran instruksi menggunakan pasca-kenaikan mode pengalamatan r0. PC selalu bahkan.
• r1 (alias SP) adalah stack pointer. Ini digunakan oleh panggilan dan instruksi dorong, dan dengan penanganan interupsi. Hanya ada satu stack pointer; MSP430 tidak memiliki apa pun yang menyerupai mode supervisor. Pointer stack selalu bahkan; Tidak jelas apakah LSB bahkan diimplementasikan.
• r2 (alias SR) adalah register status.
• r3 ini didesain untuk 0. Jika ditetapkan sebagai sumber, nilainya adalah 0. Jika ditetapkan sebagai tujuan, nilai tersebut akan dibuang.

- Control Register
Adalah prosesor yang mengubah atau mengontrol CPU atau perangkat digital lainnya. Tugas dari control register adalah untuk mengontrol setiap alamat yang ada di CPU dan untuk switching mode pengalamatan.



Reference :

http://www.scribd.com/doc/34681874/2-Set-Instruksi
http://endahajah.wordpress.com/2009/03/31/hello-world/
http://id.wikipedia.org/wiki/Set_instruksi
http://gpinkom.wordpress.com/2008/06/03/pengertian-bus-bit-dan-byte/
http://www.scribd.com/doc/34680928/Bab-7-Sistem-Bus-Organisasi-Komputer

Selasa, 04 Oktober 2011

Organisasi dan Arsitektur Komputer

Pendahuluan
Desain komputer adalah seni menghasilkan komputer menurut spesifIkasi biaya dan kinerja yang berdaya saing. Arsitektur komputer adalah seni membuat spesifikasi teknologi yang berlaku sepanjang beberapa generasi. Arsitektur computer harus melihat perkembangan untuk masa kedepan dan memvisualisasikan dengan teknologi masa depan, agar dapat menciptakan mesin atau computer yang dapat mengikuti perubaahan teknologi dengan baik. Maka arsitektur computer akan berkembang dengan perlahan dan dengan tersusun yang rapi, yang kemudian akan terbentuk pada beberapa tahun kemudian.
Evolusi Arsitektur
Computer adalah alat bantu untuk penghitungan yang kompleks. Computer selalu berkembang dari tahun ke tahun atau mengalami perubahan (evolusi). Dari computer generasi pertama yang masih menggunakan tiub vakum. Yang ukurannya masih sangat besar dan ketidaktepatannya dalam memproses data,maka computer di kembangkan lagi pada tahun 1959 – 1964 (computer generasi kedua). Pada generasi kedua ini computer menggunakan transistor, karena transistor mempunyai beberapa kelebihan dibandingkan tiub vakum. Pada computer generasi kedua ini bahasa yang digunakan adalah bahasa perhimpunan atau singkatan huruf yang dipanggil mnemonics. Dan bahasa yang dipakai pada computer generasi kedua tidak begitu dimengerti oleh mesin, maka para arsitektur computer merancang computer dengan spesifik dan mudah dimengerti oleh mesin. Pada tahun 1965 – 1970 (computer generasi ketiga) muncullah IC (integrated circuit). IC adalah satu rangkaian litar elektronik yang lengkap dalam satu cip silikon yang kecil. IC mulai digunakan pada tahun 1965 dan IC ini dapat menggantikan satu papan litar yang penuh dengan transistor-transistor. Dan pada tahun 1970 – sekarang (computer generasi keempat) muncul suatu mikroprosesor. Mikroprosesor merupakan evolusi dari cip IC, dimana mikroprosesor merupakan rangkaian–rangkaian IC didalam cip silicon yang kecil. Oleh karena itu, komputer masa kini adalah 100 kali ganda lebih kecil daripada komputer generasi pertama, dan satu cip pemproses mikro adalah lebih berpotensi dan lebih hebat daripada sebuah computer ENIAC (komputer komersil pertama). Pemproses mikro adalah asas bagi pembinaan dan rekabentuk komputer masa kini.
Klasifikasi Arsitektur
Mesin Von neuman :
1. Mempunyai subsistem hardware dasar yaitu sebuah CPU, sebuah memori dan sebuah I/O system.
2. Merupakan stored-program computer.
3. Menjalankan instruksi secara berurutan.
4. Mempunyai jalur (path) bus antara memori dan CPU.
Mesin Non-Von Neumann :
Pada tahun 1966, Flyyn mengklasifikasikan arsitektur komputer berdasarkan sifatnya yaitu :
1. Jumlah prosesor.
2. Jumlah program yang dapat dijalankan.
3. Struktur memori.
Kualitas Arsitektur Komputer
Kualitas arsitektur computer tidak mudah diukur, karena suatu arsitektur yang baik untuk satu aplikasi mungkin saja belum baik untuk aplikasi yang lain dan juga sebaliknya. Maka Ada enam atribut mutu arsitektur.
1. Generalitas
Adalah ukuran besarnya jangkauan aplikasi yang bias cocok dengan arsitektur. Contoh : computer yang terutama digunakan untuk aplikasi ilmiah dan teknik menggunakan aritmetik dan computer yang digunakan untuk aplikasi bisnis dengan menggunakan aritmetik decimal. Didtem umum memnerikan dua jenis aritmetik.
2. Daya terap (applicability)
adalah pemanfaatan arsitektur untuk penggunaan yang telah direncanakannya. Computer yang dirancang untuk satu dari dua area aplikasi utama. Contohnya : aplikasi ilmiah dan teknis dan aplikasi komersil biasa.
3. Efisiensi
Adalah ukuran rata-rata jumlah hardware dalam computer yang selalu sibuk selama penggunaannya biasa. Arsitektur yang efisien memungkinkan namun tidak memungkinkan terjadinya implementasi yang efisien.
4. Kemudahan penggunaan arsitektur
Adalah ukuran kesederhanan bagi programmer untuk mengembangkan atau membuat software untuk arsitektur tersebut.
5. Daya terap arsitektur
adalah ukuran kemudahan bagi perancang untuk mengimplementasikan computer dalam jangkauan yang luas. Lebih spesifik arsitekturnya maka akan lebih sulit lagi untuk membuat mesin yang berbeda ukurannya dan kinerjanya.
6. Daya kembang (expandability)
adalah ukuran kemudahan bagi perancang untuk meningkatkan kemampuan arsitekturnya.
Factor Keberhasilan
Ada empat ukuran pokok yang menentukan keberhasilan arsitektur, yaitu manfaat arsitekturalnya (architectural merit) :
1. Daya terap, Sebaiknya arsitektur ditujukan untuk aplikasi yang telah ditentukan.
2. Daya tempa, Bila arsitektur lebih mudah membangun sistem yang kecil, maka ia akan lebih baile.
3. Daya kembang, Lebih besar daya kembang arsitektur dalam daya komputasi, ukuran memori, kapasitas I/O, dan jumlah prosesor, maka ia kan lebih baile.
4. Kompatibilitas (daya serasi-pasang).
Struktur Dasar Komputer dan Organisasi Komputer
1. Unit Masukan (Input Unit)
Berfungsi untuk menerima masukan (input) kemudian membacanya dan diteruskan ke memori/penyimpanan.
2. Unit Kontrol (Control Unit)
Berfungsi untuk melaksanakan tugas pengawasan dan pengendalian seluruh system computer.
3. Unit logika dan Aritmatika (arithmetic and Logic Unit)
Berfungsi untuk melaksanakan perhitungan atau aritmatika dan logika. Dapat juga berfungsi sebagai penyatuan data, pemindahan data, pemilihan data dan membandingkan data, sehingga ALU juga merupakan bagian inti dari suatu system computer.
4. Uniit Memori/Penyimpanan (Memory/Storage Unit)
Berfungsi untuk menampung data atau program yang diterima dari unit masukan sebelum diproses oleh CPU dan juga menerima data setelah diproses oleh CPU yang selanjutnya diteruskan ke unit keluaran.
5. Unit Keluaran (Output Unit)
Berfungsi untuk menrima hasil pengolahan data dari CPU melalui memori.



Referensi :
http://www.scribd.com/doc/53542990/ARSITEKTUR-EVOLUSI-KOMPUTER
http://liffanza.wordpress.com/2011/04/21/evolusi-dan-kinerja-komputer/
http://www.scribd.com/doc/53542990/ARSITEKTUR-EVOLUSI-KOMPUTER
http://rikyaldriasblogspotcom.blogspot.com/2010/11/faktor-yang-mempengaruhi-keberhasilan.html
http://radmarssy.wordpress.com/2007/02/07/struktur-dasar-komputer/
http://nextlevel.com.sg/article/191

Minggu, 15 Mei 2011

3 Konsep Dasar yang Mendukung PBO

Pemrograman Berorientasi objek (PBO) (Object Orientation Programming(OOP)) merupakan konsep pemrograman yang membagi program menjadi objek-objek yang nantinya dapat terhubung atau saling berinteraksi satu sama yang lainnya.
OOP memiliki 3 dasar dalam pemrogramannya, yaitu:

1. Inheritance (pewarisan) merupakan proses pewarisan data dan method dari kelas induk(Super Class) ke kelas anak(Sub Class). Dalam inheritance terdapat istilah overriding dan overload, apa itu? cari sendiri!! hehe. overriding itu kemampuan subClass untuk memodifikasi atau meredefinisi data atau method dari superClass. proses ini nantinya akan mengakibatkan kepada kedua kelas; subClass dan superClass. kalo overloding itu kemampuan dalam membuat dua atau lebih method dengan nama yang sama dalam satu kelas, namun memiliki jumlah parameter atau tipe argumentnya berbeda.
2. Encapsulation(Pembungkusan) merupakan cara "membungkus" data dan method yang menyusun suatu kelas sehingga kelas dapat dipandang sebagai suatu modul dan cara bagaiman menyembunyikannya dari luar (information hiding). Dalam OOP, enkapsulasi sangat penting untuk keamanan serta menghindari kesalaham permrograman,
3. Polymorphism, nah istilah satu ini dapat diartikan sebagai banyak bentuk. Penerapan polymorphism ini dilakukan dengan menggunakan nama yang sama, namun mempunyai tingkah laku (behavior) yang berbeda sehingga listing code implementasinyapun berbeda.

http://www.wilantara.com/pemrograman/22-pemrograman-berorientasi-objek.html

Pemrograman Berorientasi objek

1. Apa itu PBO
Pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya.
Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.

2. Konstruktur dan Destruktur
*. Konstruktur adalah fungsi khusus anggota kelas yang otomatis dijalankan pada saat penciptaan objek (mendeklarasikan instancea). Konstruktur ditandai dengan namanya, yaitu sama dengan nama kelas. Konstruktur tidak mempunyai tipe hasil (return value). Biasanya konstruktur dipakai untuk inisialisai anggota data dan melakukan alokasi memori secara dinamis. Meskipun konstruktot tidak harus ada dalam kelas, tetappi jika diperlukan konstruktor dapat lebih dari satu.
Konstruktor adalah fungsi anggota yang mempunyai nama yang sam dengan nama kelas. Kegunaannya :
1. Mengalokasikan ruang bagi sebuah objek
2. Memberkan nilai awal terhadap anggota data suatu objek
3. Membentuk tugas-tugas lainnya
contoh:


*. Destruktur adalah pasangan konstruktur. Pada saat program membuat objek maka secara otomatis konstruktor akan dijalankan, yang biasanya dimaksudkan nuntuk memberi nilai awal variabel private. Sejalan dengan itu, C++ menyediakan fungsi destruktor (penghancur atau pelenyap) yang secara otomatis akan dijalankan pada saat berakhirnya objek. Setiap kelas mempunyai tepat satu destruktor. Jika kita mendeklarasian sebuah destruktor dalam sebuah kelas, maka destruktor akan deciptakan sendiri oleh compiler C++. Fungsi destruktor itu sendiri adalah untuk mendealokasikan memori dinamis yang diciptakan konstruktor. Destruktor adalah fungsi anggota yang mempunyai nama yang sama dengan nama kelas ditambah symbol tilde (~) didepannya.
contoh :



reference : http://id.wikipedia.org/wiki/Pemrograman_berorientasi_objek

Pencarian

1. Pencarian Sekuensial
“Sequential search atau Pencarian sekuensial” bisa disebut dengan pencarian linear yang merupakan model pencarian yang paling simpel dan sederhana banget deh yang dapat dilakukan terhadap suatu kumpulan data. Suatu tekhnik pencarian dalam array (1 dimensi) yang akan menelusuri semua elemen-elemen array dari awal sampai akhir, dimana data-data tidak perlu diurutkan terlebih dahulu.

Biar kalian lebih paham secara konsep, penjelasannya adalah sebagai berikut :
Keunggulan dari pencarian sekuensial ini adalah jika data yang dicari terletak di indeks array terdepan maka waktu dalam pencarian nya sangat cepat, dalam artian waktu yang minim sekali. Keburukannya adalah kalau jika data indeks array nya yang dicari paling belakang, maka waktu yang dicari tuh lama banget (maksimal).

Terdapat L yang merupakan larik yang berisi n buah data ( L[0],L[1]…….L[n-1]) dan k adalah data yang akan dicari. Pencarian dilakukan untuk menemukan L[i] = k dengan i adalah bilangan indeks terkecil yang memenuhi kondisi 0<= k <=n-1. Tentu saja bahwa data yang di cari tidak ditemukan. Jika misalnya terdapat angka 4, maka ditulis ada, sedangkan jika dimunculkan angka 6, namun angka 6 tidak ada maka akan muncul tulisan tidak ada. Algoritma Pada dasarnya, algoritma pencarian ini adalah proses membandingkan setiap elemen larik satu per satu secara beruntun sampai seluruh elemen diperiksa. program pencarian; uses crt; procedure seq_search; var L: array[1..5] of integer; bil,i: integer; begin write('Angka yang dicari= '); readln(bil); L[1]:=1; L[2]:=3; L[3]:=5; L[4]:=7; L[5]:= 9; i:=1; while (i<5) and (L[i] <> bil) do begin
i:=i+1;
end;
if (L[i]=bil) then
writeln('Ditemukan pada elemen larik ke-',i)
else
writeln('Tidak ditemukan!');
end;
begin
clrscr;
seq_search;
readkey;
end.

2.Pencarian Biner
Salah satu syarat agar pencarian biner dapat dilakukan adalah data sudah dalam
keadaan urut. Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner
tidak dapat dilakukan. Dalam kehidupan sehari-hari, sebenarnya kita juga sering
menggunakan pencarian biner. Misalnya saat ingin mencari suatu kata dalam kamus
Prinsip dari pencarian biner dapat dijelaskan sebagai berikut : mula-mula diambil
posisi awal 0 dan posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus
(posisi awal + posisi akhir) / 2. Kemudian data yang dicari dibandingkan dengan data
tengah. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama
dengan posisi tengah –1. Jika lebih besar, porses dilakukan kembali tetapi posisi awal
dianggap sama dengan posisi tengah + 1. Demikian seterusnya sampai data tengah
sama dengan yang dicari.
Untuk lebih jelasnya perhatikan contoh berikut. Misalnya ingin mencari data 17
pada sekumpulan data berikut :
3 9 11 12 15 17 20 23 31 35
awal tengah akhir
Mula-mula dicari data tengah, dengan rumus (0 + 9) / 2 = 4. Berarti data tengah
adalah data ke-4, yaitu 15. Data yang dicari, yaitu 17, dibandingkan dengan data tengah
ini. Karena 17 > 15, berarti proses dilanjutkan tetapi kali ini posisi awal dianggap sama
dengan posisi tengah + 1 atau 5.
3 9 11 12 15 17 20 23 31 35
Awal tengah akhir
Data tengah yang baru didapat dengan rumus (5 + 9) / 2 = 7. Berarti data tengah
yang baru adalah data ke-7, yaitu 23. Data yang dicari yaitu 17 dibandingkan dengan
data tenah ini. Karena 17 < 23, berarti proses dilanjukkan tetapi kali ini posisi akhir dianggap sama dengan posisi tengah – 1 atau 6. 3 9 11 12 15 17 20 23 31 35 Awal tengah akhir Data tengah yang baru didapat dengan rumus (5 + 6) / 2 = 5. Berarti data tengah yang baru adalah data ke-5, yaitu 17. data yang dicari dibandingkan dengan data tengah ini dan ternyata sama. Jadi data ditemukan pada indeks ke-5. Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar daripada posisi akhir. Jika posisi sudah lebih besar daripada posisi akhir berarti data tidak ditemukan. Untuk lebih jelasnya perhatikan contoh pencarian data 16 pada data diatas. Prosesnya hampir sama dengan pencarian data 17. Tetapi setelah posisi awal 5 dan posisi akhir 6, data tidak ditemukan dan 16 < 17, maka posisi akhir menjadi posisi tengah – 1 atau = 4 sedangkan posisi awal = 5. 3 9 11 12 15 17 20 23 31 35 akhir awal Disini dapat dilihat bahwa posisi awal lebih besar daripada posisi akhir, yang artinya data tidak ditemukan. Algoritma pencarian biner dapat dituliskan sebagai berikut : 1 L ← 0 2 R ← N - 1 3 ketemu ← false 4 Selama (L <= R) dan (tidak ketemu) kerjakan baris 5 sampai dengan 8 5 m ← (L + R) / 2 6 Jika (Data[m] = x) maka ketemu ← true 7 Jika (x < Data[m]) maka R ← m – 1 8 Jika (x > Data[m]) maka L ← m + 1
9 Jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak
ditemukan
Di bawah ini merupakan fungsi untuk mencari data menggunakan pencarian biner.
int BinarySearch(int x)
{
int L = 0, R = Max-1, m;
bool ketemu = false;
while((L <= R) && (!ketemu))
{
m = (L + R) / 2;
if(Data[m] == x)
ketemu = true;
else if (x < data[m])
R = m - 1;
else
L = m + 1;
}
if(ketemu)
return m;
else
return -1;
}
Program 8.2 Fungsi Pencarian Data dengan Metode Biner
Fungsi diatas akan mengembalikan indeks dari data yang dicari. Apabila data
tidak ditemukan maka fungsi diatas akan mengembalikan nilai –1.
Jumlah pembandingan minimum pada pencarian biner adalah 1 kali, yaitu apabila
data yang dicari tepat berada di tengah-tengah. Jumlah pembandingan maksimum yang
dilakukan dengan pencarian biner dapat dicari menggunakan rumus logaritma, yaitu :
C = 2log(N)


refernce : http://informatika-hery.blogspot.com/2010/10/binary-search-pencarian-biner.html

pengurutan

1. Metode penyisipan langsung (Straight Insertion Sort)
Proses pengurutan dengan metode penyisipan langsung dapat dijelaskan sebagai berikut :
Data dicek satu per satu mulai dari yang kedua sampai dengan yang terakhir. Apabila ditemukan data yang lebih kecil daripada data sebelumnya, maka data tersebut disisipkan pada posisi yang sesuai. Akan lebih mudah apabila membayangkan pengurutan kartu. Pertama-tama anda meletakkan kartu-kartu tersebut di atas meja, kemudian melihatnya dari kiri ke kanan. Apabila kartu di sebelah kanan lebih kecil daripada kartu di sebelah kiri, maka ambil kartu tersebut dan sisipkan di tempat yang sesuai.
Algoritma penyisipan langsung dapat dituliskan sebagai berikut :
1. i = 1
2. selama (i < N) kerjakan baris 3 sampai dengan 9 3. x = Data[i] 4. j = i – 1 5. selama (x < Data[j]) kerjakan baris 6 dan 7 6. Data[j + 1] = Data[j] 7. j = j – 1 8. Data[j+1] = x 9. i = i + 1 Di bawah ini merupakan prosedur yang menggunakan metode penyisipan langsung: void StraighInsertSort() { int i, j, x; for(i=1; i< Data[j]) { Data[j+1] = Data[j]; j--; } Data[j+1] = x; } } 2. Metode Penyisipan Biner (Binary Insertion Sort) Metode ini merupakan pengembangan dari metode penyisipan langsung. Dengan cara penyisipan langsung, perbandingan selalu dimulai dari elemen pertama (data ke-0), sehingga untuk menyisipkan elemen ke i kita harus melakukan perbandingan sebanyak i- 1 kali. Ide dari metode ini didasarkan pada kenyataan bahwa pada saat menggeser data ke-i, data ke 0 s/d i-1 sebenarnya sudah dalam keadaan terurut. Algoritma penyisipan biner dapat dituliskan sebagai berikut : 1. i = 1 2. selama (i < N) kerjakan baris 3 sampai dengan 14 3. x = Data[i] 4. l = 0 5. r = i – 1 6. selama (l<=r) kerjakan baris 7 dan 8 7. m = (l + r) / 2 8. jika (x < Data[m]) maka r = m – 1, jika tidak l = m + 1 9. j = i – 1 10. selama ( j >=l) kerjakan baris 11 dan 12
11. Data[j+1] = Data[j]
12. j = j – 1
13. Data[l] = x
14. I = i + 1

Di bawah ini merupakan prosedur yang menggunakan metode penyisipan biner:

void BinaryInsertSort()
{
int i, j, l, r, m, x;
for (i=1; i<= r){ m = (l + r) / 2; if(x < Data[m]) r = m - 1; else l = m + 1; } for(j=i-1; j>=l; j--)
Data[j+1] = Data[j];
Data[l]=x;
}
}

3. Metode Seleksi (Selection Sort)
Metode seleksi melakukan pengurutan dengan cara mencari data yang terkecil kemudian menukarkannya dengan data yang digunakan sebagai acuan atau sering dinamakan pivot. Proses pengurutan dengan metode seleksi dapat dijelaskan sebagai berikut :

Langkah pertama dicari data terkecil dari data pertama sampai data terakhir. Kemudian data terkecil ditukar dengan data pertama. Dengan demikian, data pertama sekarang mempunyai nilai paling kecil dibanding data yang lain. Langkah kedua, data terkecil kita cari mulai dari data kedua sampai terakhir. Data terkecil yang kita peroleh ditukar dengan data kedua dan demikian seterusnya sampai semua elemen dalam keadaan terurutkan.

Algoritma seleksi dapat dituliskan sebagai berikut :

1. i = 0
2. selama (i < N-1) kerjakan baris 3 sampai dengan 9 3. k = i 4. j = i + 1 5. Selama (j < N) kerjakan baris 6 dan 7 6. Jika (Data[k] > Data[j]) maka k = j
7. j = j + 1
8. Tukar Data[i] dengan Data[k]
9. i = i + 1

Di bawah ini merupakan prosedur yang menggunakan metode seleksi:

void SelectionSort()
{
int i, j, k;
for(i=0; i Data[j])
k = j;
Tukar(&Data[i], &Data[k]);
}
}

4. Metode Shell (Shell Sort)
Metode ini disebut juga dengan metode pertambahan menurun (diminishing increment). Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959, sehingga sering disebut dengan Metode Shell Sort. Metode ini mengurutkan data dengan cara membandingkan suatu data dengan data lain yang memiliki jarak tertentu, kemudian dilakukan penukaran bila diperlukan. Proses pengurutan dengan metode Shell dapat dijelaskan sebagai berikut :
Pertama-tama adalah menentukan jarak mula-mula dari data yang akan dibandingkan, yaitu N / 2. Data pertama dibandingkan dengan data dengan jarak N / 2. Apabila data pertama lebih besar dari data ke N / 2 tersebut maka kedua data tersebut ditukar. Kemudian data kedua dibandingkan dengan jarak yang sama yaitu N / 2. Demikian seterusnya sampai seluruh data dibandingkan sehingga semua data ke-j selalu lebih kecil daripada data ke-(j + N / 2).

Pada proses berikutnya, digunakan jarak (N / 2) / 2 atau N / 4. Data pertama dibandingkan dengan data dengan jarak N / 4. Apabila data pertama lebih besar dari data ke N / 4 tersebut maka kedua data tersebut ditukar. Kemudian data kedua dibandingkan dengan jarak yang sama yaitu N / 4. Demikianlah seterusnya hingga seluruh data dibandingkan sehingga semua data ke-j lebih kecil daripada data ke-(j + N / 4).

Pada proses berikutnya, digunakan jarak (N / 4) / 2 atau N / 8. Demikian seterusnya sampai jarak yang digunakan adalah 1.

Algoritma metode Shell dapat dituliskan sebagai berikut :

1. Jarak = N
2. Selama (Jarak > 1) kerjakan baris 3 sampai dengan 9
3. Jarak = Jarak / 2. Sudah = false
4. Kerjakan baris 4 sampai dengan 8 selama Sudah = false
5. Sudah = true
6. j = 0
7. Selama (j < N – Jarak) kerjakan baris 8 dan 9 8. Jika (Data[j] > Data[j + Jarak] maka tukar Data[j],
Data[j + Jarak].
Sudah = true
9. j = j + 1

Di bawah ini merupakan prosedur yang menggunakan metode Shell:

void ShellSort(int N)
{
int Jarak, i, j;
bool Sudah;
Jarak = N;
while(Lompat > 1)
{
Jarak = Jarak / 2;
Sudah = false;
while(!Sudah)
{
Sudah = true;
for(j=0; j Data[i])
{
Tukar(&Data[j], &Data[i]);
Sudah = false;
} } } } }


reference : http://www.seputarprogrammer.co.cc/2011/03/struktur-data-sorting-method.html